@stemy/backend 2.9.7 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('path'), require('body-parser'), require('jsonwebtoken'), require('tsyringe'), require('routing-controllers'), require('socket-controllers'), require('routing-controllers-openapi'), require('class-transformer/storage'), require('class-validator'), require('class-validator-jsonschema'), require('child_process'), require('crypto'), require('rxjs'), require('rxjs/internal/util/canReportError'), require('fs'), require('mongoose'), require('mongoose/lib/utils'), require('stream'), require('bson'), require('fontkit'), require('file-type'), require('sharp'), require('axios'), require('mongodb'), require('dotenv'), require('node-resque'), require('node-cron'), require('ioredis'), require('socket.io-client'), require('http'), require('express'), require('socket.io'), require('uuid'), require('nodemailer'), require('handlebars'), require('bcrypt'), require('moment')) :
3
- typeof define === 'function' && define.amd ? define('@stemy/backend', ['exports', 'path', 'body-parser', 'jsonwebtoken', 'tsyringe', 'routing-controllers', 'socket-controllers', 'routing-controllers-openapi', 'class-transformer/storage', 'class-validator', 'class-validator-jsonschema', 'child_process', 'crypto', 'rxjs', 'rxjs/internal/util/canReportError', 'fs', 'mongoose', 'mongoose/lib/utils', 'stream', 'bson', 'fontkit', 'file-type', 'sharp', 'axios', 'mongodb', 'dotenv', 'node-resque', 'node-cron', 'ioredis', 'socket.io-client', 'http', 'express', 'socket.io', 'uuid', 'nodemailer', 'handlebars', 'bcrypt', 'moment'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.stemy = global.stemy || {}, global.stemy.backend = {}), global.path, global["body-parser"], global.jsonwebtoken, global.tsyringe, global["routing-controllers"], global["socket-controllers"], global["routing-controllers-openapi"], global["class-transformer/storage"], global["class-validator"], global["class-validator-jsonschema"], global.child_process, global.crypto, global.rxjs, global.rxjs["internal/util/canReportError"], global.fs, global.mongoose, global["mongoose-lib-utils"], global.stream, global.bson, global.fontkit, global["file-type"], global.sharp, global.axios, global.mongodb, global.dotenv, global["node-resque"], global["node-cron"], global.ioredis, global.socket["io-client"], global.http, global.express, global.socket.io, global.uuid, global.nodemailer, global.handlebars, global.bcrypt, global.moment));
5
- })(this, (function (exports, path, bodyParser, jsonwebtoken, tsyringe, routingControllers, socketControllers, routingControllersOpenapi, storage, classValidator, classValidatorJsonschema, child_process, crypto, rxjs, canReportError, fs, mongoose, utils, stream, bson, fontKit_, fileType, sharp_, axios, mongodb, dotenv, nodeResque, nodeCron, ioredis, socket_io_client, http, express_, socket_io, uuid, nodemailer, Handlebars, bcrypt, moment) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('path'), require('body-parser'), require('jsonwebtoken'), require('tsyringe'), require('routing-controllers'), require('socket-controllers'), require('routing-controllers-openapi'), require('class-transformer/storage'), require('class-validator'), require('class-validator-jsonschema'), require('child_process'), require('crypto'), require('rxjs'), require('rxjs/internal/util/canReportError'), require('fs'), require('mongoose'), require('mongoose/lib/utils'), require('stream'), require('bson'), require('fontkit'), require('file-type'), require('sharp'), require('axios'), require('mongodb'), require('dotenv'), require('node-cron'), require('zeromq'), require('socket.io-client'), require('http'), require('express'), require('socket.io'), require('uuid'), require('nodemailer'), require('handlebars'), require('bcrypt'), require('moment')) :
3
+ typeof define === 'function' && define.amd ? define('@stemy/backend', ['exports', 'path', 'body-parser', 'jsonwebtoken', 'tsyringe', 'routing-controllers', 'socket-controllers', 'routing-controllers-openapi', 'class-transformer/storage', 'class-validator', 'class-validator-jsonschema', 'child_process', 'crypto', 'rxjs', 'rxjs/internal/util/canReportError', 'fs', 'mongoose', 'mongoose/lib/utils', 'stream', 'bson', 'fontkit', 'file-type', 'sharp', 'axios', 'mongodb', 'dotenv', 'node-cron', 'zeromq', 'socket.io-client', 'http', 'express', 'socket.io', 'uuid', 'nodemailer', 'handlebars', 'bcrypt', 'moment'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.stemy = global.stemy || {}, global.stemy.backend = {}), global.path, global["body-parser"], global.jsonwebtoken, global.tsyringe, global["routing-controllers"], global["socket-controllers"], global["routing-controllers-openapi"], global["class-transformer/storage"], global["class-validator"], global["class-validator-jsonschema"], global.child_process, global.crypto, global.rxjs, global.rxjs["internal/util/canReportError"], global.fs, global.mongoose, global["mongoose-lib-utils"], global.stream, global.bson, global.fontkit, global["file-type"], global.sharp, global.axios, global.mongodb, global.dotenv, global["node-cron"], global.zeromq, global.socket["io-client"], global.http, global.express, global.socket.io, global.uuid, global.nodemailer, global.handlebars, global.bcrypt, global.moment));
5
+ })(this, (function (exports, path, bodyParser, jsonwebtoken, tsyringe, routingControllers, socketControllers, routingControllersOpenapi, storage, classValidator, classValidatorJsonschema, child_process, crypto, rxjs, canReportError, fs, mongoose, utils, stream, bson, fontKit_, fileType, sharp_, axios, mongodb, dotenv, nodeCron, zeromq, socket_io_client, http, express_, socket_io, uuid, nodemailer, Handlebars, bcrypt, moment) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -28,7 +28,6 @@
28
28
  var sharp___default = /*#__PURE__*/_interopDefaultLegacy(sharp_);
29
29
  var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
30
30
  var dotenv__default = /*#__PURE__*/_interopDefaultLegacy(dotenv);
31
- var ioredis__default = /*#__PURE__*/_interopDefaultLegacy(ioredis);
32
31
  var socket_io_client__default = /*#__PURE__*/_interopDefaultLegacy(socket_io_client);
33
32
  var express___default = /*#__PURE__*/_interopDefaultLegacy(express_);
34
33
  var socket_io__default = /*#__PURE__*/_interopDefaultLegacy(socket_io);
@@ -106,7 +105,7 @@
106
105
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
107
106
  return Reflect.metadata(metadataKey, metadataValue);
108
107
  }
109
- function __awaiter$w(thisArg, _arguments, P, generator) {
108
+ function __awaiter$x(thisArg, _arguments, P, generator) {
110
109
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
111
110
  return new (P || (P = Promise))(function (resolve, reject) {
112
111
  function fulfilled(value) { try {
@@ -353,7 +352,7 @@
353
352
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
354
353
  }
355
354
 
356
- var __awaiter$v = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
355
+ var __awaiter$w = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
357
356
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
358
357
  return new (P || (P = Promise))(function (resolve, reject) {
359
358
  function fulfilled(value) { try {
@@ -595,7 +594,7 @@
595
594
  }
596
595
  function paginateAggregations(model, aggregations, params, metaProjection) {
597
596
  if (metaProjection === void 0) { metaProjection = {}; }
598
- return __awaiter$v(this, void 0, void 0, function () {
597
+ return __awaiter$w(this, void 0, void 0, function () {
599
598
  var sortField, sortAggregation, result, pagination;
600
599
  var _a;
601
600
  return __generator(this, function (_b) {
@@ -706,7 +705,7 @@
706
705
  }
707
706
  function readAndDeleteFile(path, timeout) {
708
707
  if (timeout === void 0) { timeout = 5000; }
709
- return __awaiter$v(this, void 0, void 0, function () {
708
+ return __awaiter$w(this, void 0, void 0, function () {
710
709
  var data;
711
710
  return __generator(this, function (_a) {
712
711
  switch (_a.label) {
@@ -723,7 +722,7 @@
723
722
  });
724
723
  }
725
724
  function writeFile(path$1, data) {
726
- return __awaiter$v(this, void 0, void 0, function () {
725
+ return __awaiter$w(this, void 0, void 0, function () {
727
726
  return __generator(this, function (_a) {
728
727
  switch (_a.label) {
729
728
  case 0: return [4 /*yield*/, mkdirRecursive(path.dirname(path$1))];
@@ -745,11 +744,16 @@
745
744
  function valueToPromise(value) {
746
745
  return value instanceof Promise ? value : Promise.resolve(value);
747
746
  }
748
- function promiseTimeout(timeout) {
747
+ function promiseTimeout(timeout, error) {
749
748
  if (timeout === void 0) { timeout = 1000; }
750
- return new Promise(function (resolve) {
749
+ if (error === void 0) { error = false; }
750
+ return new Promise(function (resolve, reject) {
751
751
  setTimeout(function () {
752
- resolve();
752
+ if (error) {
753
+ reject("Timeout exceeded: " + timeout + "ms");
754
+ return;
755
+ }
756
+ resolve("Timeout: " + timeout + "ms");
753
757
  }, timeout);
754
758
  });
755
759
  }
@@ -811,7 +815,7 @@
811
815
  var paramName = modelName.toLowerCase();
812
816
  return routingControllers.createParamDecorator({
813
817
  required: false,
814
- value: function (action) { return __awaiter$v(_this, void 0, void 0, function () {
818
+ value: function (action) { return __awaiter$w(_this, void 0, void 0, function () {
815
819
  var req, token, id, query, doc, _a, _b, e_3;
816
820
  return __generator(this, function (_c) {
817
821
  switch (_c.label) {
@@ -1059,6 +1063,68 @@
1059
1063
  console.error(data.toString());
1060
1064
  });
1061
1065
  });
1066
+ }
1067
+ exports.ConsoleColor = void 0;
1068
+ (function (ConsoleColor) {
1069
+ ConsoleColor["Reset"] = "\u001B[0m";
1070
+ ConsoleColor["Bright"] = "\u001B[1m";
1071
+ ConsoleColor["Dim"] = "\u001B[2m";
1072
+ ConsoleColor["Underscore"] = "\u001B[4m";
1073
+ ConsoleColor["Blink"] = "\u001B[5m";
1074
+ ConsoleColor["Reverse"] = "\u001B[7m";
1075
+ ConsoleColor["Hidden"] = "\u001B[8m";
1076
+ ConsoleColor["FgBlack"] = "\u001B[30m";
1077
+ ConsoleColor["FgRed"] = "\u001B[31m";
1078
+ ConsoleColor["FgGreen"] = "\u001B[32m";
1079
+ ConsoleColor["FgYellow"] = "\u001B[33m";
1080
+ ConsoleColor["FgBlue"] = "\u001B[34m";
1081
+ ConsoleColor["FgMagenta"] = "\u001B[35m";
1082
+ ConsoleColor["FgCyan"] = "\u001B[36m";
1083
+ ConsoleColor["FgWhite"] = "\u001B[37m";
1084
+ ConsoleColor["FgDefault"] = "\u001B[38m";
1085
+ ConsoleColor["BgBlack"] = "\u001B[40m";
1086
+ ConsoleColor["BgRed"] = "\u001B[41m";
1087
+ ConsoleColor["BgGreen"] = "\u001B[42m";
1088
+ ConsoleColor["BgYellow"] = "\u001B[43m";
1089
+ ConsoleColor["BgBlue"] = "\u001B[44m";
1090
+ ConsoleColor["BgMagenta"] = "\u001B[45m";
1091
+ ConsoleColor["BgCyan"] = "\u001B[46m";
1092
+ ConsoleColor["BgWhite"] = "\u001B[47m";
1093
+ ConsoleColor["BgDefault"] = "\u001B[48m";
1094
+ })(exports.ConsoleColor || (exports.ConsoleColor = {}));
1095
+ var defaultColors = {
1096
+ keyColor: exports.ConsoleColor.FgWhite,
1097
+ numberColor: exports.ConsoleColor.FgBlue,
1098
+ stringColor: exports.ConsoleColor.FgYellow,
1099
+ trueColor: exports.ConsoleColor.FgGreen,
1100
+ falseColor: exports.ConsoleColor.FgRed,
1101
+ nullColor: exports.ConsoleColor.BgMagenta
1102
+ };
1103
+ function jsonHighlight(input, colorOptions) {
1104
+ var colors = Object.assign({}, defaultColors, colorOptions);
1105
+ var json = (isString(input) ? input : JSON.stringify(input, null, 2)).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
1106
+ return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+]?\d+)?)/g, function (match) {
1107
+ var color = colors.numberColor;
1108
+ if (/^"/.test(match)) {
1109
+ if (/:$/.test(match)) {
1110
+ color = colors.keyColor;
1111
+ }
1112
+ else {
1113
+ color = colors.stringColor;
1114
+ match = '"' + match.substr(1, match.length - 2) + '"';
1115
+ }
1116
+ }
1117
+ else {
1118
+ color = /true/.test(match)
1119
+ ? colors.trueColor
1120
+ : /false/.test(match)
1121
+ ? colors.falseColor
1122
+ : /null/.test(match)
1123
+ ? colors.nullColor
1124
+ : color;
1125
+ }
1126
+ return "" + color + match + exports.ConsoleColor.Reset;
1127
+ });
1062
1128
  }
1063
1129
 
1064
1130
  var __decorate$x = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -1186,7 +1252,7 @@
1186
1252
  r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1187
1253
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1188
1254
  };
1189
- var __awaiter$u = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1255
+ var __awaiter$v = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1190
1256
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1191
1257
  return new (P || (P = Promise))(function (resolve, reject) {
1192
1258
  function fulfilled(value) { try {
@@ -1234,7 +1300,7 @@
1234
1300
  };
1235
1301
  AssetProcessor.fileTypeFromBuffer = function (buffer) {
1236
1302
  var _a;
1237
- return __awaiter$u(this, void 0, void 0, function () {
1303
+ return __awaiter$v(this, void 0, void 0, function () {
1238
1304
  var type;
1239
1305
  return __generator(this, function (_b) {
1240
1306
  switch (_b.label) {
@@ -1268,7 +1334,7 @@
1268
1334
  return imageTypes.indexOf(contentType) >= 0;
1269
1335
  };
1270
1336
  AssetProcessor.copyImageMeta = function (buffer, metadata, fileType) {
1271
- return __awaiter$u(this, void 0, void 0, function () {
1337
+ return __awaiter$v(this, void 0, void 0, function () {
1272
1338
  var match, attrs, parts, output;
1273
1339
  return __generator(this, function (_b) {
1274
1340
  switch (_b.label) {
@@ -1315,7 +1381,7 @@
1315
1381
  });
1316
1382
  };
1317
1383
  AssetProcessor.prototype.process = function (buffer, metadata, fileType) {
1318
- return __awaiter$u(this, void 0, void 0, function () {
1384
+ return __awaiter$v(this, void 0, void 0, function () {
1319
1385
  return __generator(this, function (_b) {
1320
1386
  switch (_b.label) {
1321
1387
  case 0:
@@ -1413,7 +1479,7 @@
1413
1479
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
1414
1480
  return Reflect.metadata(k, v);
1415
1481
  };
1416
- var __awaiter$t = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1482
+ var __awaiter$u = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1417
1483
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1418
1484
  return new (P || (P = Promise))(function (resolve, reject) {
1419
1485
  function fulfilled(value) { try {
@@ -1461,7 +1527,7 @@
1461
1527
  configurable: true
1462
1528
  });
1463
1529
  MongoConnector.prototype.connect = function () {
1464
- return __awaiter$t(this, void 0, void 0, function () {
1530
+ return __awaiter$u(this, void 0, void 0, function () {
1465
1531
  var _a;
1466
1532
  return __generator(this, function (_b) {
1467
1533
  switch (_b.label) {
@@ -1493,7 +1559,7 @@
1493
1559
  __metadata$o("design:paramtypes", [exports.Configuration])
1494
1560
  ], exports.MongoConnector);
1495
1561
 
1496
- var __awaiter$s = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1562
+ var __awaiter$t = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1497
1563
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1498
1564
  return new (P || (P = Promise))(function (resolve, reject) {
1499
1565
  function fulfilled(value) { try {
@@ -1529,7 +1595,7 @@
1529
1595
  return this.collection.updateOne({ _id: this.mId }, { $set: this.toJSON() });
1530
1596
  };
1531
1597
  BaseEntity.prototype.load = function () {
1532
- return __awaiter$s(this, void 0, void 0, function () {
1598
+ return __awaiter$t(this, void 0, void 0, function () {
1533
1599
  var res;
1534
1600
  return __generator(this, function (_a) {
1535
1601
  switch (_a.label) {
@@ -1552,7 +1618,7 @@
1552
1618
  return BaseEntity;
1553
1619
  }());
1554
1620
 
1555
- var __awaiter$r = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1621
+ var __awaiter$s = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1556
1622
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1557
1623
  return new (P || (P = Promise))(function (resolve, reject) {
1558
1624
  function fulfilled(value) { try {
@@ -1605,16 +1671,17 @@
1605
1671
  };
1606
1672
  };
1607
1673
  Asset.toImage = function (stream, meta, params) {
1608
- return __awaiter$r(this, void 0, void 0, function () {
1609
- var crop, buffer, cropBefore, cropAfter, imgMeta, width, height, e_1;
1610
- return __generator(this, function (_a) {
1611
- switch (_a.label) {
1674
+ return __awaiter$s(this, void 0, void 0, function () {
1675
+ var crop, buffer, cropBefore, cropAfter, img, _a, width, height, canvasScaleX, canvasScaleY, _b, e_1;
1676
+ return __generator(this, function (_c) {
1677
+ switch (_c.label) {
1612
1678
  case 0:
1613
1679
  params = params || {};
1614
1680
  crop = Asset.toCropRegion(meta.crop);
1615
- // Return back the stream if there is no params and no default crop exists
1616
- if (Object.keys(params).length == 0 && !crop)
1681
+ // Return the stream if there is no params and no default crop exists
1682
+ if ((meta === null || meta === void 0 ? void 0 : meta.extension) === "svg" || (Object.keys(params).length == 0 && !crop)) {
1617
1683
  return [2 /*return*/, stream];
1684
+ }
1618
1685
  // Parse params
1619
1686
  params.rotation = isNaN(params.rotation) ? 0 : Math.round(params.rotation / 90) * 90;
1620
1687
  params.canvasScaleX = isNaN(params.canvasScaleX) ? 1 : Number(params.canvasScaleX);
@@ -1624,76 +1691,59 @@
1624
1691
  params.crop = isBoolean(params.crop) ? params.crop : params.crop == "true";
1625
1692
  return [4 /*yield*/, streamToBuffer(stream)];
1626
1693
  case 1:
1627
- buffer = _a.sent();
1628
- _a.label = 2;
1694
+ buffer = _c.sent();
1695
+ _c.label = 2;
1629
1696
  case 2:
1630
- _a.trys.push([2, 16, , 17]);
1697
+ _c.trys.push([2, 7, , 8]);
1631
1698
  cropBefore = Asset.toCropRegion(params.cropBefore || (params.crop ? meta.cropBefore : null));
1632
1699
  cropAfter = Asset.toCropRegion(params.cropAfter || (params.crop ? meta.cropAfter : null));
1633
- return [4 /*yield*/, sharp$2(buffer).metadata()];
1700
+ img = sharp$2(buffer);
1701
+ return [4 /*yield*/, img.metadata()];
1634
1702
  case 3:
1635
- imgMeta = _a.sent();
1636
- width = imgMeta.width;
1637
- height = imgMeta.height;
1638
- if (!cropBefore) return [3 /*break*/, 5];
1639
- return [4 /*yield*/, sharp$2(buffer)
1640
- .extract(cropBefore)
1641
- .toBuffer()];
1703
+ _a = _c.sent(), width = _a.width, height = _a.height;
1704
+ // Crop before resize
1705
+ if (cropBefore) {
1706
+ width = cropBefore.width;
1707
+ height = cropBefore.height;
1708
+ img = img.extract(cropBefore);
1709
+ }
1710
+ else if (crop) {
1711
+ width = crop.width;
1712
+ height = crop.height;
1713
+ img = img.extract(crop);
1714
+ }
1715
+ canvasScaleX = (meta === null || meta === void 0 ? void 0 : meta.canvasScaleX) || 1;
1716
+ canvasScaleY = (meta === null || meta === void 0 ? void 0 : meta.canvasScaleY) || 1;
1717
+ if (params.canvasScaleX !== canvasScaleX || params.canvasScaleY !== canvasScaleY) {
1718
+ width = Math.round(width * params.canvasScaleX);
1719
+ height = Math.round(height * params.canvasScaleY);
1720
+ img = img.resize({ width: width, height: height, background: "#00000000", fit: "contain" });
1721
+ }
1722
+ // Resize image
1723
+ if (params.scaleX !== 1 || params.scaleY !== 1) {
1724
+ width = Math.round(width * params.scaleX);
1725
+ height = Math.round(height * params.scaleY);
1726
+ img = img.resize({ width: width, height: height, background: "#00000000", fit: "fill" });
1727
+ }
1728
+ // Crop after resize
1729
+ if (cropAfter) {
1730
+ img = img.extract(cropAfter);
1731
+ }
1732
+ if (!(params.rotation !== 0)) return [3 /*break*/, 5];
1733
+ return [4 /*yield*/, img.toBuffer()];
1642
1734
  case 4:
1643
- buffer = _a.sent();
1644
- width = cropBefore.width;
1645
- height = cropBefore.height;
1646
- return [3 /*break*/, 7];
1735
+ buffer = _c.sent();
1736
+ img = sharp$2(buffer).rotate(params.rotation);
1737
+ _c.label = 5;
1647
1738
  case 5:
1648
- if (!crop) return [3 /*break*/, 7];
1649
- return [4 /*yield*/, sharp$2(buffer)
1650
- .extract(crop)
1651
- .toBuffer()];
1652
- case 6:
1653
- buffer = _a.sent();
1654
- width = crop.width;
1655
- height = crop.height;
1656
- _a.label = 7;
1739
+ _b = bufferToStream;
1740
+ return [4 /*yield*/, img.toBuffer()];
1741
+ case 6: return [2 /*return*/, _b.apply(void 0, [_c.sent()])];
1657
1742
  case 7:
1658
- if (!(params.canvasScaleX !== 1 || params.canvasScaleY !== 1)) return [3 /*break*/, 9];
1659
- width = Math.round(width * params.canvasScaleX);
1660
- height = Math.round(height * params.canvasScaleY);
1661
- return [4 /*yield*/, sharp$2(buffer)
1662
- .resize({ width: width, height: height, background: "#00000000", fit: "contain" })
1663
- .toBuffer()];
1664
- case 8:
1665
- buffer = _a.sent();
1666
- _a.label = 9;
1667
- case 9:
1668
- if (!(params.scaleX !== 1 || params.scaleY !== 1)) return [3 /*break*/, 11];
1669
- width = Math.round(width * params.scaleX);
1670
- height = Math.round(height * params.scaleY);
1671
- return [4 /*yield*/, sharp$2(buffer)
1672
- .resize({ width: width, height: height, background: "#00000000", fit: "fill" })
1673
- .toBuffer()];
1674
- case 10:
1675
- buffer = _a.sent();
1676
- _a.label = 11;
1677
- case 11:
1678
- if (!cropAfter) return [3 /*break*/, 13];
1679
- return [4 /*yield*/, sharp$2(buffer)
1680
- .extract(cropAfter)
1681
- .toBuffer()];
1682
- case 12:
1683
- buffer = _a.sent();
1684
- _a.label = 13;
1685
- case 13:
1686
- if (!(params.rotation !== 0)) return [3 /*break*/, 15];
1687
- return [4 /*yield*/, sharp$2(buffer).rotate(params.rotation).toBuffer()];
1688
- case 14:
1689
- buffer = _a.sent();
1690
- _a.label = 15;
1691
- case 15: return [2 /*return*/, bufferToStream(buffer)];
1692
- case 16:
1693
- e_1 = _a.sent();
1743
+ e_1 = _c.sent();
1694
1744
  console.log("Asset image conversion error", e_1);
1695
1745
  return [2 /*return*/, bufferToStream(buffer)];
1696
- case 17: return [2 /*return*/];
1746
+ case 8: return [2 /*return*/];
1697
1747
  }
1698
1748
  });
1699
1749
  });
@@ -1727,7 +1777,7 @@
1727
1777
  configurable: true
1728
1778
  });
1729
1779
  Asset.prototype.unlink = function () {
1730
- return __awaiter$r(this, void 0, void 0, function () {
1780
+ return __awaiter$s(this, void 0, void 0, function () {
1731
1781
  return __generator(this, function (_a) {
1732
1782
  return [2 /*return*/, deleteFromBucket(this.bucket, this.mId)];
1733
1783
  });
@@ -1737,7 +1787,7 @@
1737
1787
  return streamToBuffer(this.stream);
1738
1788
  };
1739
1789
  Asset.prototype.download = function (metadata) {
1740
- return __awaiter$r(this, void 0, void 0, function () {
1790
+ return __awaiter$s(this, void 0, void 0, function () {
1741
1791
  return __generator(this, function (_a) {
1742
1792
  switch (_a.label) {
1743
1793
  case 0:
@@ -1757,14 +1807,14 @@
1757
1807
  };
1758
1808
  Asset.prototype.getImage = function (params) {
1759
1809
  if (params === void 0) { params = null; }
1760
- return __awaiter$r(this, void 0, void 0, function () {
1810
+ return __awaiter$s(this, void 0, void 0, function () {
1761
1811
  return __generator(this, function (_a) {
1762
1812
  return [2 /*return*/, Asset.toImage(this.stream, this.metadata, params)];
1763
1813
  });
1764
1814
  });
1765
1815
  };
1766
1816
  Asset.prototype.downloadImage = function (params, metadata) {
1767
- return __awaiter$r(this, void 0, void 0, function () {
1817
+ return __awaiter$s(this, void 0, void 0, function () {
1768
1818
  var _a, _b;
1769
1819
  return __generator(this, function (_c) {
1770
1820
  switch (_c.label) {
@@ -1779,6 +1829,93 @@
1779
1829
  return Asset;
1780
1830
  }(BaseEntity));
1781
1831
 
1832
+ var __awaiter$r = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1833
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1834
+ return new (P || (P = Promise))(function (resolve, reject) {
1835
+ function fulfilled(value) { try {
1836
+ step(generator.next(value));
1837
+ }
1838
+ catch (e) {
1839
+ reject(e);
1840
+ } }
1841
+ function rejected(value) { try {
1842
+ step(generator["throw"](value));
1843
+ }
1844
+ catch (e) {
1845
+ reject(e);
1846
+ } }
1847
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
1848
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
1849
+ });
1850
+ };
1851
+ var TempAsset = /** @class */ (function () {
1852
+ function TempAsset(buffer, filename, contentType, metadata) {
1853
+ this.buffer = buffer;
1854
+ this.filename = filename;
1855
+ this.contentType = contentType;
1856
+ this.metadata = metadata;
1857
+ this.id = new bson.ObjectId().toHexString();
1858
+ }
1859
+ Object.defineProperty(TempAsset.prototype, "stream", {
1860
+ get: function () {
1861
+ return bufferToStream(this.buffer);
1862
+ },
1863
+ enumerable: false,
1864
+ configurable: true
1865
+ });
1866
+ TempAsset.prototype.unlink = function () {
1867
+ return __awaiter$r(this, void 0, void 0, function () {
1868
+ return __generator(this, function (_a) {
1869
+ throw new Error("Temp asset '" + this.id + "' can not be removed!");
1870
+ });
1871
+ });
1872
+ };
1873
+ TempAsset.prototype.getBuffer = function () {
1874
+ return __awaiter$r(this, void 0, void 0, function () {
1875
+ return __generator(this, function (_a) {
1876
+ return [2 /*return*/, this.buffer];
1877
+ });
1878
+ });
1879
+ };
1880
+ TempAsset.prototype.download = function (metadata) {
1881
+ return __awaiter$r(this, void 0, void 0, function () {
1882
+ return __generator(this, function (_a) {
1883
+ return [2 /*return*/, this.stream];
1884
+ });
1885
+ });
1886
+ };
1887
+ TempAsset.prototype.downloadImage = function (params, metadata) {
1888
+ Object.assign(this.metadata, metadata || {});
1889
+ return Asset.toImage(this.stream, this.metadata, params);
1890
+ };
1891
+ TempAsset.prototype.getImage = function (params) {
1892
+ return this.downloadImage(params);
1893
+ };
1894
+ TempAsset.prototype.save = function () {
1895
+ return __awaiter$r(this, void 0, void 0, function () {
1896
+ return __generator(this, function (_a) {
1897
+ return [2 /*return*/, this];
1898
+ });
1899
+ });
1900
+ };
1901
+ TempAsset.prototype.load = function () {
1902
+ return __awaiter$r(this, void 0, void 0, function () {
1903
+ return __generator(this, function (_a) {
1904
+ return [2 /*return*/, this];
1905
+ });
1906
+ });
1907
+ };
1908
+ TempAsset.prototype.toJSON = function () {
1909
+ return {
1910
+ id: this.id,
1911
+ filename: this.filename,
1912
+ contentType: this.contentType,
1913
+ metadata: this.metadata
1914
+ };
1915
+ };
1916
+ return TempAsset;
1917
+ }());
1918
+
1782
1919
  var __decorate$t = (this && this.__decorate) || function (decorators, target, key, desc) {
1783
1920
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1784
1921
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
@@ -1901,6 +2038,43 @@
1901
2038
  });
1902
2039
  });
1903
2040
  };
2041
+ Assets.prototype.download = function (url, contentType) {
2042
+ if (contentType === void 0) { contentType = null; }
2043
+ return __awaiter$q(this, void 0, void 0, function () {
2044
+ var buffer, fileType, e_3, metadata;
2045
+ return __generator(this, function (_b) {
2046
+ switch (_b.label) {
2047
+ case 0: return [4 /*yield*/, axios__default["default"]({ url: url, responseType: "arraybuffer" })];
2048
+ case 1:
2049
+ buffer = (_b.sent()).data;
2050
+ fileType = { ext: "", mime: contentType };
2051
+ _b.label = 2;
2052
+ case 2:
2053
+ _b.trys.push([2, 4, , 5]);
2054
+ return [4 /*yield*/, exports.AssetProcessor.fileTypeFromBuffer(buffer)];
2055
+ case 3:
2056
+ fileType = _b.sent();
2057
+ return [3 /*break*/, 5];
2058
+ case 4:
2059
+ e_3 = _b.sent();
2060
+ if (!fileType.mime) {
2061
+ throw "Can't determine mime type";
2062
+ }
2063
+ console.log("Can't determine mime type", e_3);
2064
+ return [3 /*break*/, 5];
2065
+ case 5:
2066
+ metadata = {
2067
+ filename: url,
2068
+ extension: (fileType.ext || "").trim()
2069
+ };
2070
+ return [4 /*yield*/, this.assetProcessor.process(buffer, metadata, fileType)];
2071
+ case 6:
2072
+ buffer = _b.sent();
2073
+ return [2 /*return*/, new TempAsset(buffer, url, fileType.mime, metadata)];
2074
+ }
2075
+ });
2076
+ });
2077
+ };
1904
2078
  Assets.prototype.read = function (id) {
1905
2079
  return __awaiter$q(this, void 0, void 0, function () {
1906
2080
  return __generator(this, function (_b) {
@@ -1924,7 +2098,7 @@
1924
2098
  Assets.prototype.findMany = function (where) {
1925
2099
  return __awaiter$q(this, void 0, void 0, function () {
1926
2100
  var cursor, items, result, items_1, items_1_1, item;
1927
- var e_3, _b;
2101
+ var e_4, _b;
1928
2102
  return __generator(this, function (_c) {
1929
2103
  switch (_c.label) {
1930
2104
  case 0:
@@ -1941,12 +2115,12 @@
1941
2115
  result.push(new Asset(item._id, item, this.collection, this.bucket));
1942
2116
  }
1943
2117
  }
1944
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
2118
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
1945
2119
  finally {
1946
2120
  try {
1947
2121
  if (items_1_1 && !items_1_1.done && (_b = items_1.return)) _b.call(items_1);
1948
2122
  }
1949
- finally { if (e_3) throw e_3.error; }
2123
+ finally { if (e_4) throw e_4.error; }
1950
2124
  }
1951
2125
  return [2 /*return*/, result];
1952
2126
  }
@@ -2099,7 +2273,7 @@
2099
2273
  _this.progresses.get(_this.progressId).then(function (p) {
2100
2274
  p === null || p === void 0 ? void 0 : p.cancel();
2101
2275
  });
2102
- _this.startWorkingOnAsset().then(function () {
2276
+ _this.startWorkingOnAsset(false).then(function () {
2103
2277
  console.log("Started working on lazy asset: " + _this.id);
2104
2278
  }).catch(function (reason) {
2105
2279
  console.log("Can't start working on lazy asset: " + _this.id + "\nReason: " + reason);
@@ -2123,7 +2297,7 @@
2123
2297
  case 2:
2124
2298
  _a.sent();
2125
2299
  return [2 /*return*/, this.loadAsset()];
2126
- case 3: return [4 /*yield*/, this.startWorkingOnAsset()];
2300
+ case 3: return [4 /*yield*/, this.startWorkingOnAsset(true)];
2127
2301
  case 4:
2128
2302
  _a.sent();
2129
2303
  return [2 /*return*/, this.loadAsset()];
@@ -2145,7 +2319,7 @@
2145
2319
  });
2146
2320
  });
2147
2321
  };
2148
- LazyAsset.prototype.startWorkingOnAsset = function () {
2322
+ LazyAsset.prototype.startWorkingOnAsset = function (fromLoad) {
2149
2323
  return __awaiter$p(this, void 0, void 0, function () {
2150
2324
  var _a;
2151
2325
  return __generator(this, function (_b) {
@@ -2159,7 +2333,7 @@
2159
2333
  return [4 /*yield*/, this.save()];
2160
2334
  case 2:
2161
2335
  _b.sent();
2162
- return [4 /*yield*/, this.jobMan.enqueueWithName(this.data.jobName, Object.assign(Object.assign({}, this.data.jobParams), { lazyId: this.id }))];
2336
+ return [4 /*yield*/, this.jobMan.enqueueWithName(this.data.jobName, Object.assign(Object.assign({}, this.data.jobParams), { lazyId: this.id, fromLoad: fromLoad }))];
2163
2337
  case 3:
2164
2338
  _b.sent();
2165
2339
  return [2 /*return*/];
@@ -2206,7 +2380,6 @@
2206
2380
  step((generator = generator.apply(thisArg, _arguments || [])).next());
2207
2381
  });
2208
2382
  };
2209
- var IORedis = ioredis__default["default"];
2210
2383
  exports.JobManager = /** @class */ (function () {
2211
2384
  function JobManager(config, container, jobTypes) {
2212
2385
  var _this = this;
@@ -2214,8 +2387,9 @@
2214
2387
  this.container = container;
2215
2388
  this.jobTypes = jobTypes || [];
2216
2389
  this.jobs = this.jobTypes.reduce(function (res, jobType) {
2217
- res[getConstructorName(jobType)] = {
2218
- perform: _this.toPerformFunction(jobType)
2390
+ res[getConstructorName(jobType)] = function (jobParams) {
2391
+ var job = _this.resolveJobInstance(jobType, jobParams);
2392
+ return job.process();
2219
2393
  };
2220
2394
  return res;
2221
2395
  }, {});
@@ -2237,9 +2411,8 @@
2237
2411
  });
2238
2412
  });
2239
2413
  };
2240
- JobManager.prototype.enqueueWithName = function (name, params, que) {
2414
+ JobManager.prototype.enqueueWithName = function (name, params) {
2241
2415
  if (params === void 0) { params = {}; }
2242
- if (que === void 0) { que = "main"; }
2243
2416
  return __awaiter$o(this, void 0, void 0, function () {
2244
2417
  var jobName;
2245
2418
  return __generator(this, function (_a) {
@@ -2247,17 +2420,13 @@
2247
2420
  case 0: return [4 /*yield*/, this.tryResolveFromName(name, params)];
2248
2421
  case 1:
2249
2422
  jobName = _a.sent();
2250
- return [4 /*yield*/, this.queue.enqueue(que, jobName, [params])];
2251
- case 2:
2252
- _a.sent();
2253
- return [2 /*return*/];
2423
+ return [2 /*return*/, this.sendToWorkers(jobName, params)];
2254
2424
  }
2255
2425
  });
2256
2426
  });
2257
2427
  };
2258
- JobManager.prototype.enqueue = function (jobType, params, que) {
2428
+ JobManager.prototype.enqueue = function (jobType, params) {
2259
2429
  if (params === void 0) { params = {}; }
2260
- if (que === void 0) { que = "main"; }
2261
2430
  return __awaiter$o(this, void 0, void 0, function () {
2262
2431
  var jobName;
2263
2432
  return __generator(this, function (_a) {
@@ -2265,25 +2434,20 @@
2265
2434
  case 0: return [4 /*yield*/, this.tryResolveAndConnect(jobType, params)];
2266
2435
  case 1:
2267
2436
  jobName = _a.sent();
2268
- return [4 /*yield*/, this.queue.enqueue(que, jobName, [params])];
2269
- case 2:
2270
- _a.sent();
2271
- return [2 /*return*/];
2437
+ return [2 /*return*/, this.sendToWorkers(jobName, params)];
2272
2438
  }
2273
2439
  });
2274
2440
  });
2275
2441
  };
2276
- JobManager.prototype.enqueueAt = function (timestamp, jobType, params, que) {
2277
- if (params === void 0) { params = {}; }
2278
- if (que === void 0) { que = "main"; }
2442
+ JobManager.prototype.sendToWorkers = function (jobName, params) {
2279
2443
  return __awaiter$o(this, void 0, void 0, function () {
2280
- var jobName;
2444
+ var publisher;
2281
2445
  return __generator(this, function (_a) {
2282
2446
  switch (_a.label) {
2283
- case 0: return [4 /*yield*/, this.tryResolveAndConnect(jobType, params)];
2447
+ case 0: return [4 /*yield*/, this.scheduler];
2284
2448
  case 1:
2285
- jobName = _a.sent();
2286
- return [4 /*yield*/, this.queue.enqueueAt(timestamp, que, jobName, [params])];
2449
+ publisher = _a.sent();
2450
+ return [4 /*yield*/, publisher.send([jobName, JSON.stringify(params), new bson.ObjectId().toHexString()])];
2287
2451
  case 2:
2288
2452
  _a.sent();
2289
2453
  return [2 /*return*/];
@@ -2291,28 +2455,9 @@
2291
2455
  });
2292
2456
  });
2293
2457
  };
2294
- JobManager.prototype.enqueueIn = function (time, jobType, params, que) {
2295
- if (params === void 0) { params = {}; }
2296
- if (que === void 0) { que = "main"; }
2297
- return __awaiter$o(this, void 0, void 0, function () {
2298
- var jobName;
2299
- return __generator(this, function (_a) {
2300
- switch (_a.label) {
2301
- case 0: return [4 /*yield*/, this.tryResolveAndConnect(jobType, params)];
2302
- case 1:
2303
- jobName = _a.sent();
2304
- return [4 /*yield*/, this.queue.enqueueIn(time, que, jobName, [params])];
2305
- case 2:
2306
- _a.sent();
2307
- return [2 /*return*/];
2308
- }
2309
- });
2310
- });
2311
- };
2312
- JobManager.prototype.schedule = function (minute, hour, dayOfMonth, month, dayOfWeek, jobType, params, que) {
2458
+ JobManager.prototype.schedule = function (minute, hour, dayOfMonth, month, dayOfWeek, jobType, params) {
2313
2459
  var _this = this;
2314
2460
  if (params === void 0) { params = {}; }
2315
- if (que === void 0) { que = "main"; }
2316
2461
  var expression = [minute, hour, dayOfMonth, month, dayOfWeek].map(function (t) {
2317
2462
  if (isObject(t)) {
2318
2463
  var range = t;
@@ -2329,33 +2474,53 @@
2329
2474
  return null;
2330
2475
  }
2331
2476
  return nodeCron.schedule(expression, function () {
2332
- _this.enqueue(jobType, params, que).catch(function (e) {
2477
+ _this.enqueue(jobType, params).catch(function (e) {
2333
2478
  console.log("Can't enqueue job: '" + jobName + "' because: " + e);
2334
2479
  });
2335
2480
  });
2336
2481
  };
2337
2482
  JobManager.prototype.startProcessing = function () {
2338
- return __awaiter$o(this, void 0, void 0, function () {
2483
+ var _this = this;
2484
+ var host = this.config.resolve("zmqRemoteHost");
2485
+ this.worker = zeromq.socket("pull");
2486
+ this.worker.connect(host);
2487
+ this.worker.on("message", function (name, args, uniqueId) { return __awaiter$o(_this, void 0, void 0, function () {
2488
+ var jobName, jobParams, timerId, jobNameLog, jobArgsLog, e_1, e_2;
2339
2489
  return __generator(this, function (_a) {
2340
2490
  switch (_a.label) {
2341
2491
  case 0:
2342
- this.initialize();
2343
- return [4 /*yield*/, this.worker.connect()];
2492
+ _a.trys.push([0, 5, , 6]);
2493
+ jobName = name.toString("utf8");
2494
+ jobParams = JSON.parse(args.toString("utf8"));
2495
+ timerId = uniqueId === null || uniqueId === void 0 ? void 0 : uniqueId.toString("utf8");
2496
+ jobNameLog = "\u001B[36m\"" + jobName + "\"\u001B[0m";
2497
+ jobArgsLog = "\n" + jsonHighlight(jobParams);
2498
+ console.time(timerId);
2499
+ console.timeLog(timerId, "Started working on background job: " + jobNameLog + " with args: " + jobArgsLog + "\n\n");
2500
+ _a.label = 1;
2344
2501
  case 1:
2345
- _a.sent();
2346
- return [4 /*yield*/, this.worker.start()];
2502
+ _a.trys.push([1, 3, , 4]);
2503
+ return [4 /*yield*/, Promise.race([this.jobs[jobName](jobParams), promiseTimeout(15000, true)])];
2347
2504
  case 2:
2348
2505
  _a.sent();
2349
- return [4 /*yield*/, this.scheduler.connect()];
2506
+ console.timeLog(timerId, "Finished working on background job: " + jobNameLog + "\n\n");
2507
+ return [3 /*break*/, 4];
2350
2508
  case 3:
2351
- _a.sent();
2352
- return [4 /*yield*/, this.scheduler.start()];
2509
+ e_1 = _a.sent();
2510
+ console.timeLog(timerId, "Background job failed: " + jobNameLog + "\n" + e_1.message + "\n\n");
2511
+ return [3 /*break*/, 4];
2353
2512
  case 4:
2354
- _a.sent();
2355
- return [2 /*return*/];
2513
+ console.timeEnd(timerId);
2514
+ return [3 /*break*/, 6];
2515
+ case 5:
2516
+ e_2 = _a.sent();
2517
+ console.log("Failed to start job: " + e_2.message);
2518
+ return [3 /*break*/, 6];
2519
+ case 6: return [2 /*return*/];
2356
2520
  }
2357
2521
  });
2358
- });
2522
+ }); });
2523
+ console.log("Waiting for jobs at: " + host);
2359
2524
  };
2360
2525
  JobManager.prototype.tryResolve = function (jobType, params) {
2361
2526
  var jobName = getConstructorName(jobType);
@@ -2370,47 +2535,6 @@
2370
2535
  }
2371
2536
  return jobName;
2372
2537
  };
2373
- JobManager.prototype.initialize = function () {
2374
- if (this.queue)
2375
- return;
2376
- var config = this.config;
2377
- var options = { password: config.resolve("redisPassword") };
2378
- var sentinels = config.resolve("redisSentinels");
2379
- var redis = !sentinels
2380
- ? null
2381
- : new IORedis({
2382
- sentinels: sentinels,
2383
- name: config.resolve("redisCluster"),
2384
- });
2385
- var connection = {
2386
- pkg: "ioredis",
2387
- host: config.resolve("redisHost"),
2388
- password: options.password,
2389
- port: config.resolve("redisPort"),
2390
- namespace: config.resolve("redisNamespace"),
2391
- redis: redis,
2392
- options: options
2393
- };
2394
- var queues = config.resolve("workQueues");
2395
- this.queue = new nodeResque.Queue({ connection: connection }, this.jobs);
2396
- this.worker = new nodeResque.Worker({ connection: connection, queues: queues }, this.jobs);
2397
- this.worker.on("job", function (queue, job) {
2398
- console.log("working job " + queue + " " + JSON.stringify(job));
2399
- });
2400
- this.worker.on("reEnqueue", function (queue, job, plugin) {
2401
- console.log("reEnqueue job (" + plugin + ") " + queue + " " + JSON.stringify(job));
2402
- });
2403
- this.worker.on("success", function (queue, job, result, duration) {
2404
- console.log("job success " + queue + " " + JSON.stringify(job) + " >> " + result + " (" + duration + "ms)");
2405
- });
2406
- this.worker.on("failure", function (queue, job, failure, duration) {
2407
- console.log("job failure " + queue + " " + JSON.stringify(job) + " >> " + failure + " (" + duration + "ms)");
2408
- });
2409
- this.worker.on("error", function (error, queue, job) {
2410
- console.log("error " + queue + " " + JSON.stringify(job) + " >> " + error);
2411
- });
2412
- this.scheduler = new nodeResque.Scheduler({ connection: connection }, this.jobs);
2413
- };
2414
2538
  JobManager.prototype.tryResolveFromName = function (jobName, params) {
2415
2539
  var jobType = this.jobTypes.find(function (type) {
2416
2540
  return getConstructorName(type) == jobName;
@@ -2422,17 +2546,25 @@
2422
2546
  };
2423
2547
  JobManager.prototype.tryResolveAndConnect = function (jobType, params) {
2424
2548
  return __awaiter$o(this, void 0, void 0, function () {
2425
- var jobName;
2549
+ var _this = this;
2426
2550
  return __generator(this, function (_a) {
2427
- switch (_a.label) {
2428
- case 0:
2429
- this.initialize();
2430
- jobName = this.tryResolve(jobType, params);
2431
- return [4 /*yield*/, this.queue.connect()];
2432
- case 1:
2433
- _a.sent();
2434
- return [2 /*return*/, jobName];
2435
- }
2551
+ this.scheduler = this.scheduler || new Promise(function (resolve) { return __awaiter$o(_this, void 0, void 0, function () {
2552
+ var port, publisher;
2553
+ return __generator(this, function (_a) {
2554
+ switch (_a.label) {
2555
+ case 0:
2556
+ port = this.config.resolve("zmqPort");
2557
+ publisher = zeromq.socket("push");
2558
+ return [4 /*yield*/, publisher.bind("tcp://0.0.0.0:" + port)];
2559
+ case 1:
2560
+ _a.sent();
2561
+ console.log("Publisher bound to port: " + port);
2562
+ resolve(publisher);
2563
+ return [2 /*return*/];
2564
+ }
2565
+ });
2566
+ }); });
2567
+ return [2 /*return*/, this.tryResolve(jobType, params)];
2436
2568
  });
2437
2569
  });
2438
2570
  };
@@ -2444,13 +2576,6 @@
2444
2576
  container.register(jobType, jobType);
2445
2577
  return container.resolve(jobType);
2446
2578
  };
2447
- JobManager.prototype.toPerformFunction = function (jobType) {
2448
- var _this = this;
2449
- return function (jobParams) {
2450
- var job = _this.resolveJobInstance(jobType, jobParams);
2451
- return job.process();
2452
- };
2453
- };
2454
2579
  return JobManager;
2455
2580
  }());
2456
2581
  exports.JobManager = __decorate$s([
@@ -4605,7 +4730,9 @@
4605
4730
  case 0: return [4 /*yield*/, this.getAsset("Image", id, params.lazy, res)];
4606
4731
  case 1:
4607
4732
  asset = _c.sent();
4608
- params.rotation = params.rotation || rotation;
4733
+ if (rotation !== 0) {
4734
+ params.rotation = params.rotation || rotation;
4735
+ }
4609
4736
  return [2 /*return*/, asset.downloadImage(params)];
4610
4737
  }
4611
4738
  });
@@ -5709,20 +5836,8 @@
5709
5836
  new Parameter("mongoPassword", null),
5710
5837
  new Parameter("nodeEnv", "development"),
5711
5838
  new Parameter("appPort", 80),
5712
- new Parameter("redisHost", "127.0.0.1"),
5713
- new Parameter("redisPort", 6379),
5714
- new Parameter("redisPassword", "123456"),
5715
- new Parameter("redisNamespace", "resque"),
5716
- new Parameter("redisCluster", "mymaster"),
5717
- new Parameter("redisSentinels", null, function (value) {
5718
- if (!value)
5719
- return null;
5720
- return value.split(", ").map(function (item) {
5721
- var values = item.split(":");
5722
- return { host: values[0], port: Number(values[1]) };
5723
- });
5724
- }),
5725
- new Parameter("workQueues", ["main"]),
5839
+ new Parameter("zmqPort", 3000),
5840
+ new Parameter("zmqRemoteHost", "tcp://127.0.0.1:3000"),
5726
5841
  new Parameter("isWorker", false),
5727
5842
  new Parameter("mainEndpoint", ""),
5728
5843
  new Parameter("idChars", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"),
@@ -6011,6 +6126,7 @@
6011
6126
  exports.isPrimitive = isPrimitive;
6012
6127
  exports.isString = isString;
6013
6128
  exports.isType = isType;
6129
+ exports.jsonHighlight = jsonHighlight;
6014
6130
  exports.lastItem = lastItem;
6015
6131
  exports.lcFirst = lcFirst;
6016
6132
  exports.lookupPipelines = lookupPipelines;