@stemy/backend 3.5.16 → 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,19 +1685,19 @@ 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
1702
  throw new Error(`Advance value must be bigger than zero: ${this.id}`);
1687
1703
  }
@@ -1695,7 +1711,7 @@ class Progress extends BaseEntity {
1695
1711
  });
1696
1712
  }
1697
1713
  cancel() {
1698
- return __awaiter$s(this, void 0, void 0, function* () {
1714
+ return __awaiter$w(this, void 0, void 0, function* () {
1699
1715
  this.data.canceled = true;
1700
1716
  yield this.save();
1701
1717
  });
@@ -1752,7 +1768,7 @@ class SubProgress {
1752
1768
  return this;
1753
1769
  }
1754
1770
  createSubProgress(progressValue, max, message) {
1755
- return __awaiter$s(this, void 0, void 0, function* () {
1771
+ return __awaiter$w(this, void 0, void 0, function* () {
1756
1772
  if (max <= 0 && progressValue > 0) {
1757
1773
  yield this.advance(progressValue);
1758
1774
  }
@@ -1763,7 +1779,7 @@ class SubProgress {
1763
1779
  });
1764
1780
  }
1765
1781
  setMax(max) {
1766
- return __awaiter$s(this, void 0, void 0, function* () {
1782
+ return __awaiter$w(this, void 0, void 0, function* () {
1767
1783
  if (isNaN(max) || max <= 0) {
1768
1784
  throw "Max progress value must be bigger than zero";
1769
1785
  }
@@ -1772,21 +1788,21 @@ class SubProgress {
1772
1788
  });
1773
1789
  }
1774
1790
  setMessage(message) {
1775
- return __awaiter$s(this, void 0, void 0, function* () {
1791
+ return __awaiter$w(this, void 0, void 0, function* () {
1776
1792
  if (!this.parent)
1777
1793
  return null;
1778
1794
  yield this.parent.setMessage(message);
1779
1795
  });
1780
1796
  }
1781
1797
  setError(error) {
1782
- return __awaiter$s(this, void 0, void 0, function* () {
1798
+ return __awaiter$w(this, void 0, void 0, function* () {
1783
1799
  if (!this.parent)
1784
1800
  return null;
1785
1801
  yield this.parent.setError(error);
1786
1802
  });
1787
1803
  }
1788
1804
  advance(value = 1) {
1789
- return __awaiter$s(this, void 0, void 0, function* () {
1805
+ return __awaiter$w(this, void 0, void 0, function* () {
1790
1806
  if (isNaN(value) || value <= 0) {
1791
1807
  throw "Advance value must be bigger than zero";
1792
1808
  }
@@ -1795,14 +1811,14 @@ class SubProgress {
1795
1811
  });
1796
1812
  }
1797
1813
  cancel() {
1798
- return __awaiter$s(this, void 0, void 0, function* () {
1814
+ return __awaiter$w(this, void 0, void 0, function* () {
1799
1815
  if (!this.parent)
1800
1816
  return null;
1801
1817
  yield this.parent.cancel();
1802
1818
  });
1803
1819
  }
1804
1820
  save() {
1805
- return __awaiter$s(this, void 0, void 0, function* () {
1821
+ return __awaiter$w(this, void 0, void 0, function* () {
1806
1822
  const ratio = this.max > 0 ? this.mCurrent / this.max : 0;
1807
1823
  const newProgress = this.progressFrom + Math.round(this.progressValue * ratio);
1808
1824
  const current = this.parent.current;
@@ -1812,7 +1828,7 @@ class SubProgress {
1812
1828
  });
1813
1829
  }
1814
1830
  load() {
1815
- return __awaiter$s(this, void 0, void 0, function* () {
1831
+ return __awaiter$w(this, void 0, void 0, function* () {
1816
1832
  return null;
1817
1833
  });
1818
1834
  }
@@ -1821,16 +1837,16 @@ class SubProgress {
1821
1837
  }
1822
1838
  }
1823
1839
 
1824
- var __decorate$w = (this && this.__decorate) || function (decorators, target, key, desc) {
1840
+ var __decorate$A = (this && this.__decorate) || function (decorators, target, key, desc) {
1825
1841
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1826
1842
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1827
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;
1828
1844
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1829
1845
  };
1830
- var __metadata$q = (this && this.__metadata) || function (k, v) {
1846
+ var __metadata$t = (this && this.__metadata) || function (k, v) {
1831
1847
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1832
1848
  };
1833
- var __awaiter$r = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1849
+ var __awaiter$v = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1834
1850
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1835
1851
  return new (P || (P = Promise))(function (resolve, reject) {
1836
1852
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1851,9 +1867,9 @@ let Progresses = class Progresses {
1851
1867
  });
1852
1868
  }
1853
1869
  waitToFinish(id) {
1854
- return __awaiter$r(this, void 0, void 0, function* () {
1870
+ return __awaiter$v(this, void 0, void 0, function* () {
1855
1871
  return Promise.race([
1856
- this.waitForProgress(id, () => __awaiter$r(this, void 0, void 0, function* () {
1872
+ this.waitForProgress(id, () => __awaiter$v(this, void 0, void 0, function* () {
1857
1873
  let progress = this.progresses[id];
1858
1874
  if (!progress || progress.percent < 100) {
1859
1875
  progress = yield this.get(id);
@@ -1863,25 +1879,25 @@ let Progresses = class Progresses {
1863
1879
  }
1864
1880
  return progress;
1865
1881
  }), 500),
1866
- this.waitForProgress(id, () => __awaiter$r(this, void 0, void 0, function* () {
1882
+ this.waitForProgress(id, () => __awaiter$v(this, void 0, void 0, function* () {
1867
1883
  return this.progresses[id] || null;
1868
1884
  }), 25)
1869
1885
  ]);
1870
1886
  });
1871
1887
  }
1872
1888
  get(id) {
1873
- return __awaiter$r(this, void 0, void 0, function* () {
1889
+ return __awaiter$v(this, void 0, void 0, function* () {
1874
1890
  return !id ? null : this.find({ _id: new ObjectId$1(id) });
1875
1891
  });
1876
1892
  }
1877
1893
  find(where) {
1878
- return __awaiter$r(this, void 0, void 0, function* () {
1894
+ return __awaiter$v(this, void 0, void 0, function* () {
1879
1895
  const data = yield this.collection.findOne(where);
1880
1896
  return !data ? null : new Progress(data._id, data, this.collection);
1881
1897
  });
1882
1898
  }
1883
1899
  create(max = 100) {
1884
- return __awaiter$r(this, void 0, void 0, function* () {
1900
+ return __awaiter$v(this, void 0, void 0, function* () {
1885
1901
  if (isNaN(max) || max <= 0) {
1886
1902
  throw new Error(`Max progress value must be bigger than zero`);
1887
1903
  }
@@ -1897,13 +1913,13 @@ let Progresses = class Progresses {
1897
1913
  });
1898
1914
  }
1899
1915
  remove(id) {
1900
- return __awaiter$r(this, void 0, void 0, function* () {
1916
+ return __awaiter$v(this, void 0, void 0, function* () {
1901
1917
  yield this.collection.deleteOne({ _id: new ObjectId$1(id) });
1902
1918
  return id;
1903
1919
  });
1904
1920
  }
1905
1921
  waitForProgress(id, cb, delay) {
1906
- return __awaiter$r(this, void 0, void 0, function* () {
1922
+ return __awaiter$v(this, void 0, void 0, function* () {
1907
1923
  let isFinished = false;
1908
1924
  let progress = null;
1909
1925
  let waitTime = 0;
@@ -1927,21 +1943,21 @@ let Progresses = class Progresses {
1927
1943
  });
1928
1944
  }
1929
1945
  };
1930
- Progresses = __decorate$w([
1946
+ Progresses = __decorate$A([
1931
1947
  singleton(),
1932
- __metadata$q("design:paramtypes", [MongoConnector, JobManager])
1948
+ __metadata$t("design:paramtypes", [MongoConnector, JobManager])
1933
1949
  ], Progresses);
1934
1950
 
1935
- var __decorate$v = (this && this.__decorate) || function (decorators, target, key, desc) {
1951
+ var __decorate$z = (this && this.__decorate) || function (decorators, target, key, desc) {
1936
1952
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1937
1953
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1938
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;
1939
1955
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1940
1956
  };
1941
- var __metadata$p = (this && this.__metadata) || function (k, v) {
1957
+ var __metadata$s = (this && this.__metadata) || function (k, v) {
1942
1958
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1943
1959
  };
1944
- var __awaiter$q = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1960
+ var __awaiter$u = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
1945
1961
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1946
1962
  return new (P || (P = Promise))(function (resolve, reject) {
1947
1963
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1960,7 +1976,7 @@ let LazyAssets = class LazyAssets {
1960
1976
  this.collection = connector.database.collection("lazyassets");
1961
1977
  }
1962
1978
  create(jobType, jobParams = {}, jobQue = "main") {
1963
- return __awaiter$q(this, void 0, void 0, function* () {
1979
+ return __awaiter$u(this, void 0, void 0, function* () {
1964
1980
  const jobName = this.jobMan.tryResolve(jobType, Object.assign(Object.assign({}, jobParams), { lazyId: "" }));
1965
1981
  const data = {
1966
1982
  jobName,
@@ -1975,12 +1991,12 @@ let LazyAssets = class LazyAssets {
1975
1991
  });
1976
1992
  }
1977
1993
  read(id) {
1978
- return __awaiter$q(this, void 0, void 0, function* () {
1994
+ return __awaiter$u(this, void 0, void 0, function* () {
1979
1995
  return !id ? null : this.find({ _id: new ObjectId$1(id) });
1980
1996
  });
1981
1997
  }
1982
1998
  find(where) {
1983
- return __awaiter$q(this, void 0, void 0, function* () {
1999
+ return __awaiter$u(this, void 0, void 0, function* () {
1984
2000
  const data = yield this.collection.findOne(where);
1985
2001
  return !data
1986
2002
  ? null
@@ -1988,7 +2004,7 @@ let LazyAssets = class LazyAssets {
1988
2004
  });
1989
2005
  }
1990
2006
  unlink(id) {
1991
- return __awaiter$q(this, void 0, void 0, function* () {
2007
+ return __awaiter$u(this, void 0, void 0, function* () {
1992
2008
  const asset = yield this.read(id);
1993
2009
  if (!asset)
1994
2010
  return null;
@@ -1996,26 +2012,26 @@ let LazyAssets = class LazyAssets {
1996
2012
  });
1997
2013
  }
1998
2014
  };
1999
- LazyAssets = __decorate$v([
2015
+ LazyAssets = __decorate$z([
2000
2016
  injectable(),
2001
2017
  scoped(Lifecycle.ContainerScoped),
2002
- __metadata$p("design:paramtypes", [MongoConnector,
2018
+ __metadata$s("design:paramtypes", [MongoConnector,
2003
2019
  Assets,
2004
2020
  Progresses,
2005
2021
  Logger,
2006
2022
  JobManager])
2007
2023
  ], LazyAssets);
2008
2024
 
2009
- var __decorate$u = (this && this.__decorate) || function (decorators, target, key, desc) {
2025
+ var __decorate$y = (this && this.__decorate) || function (decorators, target, key, desc) {
2010
2026
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2011
2027
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2012
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;
2013
2029
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2014
2030
  };
2015
- var __metadata$o = (this && this.__metadata) || function (k, v) {
2031
+ var __metadata$r = (this && this.__metadata) || function (k, v) {
2016
2032
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2017
2033
  };
2018
- var __awaiter$p = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2034
+ var __awaiter$t = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2019
2035
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2020
2036
  return new (P || (P = Promise))(function (resolve, reject) {
2021
2037
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2030,7 +2046,7 @@ let AssetResolver = class AssetResolver {
2030
2046
  this.lazyAssets = lazyAssets;
2031
2047
  }
2032
2048
  resolve(id, lazy = false) {
2033
- return __awaiter$p(this, void 0, void 0, function* () {
2049
+ return __awaiter$t(this, void 0, void 0, function* () {
2034
2050
  let asset = null;
2035
2051
  if (lazy) {
2036
2052
  const lazyAsset = yield this.lazyAssets.read(id);
@@ -2049,19 +2065,19 @@ let AssetResolver = class AssetResolver {
2049
2065
  });
2050
2066
  }
2051
2067
  };
2052
- AssetResolver = __decorate$u([
2068
+ AssetResolver = __decorate$y([
2053
2069
  injectable(),
2054
2070
  scoped(Lifecycle.ContainerScoped),
2055
- __metadata$o("design:paramtypes", [Assets, LazyAssets])
2071
+ __metadata$r("design:paramtypes", [Assets, LazyAssets])
2056
2072
  ], AssetResolver);
2057
2073
 
2058
- var __decorate$t = (this && this.__decorate) || function (decorators, target, key, desc) {
2074
+ var __decorate$x = (this && this.__decorate) || function (decorators, target, key, desc) {
2059
2075
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2060
2076
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2061
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;
2062
2078
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2063
2079
  };
2064
- var __metadata$n = (this && this.__metadata) || function (k, v) {
2080
+ var __metadata$q = (this && this.__metadata) || function (k, v) {
2065
2081
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2066
2082
  };
2067
2083
  const express = express_;
@@ -2077,18 +2093,18 @@ let BackendProvider = class BackendProvider {
2077
2093
  return this.ioServer;
2078
2094
  }
2079
2095
  };
2080
- BackendProvider = __decorate$t([
2096
+ BackendProvider = __decorate$x([
2081
2097
  singleton(),
2082
- __metadata$n("design:paramtypes", [])
2098
+ __metadata$q("design:paramtypes", [])
2083
2099
  ], BackendProvider);
2084
2100
 
2085
- var __decorate$s = (this && this.__decorate) || function (decorators, target, key, desc) {
2101
+ var __decorate$w = (this && this.__decorate) || function (decorators, target, key, desc) {
2086
2102
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2087
2103
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2088
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;
2089
2105
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2090
2106
  };
2091
- var __awaiter$o = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2107
+ var __awaiter$s = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2092
2108
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2093
2109
  return new (P || (P = Promise))(function (resolve, reject) {
2094
2110
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2099,31 +2115,31 @@ var __awaiter$o = (this && this.__awaiter) || function (thisArg, _arguments, P,
2099
2115
  };
2100
2116
  let CacheProcessor = class CacheProcessor {
2101
2117
  serialize(data) {
2102
- return __awaiter$o(this, void 0, void 0, function* () {
2118
+ return __awaiter$s(this, void 0, void 0, function* () {
2103
2119
  return data;
2104
2120
  });
2105
2121
  }
2106
2122
  deserialize(data) {
2107
- return __awaiter$o(this, void 0, void 0, function* () {
2123
+ return __awaiter$s(this, void 0, void 0, function* () {
2108
2124
  return data;
2109
2125
  });
2110
2126
  }
2111
2127
  };
2112
- CacheProcessor = __decorate$s([
2128
+ CacheProcessor = __decorate$w([
2113
2129
  injectable(),
2114
2130
  scoped(Lifecycle.ContainerScoped)
2115
2131
  ], CacheProcessor);
2116
2132
 
2117
- var __decorate$r = (this && this.__decorate) || function (decorators, target, key, desc) {
2133
+ var __decorate$v = (this && this.__decorate) || function (decorators, target, key, desc) {
2118
2134
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2119
2135
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2120
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;
2121
2137
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2122
2138
  };
2123
- var __metadata$m = (this && this.__metadata) || function (k, v) {
2139
+ var __metadata$p = (this && this.__metadata) || function (k, v) {
2124
2140
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2125
2141
  };
2126
- var __awaiter$n = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2142
+ var __awaiter$r = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2127
2143
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2128
2144
  return new (P || (P = Promise))(function (resolve, reject) {
2129
2145
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2139,7 +2155,7 @@ let Cache = class Cache {
2139
2155
  this.cacheProcessor = cacheProcessor;
2140
2156
  }
2141
2157
  prepare() {
2142
- return __awaiter$n(this, void 0, void 0, function* () {
2158
+ return __awaiter$r(this, void 0, void 0, function* () {
2143
2159
  if (this.collection)
2144
2160
  return;
2145
2161
  if (!this.connector.database) {
@@ -2150,7 +2166,7 @@ let Cache = class Cache {
2150
2166
  });
2151
2167
  }
2152
2168
  set(key, value, ttl, expirationTimestamp = null, tags = {}) {
2153
- return __awaiter$n(this, void 0, void 0, function* () {
2169
+ return __awaiter$r(this, void 0, void 0, function* () {
2154
2170
  yield this.prepare();
2155
2171
  const item = {
2156
2172
  _id: key,
@@ -2167,7 +2183,7 @@ let Cache = class Cache {
2167
2183
  });
2168
2184
  }
2169
2185
  get(key) {
2170
- return __awaiter$n(this, void 0, void 0, function* () {
2186
+ return __awaiter$r(this, void 0, void 0, function* () {
2171
2187
  yield this.prepare();
2172
2188
  let item = yield this.collection.findOne({ _id: key });
2173
2189
  const now = Math.round(new Date().getTime() / 1000);
@@ -2181,7 +2197,7 @@ let Cache = class Cache {
2181
2197
  });
2182
2198
  }
2183
2199
  getOrSet(key, valueCb, ttl, expirationTimestamp = null, tags = {}) {
2184
- return __awaiter$n(this, void 0, void 0, function* () {
2200
+ return __awaiter$r(this, void 0, void 0, function* () {
2185
2201
  try {
2186
2202
  return yield this.get(key);
2187
2203
  }
@@ -2191,24 +2207,24 @@ let Cache = class Cache {
2191
2207
  });
2192
2208
  }
2193
2209
  delete(key) {
2194
- return __awaiter$n(this, void 0, void 0, function* () {
2210
+ return __awaiter$r(this, void 0, void 0, function* () {
2195
2211
  yield this.prepare();
2196
2212
  yield this.collection.deleteOne({ _id: key });
2197
2213
  });
2198
2214
  }
2199
2215
  };
2200
- Cache = __decorate$r([
2216
+ Cache = __decorate$v([
2201
2217
  singleton(),
2202
- __metadata$m("design:paramtypes", [MongoConnector, Configuration, CacheProcessor])
2218
+ __metadata$p("design:paramtypes", [MongoConnector, Configuration, CacheProcessor])
2203
2219
  ], Cache);
2204
2220
 
2205
- var __decorate$q = (this && this.__decorate) || function (decorators, target, key, desc) {
2221
+ var __decorate$u = (this && this.__decorate) || function (decorators, target, key, desc) {
2206
2222
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2207
2223
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2208
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;
2209
2225
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2210
2226
  };
2211
- var __awaiter$m = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2227
+ var __awaiter$q = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2212
2228
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2213
2229
  return new (P || (P = Promise))(function (resolve, reject) {
2214
2230
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2219,29 +2235,29 @@ var __awaiter$m = (this && this.__awaiter) || function (thisArg, _arguments, P,
2219
2235
  };
2220
2236
  let EndpointProvider = class EndpointProvider {
2221
2237
  configure(app) {
2222
- return __awaiter$m(this, void 0, void 0, function* () {
2238
+ return __awaiter$q(this, void 0, void 0, function* () {
2223
2239
  console.log(`Express app is mounted to: ${app.mountpath}`);
2224
2240
  });
2225
2241
  }
2226
2242
  };
2227
- EndpointProvider = __decorate$q([
2243
+ EndpointProvider = __decorate$u([
2228
2244
  injectable(),
2229
2245
  scoped(Lifecycle.ContainerScoped)
2230
2246
  ], EndpointProvider);
2231
2247
 
2232
- var __decorate$p = (this && this.__decorate) || function (decorators, target, key, desc) {
2248
+ var __decorate$t = (this && this.__decorate) || function (decorators, target, key, desc) {
2233
2249
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2234
2250
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2235
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;
2236
2252
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2237
2253
  };
2238
- var __metadata$l = (this && this.__metadata) || function (k, v) {
2254
+ var __metadata$o = (this && this.__metadata) || function (k, v) {
2239
2255
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2240
2256
  };
2241
- var __param$7 = (this && this.__param) || function (paramIndex, decorator) {
2257
+ var __param$9 = (this && this.__param) || function (paramIndex, decorator) {
2242
2258
  return function (target, key) { decorator(target, key, paramIndex); }
2243
2259
  };
2244
- var __awaiter$l = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2260
+ var __awaiter$p = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2245
2261
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2246
2262
  return new (P || (P = Promise))(function (resolve, reject) {
2247
2263
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2255,7 +2271,7 @@ let Fixtures = class Fixtures {
2255
2271
  this.fixtures = fixtures;
2256
2272
  }
2257
2273
  load() {
2258
- return __awaiter$l(this, void 0, void 0, function* () {
2274
+ return __awaiter$p(this, void 0, void 0, function* () {
2259
2275
  if (!this.fixtures)
2260
2276
  return;
2261
2277
  for (let fixture of this.fixtures) {
@@ -2264,14 +2280,14 @@ let Fixtures = class Fixtures {
2264
2280
  });
2265
2281
  }
2266
2282
  };
2267
- Fixtures = __decorate$p([
2283
+ Fixtures = __decorate$t([
2268
2284
  injectable(),
2269
2285
  scoped(Lifecycle.ContainerScoped),
2270
- __param$7(0, injectAll(FIXTURE)),
2271
- __metadata$l("design:paramtypes", [Array])
2286
+ __param$9(0, injectAll(FIXTURE)),
2287
+ __metadata$o("design:paramtypes", [Array])
2272
2288
  ], Fixtures);
2273
2289
 
2274
- var __awaiter$k = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2290
+ var __awaiter$o = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2275
2291
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2276
2292
  return new (P || (P = Promise))(function (resolve, reject) {
2277
2293
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2292,7 +2308,7 @@ class GalleryImage {
2292
2308
  this.targetSize = !size ? { width: thumbSize, height: thumbSize } : size;
2293
2309
  }
2294
2310
  serve(id) {
2295
- return __awaiter$k(this, void 0, void 0, function* () {
2311
+ return __awaiter$o(this, void 0, void 0, function* () {
2296
2312
  const isThumb = id == this.thumb;
2297
2313
  if (yield this.handler.hasResult(isThumb)) {
2298
2314
  return this.handler.serveResult(isThumb);
@@ -2317,13 +2333,13 @@ class GalleryImage {
2317
2333
  }
2318
2334
  }
2319
2335
 
2320
- var __decorate$o = (this && this.__decorate) || function (decorators, target, key, desc) {
2336
+ var __decorate$s = (this && this.__decorate) || function (decorators, target, key, desc) {
2321
2337
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2322
2338
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2323
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;
2324
2340
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2325
2341
  };
2326
- var __metadata$k = (this && this.__metadata) || function (k, v) {
2342
+ var __metadata$n = (this && this.__metadata) || function (k, v) {
2327
2343
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2328
2344
  };
2329
2345
  let GalleryCache = class GalleryCache {
@@ -2344,22 +2360,22 @@ let GalleryCache = class GalleryCache {
2344
2360
  return image;
2345
2361
  }
2346
2362
  };
2347
- GalleryCache = __decorate$o([
2363
+ GalleryCache = __decorate$s([
2348
2364
  injectable(),
2349
2365
  scoped(Lifecycle.ContainerScoped),
2350
- __metadata$k("design:paramtypes", [])
2366
+ __metadata$n("design:paramtypes", [])
2351
2367
  ], GalleryCache);
2352
2368
 
2353
- var __decorate$n = (this && this.__decorate) || function (decorators, target, key, desc) {
2369
+ var __decorate$r = (this && this.__decorate) || function (decorators, target, key, desc) {
2354
2370
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2355
2371
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2356
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;
2357
2373
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2358
2374
  };
2359
- var __metadata$j = (this && this.__metadata) || function (k, v) {
2375
+ var __metadata$m = (this && this.__metadata) || function (k, v) {
2360
2376
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2361
2377
  };
2362
- var __awaiter$j = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2378
+ var __awaiter$n = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2363
2379
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2364
2380
  return new (P || (P = Promise))(function (resolve, reject) {
2365
2381
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2378,7 +2394,7 @@ let Gallery = class Gallery {
2378
2394
  this.output = join(this.config.resolve("cacheDir"), "gallery");
2379
2395
  }
2380
2396
  getFolder(folder, size = null) {
2381
- return __awaiter$j(this, void 0, void 0, function* () {
2397
+ return __awaiter$n(this, void 0, void 0, function* () {
2382
2398
  this.cache[folder] = this.cache[folder] || new Promise(resolve => {
2383
2399
  lstat(join(this.dir, folder), (err, stats) => {
2384
2400
  if (err || !stats.isDirectory()) {
@@ -2399,7 +2415,7 @@ let Gallery = class Gallery {
2399
2415
  return;
2400
2416
  }
2401
2417
  const promises = files.map(file => {
2402
- 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* () {
2403
2419
  const filePath = join(path, file);
2404
2420
  const absoluteFilePath = join(this.dir, filePath);
2405
2421
  lstat(absoluteFilePath, (err, stats) => {
@@ -2432,7 +2448,7 @@ let Gallery = class Gallery {
2432
2448
  });
2433
2449
  },
2434
2450
  writeResult: (isThumb, buffer) => {
2435
- 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* () {
2436
2452
  const resultPath = getResultPath(isThumb);
2437
2453
  yield mkdirRecursive(dirname(resultPath));
2438
2454
  writeFile$1(resultPath, buffer, err => {
@@ -2474,22 +2490,22 @@ let Gallery = class Gallery {
2474
2490
  });
2475
2491
  }
2476
2492
  };
2477
- Gallery = __decorate$n([
2493
+ Gallery = __decorate$r([
2478
2494
  injectable(),
2479
2495
  scoped(Lifecycle.ContainerScoped),
2480
- __metadata$j("design:paramtypes", [Configuration, GalleryCache])
2496
+ __metadata$m("design:paramtypes", [Configuration, GalleryCache])
2481
2497
  ], Gallery);
2482
2498
 
2483
- var __decorate$m = (this && this.__decorate) || function (decorators, target, key, desc) {
2499
+ var __decorate$q = (this && this.__decorate) || function (decorators, target, key, desc) {
2484
2500
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2485
2501
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2486
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;
2487
2503
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2488
2504
  };
2489
- var __metadata$i = (this && this.__metadata) || function (k, v) {
2505
+ var __metadata$l = (this && this.__metadata) || function (k, v) {
2490
2506
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2491
2507
  };
2492
- var __awaiter$i = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2508
+ var __awaiter$m = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2493
2509
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2494
2510
  return new (P || (P = Promise))(function (resolve, reject) {
2495
2511
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2507,7 +2523,7 @@ let IdGenerator = class IdGenerator {
2507
2523
  this.parts = config.resolve("idParts");
2508
2524
  }
2509
2525
  generate(checkCb) {
2510
- return __awaiter$i(this, void 0, void 0, function* () {
2526
+ return __awaiter$m(this, void 0, void 0, function* () {
2511
2527
  let id = null;
2512
2528
  let tries = 0;
2513
2529
  let notGood = true;
@@ -2533,22 +2549,22 @@ let IdGenerator = class IdGenerator {
2533
2549
  }).join(this.separator);
2534
2550
  }
2535
2551
  };
2536
- IdGenerator = __decorate$m([
2552
+ IdGenerator = __decorate$q([
2537
2553
  injectable(),
2538
2554
  scoped(Lifecycle.ContainerScoped),
2539
- __metadata$i("design:paramtypes", [Configuration])
2555
+ __metadata$l("design:paramtypes", [Configuration])
2540
2556
  ], IdGenerator);
2541
2557
 
2542
- var __decorate$l = (this && this.__decorate) || function (decorators, target, key, desc) {
2558
+ var __decorate$p = (this && this.__decorate) || function (decorators, target, key, desc) {
2543
2559
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2544
2560
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2545
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;
2546
2562
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2547
2563
  };
2548
- var __metadata$h = (this && this.__metadata) || function (k, v) {
2564
+ var __metadata$k = (this && this.__metadata) || function (k, v) {
2549
2565
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2550
2566
  };
2551
- var __awaiter$h = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2567
+ var __awaiter$l = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2552
2568
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2553
2569
  return new (P || (P = Promise))(function (resolve, reject) {
2554
2570
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2563,7 +2579,7 @@ let TranslationProvider = class TranslationProvider {
2563
2579
  this.cache = cache;
2564
2580
  }
2565
2581
  getDictionary(language) {
2566
- 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* () {
2567
2583
  try {
2568
2584
  const url = this.config.resolve("translationsTemplate")
2569
2585
  .replace(`__lang__`, language)
@@ -2582,21 +2598,21 @@ let TranslationProvider = class TranslationProvider {
2582
2598
  }), 5 * 60);
2583
2599
  }
2584
2600
  };
2585
- TranslationProvider = __decorate$l([
2601
+ TranslationProvider = __decorate$p([
2586
2602
  singleton(),
2587
- __metadata$h("design:paramtypes", [Configuration, Cache])
2603
+ __metadata$k("design:paramtypes", [Configuration, Cache])
2588
2604
  ], TranslationProvider);
2589
2605
 
2590
- var __decorate$k = (this && this.__decorate) || function (decorators, target, key, desc) {
2606
+ var __decorate$o = (this && this.__decorate) || function (decorators, target, key, desc) {
2591
2607
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2592
2608
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2593
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;
2594
2610
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2595
2611
  };
2596
- var __metadata$g = (this && this.__metadata) || function (k, v) {
2612
+ var __metadata$j = (this && this.__metadata) || function (k, v) {
2597
2613
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2598
2614
  };
2599
- var __awaiter$g = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2615
+ var __awaiter$k = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2600
2616
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2601
2617
  return new (P || (P = Promise))(function (resolve, reject) {
2602
2618
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2611,7 +2627,7 @@ let Translator = class Translator {
2611
2627
  this.dictionaries = {};
2612
2628
  }
2613
2629
  getDictionary(language) {
2614
- return __awaiter$g(this, void 0, void 0, function* () {
2630
+ return __awaiter$k(this, void 0, void 0, function* () {
2615
2631
  this.dictionaries[language] = yield this.translationProvider.getDictionary(language);
2616
2632
  return this.dictionaries[language];
2617
2633
  });
@@ -2661,22 +2677,22 @@ let Translator = class Translator {
2661
2677
  });
2662
2678
  }
2663
2679
  };
2664
- Translator = __decorate$k([
2680
+ Translator = __decorate$o([
2665
2681
  injectable(),
2666
2682
  singleton(),
2667
- __metadata$g("design:paramtypes", [TranslationProvider])
2683
+ __metadata$j("design:paramtypes", [TranslationProvider])
2668
2684
  ], Translator);
2669
2685
 
2670
- var __decorate$j = (this && this.__decorate) || function (decorators, target, key, desc) {
2686
+ var __decorate$n = (this && this.__decorate) || function (decorators, target, key, desc) {
2671
2687
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2672
2688
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2673
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;
2674
2690
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2675
2691
  };
2676
- var __metadata$f = (this && this.__metadata) || function (k, v) {
2692
+ var __metadata$i = (this && this.__metadata) || function (k, v) {
2677
2693
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2678
2694
  };
2679
- var __awaiter$f = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2695
+ var __awaiter$j = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2680
2696
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2681
2697
  return new (P || (P = Promise))(function (resolve, reject) {
2682
2698
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2708,9 +2724,9 @@ let TemplateRenderer = class TemplateRenderer {
2708
2724
  return this.initPromise;
2709
2725
  }
2710
2726
  parseTemplates(dir, dirPath) {
2711
- return __awaiter$f(this, void 0, void 0, function* () {
2727
+ return __awaiter$j(this, void 0, void 0, function* () {
2712
2728
  return new Promise(resolve => {
2713
- 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* () {
2714
2730
  for (let file of files) {
2715
2731
  const path = join(dir, file);
2716
2732
  if (lstatSync(path).isDirectory()) {
@@ -2731,7 +2747,7 @@ let TemplateRenderer = class TemplateRenderer {
2731
2747
  });
2732
2748
  }
2733
2749
  render(template, language, context) {
2734
- return __awaiter$f(this, void 0, void 0, function* () {
2750
+ return __awaiter$j(this, void 0, void 0, function* () {
2735
2751
  yield this.init();
2736
2752
  yield this.translator.getDictionary(language);
2737
2753
  if (!this.templates[template]) {
@@ -2743,22 +2759,21 @@ let TemplateRenderer = class TemplateRenderer {
2743
2759
  });
2744
2760
  }
2745
2761
  };
2746
- TemplateRenderer = __decorate$j([
2747
- injectable(),
2762
+ TemplateRenderer = __decorate$n([
2748
2763
  singleton(),
2749
- __metadata$f("design:paramtypes", [Translator, Configuration])
2764
+ __metadata$i("design:paramtypes", [Translator, Configuration])
2750
2765
  ], TemplateRenderer);
2751
2766
 
2752
- var __decorate$i = (this && this.__decorate) || function (decorators, target, key, desc) {
2767
+ var __decorate$m = (this && this.__decorate) || function (decorators, target, key, desc) {
2753
2768
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2754
2769
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2755
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;
2756
2771
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2757
2772
  };
2758
- var __metadata$e = (this && this.__metadata) || function (k, v) {
2773
+ var __metadata$h = (this && this.__metadata) || function (k, v) {
2759
2774
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2760
2775
  };
2761
- var __awaiter$e = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2776
+ var __awaiter$i = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2762
2777
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2763
2778
  return new (P || (P = Promise))(function (resolve, reject) {
2764
2779
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2784,7 +2799,7 @@ let MailSender = class MailSender {
2784
2799
  return this.renderer.translator;
2785
2800
  }
2786
2801
  sendMail(language, options) {
2787
- return __awaiter$e(this, void 0, void 0, function* () {
2802
+ return __awaiter$i(this, void 0, void 0, function* () {
2788
2803
  const subject = yield this.translator.getTranslation(language, options.subject || "-");
2789
2804
  const html = yield this.renderer.render(options.template, language, options.context);
2790
2805
  return this.transporter.sendMail({
@@ -2797,21 +2812,21 @@ let MailSender = class MailSender {
2797
2812
  });
2798
2813
  }
2799
2814
  };
2800
- MailSender = __decorate$i([
2815
+ MailSender = __decorate$m([
2801
2816
  singleton(),
2802
- __metadata$e("design:paramtypes", [Configuration, TemplateRenderer])
2817
+ __metadata$h("design:paramtypes", [Configuration, TemplateRenderer])
2803
2818
  ], MailSender);
2804
2819
 
2805
- var __decorate$h = (this && this.__decorate) || function (decorators, target, key, desc) {
2820
+ var __decorate$l = (this && this.__decorate) || function (decorators, target, key, desc) {
2806
2821
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2807
2822
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2808
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;
2809
2824
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2810
2825
  };
2811
- var __metadata$d = (this && this.__metadata) || function (k, v) {
2826
+ var __metadata$g = (this && this.__metadata) || function (k, v) {
2812
2827
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2813
2828
  };
2814
- var __awaiter$d = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2829
+ var __awaiter$h = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2815
2830
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2816
2831
  return new (P || (P = Promise))(function (resolve, reject) {
2817
2832
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2826,7 +2841,7 @@ let MemoryCache = class MemoryCache {
2826
2841
  this.cacheMap = new Map();
2827
2842
  }
2828
2843
  set(key, value, ttl, expirationTimestamp = null, tags = {}) {
2829
- return __awaiter$d(this, void 0, void 0, function* () {
2844
+ return __awaiter$h(this, void 0, void 0, function* () {
2830
2845
  const now = Math.round(new Date().getTime() / 1000);
2831
2846
  const expTimestamp = Math.min(isNaN(ttl) ? Number.MAX_SAFE_INTEGER : ttl, 3600);
2832
2847
  this.cacheMap.set(key, {
@@ -2839,7 +2854,7 @@ let MemoryCache = class MemoryCache {
2839
2854
  });
2840
2855
  }
2841
2856
  get(key) {
2842
- return __awaiter$d(this, void 0, void 0, function* () {
2857
+ return __awaiter$h(this, void 0, void 0, function* () {
2843
2858
  let item = this.cacheMap.get(key);
2844
2859
  const now = Math.round(new Date().getTime() / 1000);
2845
2860
  let expTimestamp = 3600;
@@ -2861,7 +2876,7 @@ let MemoryCache = class MemoryCache {
2861
2876
  });
2862
2877
  }
2863
2878
  getOrSet(key, valueCb, ttl, expirationTimestamp = null, tags = {}) {
2864
- return __awaiter$d(this, void 0, void 0, function* () {
2879
+ return __awaiter$h(this, void 0, void 0, function* () {
2865
2880
  try {
2866
2881
  return yield this.get(key);
2867
2882
  }
@@ -2871,19 +2886,19 @@ let MemoryCache = class MemoryCache {
2871
2886
  });
2872
2887
  }
2873
2888
  delete(key) {
2874
- return __awaiter$d(this, void 0, void 0, function* () {
2889
+ return __awaiter$h(this, void 0, void 0, function* () {
2875
2890
  this.cacheMap.delete(key);
2876
2891
  yield this.cacheMap.delete(key);
2877
2892
  });
2878
2893
  }
2879
2894
  };
2880
- MemoryCache = __decorate$h([
2895
+ MemoryCache = __decorate$l([
2881
2896
  injectable(),
2882
2897
  scoped(Lifecycle.ContainerScoped),
2883
- __metadata$d("design:paramtypes", [Cache])
2898
+ __metadata$g("design:paramtypes", [Cache])
2884
2899
  ], MemoryCache);
2885
2900
 
2886
- var __decorate$g = (this && this.__decorate) || function (decorators, target, key, desc) {
2901
+ var __decorate$k = (this && this.__decorate) || function (decorators, target, key, desc) {
2887
2902
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2888
2903
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2889
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;
@@ -2917,7 +2932,7 @@ let IsFile = class IsFile {
2917
2932
  return checkValue(multi, value);
2918
2933
  }
2919
2934
  };
2920
- IsFile = __decorate$g([
2935
+ IsFile = __decorate$k([
2921
2936
  ValidatorConstraint()
2922
2937
  ], IsFile);
2923
2938
  let IsObjectId = class IsObjectId {
@@ -2926,23 +2941,23 @@ let IsObjectId = class IsObjectId {
2926
2941
  return checkValue(multi, value);
2927
2942
  }
2928
2943
  };
2929
- IsObjectId = __decorate$g([
2944
+ IsObjectId = __decorate$k([
2930
2945
  ValidatorConstraint()
2931
2946
  ], IsObjectId);
2932
2947
 
2933
- var __decorate$f = (this && this.__decorate) || function (decorators, target, key, desc) {
2948
+ var __decorate$j = (this && this.__decorate) || function (decorators, target, key, desc) {
2934
2949
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2935
2950
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2936
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;
2937
2952
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2938
2953
  };
2939
- var __metadata$c = (this && this.__metadata) || function (k, v) {
2954
+ var __metadata$f = (this && this.__metadata) || function (k, v) {
2940
2955
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2941
2956
  };
2942
- var __param$6 = (this && this.__param) || function (paramIndex, decorator) {
2957
+ var __param$8 = (this && this.__param) || function (paramIndex, decorator) {
2943
2958
  return function (target, key) { decorator(target, key, paramIndex); }
2944
2959
  };
2945
- var __awaiter$c = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2960
+ var __awaiter$g = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2946
2961
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2947
2962
  return new (P || (P = Promise))(function (resolve, reject) {
2948
2963
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2969,7 +2984,7 @@ let OpenApi = class OpenApi {
2969
2984
  }
2970
2985
  schemaToExample(src, req) {
2971
2986
  var _a, _b, _c;
2972
- return __awaiter$c(this, void 0, void 0, function* () {
2987
+ return __awaiter$g(this, void 0, void 0, function* () {
2973
2988
  if (src.$ref) {
2974
2989
  const schemas = this.apiDocs.components.schemas;
2975
2990
  const schema = src.$ref
@@ -2983,7 +2998,7 @@ let OpenApi = class OpenApi {
2983
2998
  }
2984
2999
  if (schema.type === "object") {
2985
3000
  const result = {};
2986
- 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* () {
2987
3002
  result[key] = yield this.schemaToExample(schema.properties[key], req);
2988
3003
  })));
2989
3004
  return result;
@@ -3053,23 +3068,110 @@ let OpenApi = class OpenApi {
3053
3068
  return docs;
3054
3069
  }
3055
3070
  };
3056
- OpenApi = __decorate$f([
3071
+ OpenApi = __decorate$j([
3057
3072
  singleton(),
3058
- __param$6(0, inject(DI_CONTAINER)),
3059
- __param$6(1, inject(OPENAPI_VALIDATION)),
3060
- __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])
3061
3076
  ], OpenApi);
3062
3077
 
3063
- var __decorate$e = (this && this.__decorate) || function (decorators, target, key, desc) {
3078
+ var __decorate$i = (this && this.__decorate) || function (decorators, target, key, desc) {
3064
3079
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3065
3080
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3066
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;
3067
3082
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3068
3083
  };
3069
- var __metadata$b = (this && this.__metadata) || function (k, v) {
3084
+ var __metadata$e = (this && this.__metadata) || function (k, v) {
3070
3085
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3071
3086
  };
3072
- 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) {
3073
3175
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3074
3176
  return new (P || (P = Promise))(function (resolve, reject) {
3075
3177
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3083,7 +3185,7 @@ let TokenGenerator = class TokenGenerator {
3083
3185
  this.chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
3084
3186
  }
3085
3187
  generate(checkCb) {
3086
- return __awaiter$b(this, void 0, void 0, function* () {
3188
+ return __awaiter$e(this, void 0, void 0, function* () {
3087
3189
  let token = null;
3088
3190
  let tries = 0;
3089
3191
  let notGood = true;
@@ -3107,18 +3209,18 @@ let TokenGenerator = class TokenGenerator {
3107
3209
  return s;
3108
3210
  }
3109
3211
  };
3110
- TokenGenerator = __decorate$e([
3212
+ TokenGenerator = __decorate$h([
3111
3213
  singleton(),
3112
- __metadata$b("design:paramtypes", [])
3214
+ __metadata$d("design:paramtypes", [])
3113
3215
  ], TokenGenerator);
3114
3216
 
3115
- var __decorate$d = (this && this.__decorate) || function (decorators, target, key, desc) {
3217
+ var __decorate$g = (this && this.__decorate) || function (decorators, target, key, desc) {
3116
3218
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3117
3219
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3118
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;
3119
3221
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3120
3222
  };
3121
- var __awaiter$a = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3223
+ var __awaiter$d = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3122
3224
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3123
3225
  return new (P || (P = Promise))(function (resolve, reject) {
3124
3226
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3135,35 +3237,35 @@ const sampleUser = {
3135
3237
  };
3136
3238
  let UserManager = class UserManager {
3137
3239
  getByCredentials(credentials) {
3138
- return __awaiter$a(this, void 0, void 0, function* () {
3240
+ return __awaiter$d(this, void 0, void 0, function* () {
3139
3241
  return (sampleUser.email == credentials.email) ? sampleUser : yield Promise.reject("message.login.error");
3140
3242
  });
3141
3243
  }
3142
3244
  getById(id) {
3143
- return __awaiter$a(this, void 0, void 0, function* () {
3245
+ return __awaiter$d(this, void 0, void 0, function* () {
3144
3246
  return (sampleUser.id == id) ? sampleUser : null;
3145
3247
  });
3146
3248
  }
3147
3249
  serialize(user) {
3148
- return __awaiter$a(this, void 0, void 0, function* () {
3250
+ return __awaiter$d(this, void 0, void 0, function* () {
3149
3251
  const res = Object.assign({}, user);
3150
3252
  delete res.password;
3151
3253
  return res;
3152
3254
  });
3153
3255
  }
3154
3256
  };
3155
- UserManager = __decorate$d([
3257
+ UserManager = __decorate$g([
3156
3258
  injectable(),
3157
3259
  scoped(Lifecycle.ContainerScoped)
3158
3260
  ], UserManager);
3159
3261
 
3160
- var __decorate$c = (this && this.__decorate) || function (decorators, target, key, desc) {
3262
+ var __decorate$f = (this && this.__decorate) || function (decorators, target, key, desc) {
3161
3263
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3162
3264
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3163
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;
3164
3266
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3165
3267
  };
3166
- var __metadata$a = (this && this.__metadata) || function (k, v) {
3268
+ var __metadata$c = (this && this.__metadata) || function (k, v) {
3167
3269
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3168
3270
  };
3169
3271
  class AssetImageParams {
@@ -3179,66 +3281,66 @@ class AssetImageParams {
3179
3281
  this.cropAfter = false;
3180
3282
  }
3181
3283
  }
3182
- __decorate$c([
3284
+ __decorate$f([
3183
3285
  Min(-360),
3184
3286
  Max(360),
3185
3287
  IsOptional(),
3186
- __metadata$a("design:type", Number)
3288
+ __metadata$c("design:type", Number)
3187
3289
  ], AssetImageParams.prototype, "rotation", void 0);
3188
- __decorate$c([
3290
+ __decorate$f([
3189
3291
  Min(0.0001),
3190
3292
  IsOptional(),
3191
- __metadata$a("design:type", Number)
3293
+ __metadata$c("design:type", Number)
3192
3294
  ], AssetImageParams.prototype, "canvasScaleX", void 0);
3193
- __decorate$c([
3295
+ __decorate$f([
3194
3296
  Min(0.0001),
3195
3297
  IsOptional(),
3196
- __metadata$a("design:type", Number)
3298
+ __metadata$c("design:type", Number)
3197
3299
  ], AssetImageParams.prototype, "canvasScaleY", void 0);
3198
- __decorate$c([
3300
+ __decorate$f([
3199
3301
  Min(0.0001),
3200
3302
  IsOptional(),
3201
- __metadata$a("design:type", Number)
3303
+ __metadata$c("design:type", Number)
3202
3304
  ], AssetImageParams.prototype, "scaleX", void 0);
3203
- __decorate$c([
3305
+ __decorate$f([
3204
3306
  Min(0.0001),
3205
3307
  IsOptional(),
3206
- __metadata$a("design:type", Number)
3308
+ __metadata$c("design:type", Number)
3207
3309
  ], AssetImageParams.prototype, "scaleY", void 0);
3208
- __decorate$c([
3310
+ __decorate$f([
3209
3311
  IsBoolean(),
3210
3312
  IsOptional(),
3211
- __metadata$a("design:type", Boolean)
3313
+ __metadata$c("design:type", Boolean)
3212
3314
  ], AssetImageParams.prototype, "lazy", void 0);
3213
- __decorate$c([
3315
+ __decorate$f([
3214
3316
  IsBoolean(),
3215
3317
  IsOptional(),
3216
- __metadata$a("design:type", Boolean)
3318
+ __metadata$c("design:type", Boolean)
3217
3319
  ], AssetImageParams.prototype, "crop", void 0);
3218
- __decorate$c([
3320
+ __decorate$f([
3219
3321
  IsBoolean(),
3220
3322
  IsOptional(),
3221
- __metadata$a("design:type", Boolean)
3323
+ __metadata$c("design:type", Boolean)
3222
3324
  ], AssetImageParams.prototype, "cropBefore", void 0);
3223
- __decorate$c([
3325
+ __decorate$f([
3224
3326
  IsBoolean(),
3225
3327
  IsOptional(),
3226
- __metadata$a("design:type", Boolean)
3328
+ __metadata$c("design:type", Boolean)
3227
3329
  ], AssetImageParams.prototype, "cropAfter", void 0);
3228
3330
 
3229
- var __decorate$b = (this && this.__decorate) || function (decorators, target, key, desc) {
3331
+ var __decorate$e = (this && this.__decorate) || function (decorators, target, key, desc) {
3230
3332
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3231
3333
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3232
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;
3233
3335
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3234
3336
  };
3235
- var __metadata$9 = (this && this.__metadata) || function (k, v) {
3337
+ var __metadata$b = (this && this.__metadata) || function (k, v) {
3236
3338
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3237
3339
  };
3238
- var __param$5 = (this && this.__param) || function (paramIndex, decorator) {
3340
+ var __param$6 = (this && this.__param) || function (paramIndex, decorator) {
3239
3341
  return function (target, key) { decorator(target, key, paramIndex); }
3240
3342
  };
3241
- var __awaiter$9 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3343
+ var __awaiter$c = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3242
3344
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3243
3345
  return new (P || (P = Promise))(function (resolve, reject) {
3244
3346
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3253,7 +3355,7 @@ let AssetsController = class AssetsController {
3253
3355
  this.assetResolver = assetResolver;
3254
3356
  }
3255
3357
  upload(file) {
3256
- return __awaiter$9(this, void 0, void 0, function* () {
3358
+ return __awaiter$c(this, void 0, void 0, function* () {
3257
3359
  try {
3258
3360
  const contentType = file.mimetype === "application/octet-stream" ? null : file.mimetype;
3259
3361
  const asset = yield this.assets.writeBuffer(file.buffer, { filename: file.filename }, contentType);
@@ -3266,7 +3368,7 @@ let AssetsController = class AssetsController {
3266
3368
  });
3267
3369
  }
3268
3370
  uploadUrl(body) {
3269
- return __awaiter$9(this, void 0, void 0, function* () {
3371
+ return __awaiter$c(this, void 0, void 0, function* () {
3270
3372
  try {
3271
3373
  const asset = yield this.assets.writeUrl(body.url, body);
3272
3374
  return asset.toJSON();
@@ -3278,13 +3380,13 @@ let AssetsController = class AssetsController {
3278
3380
  });
3279
3381
  }
3280
3382
  getFile(id, lazy, res) {
3281
- return __awaiter$9(this, void 0, void 0, function* () {
3383
+ return __awaiter$c(this, void 0, void 0, function* () {
3282
3384
  const asset = yield this.getAsset("Asset", id, lazy, res);
3283
3385
  return asset.download();
3284
3386
  });
3285
3387
  }
3286
3388
  getImageRotation(id, params, res, rotation = 0) {
3287
- return __awaiter$9(this, void 0, void 0, function* () {
3389
+ return __awaiter$c(this, void 0, void 0, function* () {
3288
3390
  const asset = yield this.getAsset("Image", id, params.lazy, res);
3289
3391
  if (rotation !== 0) {
3290
3392
  params.rotation = params.rotation || rotation;
@@ -3293,18 +3395,18 @@ let AssetsController = class AssetsController {
3293
3395
  });
3294
3396
  }
3295
3397
  getImage(id, params, res) {
3296
- return __awaiter$9(this, void 0, void 0, function* () {
3398
+ return __awaiter$c(this, void 0, void 0, function* () {
3297
3399
  return this.getImageRotation(id, params, res);
3298
3400
  });
3299
3401
  }
3300
3402
  getFileByName(name, res) {
3301
- return __awaiter$9(this, void 0, void 0, function* () {
3403
+ return __awaiter$c(this, void 0, void 0, function* () {
3302
3404
  const asset = yield this.getAssetByName("Asset", name, res);
3303
3405
  return asset.download();
3304
3406
  });
3305
3407
  }
3306
3408
  getImageByName(name, params, res) {
3307
- return __awaiter$9(this, void 0, void 0, function* () {
3409
+ return __awaiter$c(this, void 0, void 0, function* () {
3308
3410
  const asset = yield this.getAssetByName("Image", name, res);
3309
3411
  return asset.downloadImage(params);
3310
3412
  });
@@ -3323,7 +3425,7 @@ let AssetsController = class AssetsController {
3323
3425
  }
3324
3426
  }
3325
3427
  getAsset(type, id, lazy, res) {
3326
- return __awaiter$9(this, void 0, void 0, function* () {
3428
+ return __awaiter$c(this, void 0, void 0, function* () {
3327
3429
  const asset = yield this.assetResolver.resolve(id, lazy);
3328
3430
  if (!asset) {
3329
3431
  throw new HttpError(404, `${type} with id: '${id}' not found.`);
@@ -3333,7 +3435,7 @@ let AssetsController = class AssetsController {
3333
3435
  });
3334
3436
  }
3335
3437
  getAssetByName(type, filename, res) {
3336
- return __awaiter$9(this, void 0, void 0, function* () {
3438
+ return __awaiter$c(this, void 0, void 0, function* () {
3337
3439
  const asset = yield this.assets.find({ filename });
3338
3440
  if (!asset) {
3339
3441
  throw new HttpError(404, `${type} with filename: '${filename}' not found.`);
@@ -3343,76 +3445,76 @@ let AssetsController = class AssetsController {
3343
3445
  });
3344
3446
  }
3345
3447
  };
3346
- __decorate$b([
3448
+ __decorate$e([
3347
3449
  Authorized(),
3348
3450
  Post(""),
3349
- __param$5(0, UploadedFile("file")),
3350
- __metadata$9("design:type", Function),
3351
- __metadata$9("design:paramtypes", [Object]),
3352
- __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)
3353
3455
  ], AssetsController.prototype, "upload", null);
3354
- __decorate$b([
3456
+ __decorate$e([
3355
3457
  Authorized(),
3356
3458
  Post("url"),
3357
- __param$5(0, Body()),
3358
- __metadata$9("design:type", Function),
3359
- __metadata$9("design:paramtypes", [Object]),
3360
- __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)
3361
3463
  ], AssetsController.prototype, "uploadUrl", null);
3362
- __decorate$b([
3464
+ __decorate$e([
3363
3465
  Get("/:id"),
3364
- __param$5(0, Param("id")), __param$5(1, QueryParam("lazy")), __param$5(2, Res()),
3365
- __metadata$9("design:type", Function),
3366
- __metadata$9("design:paramtypes", [String, Boolean, Object]),
3367
- __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)
3368
3470
  ], AssetsController.prototype, "getFile", null);
3369
- __decorate$b([
3471
+ __decorate$e([
3370
3472
  Get("/image/:id/:rotation"),
3371
- __param$5(0, Param("id")), __param$5(1, QueryParams()), __param$5(2, Res()), __param$5(3, Param("rotation")),
3372
- __metadata$9("design:type", Function),
3373
- __metadata$9("design:paramtypes", [String, AssetImageParams, Object, Number]),
3374
- __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)
3375
3477
  ], AssetsController.prototype, "getImageRotation", null);
3376
- __decorate$b([
3478
+ __decorate$e([
3377
3479
  Get("/image/:id"),
3378
- __param$5(0, Param("id")), __param$5(1, QueryParams()), __param$5(2, Res()),
3379
- __metadata$9("design:type", Function),
3380
- __metadata$9("design:paramtypes", [String, AssetImageParams, Object]),
3381
- __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)
3382
3484
  ], AssetsController.prototype, "getImage", null);
3383
- __decorate$b([
3485
+ __decorate$e([
3384
3486
  Get("/by-name/:name"),
3385
- __param$5(0, Param("name")), __param$5(1, Res()),
3386
- __metadata$9("design:type", Function),
3387
- __metadata$9("design:paramtypes", [String, Object]),
3388
- __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)
3389
3491
  ], AssetsController.prototype, "getFileByName", null);
3390
- __decorate$b([
3492
+ __decorate$e([
3391
3493
  Get("/by-name/image/:name"),
3392
- __param$5(0, Param("name")), __param$5(1, QueryParams()), __param$5(2, Res()),
3393
- __metadata$9("design:type", Function),
3394
- __metadata$9("design:paramtypes", [String, AssetImageParams, Object]),
3395
- __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)
3396
3498
  ], AssetsController.prototype, "getImageByName", null);
3397
- AssetsController = __decorate$b([
3499
+ AssetsController = __decorate$e([
3398
3500
  injectable(),
3399
3501
  Controller("/assets"),
3400
- __metadata$9("design:paramtypes", [Assets, AssetResolver])
3502
+ __metadata$b("design:paramtypes", [Assets, AssetResolver])
3401
3503
  ], AssetsController);
3402
3504
 
3403
- var __decorate$a = (this && this.__decorate) || function (decorators, target, key, desc) {
3505
+ var __decorate$d = (this && this.__decorate) || function (decorators, target, key, desc) {
3404
3506
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3405
3507
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3406
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;
3407
3509
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3408
3510
  };
3409
- var __metadata$8 = (this && this.__metadata) || function (k, v) {
3511
+ var __metadata$a = (this && this.__metadata) || function (k, v) {
3410
3512
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3411
3513
  };
3412
- var __param$4 = (this && this.__param) || function (paramIndex, decorator) {
3514
+ var __param$5 = (this && this.__param) || function (paramIndex, decorator) {
3413
3515
  return function (target, key) { decorator(target, key, paramIndex); }
3414
3516
  };
3415
- var __awaiter$8 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3517
+ var __awaiter$b = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3416
3518
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3417
3519
  return new (P || (P = Promise))(function (resolve, reject) {
3418
3520
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3427,7 +3529,7 @@ let AuthController = class AuthController {
3427
3529
  this.userManager = userManager;
3428
3530
  }
3429
3531
  login(credentials, res) {
3430
- return __awaiter$8(this, void 0, void 0, function* () {
3532
+ return __awaiter$b(this, void 0, void 0, function* () {
3431
3533
  let user = null;
3432
3534
  try {
3433
3535
  user = yield this.userManager.getByCredentials(credentials);
@@ -3448,37 +3550,37 @@ let AuthController = class AuthController {
3448
3550
  return this.userManager.serialize(user);
3449
3551
  }
3450
3552
  };
3451
- __decorate$a([
3553
+ __decorate$d([
3452
3554
  Post("/login"),
3453
- __param$4(0, Body()), __param$4(1, Res()),
3454
- __metadata$8("design:type", Function),
3455
- __metadata$8("design:paramtypes", [Object, Object]),
3456
- __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)
3457
3559
  ], AuthController.prototype, "login", null);
3458
- __decorate$a([
3560
+ __decorate$d([
3459
3561
  Authorized(),
3460
3562
  Get("/user"),
3461
- __param$4(0, CurrentUser()),
3462
- __metadata$8("design:type", Function),
3463
- __metadata$8("design:paramtypes", [Object]),
3464
- __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)
3465
3567
  ], AuthController.prototype, "getProfile", null);
3466
- AuthController = __decorate$a([
3568
+ AuthController = __decorate$d([
3467
3569
  injectable(),
3468
3570
  Controller(),
3469
- __metadata$8("design:paramtypes", [Configuration, UserManager])
3571
+ __metadata$a("design:paramtypes", [Configuration, UserManager])
3470
3572
  ], AuthController);
3471
3573
 
3472
- var __decorate$9 = (this && this.__decorate) || function (decorators, target, key, desc) {
3574
+ var __decorate$c = (this && this.__decorate) || function (decorators, target, key, desc) {
3473
3575
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3474
3576
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3475
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;
3476
3578
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3477
3579
  };
3478
- var __metadata$7 = (this && this.__metadata) || function (k, v) {
3580
+ var __metadata$9 = (this && this.__metadata) || function (k, v) {
3479
3581
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3480
3582
  };
3481
- var __param$3 = (this && this.__param) || function (paramIndex, decorator) {
3583
+ var __param$4 = (this && this.__param) || function (paramIndex, decorator) {
3482
3584
  return function (target, key) { decorator(target, key, paramIndex); }
3483
3585
  };
3484
3586
  let GalleryController = class GalleryController {
@@ -3489,32 +3591,32 @@ let GalleryController = class GalleryController {
3489
3591
  return this.galleryCache.serve(id);
3490
3592
  }
3491
3593
  };
3492
- __decorate$9([
3594
+ __decorate$c([
3493
3595
  Get("/:id"),
3494
- __param$3(0, Param("id")),
3495
- __metadata$7("design:type", Function),
3496
- __metadata$7("design:paramtypes", [String]),
3497
- __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)
3498
3600
  ], GalleryController.prototype, "getFile", null);
3499
- GalleryController = __decorate$9([
3601
+ GalleryController = __decorate$c([
3500
3602
  injectable(),
3501
3603
  Controller("/gallery"),
3502
- __metadata$7("design:paramtypes", [GalleryCache])
3604
+ __metadata$9("design:paramtypes", [GalleryCache])
3503
3605
  ], GalleryController);
3504
3606
 
3505
- var __decorate$8 = (this && this.__decorate) || function (decorators, target, key, desc) {
3607
+ var __decorate$b = (this && this.__decorate) || function (decorators, target, key, desc) {
3506
3608
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3507
3609
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3508
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;
3509
3611
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3510
3612
  };
3511
- var __metadata$6 = (this && this.__metadata) || function (k, v) {
3613
+ var __metadata$8 = (this && this.__metadata) || function (k, v) {
3512
3614
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3513
3615
  };
3514
- var __param$2 = (this && this.__param) || function (paramIndex, decorator) {
3616
+ var __param$3 = (this && this.__param) || function (paramIndex, decorator) {
3515
3617
  return function (target, key) { decorator(target, key, paramIndex); }
3516
3618
  };
3517
- var __awaiter$7 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3619
+ var __awaiter$a = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3518
3620
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3519
3621
  return new (P || (P = Promise))(function (resolve, reject) {
3520
3622
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3531,7 +3633,7 @@ let ProgressesController = class ProgressesController {
3531
3633
  this.connectionType = !mainEndpoint ? "polling" : "socket";
3532
3634
  }
3533
3635
  getProgress(id) {
3534
- return __awaiter$7(this, void 0, void 0, function* () {
3636
+ return __awaiter$a(this, void 0, void 0, function* () {
3535
3637
  const progress = yield this.progresses.get(id);
3536
3638
  if (!progress)
3537
3639
  return null;
@@ -3541,29 +3643,176 @@ let ProgressesController = class ProgressesController {
3541
3643
  });
3542
3644
  }
3543
3645
  };
3544
- __decorate$8([
3646
+ __decorate$b([
3545
3647
  Get("/:id"),
3546
- __param$2(0, Param("id")),
3547
- __metadata$6("design:type", Function),
3548
- __metadata$6("design:paramtypes", [String]),
3549
- __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)
3550
3652
  ], ProgressesController.prototype, "getProgress", null);
3551
- ProgressesController = __decorate$8([
3653
+ ProgressesController = __decorate$b([
3552
3654
  injectable(),
3553
3655
  Controller("/progresses"),
3554
- __metadata$6("design:paramtypes", [Progresses, Configuration])
3656
+ __metadata$8("design:paramtypes", [Progresses, Configuration])
3555
3657
  ], ProgressesController);
3556
3658
 
3557
- var __decorate$7 = (this && this.__decorate) || function (decorators, target, key, desc) {
3659
+ var __decorate$a = (this && this.__decorate) || function (decorators, target, key, desc) {
3558
3660
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3559
3661
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3560
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;
3561
3663
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3562
3664
  };
3563
- var __metadata$5 = (this && this.__metadata) || function (k, v) {
3665
+ var __metadata$7 = (this && this.__metadata) || function (k, v) {
3564
3666
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3565
3667
  };
3566
- 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) {
3567
3816
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3568
3817
  return new (P || (P = Promise))(function (resolve, reject) {
3569
3818
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3582,7 +3831,7 @@ let ErrorHandlerMiddleware = class ErrorHandlerMiddleware {
3582
3831
  }
3583
3832
  error(error, req, res, next) {
3584
3833
  var _a;
3585
- return __awaiter$6(this, void 0, void 0, function* () {
3834
+ return __awaiter$9(this, void 0, void 0, function* () {
3586
3835
  const result = yield this.getResult(error, req, res);
3587
3836
  if (this.isDev) {
3588
3837
  if (error instanceof AxiosError) {
@@ -3597,7 +3846,7 @@ let ErrorHandlerMiddleware = class ErrorHandlerMiddleware {
3597
3846
  });
3598
3847
  }
3599
3848
  getResult(error, req, res) {
3600
- return __awaiter$6(this, void 0, void 0, function* () {
3849
+ return __awaiter$9(this, void 0, void 0, function* () {
3601
3850
  const result = {};
3602
3851
  if (error instanceof AxiosError) {
3603
3852
  res.status(error.response.status);
@@ -3641,22 +3890,22 @@ let ErrorHandlerMiddleware = class ErrorHandlerMiddleware {
3641
3890
  });
3642
3891
  }
3643
3892
  };
3644
- ErrorHandlerMiddleware = __decorate$7([
3893
+ ErrorHandlerMiddleware = __decorate$9([
3645
3894
  injectable(),
3646
3895
  Middleware({ type: "after" }),
3647
- __metadata$5("design:paramtypes", [Configuration, Translator])
3896
+ __metadata$6("design:paramtypes", [Configuration, Translator])
3648
3897
  ], ErrorHandlerMiddleware);
3649
3898
 
3650
- var __decorate$6 = (this && this.__decorate) || function (decorators, target, key, desc) {
3899
+ var __decorate$8 = (this && this.__decorate) || function (decorators, target, key, desc) {
3651
3900
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3652
3901
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3653
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;
3654
3903
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3655
3904
  };
3656
- var __metadata$4 = (this && this.__metadata) || function (k, v) {
3905
+ var __metadata$5 = (this && this.__metadata) || function (k, v) {
3657
3906
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3658
3907
  };
3659
- var __param$1 = (this && this.__param) || function (paramIndex, decorator) {
3908
+ var __param$2 = (this && this.__param) || function (paramIndex, decorator) {
3660
3909
  return function (target, key) { decorator(target, key, paramIndex); }
3661
3910
  };
3662
3911
  let ContainerMiddleware = class ContainerMiddleware {
@@ -3668,20 +3917,20 @@ let ContainerMiddleware = class ContainerMiddleware {
3668
3917
  next(null);
3669
3918
  }
3670
3919
  };
3671
- ContainerMiddleware = __decorate$6([
3920
+ ContainerMiddleware = __decorate$8([
3672
3921
  injectable(),
3673
3922
  Middleware({ type: "before" }),
3674
- __param$1(0, inject(DI_CONTAINER)),
3675
- __metadata$4("design:paramtypes", [Object])
3923
+ __param$2(0, inject(DI_CONTAINER)),
3924
+ __metadata$5("design:paramtypes", [Object])
3676
3925
  ], ContainerMiddleware);
3677
3926
 
3678
- var __decorate$5 = (this && this.__decorate) || function (decorators, target, key, desc) {
3927
+ var __decorate$7 = (this && this.__decorate) || function (decorators, target, key, desc) {
3679
3928
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3680
3929
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3681
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;
3682
3931
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3683
3932
  };
3684
- var __metadata$3 = (this && this.__metadata) || function (k, v) {
3933
+ var __metadata$4 = (this && this.__metadata) || function (k, v) {
3685
3934
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3686
3935
  };
3687
3936
  let LanguageMiddleware = class LanguageMiddleware {
@@ -3693,19 +3942,19 @@ let LanguageMiddleware = class LanguageMiddleware {
3693
3942
  next(null);
3694
3943
  }
3695
3944
  };
3696
- LanguageMiddleware = __decorate$5([
3945
+ LanguageMiddleware = __decorate$7([
3697
3946
  injectable(),
3698
3947
  Middleware({ type: "before" }),
3699
- __metadata$3("design:paramtypes", [Configuration])
3948
+ __metadata$4("design:paramtypes", [Configuration])
3700
3949
  ], LanguageMiddleware);
3701
3950
 
3702
- var __decorate$4 = (this && this.__decorate) || function (decorators, target, key, desc) {
3951
+ var __decorate$6 = (this && this.__decorate) || function (decorators, target, key, desc) {
3703
3952
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3704
3953
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3705
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;
3706
3955
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3707
3956
  };
3708
- var __metadata$2 = (this && this.__metadata) || function (k, v) {
3957
+ var __metadata$3 = (this && this.__metadata) || function (k, v) {
3709
3958
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3710
3959
  };
3711
3960
  let RequestEndedMiddleware = class RequestEndedMiddleware {
@@ -3721,19 +3970,19 @@ let RequestEndedMiddleware = class RequestEndedMiddleware {
3721
3970
  next(null);
3722
3971
  }
3723
3972
  };
3724
- RequestEndedMiddleware = __decorate$4([
3973
+ RequestEndedMiddleware = __decorate$6([
3725
3974
  injectable(),
3726
3975
  Middleware({ type: "after" }),
3727
- __metadata$2("design:paramtypes", [Logger])
3976
+ __metadata$3("design:paramtypes", [Logger])
3728
3977
  ], RequestEndedMiddleware);
3729
3978
 
3730
- var __decorate$3 = (this && this.__decorate) || function (decorators, target, key, desc) {
3979
+ var __decorate$5 = (this && this.__decorate) || function (decorators, target, key, desc) {
3731
3980
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3732
3981
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3733
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;
3734
3983
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3735
3984
  };
3736
- var __metadata$1 = (this && this.__metadata) || function (k, v) {
3985
+ var __metadata$2 = (this && this.__metadata) || function (k, v) {
3737
3986
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3738
3987
  };
3739
3988
  let RequestStartedMiddleware = class RequestStartedMiddleware {
@@ -3747,25 +3996,25 @@ let RequestStartedMiddleware = class RequestStartedMiddleware {
3747
3996
  next(null);
3748
3997
  }
3749
3998
  };
3750
- RequestStartedMiddleware = __decorate$3([
3999
+ RequestStartedMiddleware = __decorate$5([
3751
4000
  injectable(),
3752
4001
  Middleware({ type: "before" }),
3753
- __metadata$1("design:paramtypes", [Logger])
4002
+ __metadata$2("design:paramtypes", [Logger])
3754
4003
  ], RequestStartedMiddleware);
3755
4004
 
3756
- var __decorate$2 = (this && this.__decorate) || function (decorators, target, key, desc) {
4005
+ var __decorate$4 = (this && this.__decorate) || function (decorators, target, key, desc) {
3757
4006
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3758
4007
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3759
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;
3760
4009
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3761
4010
  };
3762
- var __metadata = (this && this.__metadata) || function (k, v) {
4011
+ var __metadata$1 = (this && this.__metadata) || function (k, v) {
3763
4012
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3764
4013
  };
3765
- var __param = (this && this.__param) || function (paramIndex, decorator) {
4014
+ var __param$1 = (this && this.__param) || function (paramIndex, decorator) {
3766
4015
  return function (target, key) { decorator(target, key, paramIndex); }
3767
4016
  };
3768
- var __awaiter$5 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4017
+ var __awaiter$8 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3769
4018
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3770
4019
  return new (P || (P = Promise))(function (resolve, reject) {
3771
4020
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3780,7 +4029,7 @@ let ProgressController = class ProgressController {
3780
4029
  this.socketServer = socketServer;
3781
4030
  }
3782
4031
  advanceProgress(client, progressId) {
3783
- return __awaiter$5(this, void 0, void 0, function* () {
4032
+ return __awaiter$8(this, void 0, void 0, function* () {
3784
4033
  const progress = yield this.progresses.get(progressId);
3785
4034
  if (!progress)
3786
4035
  return;
@@ -3794,7 +4043,7 @@ let ProgressController = class ProgressController {
3794
4043
  });
3795
4044
  }
3796
4045
  setProgressInterest(client, progressId) {
3797
- return __awaiter$5(this, void 0, void 0, function* () {
4046
+ return __awaiter$8(this, void 0, void 0, function* () {
3798
4047
  const progress = yield this.progresses.get(progressId);
3799
4048
  if (!progress)
3800
4049
  return;
@@ -3808,28 +4057,201 @@ let ProgressController = class ProgressController {
3808
4057
  });
3809
4058
  }
3810
4059
  };
3811
- __decorate$2([
4060
+ __decorate$4([
3812
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"),
3813
4236
  __param(0, ConnectedSocket()), __param(1, MessageBody()),
3814
4237
  __metadata("design:type", Function),
3815
4238
  __metadata("design:paramtypes", [Object, String]),
3816
4239
  __metadata("design:returntype", Promise)
3817
- ], ProgressController.prototype, "advanceProgress", null);
3818
- __decorate$2([
3819
- OnMessage("background-progress-interest"),
4240
+ ], TerminalController.prototype, "terminalData", null);
4241
+ __decorate$3([
4242
+ OnMessage("terminal-upload"),
3820
4243
  __param(0, ConnectedSocket()), __param(1, MessageBody()),
3821
4244
  __metadata("design:type", Function),
3822
- __metadata("design:paramtypes", [Object, String]),
4245
+ __metadata("design:paramtypes", [Object, Object]),
3823
4246
  __metadata("design:returntype", Promise)
3824
- ], ProgressController.prototype, "setProgressInterest", null);
3825
- ProgressController = __decorate$2([
3826
- injectable(),
4247
+ ], TerminalController.prototype, "terminalUpload", null);
4248
+ TerminalController = __decorate$3([
4249
+ singleton(),
3827
4250
  SocketController(),
3828
- __param(1, inject(SOCKET_SERVER)),
3829
- __metadata("design:paramtypes", [Progresses, Object])
3830
- ], ProgressController);
4251
+ __metadata("design:paramtypes", [TerminalManager])
4252
+ ], TerminalController);
3831
4253
 
3832
- var __decorate$1 = (this && this.__decorate) || function (decorators, target, key, desc) {
4254
+ var __decorate$2 = (this && this.__decorate) || function (decorators, target, key, desc) {
3833
4255
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3834
4256
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
3835
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;
@@ -3840,7 +4262,7 @@ let CompressionMiddleware = class CompressionMiddleware {
3840
4262
  next();
3841
4263
  }
3842
4264
  };
3843
- CompressionMiddleware = __decorate$1([
4265
+ CompressionMiddleware = __decorate$2([
3844
4266
  injectable(),
3845
4267
  Middleware$1()
3846
4268
  ], CompressionMiddleware);
@@ -4040,13 +4462,13 @@ class DiContainer {
4040
4462
  }
4041
4463
  }
4042
4464
 
4043
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
4465
+ var __decorate$1 = (this && this.__decorate) || function (decorators, target, key, desc) {
4044
4466
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4045
4467
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4046
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;
4047
4469
  return c > 3 && r && Object.defineProperty(target, key, r), r;
4048
4470
  };
4049
- var __awaiter$4 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4471
+ var __awaiter$5 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4050
4472
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4051
4473
  return new (P || (P = Promise))(function (resolve, reject) {
4052
4474
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4057,17 +4479,17 @@ var __awaiter$4 = (this && this.__awaiter) || function (thisArg, _arguments, P,
4057
4479
  };
4058
4480
  let EmptyJob = class EmptyJob {
4059
4481
  process() {
4060
- return __awaiter$4(this, void 0, void 0, function* () {
4482
+ return __awaiter$5(this, void 0, void 0, function* () {
4061
4483
  return null;
4062
4484
  });
4063
4485
  }
4064
4486
  };
4065
- EmptyJob = __decorate([
4487
+ EmptyJob = __decorate$1([
4066
4488
  injectable(),
4067
4489
  scoped(Lifecycle.ContainerScoped)
4068
4490
  ], EmptyJob);
4069
4491
 
4070
- var __awaiter$3 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4492
+ var __awaiter$4 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4071
4493
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4072
4494
  return new (P || (P = Promise))(function (resolve, reject) {
4073
4495
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4077,7 +4499,7 @@ var __awaiter$3 = (this && this.__awaiter) || function (thisArg, _arguments, P,
4077
4499
  });
4078
4500
  };
4079
4501
  function setupStatic(rootFolder, container) {
4080
- return __awaiter$3(this, void 0, void 0, function* () {
4502
+ return __awaiter$4(this, void 0, void 0, function* () {
4081
4503
  const browserFolder = resolve(rootFolder || __dirname, `public_html`);
4082
4504
  const app = container.get(EXPRESS);
4083
4505
  const ep = container.get(EndpointProvider);
@@ -4095,6 +4517,36 @@ function setupStatic(rootFolder, container) {
4095
4517
  });
4096
4518
  }
4097
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
+
4098
4550
  class BaseDoc {
4099
4551
  /**
4100
4552
  * Casts this to DocumentType<this> to allow using document methods in get/set-s
@@ -4466,6 +4918,14 @@ function resolveUser(req) {
4466
4918
  function createServices() {
4467
4919
  // List of parameters
4468
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
+ }),
4469
4929
  new Parameter("templatesDir", join(__dirname, "templates")),
4470
4930
  new Parameter("galleryDir", join(__dirname, "gallery")),
4471
4931
  new Parameter("cacheDir", join(__dirname, "cache")),
@@ -4528,6 +4988,7 @@ function createServices() {
4528
4988
  OpenApi,
4529
4989
  Progresses,
4530
4990
  TemplateRenderer,
4991
+ TerminalManager,
4531
4992
  TokenGenerator,
4532
4993
  TranslationProvider,
4533
4994
  Translator,
@@ -4570,6 +5031,13 @@ function setupBackend(config, providers, parent) {
4570
5031
  useValue: jobType
4571
5032
  };
4572
5033
  });
5034
+ // Create commands
5035
+ const commandProviders = [ClearCommand].concat(config.commands || []).map(commandType => {
5036
+ return {
5037
+ provide: TERMINAL_COMMAND,
5038
+ useClass: commandType
5039
+ };
5040
+ });
4573
5041
  // Setup rest API
4574
5042
  const restOptions = config.restOptions || {};
4575
5043
  restOptions.defaultErrorHandler = false;
@@ -4584,12 +5052,12 @@ function setupBackend(config, providers, parent) {
4584
5052
  restOptions.routePrefix = restOptions.routePrefix == "/" ? "" : restOptions.routePrefix;
4585
5053
  restOptions.middlewares = [ErrorHandlerMiddleware, ContainerMiddleware, LanguageMiddleware, RequestStartedMiddleware, RequestEndedMiddleware]
4586
5054
  .concat(restOptions.middlewares || []);
4587
- restOptions.controllers = [AssetsController, AuthController, GalleryController, ProgressesController]
5055
+ restOptions.controllers = [AssetsController, AuthController, GalleryController, ProgressesController, TerminalController$1]
4588
5056
  .concat(restOptions.controllers || []);
4589
5057
  // Setup socket API
4590
5058
  const socketOptions = config.socketOptions || {};
4591
5059
  socketOptions.middlewares = [CompressionMiddleware].concat(socketOptions.middlewares || []);
4592
- socketOptions.controllers = [ProgressController].concat(socketOptions.controllers || []);
5060
+ socketOptions.controllers = [ProgressController, TerminalController].concat(socketOptions.controllers || []);
4593
5061
  // Create providers
4594
5062
  const allProviders = [];
4595
5063
  // Add multi tokens to sub container
@@ -4600,7 +5068,7 @@ function setupBackend(config, providers, parent) {
4600
5068
  });
4601
5069
  });
4602
5070
  // Add other providers
4603
- 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, {
4604
5072
  provide: EXPRESS,
4605
5073
  useFactory: (container) => {
4606
5074
  return container.resolve(BackendProvider).express;
@@ -4712,5 +5180,5 @@ function setupBackend(config, providers, parent) {
4712
5180
  * Generated bundle index. Do not edit.
4713
5181
  */
4714
5182
 
4715
- 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 };
4716
5184
  //# sourceMappingURL=stemy-backend.js.map