@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.
- package/bundles/stemy-backend.umd.js +344 -228
- package/bundles/stemy-backend.umd.js.map +1 -1
- package/bundles/stemy-backend.umd.min.js +1 -1
- package/bundles/stemy-backend.umd.min.js.map +1 -1
- package/common-types.d.ts +7 -5
- package/esm2015/common-types.js +1 -1
- package/esm2015/public_api.js +4 -16
- package/esm2015/rest-controllers/assets.controller.js +4 -2
- package/esm2015/services/assets.js +23 -1
- package/esm2015/services/entities/asset.js +17 -24
- package/esm2015/services/entities/lazy-asset.js +5 -5
- package/esm2015/services/entities/temp-asset.js +65 -0
- package/esm2015/services/job-manager.js +50 -80
- package/esm2015/utils.js +70 -4
- package/fesm2015/stemy-backend.js +244 -143
- package/fesm2015/stemy-backend.js.map +1 -1
- package/package.json +2 -3
- package/public_api.d.ts +1 -1
- package/services/assets.d.ts +1 -0
- package/services/entities/asset.d.ts +2 -2
- package/services/entities/lazy-asset.d.ts +1 -1
- package/services/entities/temp-asset.d.ts +20 -0
- package/services/job-manager.d.ts +11 -13
- package/stemy-backend.metadata.json +1 -1
- package/utils.d.ts +37 -1
|
@@ -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-
|
|
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-
|
|
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-
|
|
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,
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
-
|
|
749
|
+
if (error === void 0) { error = false; }
|
|
750
|
+
return new Promise(function (resolve, reject) {
|
|
751
751
|
setTimeout(function () {
|
|
752
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1609
|
-
var crop, buffer, cropBefore, cropAfter,
|
|
1610
|
-
return __generator(this, function (
|
|
1611
|
-
switch (
|
|
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
|
|
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 =
|
|
1628
|
-
|
|
1694
|
+
buffer = _c.sent();
|
|
1695
|
+
_c.label = 2;
|
|
1629
1696
|
case 2:
|
|
1630
|
-
|
|
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
|
-
|
|
1700
|
+
img = sharp$2(buffer);
|
|
1701
|
+
return [4 /*yield*/, img.metadata()];
|
|
1634
1702
|
case 3:
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
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 =
|
|
1644
|
-
|
|
1645
|
-
|
|
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
|
-
|
|
1649
|
-
return [4 /*yield*/,
|
|
1650
|
-
|
|
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
|
-
|
|
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
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
|
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 (
|
|
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 (
|
|
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
|
-
|
|
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
|
|
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 [
|
|
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
|
|
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 [
|
|
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.
|
|
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
|
|
2444
|
+
var publisher;
|
|
2281
2445
|
return __generator(this, function (_a) {
|
|
2282
2446
|
switch (_a.label) {
|
|
2283
|
-
case 0: return [4 /*yield*/, this.
|
|
2447
|
+
case 0: return [4 /*yield*/, this.scheduler];
|
|
2284
2448
|
case 1:
|
|
2285
|
-
|
|
2286
|
-
return [4 /*yield*/,
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
2343
|
-
|
|
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.
|
|
2346
|
-
return [4 /*yield*/, this.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2355
|
-
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
|
|
2549
|
+
var _this = this;
|
|
2426
2550
|
return __generator(this, function (_a) {
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
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
|
-
|
|
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("
|
|
5713
|
-
new Parameter("
|
|
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;
|