@stemy/backend 3.5.15 → 3.6.0

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.
@@ -2,25 +2,25 @@ import { dirname, basename, join, resolve } from 'path';
2
2
  import { json } from 'body-parser';
3
3
  import { sign, verify } from 'jsonwebtoken';
4
4
  import { injectable, scoped, Lifecycle, singleton, injectAll, inject, isFactoryProvider, container } from 'tsyringe';
5
- import { HttpError, getMetadataArgsStorage, Authorized, Post, UploadedFile, Body, Get, Param, QueryParam, Res, QueryParams, Controller, UnauthorizedError, CurrentUser, BadRequestError, Middleware, createParamDecorator, useContainer, useExpressServer } from 'routing-controllers';
5
+ import { HttpError, getMetadataArgsStorage, Authorized, Post, UploadedFile, Body, Get, Param, QueryParam, Res, QueryParams, Controller, UnauthorizedError, CurrentUser, Header, BadRequestError, Middleware, createParamDecorator, useContainer, useExpressServer } from 'routing-controllers';
6
6
  import { OnMessage, ConnectedSocket, MessageBody, SocketController, Middleware as Middleware$1, useContainer as useContainer$1, useSocketServer } from 'socket-controllers';
7
7
  import fontKit_ from 'fontkit';
8
- import { fromBuffer } from 'file-type';
9
8
  import sharp_ from 'sharp';
10
9
  import { ObjectId as ObjectId$1 } from 'bson';
11
10
  import axios, { AxiosError } from 'axios';
12
11
  import { exec } from 'child_process';
13
12
  import { createHash } from 'crypto';
14
- import { Subscription, Observable, Subject, from } from 'rxjs';
13
+ import { Subscription, Observable, Subject, from, BehaviorSubject } from 'rxjs';
15
14
  import { canReportError } from 'rxjs/internal/util/canReportError';
16
15
  import { mkdir, unlink, readFile as readFile$1, writeFile as writeFile$1, lstat, readdir, access, constants, lstatSync, readFileSync, existsSync } from 'fs';
17
16
  import { ObjectId, GridFSBucket } from 'mongodb';
18
17
  import { Types, connect, model } from 'mongoose';
19
18
  import { Readable, PassThrough } from 'stream';
19
+ import { fromBuffer } from 'file-type';
20
20
  import dotenv from 'dotenv';
21
21
  import { validate, schedule } from 'node-cron';
22
22
  import { socket } from 'zeromq';
23
- import { filter as filter$1, map } from 'rxjs/operators';
23
+ import { filter as filter$1, map, first, timeout } from 'rxjs/operators';
24
24
  import { createServer } from 'http';
25
25
  import express_, { static as static$1 } from 'express';
26
26
  import socket_io from 'socket.io';
@@ -31,6 +31,7 @@ import { routingControllersToSpec, OpenAPI, getStatusCode } from 'routing-contro
31
31
  import { validationMetadatasToSchemas } from 'class-validator-jsonschema';
32
32
  import { defaultMetadataStorage } from 'class-transformer/storage';
33
33
  import { ValidatorConstraint, ValidationTypes, Min, Max, IsOptional, IsBoolean } from 'class-validator';
34
+ import { CommandsAddon, AnsiCodes } from '@stemy/terminal-commands-addon';
34
35
  import { compare } from 'bcrypt';
35
36
  import moment from 'moment';
36
37
  import { getModelForClass } from '@typegoose/typegoose';
@@ -41,6 +42,7 @@ const Type = Function;
41
42
  // --- Injection tokens ---
42
43
  const FIXTURE = Symbol.for("fixture-token");
43
44
  const JOB = Symbol.for("job-token");
45
+ const TERMINAL_COMMAND = Symbol.for("terminal-command-token");
44
46
  const EXPRESS = Symbol.for("express-token");
45
47
  const HTTP_SERVER = Symbol.for("http-server-token");
46
48
  const SOCKET_SERVER = Symbol.for("socket-server-token");
@@ -55,13 +57,13 @@ class Parameter {
55
57
  }
56
58
  }
57
59
 
58
- var __decorate$C = (this && this.__decorate) || function (decorators, target, key, desc) {
60
+ var __decorate$G = (this && this.__decorate) || function (decorators, target, key, desc) {
59
61
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
60
62
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
61
63
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
62
64
  return c > 3 && r && Object.defineProperty(target, key, r), r;
63
65
  };
64
- var __awaiter$B = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
66
+ var __awaiter$F = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
65
67
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
66
68
  return new (P || (P = Promise))(function (resolve, reject) {
67
69
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -85,26 +87,6 @@ const fontProps = [
85
87
  "xHeight", "numGlyphs", "characterSet", "availableFeatures"
86
88
  ];
87
89
  let AssetProcessor = AssetProcessor_1 = class AssetProcessor {
88
- static checkTextFileType(type) {
89
- return type.mime.indexOf("text") >= 0 || type.mime.indexOf("xml") >= 0;
90
- }
91
- static fixTextFileType(type, buffer) {
92
- const text = buffer.toString("utf8");
93
- if (text.indexOf("<svg") >= 0) {
94
- return { ext: "svg", mime: "image/svg+xml" };
95
- }
96
- return type;
97
- }
98
- static fileTypeFromBuffer(buffer) {
99
- var _a;
100
- return __awaiter$B(this, void 0, void 0, function* () {
101
- const type = ((_a = yield fromBuffer(buffer)) !== null && _a !== void 0 ? _a : { ext: "txt", mime: "text/plain" });
102
- if (AssetProcessor_1.checkTextFileType(type)) {
103
- return AssetProcessor_1.fixTextFileType(type, buffer);
104
- }
105
- return type;
106
- });
107
- }
108
90
  static extractFontFormat(font) {
109
91
  const name = font.constructor.name;
110
92
  const tag = font["directory"].tag;
@@ -124,7 +106,7 @@ let AssetProcessor = AssetProcessor_1 = class AssetProcessor {
124
106
  return imageTypes.indexOf(contentType) >= 0;
125
107
  }
126
108
  static copyImageMeta(buffer, metadata, fileType) {
127
- return __awaiter$B(this, void 0, void 0, function* () {
109
+ return __awaiter$F(this, void 0, void 0, function* () {
128
110
  if (fileType.mime === "image/svg+xml") {
129
111
  const match = /<svg([^<>]+)>/gi.exec(buffer.toString("utf8"));
130
112
  if (match && match.length > 1) {
@@ -163,7 +145,7 @@ let AssetProcessor = AssetProcessor_1 = class AssetProcessor {
163
145
  });
164
146
  }
165
147
  process(buffer, metadata, fileType) {
166
- return __awaiter$B(this, void 0, void 0, function* () {
148
+ return __awaiter$F(this, void 0, void 0, function* () {
167
149
  if (AssetProcessor_1.isImage(fileType.mime)) {
168
150
  buffer = yield AssetProcessor_1.copyImageMeta(buffer, metadata, fileType);
169
151
  }
@@ -174,12 +156,12 @@ let AssetProcessor = AssetProcessor_1 = class AssetProcessor {
174
156
  });
175
157
  }
176
158
  };
177
- AssetProcessor = AssetProcessor_1 = __decorate$C([
159
+ AssetProcessor = AssetProcessor_1 = __decorate$G([
178
160
  injectable(),
179
161
  scoped(Lifecycle.ContainerScoped)
180
162
  ], AssetProcessor);
181
163
 
182
- var __awaiter$A = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
164
+ var __awaiter$E = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
183
165
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
184
166
  return new (P || (P = Promise))(function (resolve, reject) {
185
167
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -357,7 +339,7 @@ function toCropRegion(cropInfo) {
357
339
  };
358
340
  }
359
341
  function toImage(src, params, meta) {
360
- return __awaiter$A(this, void 0, void 0, function* () {
342
+ return __awaiter$E(this, void 0, void 0, function* () {
361
343
  // Default params and meta
362
344
  params = params || {};
363
345
  meta = meta || {};
@@ -495,7 +477,7 @@ function readFile(path) {
495
477
  });
496
478
  }
497
479
  function readAndDeleteFile(path, timeout = 5000) {
498
- return __awaiter$A(this, void 0, void 0, function* () {
480
+ return __awaiter$E(this, void 0, void 0, function* () {
499
481
  const data = yield readFile(path);
500
482
  setTimeout(() => {
501
483
  unlink(path, () => {
@@ -505,7 +487,7 @@ function readAndDeleteFile(path, timeout = 5000) {
505
487
  });
506
488
  }
507
489
  function writeFile(path, data) {
508
- return __awaiter$A(this, void 0, void 0, function* () {
490
+ return __awaiter$E(this, void 0, void 0, function* () {
509
491
  yield mkdirRecursive(dirname(path));
510
492
  return new Promise((res, rej) => {
511
493
  writeFile$1(path, data, err => {
@@ -632,6 +614,9 @@ function padLeft(value, count = 3, padWith = "0") {
632
614
  function padRight(value, count = 3, padWith = "0") {
633
615
  return `${value}`.padEnd(count, padWith);
634
616
  }
617
+ function camelCaseToDash(str) {
618
+ return str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
619
+ }
635
620
  function deleteFromBucket(bucket, fileId) {
636
621
  return new Promise(((resolve, reject) => {
637
622
  bucket.delete(fileId, error => {
@@ -818,6 +803,9 @@ function jsonHighlight(input, colorOptions) {
818
803
  function replaceSpecialChars(str, to = "-") {
819
804
  return `${str}`.replace(/[&\/\\#, +()$~%.@'":*?<>{}]/g, to);
820
805
  }
806
+ function regexEscape(str) {
807
+ return `${str}`.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
808
+ }
821
809
  function flatten(arr) {
822
810
  return arr.reduce((flat, toFlatten) => {
823
811
  return flat.concat(isArray(toFlatten) ? flatten(toFlatten) : toFlatten);
@@ -836,18 +824,38 @@ function prepareUrl(ending = "/") {
836
824
  };
837
825
  }
838
826
  const prepareUrlSlash = prepareUrl("/");
839
- const prepareUrlEmpty = prepareUrl("");
827
+ const prepareUrlEmpty = prepareUrl("");
828
+ function checkTextFileType(type) {
829
+ return type.mime.indexOf("text") >= 0 || type.mime.indexOf("xml") >= 0;
830
+ }
831
+ function fixTextFileType(type, buffer) {
832
+ const text = buffer.toString("utf8");
833
+ if (text.indexOf("<svg") >= 0) {
834
+ return { ext: "svg", mime: "image/svg+xml" };
835
+ }
836
+ return type;
837
+ }
838
+ function fileTypeFromBuffer(buffer) {
839
+ var _a;
840
+ return __awaiter$E(this, void 0, void 0, function* () {
841
+ const type = ((_a = yield fromBuffer(buffer)) !== null && _a !== void 0 ? _a : { ext: "txt", mime: "text/plain" });
842
+ if (checkTextFileType(type)) {
843
+ return fixTextFileType(type, buffer);
844
+ }
845
+ return type;
846
+ });
847
+ }
840
848
 
841
- var __decorate$B = (this && this.__decorate) || function (decorators, target, key, desc) {
849
+ var __decorate$F = (this && this.__decorate) || function (decorators, target, key, desc) {
842
850
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
843
851
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
844
852
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
845
853
  return c > 3 && r && Object.defineProperty(target, key, r), r;
846
854
  };
847
- var __metadata$v = (this && this.__metadata) || function (k, v) {
855
+ var __metadata$y = (this && this.__metadata) || function (k, v) {
848
856
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
849
857
  };
850
- var __param$9 = (this && this.__param) || function (paramIndex, decorator) {
858
+ var __param$b = (this && this.__param) || function (paramIndex, decorator) {
851
859
  return function (target, key) { decorator(target, key, paramIndex); }
852
860
  };
853
861
  let Configuration = class Configuration {
@@ -863,20 +871,21 @@ let Configuration = class Configuration {
863
871
  existingParam.resolver = param.resolver || existingParam.resolver;
864
872
  this.paramMap[param.name] = existingParam;
865
873
  }
866
- resolveValue(param) {
874
+ resolveValue(param, alreadyResolved) {
867
875
  const envName = param.name.replace(/\.?([A-Z|0-9]+)/g, function (x, y) {
868
876
  return "_" + y.toLowerCase();
869
877
  }).replace(/\./gi, "_").replace(/^_/, "").toUpperCase();
870
878
  const envValue = process.env[envName];
879
+ const helper = (p) => this.resolveInternal(p, alreadyResolved);
871
880
  if (typeof envValue !== "undefined") {
872
881
  const value = isFunction(param.resolver)
873
- ? param.resolver(envValue)
882
+ ? param.resolver(envValue, helper)
874
883
  : convertValue(envValue, getType(param.defaultValue));
875
884
  console.log(colorize(`Processing param value`, ConsoleColor.FgYellow), colorize(param.name, ConsoleColor.FgGreen), colorize(envName, ConsoleColor.FgBlue), `"${envValue}"`, value);
876
885
  return value;
877
886
  }
878
887
  else if (isFunction(param.resolver)) {
879
- const value = param.resolver(param.defaultValue);
888
+ const value = param.resolver(param.defaultValue, helper);
880
889
  console.log(colorize(`Processing default param value`, ConsoleColor.FgYellow), colorize(param.name, ConsoleColor.FgGreen), param.defaultValue, value);
881
890
  return value;
882
891
  }
@@ -887,31 +896,38 @@ let Configuration = class Configuration {
887
896
  return !!this.paramMap[name];
888
897
  }
889
898
  resolve(name) {
899
+ return this.resolveInternal(name, []);
900
+ }
901
+ resolveInternal(name, alreadyResolved) {
902
+ if (alreadyResolved.includes(name)) {
903
+ throw new Error(`Circular dependency detected: ${alreadyResolved.join(" -> ")} -> ${name}`);
904
+ }
905
+ alreadyResolved.push(name);
890
906
  const param = this.paramMap[name];
891
907
  if (!param)
892
908
  throw new Error(`Parameter with name: '${name}' does not exists in configuration`);
893
909
  if (!(name in this.paramValues)) {
894
- this.paramValues[name] = this.resolveValue(param);
910
+ this.paramValues[name] = this.resolveValue(param, alreadyResolved);
895
911
  }
896
912
  return this.paramValues[name];
897
913
  }
898
914
  };
899
- Configuration = __decorate$B([
915
+ Configuration = __decorate$F([
900
916
  singleton(),
901
- __param$9(0, injectAll(PARAMETER)),
902
- __metadata$v("design:paramtypes", [Array])
917
+ __param$b(0, injectAll(PARAMETER)),
918
+ __metadata$y("design:paramtypes", [Array])
903
919
  ], Configuration);
904
920
 
905
- var __decorate$A = (this && this.__decorate) || function (decorators, target, key, desc) {
921
+ var __decorate$E = (this && this.__decorate) || function (decorators, target, key, desc) {
906
922
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
907
923
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
908
924
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
909
925
  return c > 3 && r && Object.defineProperty(target, key, r), r;
910
926
  };
911
- var __metadata$u = (this && this.__metadata) || function (k, v) {
927
+ var __metadata$x = (this && this.__metadata) || function (k, v) {
912
928
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
913
929
  };
914
- var __awaiter$z = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
930
+ var __awaiter$D = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
915
931
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
916
932
  return new (P || (P = Promise))(function (resolve, reject) {
917
933
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -937,7 +953,7 @@ let MongoConnector = class MongoConnector {
937
953
  return this.fsBucket;
938
954
  }
939
955
  connect() {
940
- return __awaiter$z(this, void 0, void 0, function* () {
956
+ return __awaiter$D(this, void 0, void 0, function* () {
941
957
  if (this.db)
942
958
  return this.db;
943
959
  this.conn = (yield connect(this.configuration.resolve("mongoUri"), {
@@ -950,12 +966,12 @@ let MongoConnector = class MongoConnector {
950
966
  });
951
967
  }
952
968
  };
953
- MongoConnector = __decorate$A([
969
+ MongoConnector = __decorate$E([
954
970
  singleton(),
955
- __metadata$u("design:paramtypes", [Configuration])
971
+ __metadata$x("design:paramtypes", [Configuration])
956
972
  ], MongoConnector);
957
973
 
958
- var __awaiter$y = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
974
+ var __awaiter$C = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
959
975
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
960
976
  return new (P || (P = Promise))(function (resolve, reject) {
961
977
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -977,7 +993,7 @@ class BaseEntity {
977
993
  return this.collection.updateOne({ _id: this.mId }, { $set: this.toJSON() });
978
994
  }
979
995
  load() {
980
- return __awaiter$y(this, void 0, void 0, function* () {
996
+ return __awaiter$C(this, void 0, void 0, function* () {
981
997
  const res = yield this.collection.findOne({ _id: this.mId });
982
998
  this.deleted = !res;
983
999
  this.data = res || {};
@@ -992,7 +1008,7 @@ class BaseEntity {
992
1008
  }
993
1009
  }
994
1010
 
995
- var __awaiter$x = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1011
+ var __awaiter$B = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
996
1012
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
997
1013
  return new (P || (P = Promise))(function (resolve, reject) {
998
1014
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1019,7 +1035,7 @@ class Asset extends BaseEntity {
1019
1035
  return this.bucket.openDownloadStream(this.mId);
1020
1036
  }
1021
1037
  unlink() {
1022
- return __awaiter$x(this, void 0, void 0, function* () {
1038
+ return __awaiter$B(this, void 0, void 0, function* () {
1023
1039
  return deleteFromBucket(this.bucket, this.mId);
1024
1040
  });
1025
1041
  }
@@ -1027,7 +1043,7 @@ class Asset extends BaseEntity {
1027
1043
  return streamToBuffer(this.stream);
1028
1044
  }
1029
1045
  download(metadata) {
1030
- return __awaiter$x(this, void 0, void 0, function* () {
1046
+ return __awaiter$B(this, void 0, void 0, function* () {
1031
1047
  metadata = Object.assign(this.metadata, metadata || {});
1032
1048
  metadata.downloadCount = isNaN(metadata.downloadCount) || !metadata.firstDownload
1033
1049
  ? 1
@@ -1039,18 +1055,18 @@ class Asset extends BaseEntity {
1039
1055
  });
1040
1056
  }
1041
1057
  getImage(params = null) {
1042
- return __awaiter$x(this, void 0, void 0, function* () {
1058
+ return __awaiter$B(this, void 0, void 0, function* () {
1043
1059
  return toImage(this.stream, params, this.metadata);
1044
1060
  });
1045
1061
  }
1046
1062
  downloadImage(params, metadata) {
1047
- return __awaiter$x(this, void 0, void 0, function* () {
1063
+ return __awaiter$B(this, void 0, void 0, function* () {
1048
1064
  return toImage(yield this.download(metadata), params, this.metadata);
1049
1065
  });
1050
1066
  }
1051
1067
  }
1052
1068
 
1053
- var __awaiter$w = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1069
+ var __awaiter$A = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1054
1070
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1055
1071
  return new (P || (P = Promise))(function (resolve, reject) {
1056
1072
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1071,17 +1087,17 @@ class TempAsset {
1071
1087
  return bufferToStream(this.buffer);
1072
1088
  }
1073
1089
  unlink() {
1074
- return __awaiter$w(this, void 0, void 0, function* () {
1090
+ return __awaiter$A(this, void 0, void 0, function* () {
1075
1091
  throw new Error(`Temp asset '${this.id}' can not be removed!`);
1076
1092
  });
1077
1093
  }
1078
1094
  getBuffer() {
1079
- return __awaiter$w(this, void 0, void 0, function* () {
1095
+ return __awaiter$A(this, void 0, void 0, function* () {
1080
1096
  return this.buffer;
1081
1097
  });
1082
1098
  }
1083
1099
  download(metadata) {
1084
- return __awaiter$w(this, void 0, void 0, function* () {
1100
+ return __awaiter$A(this, void 0, void 0, function* () {
1085
1101
  return this.stream;
1086
1102
  });
1087
1103
  }
@@ -1093,12 +1109,12 @@ class TempAsset {
1093
1109
  return this.downloadImage(params);
1094
1110
  }
1095
1111
  save() {
1096
- return __awaiter$w(this, void 0, void 0, function* () {
1112
+ return __awaiter$A(this, void 0, void 0, function* () {
1097
1113
  return this;
1098
1114
  });
1099
1115
  }
1100
1116
  load() {
1101
- return __awaiter$w(this, void 0, void 0, function* () {
1117
+ return __awaiter$A(this, void 0, void 0, function* () {
1102
1118
  return this;
1103
1119
  });
1104
1120
  }
@@ -1112,16 +1128,16 @@ class TempAsset {
1112
1128
  }
1113
1129
  }
1114
1130
 
1115
- var __decorate$z = (this && this.__decorate) || function (decorators, target, key, desc) {
1131
+ var __decorate$D = (this && this.__decorate) || function (decorators, target, key, desc) {
1116
1132
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1117
1133
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1118
1134
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1119
1135
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1120
1136
  };
1121
- var __metadata$t = (this && this.__metadata) || function (k, v) {
1137
+ var __metadata$w = (this && this.__metadata) || function (k, v) {
1122
1138
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1123
1139
  };
1124
- var __awaiter$v = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1140
+ var __awaiter$z = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1125
1141
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1126
1142
  return new (P || (P = Promise))(function (resolve, reject) {
1127
1143
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1139,16 +1155,16 @@ let Assets = class Assets {
1139
1155
  this.collection = (_a = connector.database) === null || _a === void 0 ? void 0 : _a.collection("assets.files");
1140
1156
  }
1141
1157
  write(stream, contentType = null, metadata = null) {
1142
- return __awaiter$v(this, void 0, void 0, function* () {
1158
+ return __awaiter$z(this, void 0, void 0, function* () {
1143
1159
  const uploadStream = copyStream(stream);
1144
1160
  const buffer = yield streamToBuffer(stream);
1145
1161
  let fileType = { ext: "", mime: contentType };
1146
1162
  try {
1147
- fileType = yield AssetProcessor.fileTypeFromBuffer(buffer);
1163
+ fileType = yield fileTypeFromBuffer(buffer);
1148
1164
  }
1149
1165
  catch (e) {
1150
1166
  if (!fileType.mime) {
1151
- throw `Can't determine mime type`;
1167
+ throw new Error(`Can't determine mime type: ${e}`);
1152
1168
  }
1153
1169
  console.log(`Can't determine mime type`, e);
1154
1170
  }
@@ -1157,10 +1173,10 @@ let Assets = class Assets {
1157
1173
  });
1158
1174
  }
1159
1175
  writeBuffer(buffer, metadata = null, contentType = null) {
1160
- return __awaiter$v(this, void 0, void 0, function* () {
1176
+ return __awaiter$z(this, void 0, void 0, function* () {
1161
1177
  let fileType = { ext: "", mime: contentType };
1162
1178
  try {
1163
- fileType = yield AssetProcessor.fileTypeFromBuffer(buffer);
1179
+ fileType = yield fileTypeFromBuffer(buffer);
1164
1180
  }
1165
1181
  catch (e) {
1166
1182
  if (!fileType.mime) {
@@ -1174,7 +1190,7 @@ let Assets = class Assets {
1174
1190
  });
1175
1191
  }
1176
1192
  writeUrl(url, metadata = null) {
1177
- return __awaiter$v(this, void 0, void 0, function* () {
1193
+ return __awaiter$z(this, void 0, void 0, function* () {
1178
1194
  metadata = metadata || {};
1179
1195
  metadata.filename = metadata.filename || url;
1180
1196
  metadata.url = url;
@@ -1188,11 +1204,11 @@ let Assets = class Assets {
1188
1204
  });
1189
1205
  }
1190
1206
  download(url, contentType = null) {
1191
- return __awaiter$v(this, void 0, void 0, function* () {
1207
+ return __awaiter$z(this, void 0, void 0, function* () {
1192
1208
  let buffer = (yield axios({ url, responseType: "arraybuffer" })).data;
1193
1209
  let fileType = { ext: "", mime: contentType };
1194
1210
  try {
1195
- fileType = yield AssetProcessor.fileTypeFromBuffer(buffer);
1211
+ fileType = yield fileTypeFromBuffer(buffer);
1196
1212
  }
1197
1213
  catch (e) {
1198
1214
  if (!fileType.mime) {
@@ -1209,18 +1225,18 @@ let Assets = class Assets {
1209
1225
  });
1210
1226
  }
1211
1227
  read(id) {
1212
- return __awaiter$v(this, void 0, void 0, function* () {
1228
+ return __awaiter$z(this, void 0, void 0, function* () {
1213
1229
  return !id ? null : this.find({ _id: new ObjectId$1(id) });
1214
1230
  });
1215
1231
  }
1216
1232
  find(where) {
1217
- return __awaiter$v(this, void 0, void 0, function* () {
1233
+ return __awaiter$z(this, void 0, void 0, function* () {
1218
1234
  const data = yield this.collection.findOne(where);
1219
1235
  return !data ? null : new Asset(data._id, data, this.collection, this.bucket);
1220
1236
  });
1221
1237
  }
1222
1238
  findMany(where) {
1223
- return __awaiter$v(this, void 0, void 0, function* () {
1239
+ return __awaiter$z(this, void 0, void 0, function* () {
1224
1240
  const cursor = this.collection.find(where);
1225
1241
  const items = (yield cursor.toArray()) || [];
1226
1242
  const result = [];
@@ -1233,13 +1249,13 @@ let Assets = class Assets {
1233
1249
  });
1234
1250
  }
1235
1251
  deleteMany(where) {
1236
- return __awaiter$v(this, void 0, void 0, function* () {
1252
+ return __awaiter$z(this, void 0, void 0, function* () {
1237
1253
  const assets = yield this.findMany(where);
1238
1254
  return Promise.all(assets.map(a => a.unlink()));
1239
1255
  });
1240
1256
  }
1241
1257
  unlink(id) {
1242
- return __awaiter$v(this, void 0, void 0, function* () {
1258
+ return __awaiter$z(this, void 0, void 0, function* () {
1243
1259
  const asset = yield this.read(id);
1244
1260
  if (!asset)
1245
1261
  return null;
@@ -1247,7 +1263,7 @@ let Assets = class Assets {
1247
1263
  });
1248
1264
  }
1249
1265
  upload(stream, fileType, metadata) {
1250
- return __awaiter$v(this, void 0, void 0, function* () {
1266
+ return __awaiter$z(this, void 0, void 0, function* () {
1251
1267
  const contentType = fileType.mime.trim();
1252
1268
  metadata = Object.assign({
1253
1269
  downloadCount: 0,
@@ -1278,13 +1294,13 @@ let Assets = class Assets {
1278
1294
  });
1279
1295
  }
1280
1296
  };
1281
- Assets = __decorate$z([
1297
+ Assets = __decorate$D([
1282
1298
  injectable(),
1283
1299
  scoped(Lifecycle.ContainerScoped),
1284
- __metadata$t("design:paramtypes", [MongoConnector, AssetProcessor])
1300
+ __metadata$w("design:paramtypes", [MongoConnector, AssetProcessor])
1285
1301
  ], Assets);
1286
1302
 
1287
- var __awaiter$u = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1303
+ var __awaiter$y = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1288
1304
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1289
1305
  return new (P || (P = Promise))(function (resolve, reject) {
1290
1306
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1316,7 +1332,7 @@ class LazyAsset extends BaseEntity {
1316
1332
  return this.data.assetId;
1317
1333
  }
1318
1334
  unlink() {
1319
- return __awaiter$u(this, void 0, void 0, function* () {
1335
+ return __awaiter$y(this, void 0, void 0, function* () {
1320
1336
  yield this.load();
1321
1337
  if (!this.progressId) {
1322
1338
  yield this.collection.deleteOne({ _id: this.mId });
@@ -1339,7 +1355,7 @@ class LazyAsset extends BaseEntity {
1339
1355
  });
1340
1356
  }
1341
1357
  loadAsset() {
1342
- return __awaiter$u(this, void 0, void 0, function* () {
1358
+ return __awaiter$y(this, void 0, void 0, function* () {
1343
1359
  yield this.load();
1344
1360
  if (this.deleted)
1345
1361
  return null;
@@ -1355,14 +1371,14 @@ class LazyAsset extends BaseEntity {
1355
1371
  });
1356
1372
  }
1357
1373
  writeAsset(asset) {
1358
- return __awaiter$u(this, void 0, void 0, function* () {
1374
+ return __awaiter$y(this, void 0, void 0, function* () {
1359
1375
  this.data.assetId = asset.id;
1360
1376
  yield this.save();
1361
1377
  return asset;
1362
1378
  });
1363
1379
  }
1364
1380
  startWorkingOnAsset(fromLoad) {
1365
- return __awaiter$u(this, void 0, void 0, function* () {
1381
+ return __awaiter$y(this, void 0, void 0, function* () {
1366
1382
  this.data.progressId = (yield this.progresses.create()).id;
1367
1383
  this.data.assetId = null;
1368
1384
  yield this.save();
@@ -1371,13 +1387,13 @@ class LazyAsset extends BaseEntity {
1371
1387
  }
1372
1388
  }
1373
1389
 
1374
- var __decorate$y = (this && this.__decorate) || function (decorators, target, key, desc) {
1390
+ var __decorate$C = (this && this.__decorate) || function (decorators, target, key, desc) {
1375
1391
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1376
1392
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1377
1393
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1378
1394
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1379
1395
  };
1380
- var __metadata$s = (this && this.__metadata) || function (k, v) {
1396
+ var __metadata$v = (this && this.__metadata) || function (k, v) {
1381
1397
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1382
1398
  };
1383
1399
  let Logger = class Logger {
@@ -1394,24 +1410,24 @@ let Logger = class Logger {
1394
1410
  }
1395
1411
  }
1396
1412
  };
1397
- Logger = __decorate$y([
1413
+ Logger = __decorate$C([
1398
1414
  singleton(),
1399
- __metadata$s("design:paramtypes", [Configuration])
1415
+ __metadata$v("design:paramtypes", [Configuration])
1400
1416
  ], Logger);
1401
1417
 
1402
- var __decorate$x = (this && this.__decorate) || function (decorators, target, key, desc) {
1418
+ var __decorate$B = (this && this.__decorate) || function (decorators, target, key, desc) {
1403
1419
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1404
1420
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1405
1421
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1406
1422
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1407
1423
  };
1408
- var __metadata$r = (this && this.__metadata) || function (k, v) {
1424
+ var __metadata$u = (this && this.__metadata) || function (k, v) {
1409
1425
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1410
1426
  };
1411
- var __param$8 = (this && this.__param) || function (paramIndex, decorator) {
1427
+ var __param$a = (this && this.__param) || function (paramIndex, decorator) {
1412
1428
  return function (target, key) { decorator(target, key, paramIndex); }
1413
1429
  };
1414
- var __awaiter$t = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1430
+ var __awaiter$x = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1415
1431
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1416
1432
  return new (P || (P = Promise))(function (resolve, reject) {
1417
1433
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1451,7 +1467,7 @@ let JobManager = class JobManager {
1451
1467
  .pipe(map(t => t.params)).subscribe(cb);
1452
1468
  }
1453
1469
  process(jobType, params = {}) {
1454
- return __awaiter$t(this, void 0, void 0, function* () {
1470
+ return __awaiter$x(this, void 0, void 0, function* () {
1455
1471
  let instance = null;
1456
1472
  try {
1457
1473
  instance = this.resolveJobInstance(jobType, params);
@@ -1464,12 +1480,12 @@ let JobManager = class JobManager {
1464
1480
  });
1465
1481
  }
1466
1482
  enqueueWithName(name, params = {}) {
1467
- return __awaiter$t(this, void 0, void 0, function* () {
1483
+ return __awaiter$x(this, void 0, void 0, function* () {
1468
1484
  return this.sendToWorkers(this.tryResolveFromName(name, params), params);
1469
1485
  });
1470
1486
  }
1471
1487
  enqueue(jobType, params = {}) {
1472
- return __awaiter$t(this, void 0, void 0, function* () {
1488
+ return __awaiter$x(this, void 0, void 0, function* () {
1473
1489
  return this.sendToWorkers(this.tryResolveAndInit(jobType, params), params);
1474
1490
  });
1475
1491
  }
@@ -1496,7 +1512,7 @@ let JobManager = class JobManager {
1496
1512
  });
1497
1513
  }
1498
1514
  startProcessing() {
1499
- return __awaiter$t(this, void 0, void 0, function* () {
1515
+ return __awaiter$x(this, void 0, void 0, function* () {
1500
1516
  if (this.processing)
1501
1517
  return null;
1502
1518
  this.processing = true;
@@ -1513,7 +1529,7 @@ let JobManager = class JobManager {
1513
1529
  this.workerPull = socket("pull");
1514
1530
  yield this.workerPull.connect(pullHost);
1515
1531
  this.logger.log("job-manager", `Worker consumer connected to: ${pullHost}`);
1516
- this.workerPull.on("message", (name, args, uniqId) => __awaiter$t(this, void 0, void 0, function* () {
1532
+ this.workerPull.on("message", (name, args, uniqId) => __awaiter$x(this, void 0, void 0, function* () {
1517
1533
  try {
1518
1534
  const jobName = name.toString("utf8");
1519
1535
  const jobParams = JSON.parse(args.toString("utf8"));
@@ -1592,7 +1608,7 @@ let JobManager = class JobManager {
1592
1608
  return container.resolve(jobType);
1593
1609
  }
1594
1610
  sendToWorkers(jobName, params) {
1595
- return __awaiter$t(this, void 0, void 0, function* () {
1611
+ return __awaiter$x(this, void 0, void 0, function* () {
1596
1612
  const publisher = yield this.apiPush;
1597
1613
  const uniqueId = new ObjectId$1().toHexString();
1598
1614
  yield publisher.send([jobName, JSON.stringify(params), uniqueId]);
@@ -1600,16 +1616,16 @@ let JobManager = class JobManager {
1600
1616
  });
1601
1617
  }
1602
1618
  };
1603
- JobManager = __decorate$x([
1619
+ JobManager = __decorate$B([
1604
1620
  injectable(),
1605
1621
  scoped(Lifecycle.ContainerScoped),
1606
- __param$8(2, inject(DI_CONTAINER)),
1607
- __param$8(3, injectAll(JOB)),
1608
- __metadata$r("design:paramtypes", [Configuration,
1622
+ __param$a(2, inject(DI_CONTAINER)),
1623
+ __param$a(3, injectAll(JOB)),
1624
+ __metadata$u("design:paramtypes", [Configuration,
1609
1625
  Logger, Object, Array])
1610
1626
  ], JobManager);
1611
1627
 
1612
- var __awaiter$s = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1628
+ var __awaiter$w = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1613
1629
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1614
1630
  return new (P || (P = Promise))(function (resolve, reject) {
1615
1631
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1648,7 +1664,7 @@ class Progress extends BaseEntity {
1648
1664
  return this;
1649
1665
  }
1650
1666
  createSubProgress(progressValue, max, message) {
1651
- return __awaiter$s(this, void 0, void 0, function* () {
1667
+ return __awaiter$w(this, void 0, void 0, function* () {
1652
1668
  if (max <= 0 && progressValue > 0) {
1653
1669
  yield this.advance(progressValue);
1654
1670
  }
@@ -1660,7 +1676,7 @@ class Progress extends BaseEntity {
1660
1676
  });
1661
1677
  }
1662
1678
  setMax(max) {
1663
- return __awaiter$s(this, void 0, void 0, function* () {
1679
+ return __awaiter$w(this, void 0, void 0, function* () {
1664
1680
  if (isNaN(max) || max <= 0) {
1665
1681
  throw "Max progress value must be bigger than zero";
1666
1682
  }
@@ -1669,31 +1685,33 @@ class Progress extends BaseEntity {
1669
1685
  });
1670
1686
  }
1671
1687
  setMessage(message) {
1672
- return __awaiter$s(this, void 0, void 0, function* () {
1688
+ return __awaiter$w(this, void 0, void 0, function* () {
1673
1689
  this.data.message = message;
1674
1690
  yield this.save();
1675
1691
  });
1676
1692
  }
1677
1693
  setError(error) {
1678
- return __awaiter$s(this, void 0, void 0, function* () {
1694
+ return __awaiter$w(this, void 0, void 0, function* () {
1679
1695
  this.data.error = error;
1680
1696
  yield this.save();
1681
1697
  });
1682
1698
  }
1683
1699
  advance(value = 1) {
1684
- return __awaiter$s(this, void 0, void 0, function* () {
1700
+ return __awaiter$w(this, void 0, void 0, function* () {
1685
1701
  if (isNaN(value) || value <= 0) {
1686
- throw "Advance value must be bigger than zero";
1702
+ throw new Error(`Advance value must be bigger than zero: ${this.id}`);
1687
1703
  }
1688
1704
  yield this.load();
1689
- if (this.deleted || this.canceled)
1690
- return null;
1705
+ if (this.deleted || this.canceled) {
1706
+ const status = this.deleted ? "deleted" : "canceled";
1707
+ throw new Error(`Can't advance ${status} progress: ${this.id}`);
1708
+ }
1691
1709
  this.data.current = Math.min(this.max, this.current + value);
1692
1710
  yield this.save();
1693
1711
  });
1694
1712
  }
1695
1713
  cancel() {
1696
- return __awaiter$s(this, void 0, void 0, function* () {
1714
+ return __awaiter$w(this, void 0, void 0, function* () {
1697
1715
  this.data.canceled = true;
1698
1716
  yield this.save();
1699
1717
  });
@@ -1750,7 +1768,7 @@ class SubProgress {
1750
1768
  return this;
1751
1769
  }
1752
1770
  createSubProgress(progressValue, max, message) {
1753
- return __awaiter$s(this, void 0, void 0, function* () {
1771
+ return __awaiter$w(this, void 0, void 0, function* () {
1754
1772
  if (max <= 0 && progressValue > 0) {
1755
1773
  yield this.advance(progressValue);
1756
1774
  }
@@ -1761,7 +1779,7 @@ class SubProgress {
1761
1779
  });
1762
1780
  }
1763
1781
  setMax(max) {
1764
- return __awaiter$s(this, void 0, void 0, function* () {
1782
+ return __awaiter$w(this, void 0, void 0, function* () {
1765
1783
  if (isNaN(max) || max <= 0) {
1766
1784
  throw "Max progress value must be bigger than zero";
1767
1785
  }
@@ -1770,21 +1788,21 @@ class SubProgress {
1770
1788
  });
1771
1789
  }
1772
1790
  setMessage(message) {
1773
- return __awaiter$s(this, void 0, void 0, function* () {
1791
+ return __awaiter$w(this, void 0, void 0, function* () {
1774
1792
  if (!this.parent)
1775
1793
  return null;
1776
1794
  yield this.parent.setMessage(message);
1777
1795
  });
1778
1796
  }
1779
1797
  setError(error) {
1780
- return __awaiter$s(this, void 0, void 0, function* () {
1798
+ return __awaiter$w(this, void 0, void 0, function* () {
1781
1799
  if (!this.parent)
1782
1800
  return null;
1783
1801
  yield this.parent.setError(error);
1784
1802
  });
1785
1803
  }
1786
1804
  advance(value = 1) {
1787
- return __awaiter$s(this, void 0, void 0, function* () {
1805
+ return __awaiter$w(this, void 0, void 0, function* () {
1788
1806
  if (isNaN(value) || value <= 0) {
1789
1807
  throw "Advance value must be bigger than zero";
1790
1808
  }
@@ -1793,14 +1811,14 @@ class SubProgress {
1793
1811
  });
1794
1812
  }
1795
1813
  cancel() {
1796
- return __awaiter$s(this, void 0, void 0, function* () {
1814
+ return __awaiter$w(this, void 0, void 0, function* () {
1797
1815
  if (!this.parent)
1798
1816
  return null;
1799
1817
  yield this.parent.cancel();
1800
1818
  });
1801
1819
  }
1802
1820
  save() {
1803
- return __awaiter$s(this, void 0, void 0, function* () {
1821
+ return __awaiter$w(this, void 0, void 0, function* () {
1804
1822
  const ratio = this.max > 0 ? this.mCurrent / this.max : 0;
1805
1823
  const newProgress = this.progressFrom + Math.round(this.progressValue * ratio);
1806
1824
  const current = this.parent.current;
@@ -1810,7 +1828,7 @@ class SubProgress {
1810
1828
  });
1811
1829
  }
1812
1830
  load() {
1813
- return __awaiter$s(this, void 0, void 0, function* () {
1831
+ return __awaiter$w(this, void 0, void 0, function* () {
1814
1832
  return null;
1815
1833
  });
1816
1834
  }
@@ -1819,16 +1837,16 @@ class SubProgress {
1819
1837
  }
1820
1838
  }
1821
1839
 
1822
- var __decorate$w = (this && this.__decorate) || function (decorators, target, key, desc) {
1840
+ var __decorate$A = (this && this.__decorate) || function (decorators, target, key, desc) {
1823
1841
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1824
1842
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1825
1843
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1826
1844
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1827
1845
  };
1828
- var __metadata$q = (this && this.__metadata) || function (k, v) {
1846
+ var __metadata$t = (this && this.__metadata) || function (k, v) {
1829
1847
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1830
1848
  };
1831
- var __awaiter$r = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1849
+ var __awaiter$v = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1832
1850
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1833
1851
  return new (P || (P = Promise))(function (resolve, reject) {
1834
1852
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1849,9 +1867,9 @@ let Progresses = class Progresses {
1849
1867
  });
1850
1868
  }
1851
1869
  waitToFinish(id) {
1852
- return __awaiter$r(this, void 0, void 0, function* () {
1870
+ return __awaiter$v(this, void 0, void 0, function* () {
1853
1871
  return Promise.race([
1854
- this.waitForProgress(id, () => __awaiter$r(this, void 0, void 0, function* () {
1872
+ this.waitForProgress(id, () => __awaiter$v(this, void 0, void 0, function* () {
1855
1873
  let progress = this.progresses[id];
1856
1874
  if (!progress || progress.percent < 100) {
1857
1875
  progress = yield this.get(id);
@@ -1861,25 +1879,25 @@ let Progresses = class Progresses {
1861
1879
  }
1862
1880
  return progress;
1863
1881
  }), 500),
1864
- this.waitForProgress(id, () => __awaiter$r(this, void 0, void 0, function* () {
1882
+ this.waitForProgress(id, () => __awaiter$v(this, void 0, void 0, function* () {
1865
1883
  return this.progresses[id] || null;
1866
1884
  }), 25)
1867
1885
  ]);
1868
1886
  });
1869
1887
  }
1870
1888
  get(id) {
1871
- return __awaiter$r(this, void 0, void 0, function* () {
1889
+ return __awaiter$v(this, void 0, void 0, function* () {
1872
1890
  return !id ? null : this.find({ _id: new ObjectId$1(id) });
1873
1891
  });
1874
1892
  }
1875
1893
  find(where) {
1876
- return __awaiter$r(this, void 0, void 0, function* () {
1894
+ return __awaiter$v(this, void 0, void 0, function* () {
1877
1895
  const data = yield this.collection.findOne(where);
1878
1896
  return !data ? null : new Progress(data._id, data, this.collection);
1879
1897
  });
1880
1898
  }
1881
1899
  create(max = 100) {
1882
- return __awaiter$r(this, void 0, void 0, function* () {
1900
+ return __awaiter$v(this, void 0, void 0, function* () {
1883
1901
  if (isNaN(max) || max <= 0) {
1884
1902
  throw new Error(`Max progress value must be bigger than zero`);
1885
1903
  }
@@ -1895,13 +1913,13 @@ let Progresses = class Progresses {
1895
1913
  });
1896
1914
  }
1897
1915
  remove(id) {
1898
- return __awaiter$r(this, void 0, void 0, function* () {
1916
+ return __awaiter$v(this, void 0, void 0, function* () {
1899
1917
  yield this.collection.deleteOne({ _id: new ObjectId$1(id) });
1900
1918
  return id;
1901
1919
  });
1902
1920
  }
1903
1921
  waitForProgress(id, cb, delay) {
1904
- return __awaiter$r(this, void 0, void 0, function* () {
1922
+ return __awaiter$v(this, void 0, void 0, function* () {
1905
1923
  let isFinished = false;
1906
1924
  let progress = null;
1907
1925
  let waitTime = 0;
@@ -1925,21 +1943,21 @@ let Progresses = class Progresses {
1925
1943
  });
1926
1944
  }
1927
1945
  };
1928
- Progresses = __decorate$w([
1946
+ Progresses = __decorate$A([
1929
1947
  singleton(),
1930
- __metadata$q("design:paramtypes", [MongoConnector, JobManager])
1948
+ __metadata$t("design:paramtypes", [MongoConnector, JobManager])
1931
1949
  ], Progresses);
1932
1950
 
1933
- var __decorate$v = (this && this.__decorate) || function (decorators, target, key, desc) {
1951
+ var __decorate$z = (this && this.__decorate) || function (decorators, target, key, desc) {
1934
1952
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1935
1953
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1936
1954
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1937
1955
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1938
1956
  };
1939
- var __metadata$p = (this && this.__metadata) || function (k, v) {
1957
+ var __metadata$s = (this && this.__metadata) || function (k, v) {
1940
1958
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1941
1959
  };
1942
- var __awaiter$q = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1960
+ var __awaiter$u = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1943
1961
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1944
1962
  return new (P || (P = Promise))(function (resolve, reject) {
1945
1963
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1958,7 +1976,7 @@ let LazyAssets = class LazyAssets {
1958
1976
  this.collection = connector.database.collection("lazyassets");
1959
1977
  }
1960
1978
  create(jobType, jobParams = {}, jobQue = "main") {
1961
- return __awaiter$q(this, void 0, void 0, function* () {
1979
+ return __awaiter$u(this, void 0, void 0, function* () {
1962
1980
  const jobName = this.jobMan.tryResolve(jobType, Object.assign(Object.assign({}, jobParams), { lazyId: "" }));
1963
1981
  const data = {
1964
1982
  jobName,
@@ -1973,12 +1991,12 @@ let LazyAssets = class LazyAssets {
1973
1991
  });
1974
1992
  }
1975
1993
  read(id) {
1976
- return __awaiter$q(this, void 0, void 0, function* () {
1994
+ return __awaiter$u(this, void 0, void 0, function* () {
1977
1995
  return !id ? null : this.find({ _id: new ObjectId$1(id) });
1978
1996
  });
1979
1997
  }
1980
1998
  find(where) {
1981
- return __awaiter$q(this, void 0, void 0, function* () {
1999
+ return __awaiter$u(this, void 0, void 0, function* () {
1982
2000
  const data = yield this.collection.findOne(where);
1983
2001
  return !data
1984
2002
  ? null
@@ -1986,7 +2004,7 @@ let LazyAssets = class LazyAssets {
1986
2004
  });
1987
2005
  }
1988
2006
  unlink(id) {
1989
- return __awaiter$q(this, void 0, void 0, function* () {
2007
+ return __awaiter$u(this, void 0, void 0, function* () {
1990
2008
  const asset = yield this.read(id);
1991
2009
  if (!asset)
1992
2010
  return null;
@@ -1994,26 +2012,26 @@ let LazyAssets = class LazyAssets {
1994
2012
  });
1995
2013
  }
1996
2014
  };
1997
- LazyAssets = __decorate$v([
2015
+ LazyAssets = __decorate$z([
1998
2016
  injectable(),
1999
2017
  scoped(Lifecycle.ContainerScoped),
2000
- __metadata$p("design:paramtypes", [MongoConnector,
2018
+ __metadata$s("design:paramtypes", [MongoConnector,
2001
2019
  Assets,
2002
2020
  Progresses,
2003
2021
  Logger,
2004
2022
  JobManager])
2005
2023
  ], LazyAssets);
2006
2024
 
2007
- var __decorate$u = (this && this.__decorate) || function (decorators, target, key, desc) {
2025
+ var __decorate$y = (this && this.__decorate) || function (decorators, target, key, desc) {
2008
2026
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2009
2027
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2010
2028
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2011
2029
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2012
2030
  };
2013
- var __metadata$o = (this && this.__metadata) || function (k, v) {
2031
+ var __metadata$r = (this && this.__metadata) || function (k, v) {
2014
2032
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2015
2033
  };
2016
- var __awaiter$p = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2034
+ var __awaiter$t = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2017
2035
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2018
2036
  return new (P || (P = Promise))(function (resolve, reject) {
2019
2037
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2028,7 +2046,7 @@ let AssetResolver = class AssetResolver {
2028
2046
  this.lazyAssets = lazyAssets;
2029
2047
  }
2030
2048
  resolve(id, lazy = false) {
2031
- return __awaiter$p(this, void 0, void 0, function* () {
2049
+ return __awaiter$t(this, void 0, void 0, function* () {
2032
2050
  let asset = null;
2033
2051
  if (lazy) {
2034
2052
  const lazyAsset = yield this.lazyAssets.read(id);
@@ -2047,19 +2065,19 @@ let AssetResolver = class AssetResolver {
2047
2065
  });
2048
2066
  }
2049
2067
  };
2050
- AssetResolver = __decorate$u([
2068
+ AssetResolver = __decorate$y([
2051
2069
  injectable(),
2052
2070
  scoped(Lifecycle.ContainerScoped),
2053
- __metadata$o("design:paramtypes", [Assets, LazyAssets])
2071
+ __metadata$r("design:paramtypes", [Assets, LazyAssets])
2054
2072
  ], AssetResolver);
2055
2073
 
2056
- var __decorate$t = (this && this.__decorate) || function (decorators, target, key, desc) {
2074
+ var __decorate$x = (this && this.__decorate) || function (decorators, target, key, desc) {
2057
2075
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2058
2076
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2059
2077
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2060
2078
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2061
2079
  };
2062
- var __metadata$n = (this && this.__metadata) || function (k, v) {
2080
+ var __metadata$q = (this && this.__metadata) || function (k, v) {
2063
2081
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2064
2082
  };
2065
2083
  const express = express_;
@@ -2075,18 +2093,18 @@ let BackendProvider = class BackendProvider {
2075
2093
  return this.ioServer;
2076
2094
  }
2077
2095
  };
2078
- BackendProvider = __decorate$t([
2096
+ BackendProvider = __decorate$x([
2079
2097
  singleton(),
2080
- __metadata$n("design:paramtypes", [])
2098
+ __metadata$q("design:paramtypes", [])
2081
2099
  ], BackendProvider);
2082
2100
 
2083
- var __decorate$s = (this && this.__decorate) || function (decorators, target, key, desc) {
2101
+ var __decorate$w = (this && this.__decorate) || function (decorators, target, key, desc) {
2084
2102
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2085
2103
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2086
2104
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2087
2105
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2088
2106
  };
2089
- var __awaiter$o = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2107
+ var __awaiter$s = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2090
2108
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2091
2109
  return new (P || (P = Promise))(function (resolve, reject) {
2092
2110
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2097,31 +2115,31 @@ var __awaiter$o = (this && this.__awaiter) || function (thisArg, _arguments, P,
2097
2115
  };
2098
2116
  let CacheProcessor = class CacheProcessor {
2099
2117
  serialize(data) {
2100
- return __awaiter$o(this, void 0, void 0, function* () {
2118
+ return __awaiter$s(this, void 0, void 0, function* () {
2101
2119
  return data;
2102
2120
  });
2103
2121
  }
2104
2122
  deserialize(data) {
2105
- return __awaiter$o(this, void 0, void 0, function* () {
2123
+ return __awaiter$s(this, void 0, void 0, function* () {
2106
2124
  return data;
2107
2125
  });
2108
2126
  }
2109
2127
  };
2110
- CacheProcessor = __decorate$s([
2128
+ CacheProcessor = __decorate$w([
2111
2129
  injectable(),
2112
2130
  scoped(Lifecycle.ContainerScoped)
2113
2131
  ], CacheProcessor);
2114
2132
 
2115
- var __decorate$r = (this && this.__decorate) || function (decorators, target, key, desc) {
2133
+ var __decorate$v = (this && this.__decorate) || function (decorators, target, key, desc) {
2116
2134
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2117
2135
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2118
2136
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2119
2137
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2120
2138
  };
2121
- var __metadata$m = (this && this.__metadata) || function (k, v) {
2139
+ var __metadata$p = (this && this.__metadata) || function (k, v) {
2122
2140
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2123
2141
  };
2124
- var __awaiter$n = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2142
+ var __awaiter$r = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2125
2143
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2126
2144
  return new (P || (P = Promise))(function (resolve, reject) {
2127
2145
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2137,7 +2155,7 @@ let Cache = class Cache {
2137
2155
  this.cacheProcessor = cacheProcessor;
2138
2156
  }
2139
2157
  prepare() {
2140
- return __awaiter$n(this, void 0, void 0, function* () {
2158
+ return __awaiter$r(this, void 0, void 0, function* () {
2141
2159
  if (this.collection)
2142
2160
  return;
2143
2161
  if (!this.connector.database) {
@@ -2148,7 +2166,7 @@ let Cache = class Cache {
2148
2166
  });
2149
2167
  }
2150
2168
  set(key, value, ttl, expirationTimestamp = null, tags = {}) {
2151
- return __awaiter$n(this, void 0, void 0, function* () {
2169
+ return __awaiter$r(this, void 0, void 0, function* () {
2152
2170
  yield this.prepare();
2153
2171
  const item = {
2154
2172
  _id: key,
@@ -2165,7 +2183,7 @@ let Cache = class Cache {
2165
2183
  });
2166
2184
  }
2167
2185
  get(key) {
2168
- return __awaiter$n(this, void 0, void 0, function* () {
2186
+ return __awaiter$r(this, void 0, void 0, function* () {
2169
2187
  yield this.prepare();
2170
2188
  let item = yield this.collection.findOne({ _id: key });
2171
2189
  const now = Math.round(new Date().getTime() / 1000);
@@ -2179,7 +2197,7 @@ let Cache = class Cache {
2179
2197
  });
2180
2198
  }
2181
2199
  getOrSet(key, valueCb, ttl, expirationTimestamp = null, tags = {}) {
2182
- return __awaiter$n(this, void 0, void 0, function* () {
2200
+ return __awaiter$r(this, void 0, void 0, function* () {
2183
2201
  try {
2184
2202
  return yield this.get(key);
2185
2203
  }
@@ -2189,24 +2207,24 @@ let Cache = class Cache {
2189
2207
  });
2190
2208
  }
2191
2209
  delete(key) {
2192
- return __awaiter$n(this, void 0, void 0, function* () {
2210
+ return __awaiter$r(this, void 0, void 0, function* () {
2193
2211
  yield this.prepare();
2194
2212
  yield this.collection.deleteOne({ _id: key });
2195
2213
  });
2196
2214
  }
2197
2215
  };
2198
- Cache = __decorate$r([
2216
+ Cache = __decorate$v([
2199
2217
  singleton(),
2200
- __metadata$m("design:paramtypes", [MongoConnector, Configuration, CacheProcessor])
2218
+ __metadata$p("design:paramtypes", [MongoConnector, Configuration, CacheProcessor])
2201
2219
  ], Cache);
2202
2220
 
2203
- var __decorate$q = (this && this.__decorate) || function (decorators, target, key, desc) {
2221
+ var __decorate$u = (this && this.__decorate) || function (decorators, target, key, desc) {
2204
2222
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2205
2223
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2206
2224
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2207
2225
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2208
2226
  };
2209
- var __awaiter$m = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2227
+ var __awaiter$q = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2210
2228
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2211
2229
  return new (P || (P = Promise))(function (resolve, reject) {
2212
2230
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2217,29 +2235,29 @@ var __awaiter$m = (this && this.__awaiter) || function (thisArg, _arguments, P,
2217
2235
  };
2218
2236
  let EndpointProvider = class EndpointProvider {
2219
2237
  configure(app) {
2220
- return __awaiter$m(this, void 0, void 0, function* () {
2238
+ return __awaiter$q(this, void 0, void 0, function* () {
2221
2239
  console.log(`Express app is mounted to: ${app.mountpath}`);
2222
2240
  });
2223
2241
  }
2224
2242
  };
2225
- EndpointProvider = __decorate$q([
2243
+ EndpointProvider = __decorate$u([
2226
2244
  injectable(),
2227
2245
  scoped(Lifecycle.ContainerScoped)
2228
2246
  ], EndpointProvider);
2229
2247
 
2230
- var __decorate$p = (this && this.__decorate) || function (decorators, target, key, desc) {
2248
+ var __decorate$t = (this && this.__decorate) || function (decorators, target, key, desc) {
2231
2249
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2232
2250
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2233
2251
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2234
2252
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2235
2253
  };
2236
- var __metadata$l = (this && this.__metadata) || function (k, v) {
2254
+ var __metadata$o = (this && this.__metadata) || function (k, v) {
2237
2255
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2238
2256
  };
2239
- var __param$7 = (this && this.__param) || function (paramIndex, decorator) {
2257
+ var __param$9 = (this && this.__param) || function (paramIndex, decorator) {
2240
2258
  return function (target, key) { decorator(target, key, paramIndex); }
2241
2259
  };
2242
- var __awaiter$l = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2260
+ var __awaiter$p = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2243
2261
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2244
2262
  return new (P || (P = Promise))(function (resolve, reject) {
2245
2263
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2253,7 +2271,7 @@ let Fixtures = class Fixtures {
2253
2271
  this.fixtures = fixtures;
2254
2272
  }
2255
2273
  load() {
2256
- return __awaiter$l(this, void 0, void 0, function* () {
2274
+ return __awaiter$p(this, void 0, void 0, function* () {
2257
2275
  if (!this.fixtures)
2258
2276
  return;
2259
2277
  for (let fixture of this.fixtures) {
@@ -2262,14 +2280,14 @@ let Fixtures = class Fixtures {
2262
2280
  });
2263
2281
  }
2264
2282
  };
2265
- Fixtures = __decorate$p([
2283
+ Fixtures = __decorate$t([
2266
2284
  injectable(),
2267
2285
  scoped(Lifecycle.ContainerScoped),
2268
- __param$7(0, injectAll(FIXTURE)),
2269
- __metadata$l("design:paramtypes", [Array])
2286
+ __param$9(0, injectAll(FIXTURE)),
2287
+ __metadata$o("design:paramtypes", [Array])
2270
2288
  ], Fixtures);
2271
2289
 
2272
- var __awaiter$k = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2290
+ var __awaiter$o = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2273
2291
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2274
2292
  return new (P || (P = Promise))(function (resolve, reject) {
2275
2293
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2290,7 +2308,7 @@ class GalleryImage {
2290
2308
  this.targetSize = !size ? { width: thumbSize, height: thumbSize } : size;
2291
2309
  }
2292
2310
  serve(id) {
2293
- return __awaiter$k(this, void 0, void 0, function* () {
2311
+ return __awaiter$o(this, void 0, void 0, function* () {
2294
2312
  const isThumb = id == this.thumb;
2295
2313
  if (yield this.handler.hasResult(isThumb)) {
2296
2314
  return this.handler.serveResult(isThumb);
@@ -2315,13 +2333,13 @@ class GalleryImage {
2315
2333
  }
2316
2334
  }
2317
2335
 
2318
- var __decorate$o = (this && this.__decorate) || function (decorators, target, key, desc) {
2336
+ var __decorate$s = (this && this.__decorate) || function (decorators, target, key, desc) {
2319
2337
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2320
2338
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2321
2339
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2322
2340
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2323
2341
  };
2324
- var __metadata$k = (this && this.__metadata) || function (k, v) {
2342
+ var __metadata$n = (this && this.__metadata) || function (k, v) {
2325
2343
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2326
2344
  };
2327
2345
  let GalleryCache = class GalleryCache {
@@ -2342,22 +2360,22 @@ let GalleryCache = class GalleryCache {
2342
2360
  return image;
2343
2361
  }
2344
2362
  };
2345
- GalleryCache = __decorate$o([
2363
+ GalleryCache = __decorate$s([
2346
2364
  injectable(),
2347
2365
  scoped(Lifecycle.ContainerScoped),
2348
- __metadata$k("design:paramtypes", [])
2366
+ __metadata$n("design:paramtypes", [])
2349
2367
  ], GalleryCache);
2350
2368
 
2351
- var __decorate$n = (this && this.__decorate) || function (decorators, target, key, desc) {
2369
+ var __decorate$r = (this && this.__decorate) || function (decorators, target, key, desc) {
2352
2370
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2353
2371
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2354
2372
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2355
2373
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2356
2374
  };
2357
- var __metadata$j = (this && this.__metadata) || function (k, v) {
2375
+ var __metadata$m = (this && this.__metadata) || function (k, v) {
2358
2376
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2359
2377
  };
2360
- var __awaiter$j = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2378
+ var __awaiter$n = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2361
2379
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2362
2380
  return new (P || (P = Promise))(function (resolve, reject) {
2363
2381
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2376,7 +2394,7 @@ let Gallery = class Gallery {
2376
2394
  this.output = join(this.config.resolve("cacheDir"), "gallery");
2377
2395
  }
2378
2396
  getFolder(folder, size = null) {
2379
- return __awaiter$j(this, void 0, void 0, function* () {
2397
+ return __awaiter$n(this, void 0, void 0, function* () {
2380
2398
  this.cache[folder] = this.cache[folder] || new Promise(resolve => {
2381
2399
  lstat(join(this.dir, folder), (err, stats) => {
2382
2400
  if (err || !stats.isDirectory()) {
@@ -2397,7 +2415,7 @@ let Gallery = class Gallery {
2397
2415
  return;
2398
2416
  }
2399
2417
  const promises = files.map(file => {
2400
- return new Promise((resolve) => __awaiter$j(this, void 0, void 0, function* () {
2418
+ return new Promise((resolve) => __awaiter$n(this, void 0, void 0, function* () {
2401
2419
  const filePath = join(path, file);
2402
2420
  const absoluteFilePath = join(this.dir, filePath);
2403
2421
  lstat(absoluteFilePath, (err, stats) => {
@@ -2430,7 +2448,7 @@ let Gallery = class Gallery {
2430
2448
  });
2431
2449
  },
2432
2450
  writeResult: (isThumb, buffer) => {
2433
- return new Promise((res, rej) => __awaiter$j(this, void 0, void 0, function* () {
2451
+ return new Promise((res, rej) => __awaiter$n(this, void 0, void 0, function* () {
2434
2452
  const resultPath = getResultPath(isThumb);
2435
2453
  yield mkdirRecursive(dirname(resultPath));
2436
2454
  writeFile$1(resultPath, buffer, err => {
@@ -2472,22 +2490,22 @@ let Gallery = class Gallery {
2472
2490
  });
2473
2491
  }
2474
2492
  };
2475
- Gallery = __decorate$n([
2493
+ Gallery = __decorate$r([
2476
2494
  injectable(),
2477
2495
  scoped(Lifecycle.ContainerScoped),
2478
- __metadata$j("design:paramtypes", [Configuration, GalleryCache])
2496
+ __metadata$m("design:paramtypes", [Configuration, GalleryCache])
2479
2497
  ], Gallery);
2480
2498
 
2481
- var __decorate$m = (this && this.__decorate) || function (decorators, target, key, desc) {
2499
+ var __decorate$q = (this && this.__decorate) || function (decorators, target, key, desc) {
2482
2500
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2483
2501
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2484
2502
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2485
2503
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2486
2504
  };
2487
- var __metadata$i = (this && this.__metadata) || function (k, v) {
2505
+ var __metadata$l = (this && this.__metadata) || function (k, v) {
2488
2506
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2489
2507
  };
2490
- var __awaiter$i = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2508
+ var __awaiter$m = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2491
2509
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2492
2510
  return new (P || (P = Promise))(function (resolve, reject) {
2493
2511
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2505,7 +2523,7 @@ let IdGenerator = class IdGenerator {
2505
2523
  this.parts = config.resolve("idParts");
2506
2524
  }
2507
2525
  generate(checkCb) {
2508
- return __awaiter$i(this, void 0, void 0, function* () {
2526
+ return __awaiter$m(this, void 0, void 0, function* () {
2509
2527
  let id = null;
2510
2528
  let tries = 0;
2511
2529
  let notGood = true;
@@ -2531,22 +2549,22 @@ let IdGenerator = class IdGenerator {
2531
2549
  }).join(this.separator);
2532
2550
  }
2533
2551
  };
2534
- IdGenerator = __decorate$m([
2552
+ IdGenerator = __decorate$q([
2535
2553
  injectable(),
2536
2554
  scoped(Lifecycle.ContainerScoped),
2537
- __metadata$i("design:paramtypes", [Configuration])
2555
+ __metadata$l("design:paramtypes", [Configuration])
2538
2556
  ], IdGenerator);
2539
2557
 
2540
- var __decorate$l = (this && this.__decorate) || function (decorators, target, key, desc) {
2558
+ var __decorate$p = (this && this.__decorate) || function (decorators, target, key, desc) {
2541
2559
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2542
2560
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2543
2561
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2544
2562
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2545
2563
  };
2546
- var __metadata$h = (this && this.__metadata) || function (k, v) {
2564
+ var __metadata$k = (this && this.__metadata) || function (k, v) {
2547
2565
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2548
2566
  };
2549
- var __awaiter$h = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2567
+ var __awaiter$l = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2550
2568
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2551
2569
  return new (P || (P = Promise))(function (resolve, reject) {
2552
2570
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2561,7 +2579,7 @@ let TranslationProvider = class TranslationProvider {
2561
2579
  this.cache = cache;
2562
2580
  }
2563
2581
  getDictionary(language) {
2564
- return this.cache.getOrSet(`translations-${language}`, () => __awaiter$h(this, void 0, void 0, function* () {
2582
+ return this.cache.getOrSet(`translations-${language}`, () => __awaiter$l(this, void 0, void 0, function* () {
2565
2583
  try {
2566
2584
  const url = this.config.resolve("translationsTemplate")
2567
2585
  .replace(`__lang__`, language)
@@ -2580,21 +2598,21 @@ let TranslationProvider = class TranslationProvider {
2580
2598
  }), 5 * 60);
2581
2599
  }
2582
2600
  };
2583
- TranslationProvider = __decorate$l([
2601
+ TranslationProvider = __decorate$p([
2584
2602
  singleton(),
2585
- __metadata$h("design:paramtypes", [Configuration, Cache])
2603
+ __metadata$k("design:paramtypes", [Configuration, Cache])
2586
2604
  ], TranslationProvider);
2587
2605
 
2588
- var __decorate$k = (this && this.__decorate) || function (decorators, target, key, desc) {
2606
+ var __decorate$o = (this && this.__decorate) || function (decorators, target, key, desc) {
2589
2607
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2590
2608
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2591
2609
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2592
2610
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2593
2611
  };
2594
- var __metadata$g = (this && this.__metadata) || function (k, v) {
2612
+ var __metadata$j = (this && this.__metadata) || function (k, v) {
2595
2613
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2596
2614
  };
2597
- var __awaiter$g = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2615
+ var __awaiter$k = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2598
2616
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2599
2617
  return new (P || (P = Promise))(function (resolve, reject) {
2600
2618
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2609,7 +2627,7 @@ let Translator = class Translator {
2609
2627
  this.dictionaries = {};
2610
2628
  }
2611
2629
  getDictionary(language) {
2612
- return __awaiter$g(this, void 0, void 0, function* () {
2630
+ return __awaiter$k(this, void 0, void 0, function* () {
2613
2631
  this.dictionaries[language] = yield this.translationProvider.getDictionary(language);
2614
2632
  return this.dictionaries[language];
2615
2633
  });
@@ -2659,22 +2677,22 @@ let Translator = class Translator {
2659
2677
  });
2660
2678
  }
2661
2679
  };
2662
- Translator = __decorate$k([
2680
+ Translator = __decorate$o([
2663
2681
  injectable(),
2664
2682
  singleton(),
2665
- __metadata$g("design:paramtypes", [TranslationProvider])
2683
+ __metadata$j("design:paramtypes", [TranslationProvider])
2666
2684
  ], Translator);
2667
2685
 
2668
- var __decorate$j = (this && this.__decorate) || function (decorators, target, key, desc) {
2686
+ var __decorate$n = (this && this.__decorate) || function (decorators, target, key, desc) {
2669
2687
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2670
2688
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2671
2689
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2672
2690
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2673
2691
  };
2674
- var __metadata$f = (this && this.__metadata) || function (k, v) {
2692
+ var __metadata$i = (this && this.__metadata) || function (k, v) {
2675
2693
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2676
2694
  };
2677
- var __awaiter$f = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2695
+ var __awaiter$j = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2678
2696
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2679
2697
  return new (P || (P = Promise))(function (resolve, reject) {
2680
2698
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2706,9 +2724,9 @@ let TemplateRenderer = class TemplateRenderer {
2706
2724
  return this.initPromise;
2707
2725
  }
2708
2726
  parseTemplates(dir, dirPath) {
2709
- return __awaiter$f(this, void 0, void 0, function* () {
2727
+ return __awaiter$j(this, void 0, void 0, function* () {
2710
2728
  return new Promise(resolve => {
2711
- readdir(dir, (err, files) => __awaiter$f(this, void 0, void 0, function* () {
2729
+ readdir(dir, (err, files) => __awaiter$j(this, void 0, void 0, function* () {
2712
2730
  for (let file of files) {
2713
2731
  const path = join(dir, file);
2714
2732
  if (lstatSync(path).isDirectory()) {
@@ -2729,7 +2747,7 @@ let TemplateRenderer = class TemplateRenderer {
2729
2747
  });
2730
2748
  }
2731
2749
  render(template, language, context) {
2732
- return __awaiter$f(this, void 0, void 0, function* () {
2750
+ return __awaiter$j(this, void 0, void 0, function* () {
2733
2751
  yield this.init();
2734
2752
  yield this.translator.getDictionary(language);
2735
2753
  if (!this.templates[template]) {
@@ -2741,22 +2759,21 @@ let TemplateRenderer = class TemplateRenderer {
2741
2759
  });
2742
2760
  }
2743
2761
  };
2744
- TemplateRenderer = __decorate$j([
2745
- injectable(),
2762
+ TemplateRenderer = __decorate$n([
2746
2763
  singleton(),
2747
- __metadata$f("design:paramtypes", [Translator, Configuration])
2764
+ __metadata$i("design:paramtypes", [Translator, Configuration])
2748
2765
  ], TemplateRenderer);
2749
2766
 
2750
- var __decorate$i = (this && this.__decorate) || function (decorators, target, key, desc) {
2767
+ var __decorate$m = (this && this.__decorate) || function (decorators, target, key, desc) {
2751
2768
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2752
2769
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2753
2770
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2754
2771
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2755
2772
  };
2756
- var __metadata$e = (this && this.__metadata) || function (k, v) {
2773
+ var __metadata$h = (this && this.__metadata) || function (k, v) {
2757
2774
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2758
2775
  };
2759
- var __awaiter$e = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2776
+ var __awaiter$i = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2760
2777
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2761
2778
  return new (P || (P = Promise))(function (resolve, reject) {
2762
2779
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2782,7 +2799,7 @@ let MailSender = class MailSender {
2782
2799
  return this.renderer.translator;
2783
2800
  }
2784
2801
  sendMail(language, options) {
2785
- return __awaiter$e(this, void 0, void 0, function* () {
2802
+ return __awaiter$i(this, void 0, void 0, function* () {
2786
2803
  const subject = yield this.translator.getTranslation(language, options.subject || "-");
2787
2804
  const html = yield this.renderer.render(options.template, language, options.context);
2788
2805
  return this.transporter.sendMail({
@@ -2795,21 +2812,21 @@ let MailSender = class MailSender {
2795
2812
  });
2796
2813
  }
2797
2814
  };
2798
- MailSender = __decorate$i([
2815
+ MailSender = __decorate$m([
2799
2816
  singleton(),
2800
- __metadata$e("design:paramtypes", [Configuration, TemplateRenderer])
2817
+ __metadata$h("design:paramtypes", [Configuration, TemplateRenderer])
2801
2818
  ], MailSender);
2802
2819
 
2803
- var __decorate$h = (this && this.__decorate) || function (decorators, target, key, desc) {
2820
+ var __decorate$l = (this && this.__decorate) || function (decorators, target, key, desc) {
2804
2821
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2805
2822
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2806
2823
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2807
2824
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2808
2825
  };
2809
- var __metadata$d = (this && this.__metadata) || function (k, v) {
2826
+ var __metadata$g = (this && this.__metadata) || function (k, v) {
2810
2827
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2811
2828
  };
2812
- var __awaiter$d = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2829
+ var __awaiter$h = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2813
2830
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2814
2831
  return new (P || (P = Promise))(function (resolve, reject) {
2815
2832
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2824,7 +2841,7 @@ let MemoryCache = class MemoryCache {
2824
2841
  this.cacheMap = new Map();
2825
2842
  }
2826
2843
  set(key, value, ttl, expirationTimestamp = null, tags = {}) {
2827
- return __awaiter$d(this, void 0, void 0, function* () {
2844
+ return __awaiter$h(this, void 0, void 0, function* () {
2828
2845
  const now = Math.round(new Date().getTime() / 1000);
2829
2846
  const expTimestamp = Math.min(isNaN(ttl) ? Number.MAX_SAFE_INTEGER : ttl, 3600);
2830
2847
  this.cacheMap.set(key, {
@@ -2837,7 +2854,7 @@ let MemoryCache = class MemoryCache {
2837
2854
  });
2838
2855
  }
2839
2856
  get(key) {
2840
- return __awaiter$d(this, void 0, void 0, function* () {
2857
+ return __awaiter$h(this, void 0, void 0, function* () {
2841
2858
  let item = this.cacheMap.get(key);
2842
2859
  const now = Math.round(new Date().getTime() / 1000);
2843
2860
  let expTimestamp = 3600;
@@ -2859,7 +2876,7 @@ let MemoryCache = class MemoryCache {
2859
2876
  });
2860
2877
  }
2861
2878
  getOrSet(key, valueCb, ttl, expirationTimestamp = null, tags = {}) {
2862
- return __awaiter$d(this, void 0, void 0, function* () {
2879
+ return __awaiter$h(this, void 0, void 0, function* () {
2863
2880
  try {
2864
2881
  return yield this.get(key);
2865
2882
  }
@@ -2869,19 +2886,19 @@ let MemoryCache = class MemoryCache {
2869
2886
  });
2870
2887
  }
2871
2888
  delete(key) {
2872
- return __awaiter$d(this, void 0, void 0, function* () {
2889
+ return __awaiter$h(this, void 0, void 0, function* () {
2873
2890
  this.cacheMap.delete(key);
2874
2891
  yield this.cacheMap.delete(key);
2875
2892
  });
2876
2893
  }
2877
2894
  };
2878
- MemoryCache = __decorate$h([
2895
+ MemoryCache = __decorate$l([
2879
2896
  injectable(),
2880
2897
  scoped(Lifecycle.ContainerScoped),
2881
- __metadata$d("design:paramtypes", [Cache])
2898
+ __metadata$g("design:paramtypes", [Cache])
2882
2899
  ], MemoryCache);
2883
2900
 
2884
- var __decorate$g = (this && this.__decorate) || function (decorators, target, key, desc) {
2901
+ var __decorate$k = (this && this.__decorate) || function (decorators, target, key, desc) {
2885
2902
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2886
2903
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2887
2904
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -2915,7 +2932,7 @@ let IsFile = class IsFile {
2915
2932
  return checkValue(multi, value);
2916
2933
  }
2917
2934
  };
2918
- IsFile = __decorate$g([
2935
+ IsFile = __decorate$k([
2919
2936
  ValidatorConstraint()
2920
2937
  ], IsFile);
2921
2938
  let IsObjectId = class IsObjectId {
@@ -2924,23 +2941,23 @@ let IsObjectId = class IsObjectId {
2924
2941
  return checkValue(multi, value);
2925
2942
  }
2926
2943
  };
2927
- IsObjectId = __decorate$g([
2944
+ IsObjectId = __decorate$k([
2928
2945
  ValidatorConstraint()
2929
2946
  ], IsObjectId);
2930
2947
 
2931
- var __decorate$f = (this && this.__decorate) || function (decorators, target, key, desc) {
2948
+ var __decorate$j = (this && this.__decorate) || function (decorators, target, key, desc) {
2932
2949
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2933
2950
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2934
2951
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2935
2952
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2936
2953
  };
2937
- var __metadata$c = (this && this.__metadata) || function (k, v) {
2954
+ var __metadata$f = (this && this.__metadata) || function (k, v) {
2938
2955
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2939
2956
  };
2940
- var __param$6 = (this && this.__param) || function (paramIndex, decorator) {
2957
+ var __param$8 = (this && this.__param) || function (paramIndex, decorator) {
2941
2958
  return function (target, key) { decorator(target, key, paramIndex); }
2942
2959
  };
2943
- var __awaiter$c = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2960
+ var __awaiter$g = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2944
2961
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2945
2962
  return new (P || (P = Promise))(function (resolve, reject) {
2946
2963
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2967,7 +2984,7 @@ let OpenApi = class OpenApi {
2967
2984
  }
2968
2985
  schemaToExample(src, req) {
2969
2986
  var _a, _b, _c;
2970
- return __awaiter$c(this, void 0, void 0, function* () {
2987
+ return __awaiter$g(this, void 0, void 0, function* () {
2971
2988
  if (src.$ref) {
2972
2989
  const schemas = this.apiDocs.components.schemas;
2973
2990
  const schema = src.$ref
@@ -2981,7 +2998,7 @@ let OpenApi = class OpenApi {
2981
2998
  }
2982
2999
  if (schema.type === "object") {
2983
3000
  const result = {};
2984
- yield Promise.all(Object.keys(schema.properties).map((key) => __awaiter$c(this, void 0, void 0, function* () {
3001
+ yield Promise.all(Object.keys(schema.properties).map((key) => __awaiter$g(this, void 0, void 0, function* () {
2985
3002
  result[key] = yield this.schemaToExample(schema.properties[key], req);
2986
3003
  })));
2987
3004
  return result;
@@ -3051,23 +3068,110 @@ let OpenApi = class OpenApi {
3051
3068
  return docs;
3052
3069
  }
3053
3070
  };
3054
- OpenApi = __decorate$f([
3071
+ OpenApi = __decorate$j([
3055
3072
  singleton(),
3056
- __param$6(0, inject(DI_CONTAINER)),
3057
- __param$6(1, inject(OPENAPI_VALIDATION)),
3058
- __metadata$c("design:paramtypes", [Object, Object])
3073
+ __param$8(0, inject(DI_CONTAINER)),
3074
+ __param$8(1, inject(OPENAPI_VALIDATION)),
3075
+ __metadata$f("design:paramtypes", [Object, Object])
3059
3076
  ], OpenApi);
3060
3077
 
3061
- var __decorate$e = (this && this.__decorate) || function (decorators, target, key, desc) {
3078
+ var __decorate$i = (this && this.__decorate) || function (decorators, target, key, desc) {
3062
3079
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3063
3080
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3064
3081
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3065
3082
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3066
3083
  };
3067
- var __metadata$b = (this && this.__metadata) || function (k, v) {
3084
+ var __metadata$e = (this && this.__metadata) || function (k, v) {
3068
3085
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3069
3086
  };
3070
- var __awaiter$b = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3087
+ var __param$7 = (this && this.__param) || function (paramIndex, decorator) {
3088
+ return function (target, key) { decorator(target, key, paramIndex); }
3089
+ };
3090
+ var __awaiter$f = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3091
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3092
+ return new (P || (P = Promise))(function (resolve, reject) {
3093
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
3094
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
3095
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
3096
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
3097
+ });
3098
+ };
3099
+ let TerminalManager = class TerminalManager {
3100
+ constructor(logger, config, commands) {
3101
+ this.logger = logger;
3102
+ this.config = config;
3103
+ this.servicePassword = config.resolve("servicePassword");
3104
+ this.suggestions = Object.assign({ login: (args) => __awaiter$f(this, void 0, void 0, function* () {
3105
+ if (args.length > 2) {
3106
+ return null;
3107
+ }
3108
+ const input = `${args.at(1).label}`;
3109
+ return (!input) ? [] : [{
3110
+ id: input,
3111
+ label: input,
3112
+ masked: true
3113
+ }];
3114
+ }) }, commands.reduce((acc, command) => {
3115
+ command.name = camelCaseToDash(command.name || command.constructor.name || "");
3116
+ if (!command.name || !command.suggest)
3117
+ return acc;
3118
+ acc[command.name] = (a, t) => __awaiter$f(this, void 0, void 0, function* () { return command.suggest(a, t); });
3119
+ return acc;
3120
+ }, {}));
3121
+ this.commands = commands.reduce((acc, command) => {
3122
+ if (!command.name)
3123
+ return acc;
3124
+ acc[command.name] = (a, t) => __awaiter$f(this, void 0, void 0, function* () { return command.execute(a, t); });
3125
+ return acc;
3126
+ }, {});
3127
+ this.loggedOutCommands = ["login", "clear"];
3128
+ this.loggedInCommands = Object.keys(this.commands);
3129
+ this.loggedInCommands.push("logout");
3130
+ console.log(`Current service password is: ${colorize(this.servicePassword, ConsoleColor.FgGreen)}`);
3131
+ }
3132
+ loadAddons(terminal) {
3133
+ let loggedIn = false;
3134
+ const addon = new CommandsAddon({
3135
+ commands: Object.assign({ login: (args, terminal) => __awaiter$f(this, void 0, void 0, function* () {
3136
+ if (args.at(1).label === this.servicePassword) {
3137
+ loggedIn = true;
3138
+ terminal.writeln("Logged in as admin");
3139
+ }
3140
+ else {
3141
+ throw new Error("Invalid login");
3142
+ }
3143
+ }), logout: (args, terminal) => __awaiter$f(this, void 0, void 0, function* () {
3144
+ loggedIn = false;
3145
+ terminal.writeln("Logged out");
3146
+ }) }, this.commands),
3147
+ suggestCommands: () => __awaiter$f(this, void 0, void 0, function* () {
3148
+ if (loggedIn) {
3149
+ return this.loggedInCommands;
3150
+ }
3151
+ return this.loggedOutCommands;
3152
+ }),
3153
+ suggestions: this.suggestions
3154
+ });
3155
+ terminal.loadAddon(addon);
3156
+ }
3157
+ };
3158
+ TerminalManager = __decorate$i([
3159
+ singleton(),
3160
+ __param$7(2, injectAll(TERMINAL_COMMAND)),
3161
+ __metadata$e("design:paramtypes", [Logger,
3162
+ Configuration, Array])
3163
+ ], TerminalManager);
3164
+
3165
+ var __decorate$h = (this && this.__decorate) || function (decorators, target, key, desc) {
3166
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3167
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3168
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3169
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
3170
+ };
3171
+ var __metadata$d = (this && this.__metadata) || function (k, v) {
3172
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3173
+ };
3174
+ var __awaiter$e = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3071
3175
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3072
3176
  return new (P || (P = Promise))(function (resolve, reject) {
3073
3177
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3081,7 +3185,7 @@ let TokenGenerator = class TokenGenerator {
3081
3185
  this.chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
3082
3186
  }
3083
3187
  generate(checkCb) {
3084
- return __awaiter$b(this, void 0, void 0, function* () {
3188
+ return __awaiter$e(this, void 0, void 0, function* () {
3085
3189
  let token = null;
3086
3190
  let tries = 0;
3087
3191
  let notGood = true;
@@ -3105,18 +3209,18 @@ let TokenGenerator = class TokenGenerator {
3105
3209
  return s;
3106
3210
  }
3107
3211
  };
3108
- TokenGenerator = __decorate$e([
3212
+ TokenGenerator = __decorate$h([
3109
3213
  singleton(),
3110
- __metadata$b("design:paramtypes", [])
3214
+ __metadata$d("design:paramtypes", [])
3111
3215
  ], TokenGenerator);
3112
3216
 
3113
- var __decorate$d = (this && this.__decorate) || function (decorators, target, key, desc) {
3217
+ var __decorate$g = (this && this.__decorate) || function (decorators, target, key, desc) {
3114
3218
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3115
3219
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3116
3220
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3117
3221
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3118
3222
  };
3119
- var __awaiter$a = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3223
+ var __awaiter$d = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3120
3224
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3121
3225
  return new (P || (P = Promise))(function (resolve, reject) {
3122
3226
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3133,35 +3237,35 @@ const sampleUser = {
3133
3237
  };
3134
3238
  let UserManager = class UserManager {
3135
3239
  getByCredentials(credentials) {
3136
- return __awaiter$a(this, void 0, void 0, function* () {
3240
+ return __awaiter$d(this, void 0, void 0, function* () {
3137
3241
  return (sampleUser.email == credentials.email) ? sampleUser : yield Promise.reject("message.login.error");
3138
3242
  });
3139
3243
  }
3140
3244
  getById(id) {
3141
- return __awaiter$a(this, void 0, void 0, function* () {
3245
+ return __awaiter$d(this, void 0, void 0, function* () {
3142
3246
  return (sampleUser.id == id) ? sampleUser : null;
3143
3247
  });
3144
3248
  }
3145
3249
  serialize(user) {
3146
- return __awaiter$a(this, void 0, void 0, function* () {
3250
+ return __awaiter$d(this, void 0, void 0, function* () {
3147
3251
  const res = Object.assign({}, user);
3148
3252
  delete res.password;
3149
3253
  return res;
3150
3254
  });
3151
3255
  }
3152
3256
  };
3153
- UserManager = __decorate$d([
3257
+ UserManager = __decorate$g([
3154
3258
  injectable(),
3155
3259
  scoped(Lifecycle.ContainerScoped)
3156
3260
  ], UserManager);
3157
3261
 
3158
- var __decorate$c = (this && this.__decorate) || function (decorators, target, key, desc) {
3262
+ var __decorate$f = (this && this.__decorate) || function (decorators, target, key, desc) {
3159
3263
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3160
3264
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3161
3265
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3162
3266
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3163
3267
  };
3164
- var __metadata$a = (this && this.__metadata) || function (k, v) {
3268
+ var __metadata$c = (this && this.__metadata) || function (k, v) {
3165
3269
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3166
3270
  };
3167
3271
  class AssetImageParams {
@@ -3177,66 +3281,66 @@ class AssetImageParams {
3177
3281
  this.cropAfter = false;
3178
3282
  }
3179
3283
  }
3180
- __decorate$c([
3284
+ __decorate$f([
3181
3285
  Min(-360),
3182
3286
  Max(360),
3183
3287
  IsOptional(),
3184
- __metadata$a("design:type", Number)
3288
+ __metadata$c("design:type", Number)
3185
3289
  ], AssetImageParams.prototype, "rotation", void 0);
3186
- __decorate$c([
3290
+ __decorate$f([
3187
3291
  Min(0.0001),
3188
3292
  IsOptional(),
3189
- __metadata$a("design:type", Number)
3293
+ __metadata$c("design:type", Number)
3190
3294
  ], AssetImageParams.prototype, "canvasScaleX", void 0);
3191
- __decorate$c([
3295
+ __decorate$f([
3192
3296
  Min(0.0001),
3193
3297
  IsOptional(),
3194
- __metadata$a("design:type", Number)
3298
+ __metadata$c("design:type", Number)
3195
3299
  ], AssetImageParams.prototype, "canvasScaleY", void 0);
3196
- __decorate$c([
3300
+ __decorate$f([
3197
3301
  Min(0.0001),
3198
3302
  IsOptional(),
3199
- __metadata$a("design:type", Number)
3303
+ __metadata$c("design:type", Number)
3200
3304
  ], AssetImageParams.prototype, "scaleX", void 0);
3201
- __decorate$c([
3305
+ __decorate$f([
3202
3306
  Min(0.0001),
3203
3307
  IsOptional(),
3204
- __metadata$a("design:type", Number)
3308
+ __metadata$c("design:type", Number)
3205
3309
  ], AssetImageParams.prototype, "scaleY", void 0);
3206
- __decorate$c([
3310
+ __decorate$f([
3207
3311
  IsBoolean(),
3208
3312
  IsOptional(),
3209
- __metadata$a("design:type", Boolean)
3313
+ __metadata$c("design:type", Boolean)
3210
3314
  ], AssetImageParams.prototype, "lazy", void 0);
3211
- __decorate$c([
3315
+ __decorate$f([
3212
3316
  IsBoolean(),
3213
3317
  IsOptional(),
3214
- __metadata$a("design:type", Boolean)
3318
+ __metadata$c("design:type", Boolean)
3215
3319
  ], AssetImageParams.prototype, "crop", void 0);
3216
- __decorate$c([
3320
+ __decorate$f([
3217
3321
  IsBoolean(),
3218
3322
  IsOptional(),
3219
- __metadata$a("design:type", Boolean)
3323
+ __metadata$c("design:type", Boolean)
3220
3324
  ], AssetImageParams.prototype, "cropBefore", void 0);
3221
- __decorate$c([
3325
+ __decorate$f([
3222
3326
  IsBoolean(),
3223
3327
  IsOptional(),
3224
- __metadata$a("design:type", Boolean)
3328
+ __metadata$c("design:type", Boolean)
3225
3329
  ], AssetImageParams.prototype, "cropAfter", void 0);
3226
3330
 
3227
- var __decorate$b = (this && this.__decorate) || function (decorators, target, key, desc) {
3331
+ var __decorate$e = (this && this.__decorate) || function (decorators, target, key, desc) {
3228
3332
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3229
3333
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3230
3334
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3231
3335
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3232
3336
  };
3233
- var __metadata$9 = (this && this.__metadata) || function (k, v) {
3337
+ var __metadata$b = (this && this.__metadata) || function (k, v) {
3234
3338
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3235
3339
  };
3236
- var __param$5 = (this && this.__param) || function (paramIndex, decorator) {
3340
+ var __param$6 = (this && this.__param) || function (paramIndex, decorator) {
3237
3341
  return function (target, key) { decorator(target, key, paramIndex); }
3238
3342
  };
3239
- var __awaiter$9 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3343
+ var __awaiter$c = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3240
3344
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3241
3345
  return new (P || (P = Promise))(function (resolve, reject) {
3242
3346
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3251,7 +3355,7 @@ let AssetsController = class AssetsController {
3251
3355
  this.assetResolver = assetResolver;
3252
3356
  }
3253
3357
  upload(file) {
3254
- return __awaiter$9(this, void 0, void 0, function* () {
3358
+ return __awaiter$c(this, void 0, void 0, function* () {
3255
3359
  try {
3256
3360
  const contentType = file.mimetype === "application/octet-stream" ? null : file.mimetype;
3257
3361
  const asset = yield this.assets.writeBuffer(file.buffer, { filename: file.filename }, contentType);
@@ -3264,7 +3368,7 @@ let AssetsController = class AssetsController {
3264
3368
  });
3265
3369
  }
3266
3370
  uploadUrl(body) {
3267
- return __awaiter$9(this, void 0, void 0, function* () {
3371
+ return __awaiter$c(this, void 0, void 0, function* () {
3268
3372
  try {
3269
3373
  const asset = yield this.assets.writeUrl(body.url, body);
3270
3374
  return asset.toJSON();
@@ -3276,13 +3380,13 @@ let AssetsController = class AssetsController {
3276
3380
  });
3277
3381
  }
3278
3382
  getFile(id, lazy, res) {
3279
- return __awaiter$9(this, void 0, void 0, function* () {
3383
+ return __awaiter$c(this, void 0, void 0, function* () {
3280
3384
  const asset = yield this.getAsset("Asset", id, lazy, res);
3281
3385
  return asset.download();
3282
3386
  });
3283
3387
  }
3284
3388
  getImageRotation(id, params, res, rotation = 0) {
3285
- return __awaiter$9(this, void 0, void 0, function* () {
3389
+ return __awaiter$c(this, void 0, void 0, function* () {
3286
3390
  const asset = yield this.getAsset("Image", id, params.lazy, res);
3287
3391
  if (rotation !== 0) {
3288
3392
  params.rotation = params.rotation || rotation;
@@ -3291,18 +3395,18 @@ let AssetsController = class AssetsController {
3291
3395
  });
3292
3396
  }
3293
3397
  getImage(id, params, res) {
3294
- return __awaiter$9(this, void 0, void 0, function* () {
3398
+ return __awaiter$c(this, void 0, void 0, function* () {
3295
3399
  return this.getImageRotation(id, params, res);
3296
3400
  });
3297
3401
  }
3298
3402
  getFileByName(name, res) {
3299
- return __awaiter$9(this, void 0, void 0, function* () {
3403
+ return __awaiter$c(this, void 0, void 0, function* () {
3300
3404
  const asset = yield this.getAssetByName("Asset", name, res);
3301
3405
  return asset.download();
3302
3406
  });
3303
3407
  }
3304
3408
  getImageByName(name, params, res) {
3305
- return __awaiter$9(this, void 0, void 0, function* () {
3409
+ return __awaiter$c(this, void 0, void 0, function* () {
3306
3410
  const asset = yield this.getAssetByName("Image", name, res);
3307
3411
  return asset.downloadImage(params);
3308
3412
  });
@@ -3321,7 +3425,7 @@ let AssetsController = class AssetsController {
3321
3425
  }
3322
3426
  }
3323
3427
  getAsset(type, id, lazy, res) {
3324
- return __awaiter$9(this, void 0, void 0, function* () {
3428
+ return __awaiter$c(this, void 0, void 0, function* () {
3325
3429
  const asset = yield this.assetResolver.resolve(id, lazy);
3326
3430
  if (!asset) {
3327
3431
  throw new HttpError(404, `${type} with id: '${id}' not found.`);
@@ -3331,7 +3435,7 @@ let AssetsController = class AssetsController {
3331
3435
  });
3332
3436
  }
3333
3437
  getAssetByName(type, filename, res) {
3334
- return __awaiter$9(this, void 0, void 0, function* () {
3438
+ return __awaiter$c(this, void 0, void 0, function* () {
3335
3439
  const asset = yield this.assets.find({ filename });
3336
3440
  if (!asset) {
3337
3441
  throw new HttpError(404, `${type} with filename: '${filename}' not found.`);
@@ -3341,76 +3445,76 @@ let AssetsController = class AssetsController {
3341
3445
  });
3342
3446
  }
3343
3447
  };
3344
- __decorate$b([
3448
+ __decorate$e([
3345
3449
  Authorized(),
3346
3450
  Post(""),
3347
- __param$5(0, UploadedFile("file")),
3348
- __metadata$9("design:type", Function),
3349
- __metadata$9("design:paramtypes", [Object]),
3350
- __metadata$9("design:returntype", Promise)
3451
+ __param$6(0, UploadedFile("file")),
3452
+ __metadata$b("design:type", Function),
3453
+ __metadata$b("design:paramtypes", [Object]),
3454
+ __metadata$b("design:returntype", Promise)
3351
3455
  ], AssetsController.prototype, "upload", null);
3352
- __decorate$b([
3456
+ __decorate$e([
3353
3457
  Authorized(),
3354
3458
  Post("url"),
3355
- __param$5(0, Body()),
3356
- __metadata$9("design:type", Function),
3357
- __metadata$9("design:paramtypes", [Object]),
3358
- __metadata$9("design:returntype", Promise)
3459
+ __param$6(0, Body()),
3460
+ __metadata$b("design:type", Function),
3461
+ __metadata$b("design:paramtypes", [Object]),
3462
+ __metadata$b("design:returntype", Promise)
3359
3463
  ], AssetsController.prototype, "uploadUrl", null);
3360
- __decorate$b([
3464
+ __decorate$e([
3361
3465
  Get("/:id"),
3362
- __param$5(0, Param("id")), __param$5(1, QueryParam("lazy")), __param$5(2, Res()),
3363
- __metadata$9("design:type", Function),
3364
- __metadata$9("design:paramtypes", [String, Boolean, Object]),
3365
- __metadata$9("design:returntype", Promise)
3466
+ __param$6(0, Param("id")), __param$6(1, QueryParam("lazy")), __param$6(2, Res()),
3467
+ __metadata$b("design:type", Function),
3468
+ __metadata$b("design:paramtypes", [String, Boolean, Object]),
3469
+ __metadata$b("design:returntype", Promise)
3366
3470
  ], AssetsController.prototype, "getFile", null);
3367
- __decorate$b([
3471
+ __decorate$e([
3368
3472
  Get("/image/:id/:rotation"),
3369
- __param$5(0, Param("id")), __param$5(1, QueryParams()), __param$5(2, Res()), __param$5(3, Param("rotation")),
3370
- __metadata$9("design:type", Function),
3371
- __metadata$9("design:paramtypes", [String, AssetImageParams, Object, Number]),
3372
- __metadata$9("design:returntype", Promise)
3473
+ __param$6(0, Param("id")), __param$6(1, QueryParams()), __param$6(2, Res()), __param$6(3, Param("rotation")),
3474
+ __metadata$b("design:type", Function),
3475
+ __metadata$b("design:paramtypes", [String, AssetImageParams, Object, Number]),
3476
+ __metadata$b("design:returntype", Promise)
3373
3477
  ], AssetsController.prototype, "getImageRotation", null);
3374
- __decorate$b([
3478
+ __decorate$e([
3375
3479
  Get("/image/:id"),
3376
- __param$5(0, Param("id")), __param$5(1, QueryParams()), __param$5(2, Res()),
3377
- __metadata$9("design:type", Function),
3378
- __metadata$9("design:paramtypes", [String, AssetImageParams, Object]),
3379
- __metadata$9("design:returntype", Promise)
3480
+ __param$6(0, Param("id")), __param$6(1, QueryParams()), __param$6(2, Res()),
3481
+ __metadata$b("design:type", Function),
3482
+ __metadata$b("design:paramtypes", [String, AssetImageParams, Object]),
3483
+ __metadata$b("design:returntype", Promise)
3380
3484
  ], AssetsController.prototype, "getImage", null);
3381
- __decorate$b([
3485
+ __decorate$e([
3382
3486
  Get("/by-name/:name"),
3383
- __param$5(0, Param("name")), __param$5(1, Res()),
3384
- __metadata$9("design:type", Function),
3385
- __metadata$9("design:paramtypes", [String, Object]),
3386
- __metadata$9("design:returntype", Promise)
3487
+ __param$6(0, Param("name")), __param$6(1, Res()),
3488
+ __metadata$b("design:type", Function),
3489
+ __metadata$b("design:paramtypes", [String, Object]),
3490
+ __metadata$b("design:returntype", Promise)
3387
3491
  ], AssetsController.prototype, "getFileByName", null);
3388
- __decorate$b([
3492
+ __decorate$e([
3389
3493
  Get("/by-name/image/:name"),
3390
- __param$5(0, Param("name")), __param$5(1, QueryParams()), __param$5(2, Res()),
3391
- __metadata$9("design:type", Function),
3392
- __metadata$9("design:paramtypes", [String, AssetImageParams, Object]),
3393
- __metadata$9("design:returntype", Promise)
3494
+ __param$6(0, Param("name")), __param$6(1, QueryParams()), __param$6(2, Res()),
3495
+ __metadata$b("design:type", Function),
3496
+ __metadata$b("design:paramtypes", [String, AssetImageParams, Object]),
3497
+ __metadata$b("design:returntype", Promise)
3394
3498
  ], AssetsController.prototype, "getImageByName", null);
3395
- AssetsController = __decorate$b([
3499
+ AssetsController = __decorate$e([
3396
3500
  injectable(),
3397
3501
  Controller("/assets"),
3398
- __metadata$9("design:paramtypes", [Assets, AssetResolver])
3502
+ __metadata$b("design:paramtypes", [Assets, AssetResolver])
3399
3503
  ], AssetsController);
3400
3504
 
3401
- var __decorate$a = (this && this.__decorate) || function (decorators, target, key, desc) {
3505
+ var __decorate$d = (this && this.__decorate) || function (decorators, target, key, desc) {
3402
3506
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3403
3507
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3404
3508
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3405
3509
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3406
3510
  };
3407
- var __metadata$8 = (this && this.__metadata) || function (k, v) {
3511
+ var __metadata$a = (this && this.__metadata) || function (k, v) {
3408
3512
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3409
3513
  };
3410
- var __param$4 = (this && this.__param) || function (paramIndex, decorator) {
3514
+ var __param$5 = (this && this.__param) || function (paramIndex, decorator) {
3411
3515
  return function (target, key) { decorator(target, key, paramIndex); }
3412
3516
  };
3413
- var __awaiter$8 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3517
+ var __awaiter$b = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3414
3518
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3415
3519
  return new (P || (P = Promise))(function (resolve, reject) {
3416
3520
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3425,7 +3529,7 @@ let AuthController = class AuthController {
3425
3529
  this.userManager = userManager;
3426
3530
  }
3427
3531
  login(credentials, res) {
3428
- return __awaiter$8(this, void 0, void 0, function* () {
3532
+ return __awaiter$b(this, void 0, void 0, function* () {
3429
3533
  let user = null;
3430
3534
  try {
3431
3535
  user = yield this.userManager.getByCredentials(credentials);
@@ -3446,37 +3550,37 @@ let AuthController = class AuthController {
3446
3550
  return this.userManager.serialize(user);
3447
3551
  }
3448
3552
  };
3449
- __decorate$a([
3553
+ __decorate$d([
3450
3554
  Post("/login"),
3451
- __param$4(0, Body()), __param$4(1, Res()),
3452
- __metadata$8("design:type", Function),
3453
- __metadata$8("design:paramtypes", [Object, Object]),
3454
- __metadata$8("design:returntype", Promise)
3555
+ __param$5(0, Body()), __param$5(1, Res()),
3556
+ __metadata$a("design:type", Function),
3557
+ __metadata$a("design:paramtypes", [Object, Object]),
3558
+ __metadata$a("design:returntype", Promise)
3455
3559
  ], AuthController.prototype, "login", null);
3456
- __decorate$a([
3560
+ __decorate$d([
3457
3561
  Authorized(),
3458
3562
  Get("/user"),
3459
- __param$4(0, CurrentUser()),
3460
- __metadata$8("design:type", Function),
3461
- __metadata$8("design:paramtypes", [Object]),
3462
- __metadata$8("design:returntype", void 0)
3563
+ __param$5(0, CurrentUser()),
3564
+ __metadata$a("design:type", Function),
3565
+ __metadata$a("design:paramtypes", [Object]),
3566
+ __metadata$a("design:returntype", void 0)
3463
3567
  ], AuthController.prototype, "getProfile", null);
3464
- AuthController = __decorate$a([
3568
+ AuthController = __decorate$d([
3465
3569
  injectable(),
3466
3570
  Controller(),
3467
- __metadata$8("design:paramtypes", [Configuration, UserManager])
3571
+ __metadata$a("design:paramtypes", [Configuration, UserManager])
3468
3572
  ], AuthController);
3469
3573
 
3470
- var __decorate$9 = (this && this.__decorate) || function (decorators, target, key, desc) {
3574
+ var __decorate$c = (this && this.__decorate) || function (decorators, target, key, desc) {
3471
3575
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3472
3576
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3473
3577
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3474
3578
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3475
3579
  };
3476
- var __metadata$7 = (this && this.__metadata) || function (k, v) {
3580
+ var __metadata$9 = (this && this.__metadata) || function (k, v) {
3477
3581
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3478
3582
  };
3479
- var __param$3 = (this && this.__param) || function (paramIndex, decorator) {
3583
+ var __param$4 = (this && this.__param) || function (paramIndex, decorator) {
3480
3584
  return function (target, key) { decorator(target, key, paramIndex); }
3481
3585
  };
3482
3586
  let GalleryController = class GalleryController {
@@ -3487,32 +3591,32 @@ let GalleryController = class GalleryController {
3487
3591
  return this.galleryCache.serve(id);
3488
3592
  }
3489
3593
  };
3490
- __decorate$9([
3594
+ __decorate$c([
3491
3595
  Get("/:id"),
3492
- __param$3(0, Param("id")),
3493
- __metadata$7("design:type", Function),
3494
- __metadata$7("design:paramtypes", [String]),
3495
- __metadata$7("design:returntype", void 0)
3596
+ __param$4(0, Param("id")),
3597
+ __metadata$9("design:type", Function),
3598
+ __metadata$9("design:paramtypes", [String]),
3599
+ __metadata$9("design:returntype", void 0)
3496
3600
  ], GalleryController.prototype, "getFile", null);
3497
- GalleryController = __decorate$9([
3601
+ GalleryController = __decorate$c([
3498
3602
  injectable(),
3499
3603
  Controller("/gallery"),
3500
- __metadata$7("design:paramtypes", [GalleryCache])
3604
+ __metadata$9("design:paramtypes", [GalleryCache])
3501
3605
  ], GalleryController);
3502
3606
 
3503
- var __decorate$8 = (this && this.__decorate) || function (decorators, target, key, desc) {
3607
+ var __decorate$b = (this && this.__decorate) || function (decorators, target, key, desc) {
3504
3608
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3505
3609
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3506
3610
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3507
3611
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3508
3612
  };
3509
- var __metadata$6 = (this && this.__metadata) || function (k, v) {
3613
+ var __metadata$8 = (this && this.__metadata) || function (k, v) {
3510
3614
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3511
3615
  };
3512
- var __param$2 = (this && this.__param) || function (paramIndex, decorator) {
3616
+ var __param$3 = (this && this.__param) || function (paramIndex, decorator) {
3513
3617
  return function (target, key) { decorator(target, key, paramIndex); }
3514
3618
  };
3515
- var __awaiter$7 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3619
+ var __awaiter$a = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3516
3620
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3517
3621
  return new (P || (P = Promise))(function (resolve, reject) {
3518
3622
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3529,7 +3633,7 @@ let ProgressesController = class ProgressesController {
3529
3633
  this.connectionType = !mainEndpoint ? "polling" : "socket";
3530
3634
  }
3531
3635
  getProgress(id) {
3532
- return __awaiter$7(this, void 0, void 0, function* () {
3636
+ return __awaiter$a(this, void 0, void 0, function* () {
3533
3637
  const progress = yield this.progresses.get(id);
3534
3638
  if (!progress)
3535
3639
  return null;
@@ -3539,29 +3643,176 @@ let ProgressesController = class ProgressesController {
3539
3643
  });
3540
3644
  }
3541
3645
  };
3542
- __decorate$8([
3646
+ __decorate$b([
3543
3647
  Get("/:id"),
3544
- __param$2(0, Param("id")),
3545
- __metadata$6("design:type", Function),
3546
- __metadata$6("design:paramtypes", [String]),
3547
- __metadata$6("design:returntype", Promise)
3648
+ __param$3(0, Param("id")),
3649
+ __metadata$8("design:type", Function),
3650
+ __metadata$8("design:paramtypes", [String]),
3651
+ __metadata$8("design:returntype", Promise)
3548
3652
  ], ProgressesController.prototype, "getProgress", null);
3549
- ProgressesController = __decorate$8([
3653
+ ProgressesController = __decorate$b([
3550
3654
  injectable(),
3551
3655
  Controller("/progresses"),
3552
- __metadata$6("design:paramtypes", [Progresses, Configuration])
3656
+ __metadata$8("design:paramtypes", [Progresses, Configuration])
3553
3657
  ], ProgressesController);
3554
3658
 
3555
- var __decorate$7 = (this && this.__decorate) || function (decorators, target, key, desc) {
3659
+ var __decorate$a = (this && this.__decorate) || function (decorators, target, key, desc) {
3556
3660
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3557
3661
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3558
3662
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3559
3663
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3560
3664
  };
3561
- var __metadata$5 = (this && this.__metadata) || function (k, v) {
3665
+ var __metadata$7 = (this && this.__metadata) || function (k, v) {
3562
3666
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3563
3667
  };
3564
- var __awaiter$6 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3668
+ let TerminalController$1 = class TerminalController {
3669
+ constructor(config) {
3670
+ this.config = config;
3671
+ this.serviceName = config.resolve("serviceName");
3672
+ this.serviceUrl = config.resolve("serviceUrl");
3673
+ }
3674
+ terminal() {
3675
+ return `
3676
+ <!DOCTYPE html>
3677
+ <html>
3678
+ <head>
3679
+ <meta charset="utf-8">
3680
+ <title>${this.serviceName} console</title>
3681
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/xterm@5.1.0/css/xterm.min.css"/>
3682
+ <script type="text/javascript" src="${this.serviceUrl}/socket/socket.io.js"></script>
3683
+ <style>
3684
+ body {
3685
+ margin: 0;
3686
+ padding: 0;
3687
+ background: #1e1e1e;
3688
+ }
3689
+ body * {
3690
+ box-sizing: border-box;
3691
+ }
3692
+ #terminal {
3693
+ margin: 40px;
3694
+ background: black;
3695
+ border: 1px solid #dedede;
3696
+ border-radius: 5px;
3697
+ overflow: hidden;
3698
+ }
3699
+ #terminal .xterm {
3700
+ margin: 10px;
3701
+ height: calc(100vh - 120px);
3702
+ border-radius: 5px;
3703
+ }
3704
+ #terminal .xterm-viewport::-webkit-scrollbar {
3705
+ width: 0.4em;
3706
+ background-color: #222;
3707
+ }
3708
+ #terminal .xterm-viewport::-webkit-scrollbar-thumb {
3709
+ background-color: #555;
3710
+ }
3711
+ </style>
3712
+ </head>
3713
+ <body>
3714
+ <div id="terminal"></div>
3715
+ <script type="module">
3716
+ // Import terminal modules
3717
+ import xterm from 'https://cdn.jsdelivr.net/npm/xterm@5.1.0/+esm';
3718
+ import xtermFit from 'https://cdn.jsdelivr.net/npm/xterm-addon-fit@0.7.0/+esm';
3719
+ // Initialize variables
3720
+ var terminal = new xterm.Terminal();
3721
+ var fitAddon = new xtermFit.FitAddon();
3722
+ var socket = io("${this.serviceUrl}", {path: "/socket"});
3723
+ var clear = function () {
3724
+ terminal.clear();
3725
+ terminal.reset();
3726
+ // Prev line
3727
+ terminal.write("\u001B[F");
3728
+ }
3729
+ // Initialize terminal
3730
+ terminal.loadAddon(fitAddon);
3731
+ terminal.open(document.getElementById('terminal'));
3732
+ terminal.onData(function (data) {
3733
+ socket.emit("terminal-data", data.charCodeAt(0) === 127 ? "\b" : data);
3734
+ });
3735
+ // Socket listeners
3736
+ socket.on("terminal-data", function (data) {
3737
+ if (data === "\x1bc") {
3738
+ clear();
3739
+ return;
3740
+ }
3741
+ terminal.write(data);
3742
+ });
3743
+ socket.on("terminal-upload", function (data) {
3744
+ var input = document.createElement("input");
3745
+ input.type = "file";
3746
+ input.accept = data.accept;
3747
+ input.onchange = function () {
3748
+ var file = input.files[0];
3749
+ var reader = new FileReader();
3750
+ reader.onload = function () {
3751
+ console.log(reader.result);
3752
+ socket.emit("terminal-upload", {
3753
+ id: data.id,
3754
+ label: file.name,
3755
+ content: reader.result,
3756
+ accept: data.accept
3757
+ });
3758
+ };
3759
+ reader.onerror = function () {
3760
+ console.error(reader.error);
3761
+ socket.emit("terminal-upload", {
3762
+ id: data.id,
3763
+ label: file.name,
3764
+ error: reader.error,
3765
+ accept: data.accept
3766
+ });
3767
+ };
3768
+ reader.readAsDataURL(file);
3769
+ };
3770
+ input.click();
3771
+ });
3772
+ socket.on("terminal-download", function (data) {
3773
+ var link = document.createElement("a");
3774
+ link.href = data.content;
3775
+ link.download = data.filename;
3776
+ link.click();
3777
+ });
3778
+ socket.on("connect", function () {
3779
+ clear();
3780
+ terminal.writeln("Welcome to ${this.serviceName} service's console!");
3781
+ socket.emit("terminal-init");
3782
+ });
3783
+ socket.on("disconnect", function () {
3784
+ clear();
3785
+ terminal.writeln("Disconnected from ${this.serviceName} service's console.");
3786
+ });
3787
+ </script>
3788
+ </body>
3789
+ </html>
3790
+ `;
3791
+ }
3792
+ };
3793
+ __decorate$a([
3794
+ Get(),
3795
+ Header("Content-Type", "text/html"),
3796
+ __metadata$7("design:type", Function),
3797
+ __metadata$7("design:paramtypes", []),
3798
+ __metadata$7("design:returntype", void 0)
3799
+ ], TerminalController$1.prototype, "terminal", null);
3800
+ TerminalController$1 = __decorate$a([
3801
+ injectable(),
3802
+ Controller("/console"),
3803
+ __metadata$7("design:paramtypes", [Configuration])
3804
+ ], TerminalController$1);
3805
+
3806
+ var __decorate$9 = (this && this.__decorate) || function (decorators, target, key, desc) {
3807
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3808
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3809
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3810
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
3811
+ };
3812
+ var __metadata$6 = (this && this.__metadata) || function (k, v) {
3813
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3814
+ };
3815
+ var __awaiter$9 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3565
3816
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3566
3817
  return new (P || (P = Promise))(function (resolve, reject) {
3567
3818
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3580,7 +3831,7 @@ let ErrorHandlerMiddleware = class ErrorHandlerMiddleware {
3580
3831
  }
3581
3832
  error(error, req, res, next) {
3582
3833
  var _a;
3583
- return __awaiter$6(this, void 0, void 0, function* () {
3834
+ return __awaiter$9(this, void 0, void 0, function* () {
3584
3835
  const result = yield this.getResult(error, req, res);
3585
3836
  if (this.isDev) {
3586
3837
  if (error instanceof AxiosError) {
@@ -3595,7 +3846,7 @@ let ErrorHandlerMiddleware = class ErrorHandlerMiddleware {
3595
3846
  });
3596
3847
  }
3597
3848
  getResult(error, req, res) {
3598
- return __awaiter$6(this, void 0, void 0, function* () {
3849
+ return __awaiter$9(this, void 0, void 0, function* () {
3599
3850
  const result = {};
3600
3851
  if (error instanceof AxiosError) {
3601
3852
  res.status(error.response.status);
@@ -3639,22 +3890,22 @@ let ErrorHandlerMiddleware = class ErrorHandlerMiddleware {
3639
3890
  });
3640
3891
  }
3641
3892
  };
3642
- ErrorHandlerMiddleware = __decorate$7([
3893
+ ErrorHandlerMiddleware = __decorate$9([
3643
3894
  injectable(),
3644
3895
  Middleware({ type: "after" }),
3645
- __metadata$5("design:paramtypes", [Configuration, Translator])
3896
+ __metadata$6("design:paramtypes", [Configuration, Translator])
3646
3897
  ], ErrorHandlerMiddleware);
3647
3898
 
3648
- var __decorate$6 = (this && this.__decorate) || function (decorators, target, key, desc) {
3899
+ var __decorate$8 = (this && this.__decorate) || function (decorators, target, key, desc) {
3649
3900
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3650
3901
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3651
3902
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3652
3903
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3653
3904
  };
3654
- var __metadata$4 = (this && this.__metadata) || function (k, v) {
3905
+ var __metadata$5 = (this && this.__metadata) || function (k, v) {
3655
3906
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3656
3907
  };
3657
- var __param$1 = (this && this.__param) || function (paramIndex, decorator) {
3908
+ var __param$2 = (this && this.__param) || function (paramIndex, decorator) {
3658
3909
  return function (target, key) { decorator(target, key, paramIndex); }
3659
3910
  };
3660
3911
  let ContainerMiddleware = class ContainerMiddleware {
@@ -3666,20 +3917,20 @@ let ContainerMiddleware = class ContainerMiddleware {
3666
3917
  next(null);
3667
3918
  }
3668
3919
  };
3669
- ContainerMiddleware = __decorate$6([
3920
+ ContainerMiddleware = __decorate$8([
3670
3921
  injectable(),
3671
3922
  Middleware({ type: "before" }),
3672
- __param$1(0, inject(DI_CONTAINER)),
3673
- __metadata$4("design:paramtypes", [Object])
3923
+ __param$2(0, inject(DI_CONTAINER)),
3924
+ __metadata$5("design:paramtypes", [Object])
3674
3925
  ], ContainerMiddleware);
3675
3926
 
3676
- var __decorate$5 = (this && this.__decorate) || function (decorators, target, key, desc) {
3927
+ var __decorate$7 = (this && this.__decorate) || function (decorators, target, key, desc) {
3677
3928
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3678
3929
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3679
3930
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3680
3931
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3681
3932
  };
3682
- var __metadata$3 = (this && this.__metadata) || function (k, v) {
3933
+ var __metadata$4 = (this && this.__metadata) || function (k, v) {
3683
3934
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3684
3935
  };
3685
3936
  let LanguageMiddleware = class LanguageMiddleware {
@@ -3691,19 +3942,19 @@ let LanguageMiddleware = class LanguageMiddleware {
3691
3942
  next(null);
3692
3943
  }
3693
3944
  };
3694
- LanguageMiddleware = __decorate$5([
3945
+ LanguageMiddleware = __decorate$7([
3695
3946
  injectable(),
3696
3947
  Middleware({ type: "before" }),
3697
- __metadata$3("design:paramtypes", [Configuration])
3948
+ __metadata$4("design:paramtypes", [Configuration])
3698
3949
  ], LanguageMiddleware);
3699
3950
 
3700
- var __decorate$4 = (this && this.__decorate) || function (decorators, target, key, desc) {
3951
+ var __decorate$6 = (this && this.__decorate) || function (decorators, target, key, desc) {
3701
3952
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3702
3953
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3703
3954
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3704
3955
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3705
3956
  };
3706
- var __metadata$2 = (this && this.__metadata) || function (k, v) {
3957
+ var __metadata$3 = (this && this.__metadata) || function (k, v) {
3707
3958
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3708
3959
  };
3709
3960
  let RequestEndedMiddleware = class RequestEndedMiddleware {
@@ -3719,19 +3970,19 @@ let RequestEndedMiddleware = class RequestEndedMiddleware {
3719
3970
  next(null);
3720
3971
  }
3721
3972
  };
3722
- RequestEndedMiddleware = __decorate$4([
3973
+ RequestEndedMiddleware = __decorate$6([
3723
3974
  injectable(),
3724
3975
  Middleware({ type: "after" }),
3725
- __metadata$2("design:paramtypes", [Logger])
3976
+ __metadata$3("design:paramtypes", [Logger])
3726
3977
  ], RequestEndedMiddleware);
3727
3978
 
3728
- var __decorate$3 = (this && this.__decorate) || function (decorators, target, key, desc) {
3979
+ var __decorate$5 = (this && this.__decorate) || function (decorators, target, key, desc) {
3729
3980
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3730
3981
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3731
3982
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3732
3983
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3733
3984
  };
3734
- var __metadata$1 = (this && this.__metadata) || function (k, v) {
3985
+ var __metadata$2 = (this && this.__metadata) || function (k, v) {
3735
3986
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3736
3987
  };
3737
3988
  let RequestStartedMiddleware = class RequestStartedMiddleware {
@@ -3745,25 +3996,25 @@ let RequestStartedMiddleware = class RequestStartedMiddleware {
3745
3996
  next(null);
3746
3997
  }
3747
3998
  };
3748
- RequestStartedMiddleware = __decorate$3([
3999
+ RequestStartedMiddleware = __decorate$5([
3749
4000
  injectable(),
3750
4001
  Middleware({ type: "before" }),
3751
- __metadata$1("design:paramtypes", [Logger])
4002
+ __metadata$2("design:paramtypes", [Logger])
3752
4003
  ], RequestStartedMiddleware);
3753
4004
 
3754
- var __decorate$2 = (this && this.__decorate) || function (decorators, target, key, desc) {
4005
+ var __decorate$4 = (this && this.__decorate) || function (decorators, target, key, desc) {
3755
4006
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3756
4007
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3757
4008
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
3758
4009
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3759
4010
  };
3760
- var __metadata = (this && this.__metadata) || function (k, v) {
4011
+ var __metadata$1 = (this && this.__metadata) || function (k, v) {
3761
4012
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3762
4013
  };
3763
- var __param = (this && this.__param) || function (paramIndex, decorator) {
4014
+ var __param$1 = (this && this.__param) || function (paramIndex, decorator) {
3764
4015
  return function (target, key) { decorator(target, key, paramIndex); }
3765
4016
  };
3766
- var __awaiter$5 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4017
+ var __awaiter$8 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3767
4018
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3768
4019
  return new (P || (P = Promise))(function (resolve, reject) {
3769
4020
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3778,7 +4029,7 @@ let ProgressController = class ProgressController {
3778
4029
  this.socketServer = socketServer;
3779
4030
  }
3780
4031
  advanceProgress(client, progressId) {
3781
- return __awaiter$5(this, void 0, void 0, function* () {
4032
+ return __awaiter$8(this, void 0, void 0, function* () {
3782
4033
  const progress = yield this.progresses.get(progressId);
3783
4034
  if (!progress)
3784
4035
  return;
@@ -3792,7 +4043,7 @@ let ProgressController = class ProgressController {
3792
4043
  });
3793
4044
  }
3794
4045
  setProgressInterest(client, progressId) {
3795
- return __awaiter$5(this, void 0, void 0, function* () {
4046
+ return __awaiter$8(this, void 0, void 0, function* () {
3796
4047
  const progress = yield this.progresses.get(progressId);
3797
4048
  if (!progress)
3798
4049
  return;
@@ -3806,28 +4057,201 @@ let ProgressController = class ProgressController {
3806
4057
  });
3807
4058
  }
3808
4059
  };
3809
- __decorate$2([
4060
+ __decorate$4([
3810
4061
  OnMessage("background-progress"),
4062
+ __param$1(0, ConnectedSocket()), __param$1(1, MessageBody()),
4063
+ __metadata$1("design:type", Function),
4064
+ __metadata$1("design:paramtypes", [Object, String]),
4065
+ __metadata$1("design:returntype", Promise)
4066
+ ], ProgressController.prototype, "advanceProgress", null);
4067
+ __decorate$4([
4068
+ OnMessage("background-progress-interest"),
4069
+ __param$1(0, ConnectedSocket()), __param$1(1, MessageBody()),
4070
+ __metadata$1("design:type", Function),
4071
+ __metadata$1("design:paramtypes", [Object, String]),
4072
+ __metadata$1("design:returntype", Promise)
4073
+ ], ProgressController.prototype, "setProgressInterest", null);
4074
+ ProgressController = __decorate$4([
4075
+ singleton(),
4076
+ SocketController(),
4077
+ __param$1(1, inject(SOCKET_SERVER)),
4078
+ __metadata$1("design:paramtypes", [Progresses, Object])
4079
+ ], ProgressController);
4080
+
4081
+ var __awaiter$7 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4082
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4083
+ return new (P || (P = Promise))(function (resolve, reject) {
4084
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4085
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4086
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
4087
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
4088
+ });
4089
+ };
4090
+ class Terminal {
4091
+ constructor(client) {
4092
+ this.client = client;
4093
+ this.addons = [];
4094
+ this.files$ = new BehaviorSubject([]);
4095
+ this.input$ = new Subject();
4096
+ }
4097
+ onData(cb) {
4098
+ const sub = this.input$.pipe(map(v => {
4099
+ if (v === "\b") {
4100
+ return "\x7f";
4101
+ }
4102
+ return v;
4103
+ })).subscribe(cb);
4104
+ return {
4105
+ dispose: () => sub.unsubscribe()
4106
+ };
4107
+ }
4108
+ write(data) {
4109
+ this.client.emit("terminal-data", data);
4110
+ }
4111
+ writeln(data) {
4112
+ this.write(data + "\n");
4113
+ }
4114
+ loadAddon(addon) {
4115
+ addon.activate(this);
4116
+ this.addons.push(addon);
4117
+ }
4118
+ dispose() {
4119
+ this.input$.complete();
4120
+ this.client = null;
4121
+ this.addons.forEach(a => a.dispose());
4122
+ }
4123
+ suggestFiles(accept) {
4124
+ return __awaiter$7(this, void 0, void 0, function* () {
4125
+ const rand = Math.round(Math.random() * 1000);
4126
+ const id = `${Date.now()}-${rand}`;
4127
+ const files = this.files$.value;
4128
+ return files.filter(f => f.accept === accept).concat([
4129
+ {
4130
+ id,
4131
+ label: "...",
4132
+ onAccept: () => __awaiter$7(this, void 0, void 0, function* () {
4133
+ this.client.emit("terminal-upload", {
4134
+ id,
4135
+ accept
4136
+ });
4137
+ const file = yield this.files$
4138
+ .pipe(first(v => v.some(f => f.id === id)))
4139
+ .pipe(timeout(120000))
4140
+ .pipe(map(v => v.find(f => f.id === id)))
4141
+ .toPromise();
4142
+ if (file.error) {
4143
+ this.files$.next(this.files$.value.filter(f => f.id !== id));
4144
+ throw new Error(file.error);
4145
+ }
4146
+ return file;
4147
+ }),
4148
+ showAlways: true,
4149
+ accept: accept,
4150
+ }
4151
+ ]);
4152
+ });
4153
+ }
4154
+ downloadFile(filename, buffer) {
4155
+ return __awaiter$7(this, void 0, void 0, function* () {
4156
+ const type = yield fileTypeFromBuffer(buffer);
4157
+ const data = buffer.toString("base64");
4158
+ const content = `data:${type.mime};base64,${data}`;
4159
+ this.client.emit("terminal-download", {
4160
+ filename,
4161
+ content
4162
+ });
4163
+ });
4164
+ }
4165
+ addFile(upload) {
4166
+ if (upload.content) {
4167
+ upload.buffer = Buffer.from(upload.content, "base64");
4168
+ }
4169
+ this.files$.next(this.files$.value.concat(upload));
4170
+ }
4171
+ input(data) {
4172
+ this.input$.next(data);
4173
+ }
4174
+ }
4175
+
4176
+ var __decorate$3 = (this && this.__decorate) || function (decorators, target, key, desc) {
4177
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4178
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4179
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4180
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
4181
+ };
4182
+ var __metadata = (this && this.__metadata) || function (k, v) {
4183
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
4184
+ };
4185
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
4186
+ return function (target, key) { decorator(target, key, paramIndex); }
4187
+ };
4188
+ var __awaiter$6 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4189
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4190
+ return new (P || (P = Promise))(function (resolve, reject) {
4191
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4192
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4193
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
4194
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
4195
+ });
4196
+ };
4197
+ let TerminalController = class TerminalController {
4198
+ constructor(manager) {
4199
+ this.manager = manager;
4200
+ this.terminals = {};
4201
+ }
4202
+ terminalInit(client) {
4203
+ return __awaiter$6(this, void 0, void 0, function* () {
4204
+ const terminal = new Terminal(client);
4205
+ this.manager.loadAddons(terminal);
4206
+ this.terminals[client.id] = terminal;
4207
+ client.on("disconnect", () => terminal.dispose());
4208
+ });
4209
+ }
4210
+ terminalData(client, data) {
4211
+ return __awaiter$6(this, void 0, void 0, function* () {
4212
+ const terminal = this.terminals[client.id];
4213
+ if (!terminal)
4214
+ return;
4215
+ terminal.input(data);
4216
+ });
4217
+ }
4218
+ terminalUpload(client, upload) {
4219
+ return __awaiter$6(this, void 0, void 0, function* () {
4220
+ const terminal = this.terminals[client.id];
4221
+ if (!terminal || !upload)
4222
+ return;
4223
+ terminal.addFile(upload);
4224
+ });
4225
+ }
4226
+ };
4227
+ __decorate$3([
4228
+ OnMessage("terminal-init"),
4229
+ __param(0, ConnectedSocket()),
4230
+ __metadata("design:type", Function),
4231
+ __metadata("design:paramtypes", [Object]),
4232
+ __metadata("design:returntype", Promise)
4233
+ ], TerminalController.prototype, "terminalInit", null);
4234
+ __decorate$3([
4235
+ OnMessage("terminal-data"),
3811
4236
  __param(0, ConnectedSocket()), __param(1, MessageBody()),
3812
4237
  __metadata("design:type", Function),
3813
4238
  __metadata("design:paramtypes", [Object, String]),
3814
4239
  __metadata("design:returntype", Promise)
3815
- ], ProgressController.prototype, "advanceProgress", null);
3816
- __decorate$2([
3817
- OnMessage("background-progress-interest"),
4240
+ ], TerminalController.prototype, "terminalData", null);
4241
+ __decorate$3([
4242
+ OnMessage("terminal-upload"),
3818
4243
  __param(0, ConnectedSocket()), __param(1, MessageBody()),
3819
4244
  __metadata("design:type", Function),
3820
- __metadata("design:paramtypes", [Object, String]),
4245
+ __metadata("design:paramtypes", [Object, Object]),
3821
4246
  __metadata("design:returntype", Promise)
3822
- ], ProgressController.prototype, "setProgressInterest", null);
3823
- ProgressController = __decorate$2([
3824
- injectable(),
4247
+ ], TerminalController.prototype, "terminalUpload", null);
4248
+ TerminalController = __decorate$3([
4249
+ singleton(),
3825
4250
  SocketController(),
3826
- __param(1, inject(SOCKET_SERVER)),
3827
- __metadata("design:paramtypes", [Progresses, Object])
3828
- ], ProgressController);
4251
+ __metadata("design:paramtypes", [TerminalManager])
4252
+ ], TerminalController);
3829
4253
 
3830
- var __decorate$1 = (this && this.__decorate) || function (decorators, target, key, desc) {
4254
+ var __decorate$2 = (this && this.__decorate) || function (decorators, target, key, desc) {
3831
4255
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3832
4256
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3833
4257
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
@@ -3838,7 +4262,7 @@ let CompressionMiddleware = class CompressionMiddleware {
3838
4262
  next();
3839
4263
  }
3840
4264
  };
3841
- CompressionMiddleware = __decorate$1([
4265
+ CompressionMiddleware = __decorate$2([
3842
4266
  injectable(),
3843
4267
  Middleware$1()
3844
4268
  ], CompressionMiddleware);
@@ -4038,13 +4462,13 @@ class DiContainer {
4038
4462
  }
4039
4463
  }
4040
4464
 
4041
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
4465
+ var __decorate$1 = (this && this.__decorate) || function (decorators, target, key, desc) {
4042
4466
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4043
4467
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4044
4468
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4045
4469
  return c > 3 && r && Object.defineProperty(target, key, r), r;
4046
4470
  };
4047
- var __awaiter$4 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4471
+ var __awaiter$5 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4048
4472
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4049
4473
  return new (P || (P = Promise))(function (resolve, reject) {
4050
4474
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4055,17 +4479,17 @@ var __awaiter$4 = (this && this.__awaiter) || function (thisArg, _arguments, P,
4055
4479
  };
4056
4480
  let EmptyJob = class EmptyJob {
4057
4481
  process() {
4058
- return __awaiter$4(this, void 0, void 0, function* () {
4482
+ return __awaiter$5(this, void 0, void 0, function* () {
4059
4483
  return null;
4060
4484
  });
4061
4485
  }
4062
4486
  };
4063
- EmptyJob = __decorate([
4487
+ EmptyJob = __decorate$1([
4064
4488
  injectable(),
4065
4489
  scoped(Lifecycle.ContainerScoped)
4066
4490
  ], EmptyJob);
4067
4491
 
4068
- var __awaiter$3 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4492
+ var __awaiter$4 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4069
4493
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4070
4494
  return new (P || (P = Promise))(function (resolve, reject) {
4071
4495
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4075,7 +4499,7 @@ var __awaiter$3 = (this && this.__awaiter) || function (thisArg, _arguments, P,
4075
4499
  });
4076
4500
  };
4077
4501
  function setupStatic(rootFolder, container) {
4078
- return __awaiter$3(this, void 0, void 0, function* () {
4502
+ return __awaiter$4(this, void 0, void 0, function* () {
4079
4503
  const browserFolder = resolve(rootFolder || __dirname, `public_html`);
4080
4504
  const app = container.get(EXPRESS);
4081
4505
  const ep = container.get(EndpointProvider);
@@ -4093,6 +4517,36 @@ function setupStatic(rootFolder, container) {
4093
4517
  });
4094
4518
  }
4095
4519
 
4520
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
4521
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4522
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4523
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4524
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
4525
+ };
4526
+ var __awaiter$3 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4527
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4528
+ return new (P || (P = Promise))(function (resolve, reject) {
4529
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
4530
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
4531
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
4532
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
4533
+ });
4534
+ };
4535
+ let ClearCommand = class ClearCommand {
4536
+ constructor() {
4537
+ this.name = "clear";
4538
+ }
4539
+ execute(args, terminal) {
4540
+ return __awaiter$3(this, void 0, void 0, function* () {
4541
+ terminal.write(AnsiCodes.clear);
4542
+ });
4543
+ }
4544
+ };
4545
+ ClearCommand = __decorate([
4546
+ injectable(),
4547
+ scoped(Lifecycle.ContainerScoped)
4548
+ ], ClearCommand);
4549
+
4096
4550
  class BaseDoc {
4097
4551
  /**
4098
4552
  * Casts this to DocumentType<this> to allow using document methods in get/set-s
@@ -4464,6 +4918,14 @@ function resolveUser(req) {
4464
4918
  function createServices() {
4465
4919
  // List of parameters
4466
4920
  const params = [
4921
+ new Parameter("serviceName", "Backend"),
4922
+ new Parameter("servicePassword", Math.random().toString(36).substring(7)),
4923
+ new Parameter("serviceUrl", "http://localhost:3000", (value, helper) => {
4924
+ // Replace port number to empty string
4925
+ const url = prepareUrlEmpty(`${value}`.replace(/:[0-9]+$/, ""), helper);
4926
+ const port = helper("appPort");
4927
+ return (!port || port === 80 || port === 443) ? url : `${url}:${port}`;
4928
+ }),
4467
4929
  new Parameter("templatesDir", join(__dirname, "templates")),
4468
4930
  new Parameter("galleryDir", join(__dirname, "gallery")),
4469
4931
  new Parameter("cacheDir", join(__dirname, "cache")),
@@ -4526,6 +4988,7 @@ function createServices() {
4526
4988
  OpenApi,
4527
4989
  Progresses,
4528
4990
  TemplateRenderer,
4991
+ TerminalManager,
4529
4992
  TokenGenerator,
4530
4993
  TranslationProvider,
4531
4994
  Translator,
@@ -4568,6 +5031,13 @@ function setupBackend(config, providers, parent) {
4568
5031
  useValue: jobType
4569
5032
  };
4570
5033
  });
5034
+ // Create commands
5035
+ const commandProviders = [ClearCommand].concat(config.commands || []).map(commandType => {
5036
+ return {
5037
+ provide: TERMINAL_COMMAND,
5038
+ useClass: commandType
5039
+ };
5040
+ });
4571
5041
  // Setup rest API
4572
5042
  const restOptions = config.restOptions || {};
4573
5043
  restOptions.defaultErrorHandler = false;
@@ -4582,12 +5052,12 @@ function setupBackend(config, providers, parent) {
4582
5052
  restOptions.routePrefix = restOptions.routePrefix == "/" ? "" : restOptions.routePrefix;
4583
5053
  restOptions.middlewares = [ErrorHandlerMiddleware, ContainerMiddleware, LanguageMiddleware, RequestStartedMiddleware, RequestEndedMiddleware]
4584
5054
  .concat(restOptions.middlewares || []);
4585
- restOptions.controllers = [AssetsController, AuthController, GalleryController, ProgressesController]
5055
+ restOptions.controllers = [AssetsController, AuthController, GalleryController, ProgressesController, TerminalController$1]
4586
5056
  .concat(restOptions.controllers || []);
4587
5057
  // Setup socket API
4588
5058
  const socketOptions = config.socketOptions || {};
4589
5059
  socketOptions.middlewares = [CompressionMiddleware].concat(socketOptions.middlewares || []);
4590
- socketOptions.controllers = [ProgressController].concat(socketOptions.controllers || []);
5060
+ socketOptions.controllers = [ProgressController, TerminalController].concat(socketOptions.controllers || []);
4591
5061
  // Create providers
4592
5062
  const allProviders = [];
4593
5063
  // Add multi tokens to sub container
@@ -4598,7 +5068,7 @@ function setupBackend(config, providers, parent) {
4598
5068
  });
4599
5069
  });
4600
5070
  // Add other providers
4601
- allProviders.push(...fixtureTypes, ...fixtureProviders, ...paramProviders, ...jobProviders, ...restOptions.middlewares, ...restOptions.controllers, ...socketOptions.middlewares, ...socketOptions.controllers, ...providers, {
5071
+ allProviders.push(...fixtureTypes, ...fixtureProviders, ...paramProviders, ...jobProviders, ...commandProviders, ...restOptions.middlewares, ...restOptions.controllers, ...socketOptions.middlewares, ...socketOptions.controllers, ...providers, {
4602
5072
  provide: EXPRESS,
4603
5073
  useFactory: (container) => {
4604
5074
  return container.resolve(BackendProvider).express;
@@ -4710,5 +5180,5 @@ function setupBackend(config, providers, parent) {
4710
5180
  * Generated bundle index. Do not edit.
4711
5181
  */
4712
5182
 
4713
- export { AssetImageParams, AssetProcessor, AssetResolver, Assets, AuthController, BackendProvider, BaseDoc, Cache, CacheProcessor, Configuration, ConsoleColor, DI_CONTAINER, DocumentArray, EXPRESS, EndpointProvider, ErrorHandlerMiddleware, FIXTURE, Fixtures, Gallery, GalleryCache, GalleryController, HTTP_SERVER, IdGenerator, IsDocumented, IsFile, IsObjectId, JOB, JobManager, JsonResponse, LanguageMiddleware, LazyAssetGenerator, LazyAssets, Logger, MailSender, MemoryCache, MongoConnector, OPENAPI_VALIDATION, OpenApi, PARAMETER, Parameter, PrimitiveArray, Progresses, ResolveEntity, ResponseType, SOCKET_SERVER, TemplateRenderer, TokenGenerator, TranslationProvider, Translator, Type, UserManager, assign, broadcast, bufferToStream, colorize, convertValue, copy, copyStream, createIdString, createServices, createTransformer, deleteFile, deleteFromBucket, filter, firstItem, flatten, getConstructorName, getExtension, getFileName, getFunctionParams, getType, getValue, groupBy, hydratePopulated, idToString, injectServices, isArray, isBoolean, isConstructor, isDate, isDefined, isFunction, isInterface, isNullOrUndefined, isObject, isObjectId, isPrimitive, isString, isType, jsonHighlight, lastItem, lcFirst, letsLookupStage, lookupStages, matchField, matchFieldStages, matchStage, md5, mkdirRecursive, multiSubscription, observableFromFunction, padLeft, padRight, paginate, paginateAggregations, prepareUrl, prepareUrlEmpty, prepareUrlSlash, projectStage, promiseTimeout, rand, random, readAndDeleteFile, readFile, regroup, replaceSpecialChars, resolveUser, runCommand, service, setupBackend, streamToBuffer, toImage, ucFirst, uniqueItems, unwindStage, valueToPromise, wrapError, writeFile };
5183
+ export { AssetImageParams, AssetProcessor, AssetResolver, Assets, AuthController, BackendProvider, BaseDoc, Cache, CacheProcessor, Configuration, ConsoleColor, DI_CONTAINER, DocumentArray, EXPRESS, EndpointProvider, ErrorHandlerMiddleware, FIXTURE, Fixtures, Gallery, GalleryCache, GalleryController, HTTP_SERVER, IdGenerator, IsDocumented, IsFile, IsObjectId, JOB, JobManager, JsonResponse, LanguageMiddleware, LazyAssetGenerator, LazyAssets, Logger, MailSender, MemoryCache, MongoConnector, OPENAPI_VALIDATION, OpenApi, PARAMETER, Parameter, PrimitiveArray, Progresses, ResolveEntity, ResponseType, SOCKET_SERVER, TERMINAL_COMMAND, TemplateRenderer, TerminalManager, TokenGenerator, TranslationProvider, Translator, Type, UserManager, assign, broadcast, bufferToStream, camelCaseToDash, colorize, convertValue, copy, copyStream, createIdString, createServices, createTransformer, deleteFile, deleteFromBucket, fileTypeFromBuffer, filter, firstItem, flatten, getConstructorName, getExtension, getFileName, getFunctionParams, getType, getValue, groupBy, hydratePopulated, idToString, injectServices, isArray, isBoolean, isConstructor, isDate, isDefined, isFunction, isInterface, isNullOrUndefined, isObject, isObjectId, isPrimitive, isString, isType, jsonHighlight, lastItem, lcFirst, letsLookupStage, lookupStages, matchField, matchFieldStages, matchStage, md5, mkdirRecursive, multiSubscription, observableFromFunction, padLeft, padRight, paginate, paginateAggregations, prepareUrl, prepareUrlEmpty, prepareUrlSlash, projectStage, promiseTimeout, rand, random, readAndDeleteFile, readFile, regexEscape, regroup, replaceSpecialChars, resolveUser, runCommand, service, setupBackend, streamToBuffer, toImage, ucFirst, uniqueItems, unwindStage, valueToPromise, wrapError, writeFile };
4714
5184
  //# sourceMappingURL=stemy-backend.js.map