@stemy/backend 3.4.10 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,13 +1,14 @@
1
1
  import { dirname, basename, join, resolve } from 'path';
2
2
  import { json } from 'body-parser';
3
3
  import { sign, verify } from 'jsonwebtoken';
4
- import { injectable, scoped, Lifecycle, injectAll, singleton, inject, isFactoryProvider, container } from 'tsyringe';
4
+ import { injectable, scoped, Lifecycle, singleton, injectAll, inject, isFactoryProvider, container } from 'tsyringe';
5
5
  import { getMetadataArgsStorage, HttpError, Authorized, Post, UploadedFile, Body, Get, Param, QueryParam, Res, QueryParams, Controller, UnauthorizedError, CurrentUser, 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
- import { routingControllersToSpec } from 'routing-controllers-openapi';
8
- import { defaultMetadataStorage } from 'class-transformer/storage';
9
- import { ValidatorConstraint, ValidationTypes, Min, Max, IsOptional, IsBoolean } from 'class-validator';
10
- import { validationMetadatasToSchemas } from 'class-validator-jsonschema';
7
+ import fontKit_ from 'fontkit';
8
+ import { fromBuffer } from 'file-type';
9
+ import sharp_ from 'sharp';
10
+ import { ObjectId as ObjectId$1 } from 'bson';
11
+ import axios, { AxiosError } from 'axios';
11
12
  import { exec } from 'child_process';
12
13
  import { createHash } from 'crypto';
13
14
  import { Subscription, Observable, Subject, from } from 'rxjs';
@@ -16,11 +17,6 @@ import { mkdir, unlink, readFile as readFile$1, writeFile as writeFile$1, lstat,
16
17
  import { ObjectId, GridFSBucket } from 'mongodb';
17
18
  import { Types, connect, model } from 'mongoose';
18
19
  import { Readable, PassThrough } from 'stream';
19
- import sharp_ from 'sharp';
20
- import { ObjectId as ObjectId$1 } from 'bson';
21
- import fontKit_ from 'fontkit';
22
- import { fromBuffer } from 'file-type';
23
- import axios from 'axios';
24
20
  import dotenv from 'dotenv';
25
21
  import { validate, schedule } from 'node-cron';
26
22
  import { socket } from 'zeromq';
@@ -31,11 +27,40 @@ import socket_io from 'socket.io';
31
27
  import { v4 } from 'uuid';
32
28
  import { createTransport } from 'nodemailer';
33
29
  import * as Handlebars from 'handlebars';
30
+ import { routingControllersToSpec, OpenAPI } from 'routing-controllers-openapi';
31
+ import { validationMetadatasToSchemas } from 'class-validator-jsonschema';
32
+ import { defaultMetadataStorage } from 'class-transformer/storage';
33
+ import { ValidatorConstraint, ValidationTypes, Min, Max, IsOptional, IsBoolean } from 'class-validator';
34
34
  import { compare } from 'bcrypt';
35
35
  import moment from 'moment';
36
36
  import { getModelForClass } from '@typegoose/typegoose';
37
37
  import { getValue as getValue$1, setValue } from 'mongoose/lib/utils';
38
38
 
39
+ // --- DI functions ---
40
+ const Type = Function;
41
+ // --- Injection tokens ---
42
+ const FIXTURE = Symbol.for("fixture-token");
43
+ const JOB = Symbol.for("job-token");
44
+ const EXPRESS = Symbol.for("express-token");
45
+ const HTTP_SERVER = Symbol.for("http-server-token");
46
+ const SOCKET_SERVER = Symbol.for("socket-server-token");
47
+ const PARAMETER = Symbol.for("parameter-token");
48
+ const DI_CONTAINER = Symbol.for("di-container-token");
49
+ const OPENAPI_VALIDATION = Symbol.for("openapi-validation-token");
50
+ class Parameter {
51
+ constructor(name, defaultValue, resolver = null) {
52
+ this.name = name;
53
+ this.defaultValue = defaultValue;
54
+ this.resolver = resolver;
55
+ }
56
+ }
57
+
58
+ var __decorate$B = (this && this.__decorate) || function (decorators, target, key, desc) {
59
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
60
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
61
+ 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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
63
+ };
39
64
  var __awaiter$y = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
40
65
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
41
66
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -45,7 +70,125 @@ var __awaiter$y = (this && this.__awaiter) || function (thisArg, _arguments, P,
45
70
  step((generator = generator.apply(thisArg, _arguments || [])).next());
46
71
  });
47
72
  };
73
+ var AssetProcessor_1;
48
74
  const sharp$3 = sharp_;
75
+ const fontKit = fontKit_;
76
+ const fontTypes = [
77
+ "application/font-woff", "application/font-woff2", "application/x-font-opentype", "application/x-font-truetype", "application/x-font-datafork",
78
+ "font/woff", "font/woff2", "font/otf", "font/ttf", "font/datafork"
79
+ ];
80
+ const imageTypes = ["image/jpeg", "image/jpg", "image/png", "image/svg+xml"];
81
+ const fontProps = [
82
+ "postscriptName", "fullName", "familyName", "subfamilyName",
83
+ "copyright", "version", "unitsPerEm", "ascent", "descent", "lineGap",
84
+ "underlinePosition", "underlineThickness", "italicAngle", "capHeight",
85
+ "xHeight", "numGlyphs", "characterSet", "availableFeatures"
86
+ ];
87
+ 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$y(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
+ static extractFontFormat(font) {
109
+ const name = font.constructor.name;
110
+ const tag = font["directory"].tag;
111
+ switch (name) {
112
+ case "TTFFont":
113
+ return tag === "OTTO" ? "opentype" : "truetype";
114
+ case "WOFF2Font":
115
+ return "woff2";
116
+ case "WOFFFont":
117
+ return "woff";
118
+ case "DFont":
119
+ return "datafork";
120
+ }
121
+ return null;
122
+ }
123
+ static isImage(contentType) {
124
+ return imageTypes.indexOf(contentType) >= 0;
125
+ }
126
+ static copyImageMeta(buffer, metadata, fileType) {
127
+ return __awaiter$y(this, void 0, void 0, function* () {
128
+ if (fileType.mime === "image/svg+xml") {
129
+ const match = /<svg([^<>]+)>/gi.exec(buffer.toString("utf8"));
130
+ if (match && match.length > 1) {
131
+ const attrs = match[1].match(/([a-z]+)="([^"]+)"/gi);
132
+ attrs.forEach(attr => {
133
+ if (attr.length < 5)
134
+ return;
135
+ const [name, value] = attr.split("=");
136
+ const val = value.replace(/"/gi, "");
137
+ metadata[name] = isNaN(val) ? val : Number(val);
138
+ });
139
+ if (metadata.viewBox && (isNaN(metadata.width) || isNaN(metadata.height))) {
140
+ const parts = metadata.viewBox.split(" ");
141
+ metadata.width = Number(parts[0]) + Number(parts[2]);
142
+ metadata.height = Number(parts[1]) + Number(parts[3]);
143
+ }
144
+ if (!isNaN(metadata.width) && !isNaN(metadata.height)) {
145
+ metadata.svgSize = { x: metadata.width, y: metadata.height };
146
+ }
147
+ }
148
+ return buffer;
149
+ }
150
+ const output = yield sharp$3(buffer).rotate().toBuffer({ resolveWithObject: true });
151
+ Object.assign(metadata, output.info);
152
+ return output.data;
153
+ });
154
+ }
155
+ static isFont(contentType) {
156
+ return fontTypes.indexOf(contentType) >= 0;
157
+ }
158
+ static copyFontMeta(buffer, metadata) {
159
+ const font = fontKit.create(buffer);
160
+ metadata.format = AssetProcessor_1.extractFontFormat(font);
161
+ fontProps.forEach(prop => {
162
+ metadata[prop] = font[prop];
163
+ });
164
+ }
165
+ process(buffer, metadata, fileType) {
166
+ return __awaiter$y(this, void 0, void 0, function* () {
167
+ if (AssetProcessor_1.isImage(fileType.mime)) {
168
+ buffer = yield AssetProcessor_1.copyImageMeta(buffer, metadata, fileType);
169
+ }
170
+ if (AssetProcessor_1.isFont(fileType.mime)) {
171
+ AssetProcessor_1.copyFontMeta(buffer, metadata);
172
+ }
173
+ return buffer;
174
+ });
175
+ }
176
+ };
177
+ AssetProcessor = AssetProcessor_1 = __decorate$B([
178
+ injectable(),
179
+ scoped(Lifecycle.ContainerScoped)
180
+ ], AssetProcessor);
181
+
182
+ var __awaiter$x = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
183
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
184
+ return new (P || (P = Promise))(function (resolve, reject) {
185
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
186
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
187
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
188
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
189
+ });
190
+ };
191
+ const sharp$2 = sharp_;
49
192
  const diContainers = {
50
193
  appContainer: null
51
194
  };
@@ -214,7 +357,7 @@ function toCropRegion(cropInfo) {
214
357
  };
215
358
  }
216
359
  function toImage(src, params, meta) {
217
- return __awaiter$y(this, void 0, void 0, function* () {
360
+ return __awaiter$x(this, void 0, void 0, function* () {
218
361
  // Default params and meta
219
362
  params = params || {};
220
363
  meta = meta || {};
@@ -237,7 +380,7 @@ function toImage(src, params, meta) {
237
380
  const cropBefore = toCropRegion(params.cropBefore || (params.crop ? meta.cropBefore : null));
238
381
  const cropAfter = toCropRegion(params.cropAfter || (params.crop ? meta.cropAfter : null));
239
382
  // Get metadata
240
- let img = sharp$3(buffer);
383
+ let img = sharp$2(buffer);
241
384
  let { width, height } = yield img.metadata();
242
385
  // Crop before resize
243
386
  if (cropBefore) {
@@ -271,7 +414,7 @@ function toImage(src, params, meta) {
271
414
  // Rotate
272
415
  if (params.rotation !== 0) {
273
416
  buffer = yield img.toBuffer();
274
- img = sharp$3(buffer).rotate(params.rotation);
417
+ img = sharp$2(buffer).rotate(params.rotation);
275
418
  }
276
419
  buffer = yield img.toBuffer();
277
420
  src = src instanceof Readable ? bufferToStream(buffer) : buffer;
@@ -352,7 +495,7 @@ function readFile(path) {
352
495
  });
353
496
  }
354
497
  function readAndDeleteFile(path, timeout = 5000) {
355
- return __awaiter$y(this, void 0, void 0, function* () {
498
+ return __awaiter$x(this, void 0, void 0, function* () {
356
499
  const data = yield readFile(path);
357
500
  setTimeout(() => {
358
501
  unlink(path, () => {
@@ -362,7 +505,7 @@ function readAndDeleteFile(path, timeout = 5000) {
362
505
  });
363
506
  }
364
507
  function writeFile(path, data) {
365
- return __awaiter$y(this, void 0, void 0, function* () {
508
+ return __awaiter$x(this, void 0, void 0, function* () {
366
509
  yield mkdirRecursive(dirname(path));
367
510
  return new Promise((res, rej) => {
368
511
  writeFile$1(path, data, err => {
@@ -676,248 +819,23 @@ function replaceSpecialChars(str, to = "-") {
676
819
  return `${str}`.replace(/[&\/\\#, +()$~%.@'":*?<>{}]/g, to);
677
820
  }
678
821
 
679
- var __decorate$z = (this && this.__decorate) || function (decorators, target, key, desc) {
680
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
681
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
682
- 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;
683
- return c > 3 && r && Object.defineProperty(target, key, r), r;
684
- };
685
- function checkValue(multi, value) {
686
- if (multi) {
687
- return Array.isArray(value) && value.every(v => {
688
- try {
689
- const id = new ObjectId$1(v);
690
- return id instanceof ObjectId$1;
691
- }
692
- catch (e) {
693
- return false;
694
- }
695
- });
696
- }
697
- if (null === value)
698
- return true;
699
- try {
700
- const id = new ObjectId$1(value);
701
- return id instanceof ObjectId$1;
702
- }
703
- catch (e) {
704
- return false;
705
- }
706
- }
707
- let IsFile = class IsFile {
708
- validate(value, validationArguments) {
709
- const [multi] = (validationArguments.constraints || []);
710
- return checkValue(multi, value);
711
- }
712
- };
713
- IsFile = __decorate$z([
714
- ValidatorConstraint()
715
- ], IsFile);
716
- let IsObjectId = class IsObjectId {
717
- validate(value, validationArguments) {
718
- const [_, multi] = (validationArguments.constraints || []);
719
- return checkValue(multi, value);
720
- }
721
- };
722
- IsObjectId = __decorate$z([
723
- ValidatorConstraint()
724
- ], IsObjectId);
725
-
726
- let apiDocs = null;
727
- function getApiDocs(customValidation) {
728
- if (apiDocs)
729
- return apiDocs;
730
- const storage = getMetadataArgsStorage();
731
- const spec = routingControllersToSpec(storage);
732
- spec.basePath = "/api/";
733
- spec.definitions = validationMetadatasToSchemas({
734
- classTransformerMetadataStorage: defaultMetadataStorage,
735
- additionalConverters: {
736
- [ValidationTypes.CUSTOM_VALIDATION]: (meta, options) => {
737
- const res = isFunction(customValidation) ? customValidation(meta, options) : customValidation;
738
- if (!!res)
739
- return res;
740
- const constraints = meta.constraints || [];
741
- if (meta.constraintCls === IsFile) {
742
- return {
743
- multi: constraints[0] || false,
744
- type: "file"
745
- };
746
- }
747
- if (meta.constraintCls === IsObjectId) {
748
- return {
749
- endpoint: constraints[0] || false,
750
- multi: constraints[1] || false,
751
- type: "list"
752
- };
753
- }
754
- return null;
755
- }
756
- }
757
- });
758
- spec.components.schemas = spec.definitions;
759
- apiDocs = JSON.stringify(spec);
760
- return apiDocs;
761
- }
762
-
763
- // --- DI functions ---
764
- const Type = Function;
765
- // --- Injection tokens ---
766
- const FIXTURE = Symbol.for("fixture-token");
767
- const JOB = Symbol.for("job-token");
768
- const EXPRESS = Symbol.for("express-token");
769
- const HTTP_SERVER = Symbol.for("http-server-token");
770
- const SOCKET_SERVER = Symbol.for("socket-server-token");
771
- const PARAMETER = Symbol.for("parameter-token");
772
- const DI_CONTAINER = Symbol.for("di-container-token");
773
- class Parameter {
774
- constructor(name, defaultValue, resolver = null) {
775
- this.name = name;
776
- this.defaultValue = defaultValue;
777
- this.resolver = resolver;
778
- }
779
- }
780
-
781
- var __decorate$y = (this && this.__decorate) || function (decorators, target, key, desc) {
822
+ var __decorate$A = (this && this.__decorate) || function (decorators, target, key, desc) {
782
823
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
783
824
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
784
825
  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;
785
826
  return c > 3 && r && Object.defineProperty(target, key, r), r;
786
827
  };
787
- var __awaiter$x = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
788
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
789
- return new (P || (P = Promise))(function (resolve, reject) {
790
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
791
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
792
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
793
- step((generator = generator.apply(thisArg, _arguments || [])).next());
794
- });
795
- };
796
- var AssetProcessor_1;
797
- const sharp$2 = sharp_;
798
- const fontKit = fontKit_;
799
- const fontTypes = [
800
- "application/font-woff", "application/font-woff2", "application/x-font-opentype", "application/x-font-truetype", "application/x-font-datafork",
801
- "font/woff", "font/woff2", "font/otf", "font/ttf", "font/datafork"
802
- ];
803
- const imageTypes = ["image/jpeg", "image/jpg", "image/png", "image/svg+xml"];
804
- const fontProps = [
805
- "postscriptName", "fullName", "familyName", "subfamilyName",
806
- "copyright", "version", "unitsPerEm", "ascent", "descent", "lineGap",
807
- "underlinePosition", "underlineThickness", "italicAngle", "capHeight",
808
- "xHeight", "numGlyphs", "characterSet", "availableFeatures"
809
- ];
810
- let AssetProcessor = AssetProcessor_1 = class AssetProcessor {
811
- static checkTextFileType(type) {
812
- return type.mime.indexOf("text") >= 0 || type.mime.indexOf("xml") >= 0;
813
- }
814
- static fixTextFileType(type, buffer) {
815
- const text = buffer.toString("utf8");
816
- if (text.indexOf("<svg") >= 0) {
817
- return { ext: "svg", mime: "image/svg+xml" };
818
- }
819
- return type;
820
- }
821
- static fileTypeFromBuffer(buffer) {
822
- var _a;
823
- return __awaiter$x(this, void 0, void 0, function* () {
824
- const type = ((_a = yield fromBuffer(buffer)) !== null && _a !== void 0 ? _a : { ext: "txt", mime: "text/plain" });
825
- if (AssetProcessor_1.checkTextFileType(type)) {
826
- return AssetProcessor_1.fixTextFileType(type, buffer);
827
- }
828
- return type;
829
- });
830
- }
831
- static extractFontFormat(font) {
832
- const name = font.constructor.name;
833
- const tag = font["directory"].tag;
834
- switch (name) {
835
- case "TTFFont":
836
- return tag === "OTTO" ? "opentype" : "truetype";
837
- case "WOFF2Font":
838
- return "woff2";
839
- case "WOFFFont":
840
- return "woff";
841
- case "DFont":
842
- return "datafork";
843
- }
844
- return null;
845
- }
846
- static isImage(contentType) {
847
- return imageTypes.indexOf(contentType) >= 0;
848
- }
849
- static copyImageMeta(buffer, metadata, fileType) {
850
- return __awaiter$x(this, void 0, void 0, function* () {
851
- if (fileType.mime === "image/svg+xml") {
852
- const match = /<svg([^<>]+)>/gi.exec(buffer.toString("utf8"));
853
- if (match && match.length > 1) {
854
- const attrs = match[1].match(/([a-z]+)="([^"]+)"/gi);
855
- attrs.forEach(attr => {
856
- if (attr.length < 5)
857
- return;
858
- const [name, value] = attr.split("=");
859
- const val = value.replace(/"/gi, "");
860
- metadata[name] = isNaN(val) ? val : Number(val);
861
- });
862
- if (metadata.viewBox && (isNaN(metadata.width) || isNaN(metadata.height))) {
863
- const parts = metadata.viewBox.split(" ");
864
- metadata.width = Number(parts[0]) + Number(parts[2]);
865
- metadata.height = Number(parts[1]) + Number(parts[3]);
866
- }
867
- if (!isNaN(metadata.width) && !isNaN(metadata.height)) {
868
- metadata.svgSize = { x: metadata.width, y: metadata.height };
869
- }
870
- }
871
- return buffer;
872
- }
873
- const output = yield sharp$2(buffer).rotate().toBuffer({ resolveWithObject: true });
874
- Object.assign(metadata, output.info);
875
- return output.data;
876
- });
877
- }
878
- static isFont(contentType) {
879
- return fontTypes.indexOf(contentType) >= 0;
880
- }
881
- static copyFontMeta(buffer, metadata) {
882
- const font = fontKit.create(buffer);
883
- metadata.format = AssetProcessor_1.extractFontFormat(font);
884
- fontProps.forEach(prop => {
885
- metadata[prop] = font[prop];
886
- });
887
- }
888
- process(buffer, metadata, fileType) {
889
- return __awaiter$x(this, void 0, void 0, function* () {
890
- if (AssetProcessor_1.isImage(fileType.mime)) {
891
- buffer = yield AssetProcessor_1.copyImageMeta(buffer, metadata, fileType);
892
- }
893
- if (AssetProcessor_1.isFont(fileType.mime)) {
894
- AssetProcessor_1.copyFontMeta(buffer, metadata);
895
- }
896
- return buffer;
897
- });
898
- }
899
- };
900
- AssetProcessor = AssetProcessor_1 = __decorate$y([
901
- injectable(),
902
- scoped(Lifecycle.ContainerScoped)
903
- ], AssetProcessor);
904
-
905
- var __decorate$x = (this && this.__decorate) || function (decorators, target, key, desc) {
906
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
907
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
908
- 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
- return c > 3 && r && Object.defineProperty(target, key, r), r;
910
- };
911
- var __metadata$q = (this && this.__metadata) || function (k, v) {
828
+ var __metadata$u = (this && this.__metadata) || function (k, v) {
912
829
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
913
830
  };
914
- var __param$8 = (this && this.__param) || function (paramIndex, decorator) {
831
+ var __param$9 = (this && this.__param) || function (paramIndex, decorator) {
915
832
  return function (target, key) { decorator(target, key, paramIndex); }
916
833
  };
917
834
  let Configuration = class Configuration {
918
835
  constructor(params) {
919
836
  dotenv.config();
920
837
  this.paramMap = {};
838
+ this.paramValues = {};
921
839
  (params || []).forEach(param => this.add(param));
922
840
  }
923
841
  add(param) {
@@ -926,13 +844,7 @@ let Configuration = class Configuration {
926
844
  existingParam.resolver = param.resolver || existingParam.resolver;
927
845
  this.paramMap[param.name] = existingParam;
928
846
  }
929
- hasParam(name) {
930
- return !!this.paramMap[name];
931
- }
932
- resolve(name) {
933
- const param = this.paramMap[name];
934
- if (!param)
935
- throw new Error(`Parameter with name: '${name}' does not exists in configuration`);
847
+ resolveValue(param) {
936
848
  const envName = param.name.replace(/\.?([A-Z|0-9]+)/g, function (x, y) {
937
849
  return "_" + y.toLowerCase();
938
850
  }).replace(/\./gi, "_").replace(/^_/, "").toUpperCase();
@@ -941,26 +853,37 @@ let Configuration = class Configuration {
941
853
  const value = isFunction(param.resolver)
942
854
  ? param.resolver(envValue)
943
855
  : convertValue(envValue, getType(param.defaultValue));
944
- console.log(`Processing param value`, name, envName, envValue, value);
856
+ console.log(`Processing param value`, colorize(param.name, ConsoleColor.FgGreen), colorize(envName, ConsoleColor.FgBlue), `"${envValue}"`, value);
945
857
  return value;
946
858
  }
947
859
  return param.defaultValue;
948
860
  }
861
+ hasParam(name) {
862
+ return !!this.paramMap[name];
863
+ }
864
+ resolve(name) {
865
+ const param = this.paramMap[name];
866
+ if (!param)
867
+ throw new Error(`Parameter with name: '${name}' does not exists in configuration`);
868
+ if (!(name in this.paramValues)) {
869
+ this.paramValues[name] = this.resolveValue(param);
870
+ }
871
+ return this.paramValues[name];
872
+ }
949
873
  };
950
- Configuration = __decorate$x([
951
- injectable(),
952
- scoped(Lifecycle.ContainerScoped),
953
- __param$8(0, injectAll(PARAMETER)),
954
- __metadata$q("design:paramtypes", [Array])
874
+ Configuration = __decorate$A([
875
+ singleton(),
876
+ __param$9(0, injectAll(PARAMETER)),
877
+ __metadata$u("design:paramtypes", [Array])
955
878
  ], Configuration);
956
879
 
957
- var __decorate$w = (this && this.__decorate) || function (decorators, target, key, desc) {
880
+ var __decorate$z = (this && this.__decorate) || function (decorators, target, key, desc) {
958
881
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
959
882
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
960
883
  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;
961
884
  return c > 3 && r && Object.defineProperty(target, key, r), r;
962
885
  };
963
- var __metadata$p = (this && this.__metadata) || function (k, v) {
886
+ var __metadata$t = (this && this.__metadata) || function (k, v) {
964
887
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
965
888
  };
966
889
  var __awaiter$w = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1002,10 +925,10 @@ let MongoConnector = class MongoConnector {
1002
925
  });
1003
926
  }
1004
927
  };
1005
- MongoConnector = __decorate$w([
928
+ MongoConnector = __decorate$z([
1006
929
  injectable(),
1007
930
  singleton(),
1008
- __metadata$p("design:paramtypes", [Configuration])
931
+ __metadata$t("design:paramtypes", [Configuration])
1009
932
  ], MongoConnector);
1010
933
 
1011
934
  var __awaiter$v = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1165,13 +1088,13 @@ class TempAsset {
1165
1088
  }
1166
1089
  }
1167
1090
 
1168
- var __decorate$v = (this && this.__decorate) || function (decorators, target, key, desc) {
1091
+ var __decorate$y = (this && this.__decorate) || function (decorators, target, key, desc) {
1169
1092
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1170
1093
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1171
1094
  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;
1172
1095
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1173
1096
  };
1174
- var __metadata$o = (this && this.__metadata) || function (k, v) {
1097
+ var __metadata$s = (this && this.__metadata) || function (k, v) {
1175
1098
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1176
1099
  };
1177
1100
  var __awaiter$s = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1330,10 +1253,10 @@ let Assets = class Assets {
1330
1253
  });
1331
1254
  }
1332
1255
  };
1333
- Assets = __decorate$v([
1256
+ Assets = __decorate$y([
1334
1257
  injectable(),
1335
1258
  scoped(Lifecycle.ContainerScoped),
1336
- __metadata$o("design:paramtypes", [MongoConnector, AssetProcessor])
1259
+ __metadata$s("design:paramtypes", [MongoConnector, AssetProcessor])
1337
1260
  ], Assets);
1338
1261
 
1339
1262
  var __awaiter$r = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1346,8 +1269,9 @@ var __awaiter$r = (this && this.__awaiter) || function (thisArg, _arguments, P,
1346
1269
  });
1347
1270
  };
1348
1271
  class LazyAsset extends BaseEntity {
1349
- constructor(id, data, collection, assets, progresses) {
1272
+ constructor(id, data, collection, logger, assets, progresses) {
1350
1273
  super(id, data, collection);
1274
+ this.logger = logger;
1351
1275
  this.assets = assets;
1352
1276
  this.progresses = progresses;
1353
1277
  }
@@ -1383,9 +1307,9 @@ class LazyAsset extends BaseEntity {
1383
1307
  p === null || p === void 0 ? void 0 : p.cancel();
1384
1308
  });
1385
1309
  this.startWorkingOnAsset(false).then(() => {
1386
- console.log(`Started working on lazy asset: ${this.id}`);
1310
+ this.logger.log("lazy-assets", `Started working on lazy asset: ${this.id}`);
1387
1311
  }).catch(reason => {
1388
- console.log(`Can't start working on lazy asset: ${this.id}\nReason: ${reason}`);
1312
+ this.logger.log("lazy-assets", `Can't start working on lazy asset: ${this.id}\nReason: ${reason}`);
1389
1313
  });
1390
1314
  });
1391
1315
  }
@@ -1422,16 +1346,42 @@ class LazyAsset extends BaseEntity {
1422
1346
  }
1423
1347
  }
1424
1348
 
1425
- var __decorate$u = (this && this.__decorate) || function (decorators, target, key, desc) {
1349
+ var __decorate$x = (this && this.__decorate) || function (decorators, target, key, desc) {
1426
1350
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1427
1351
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1428
1352
  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;
1429
1353
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1430
1354
  };
1431
- var __metadata$n = (this && this.__metadata) || function (k, v) {
1355
+ var __metadata$r = (this && this.__metadata) || function (k, v) {
1432
1356
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1433
1357
  };
1434
- var __param$7 = (this && this.__param) || function (paramIndex, decorator) {
1358
+ let Logger = class Logger {
1359
+ constructor(config) {
1360
+ this.config = config;
1361
+ console.log("Logger created");
1362
+ this.tags = this.config.resolve("logTags");
1363
+ }
1364
+ log(tag, ...params) {
1365
+ if (!this.tags.includes(tag)) {
1366
+ console.log(`[${tag}]`, ...params);
1367
+ }
1368
+ }
1369
+ };
1370
+ Logger = __decorate$x([
1371
+ singleton(),
1372
+ __metadata$r("design:paramtypes", [Configuration])
1373
+ ], Logger);
1374
+
1375
+ var __decorate$w = (this && this.__decorate) || function (decorators, target, key, desc) {
1376
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1377
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1378
+ 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;
1379
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1380
+ };
1381
+ var __metadata$q = (this && this.__metadata) || function (k, v) {
1382
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1383
+ };
1384
+ var __param$8 = (this && this.__param) || function (paramIndex, decorator) {
1435
1385
  return function (target, key) { decorator(target, key, paramIndex); }
1436
1386
  };
1437
1387
  var __awaiter$q = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1444,8 +1394,9 @@ var __awaiter$q = (this && this.__awaiter) || function (thisArg, _arguments, P,
1444
1394
  });
1445
1395
  };
1446
1396
  let JobManager = class JobManager {
1447
- constructor(config, container, jobTypes) {
1397
+ constructor(config, logger, container, jobTypes) {
1448
1398
  this.config = config;
1399
+ this.logger = logger;
1449
1400
  this.container = container;
1450
1401
  this.jobTypes = jobTypes || [];
1451
1402
  this.jobs = this.jobTypes.reduce((res, jobType) => {
@@ -1480,7 +1431,7 @@ let JobManager = class JobManager {
1480
1431
  }
1481
1432
  catch (e) {
1482
1433
  const jobName = getConstructorName(jobType);
1483
- throw `Can't resolve params for job: ${jobName}, with params: ${JSON.stringify(params)}. Reason: ${e}`;
1434
+ throw new Error(`Can't resolve params for job: ${jobName}, with params: ${JSON.stringify(params)}. Reason: ${e}`);
1484
1435
  }
1485
1436
  return instance.process();
1486
1437
  });
@@ -1508,12 +1459,12 @@ let JobManager = class JobManager {
1508
1459
  }).join(" ");
1509
1460
  const jobName = getConstructorName(jobType);
1510
1461
  if (!validate(expression)) {
1511
- console.log(`Can't schedule the task: '${jobName}' because time expression is invalid.`);
1462
+ this.logger.log("job-manager", `Can't schedule the task: '${jobName}' because time expression is invalid.`);
1512
1463
  return null;
1513
1464
  }
1514
1465
  return schedule(expression, () => {
1515
1466
  this.enqueue(jobType, params).catch(e => {
1516
- console.log(`Can't enqueue job: '${jobName}' because: ${e}`);
1467
+ this.logger.log("job-manager", `Can't enqueue job: '${jobName}' because: ${e}`);
1517
1468
  });
1518
1469
  });
1519
1470
  }
@@ -1523,18 +1474,18 @@ let JobManager = class JobManager {
1523
1474
  return null;
1524
1475
  this.processing = true;
1525
1476
  if (!this.config.resolve("isWorker")) {
1526
- console.log(colorize(`Processing can not be started because this is NOT a worker process!`, ConsoleColor.FgRed));
1477
+ this.logger.log("job-manager", colorize(`Processing can not be started because this is NOT a worker process!`, ConsoleColor.FgRed));
1527
1478
  return null;
1528
1479
  }
1529
1480
  const host = this.config.resolve("zmqRemoteHost");
1530
1481
  const pushHost = `${host}:${this.config.resolve("zmqBackPort")}`;
1531
1482
  this.workerPush = socket("push");
1532
1483
  yield this.workerPush.connect(pushHost);
1533
- console.log(`Worker producer connected to: ${pushHost}`);
1484
+ this.logger.log("job-manager", `Worker producer connected to: ${pushHost}`);
1534
1485
  const pullHost = `${host}:${this.config.resolve("zmqPort")}`;
1535
1486
  this.workerPull = socket("pull");
1536
1487
  yield this.workerPull.connect(pullHost);
1537
- console.log(`Worker consumer connected to: ${pullHost}`);
1488
+ this.logger.log("job-manager", `Worker consumer connected to: ${pullHost}`);
1538
1489
  this.workerPull.on("message", (name, args, uniqId) => __awaiter$q(this, void 0, void 0, function* () {
1539
1490
  try {
1540
1491
  const jobName = name.toString("utf8");
@@ -1552,7 +1503,7 @@ let JobManager = class JobManager {
1552
1503
  console.timeEnd(uniqueId);
1553
1504
  }
1554
1505
  catch (e) {
1555
- console.log(`Failed to start job: ${e.message}`);
1506
+ this.logger.log("job-manager", `Failed to start job: ${e.message}`);
1556
1507
  }
1557
1508
  }));
1558
1509
  });
@@ -1584,7 +1535,7 @@ let JobManager = class JobManager {
1584
1535
  const port = this.config.resolve("zmqPort");
1585
1536
  this.apiPush = socket("push");
1586
1537
  this.apiPush.bind(`tcp://0.0.0.0:${port}`);
1587
- console.log(`API producer bound to port: ${port}`);
1538
+ this.logger.log("job-manager", `API producer bound to port: ${port}`);
1588
1539
  }
1589
1540
  if (!this.apiPull) {
1590
1541
  const backPort = this.config.resolve("zmqBackPort");
@@ -1597,10 +1548,10 @@ let JobManager = class JobManager {
1597
1548
  res[key] = getType(params[key]);
1598
1549
  return res;
1599
1550
  }, {});
1600
- console.log(`Received a message from worker: "${colorize(message, ConsoleColor.FgCyan)}" with args: ${jsonHighlight(paramTypes)}\n\n`);
1551
+ this.logger.log("job-manager", `Received a message from worker: "${colorize(message, ConsoleColor.FgCyan)}" with args: ${jsonHighlight(paramTypes)}\n\n`);
1601
1552
  this.messages.next({ message, params });
1602
1553
  });
1603
- console.log(`API consumer bound to port: ${backPort}`);
1554
+ this.logger.log("job-manager", `API consumer bound to port: ${backPort}`);
1604
1555
  }
1605
1556
  return this.tryResolve(jobType, params);
1606
1557
  }
@@ -1622,11 +1573,13 @@ let JobManager = class JobManager {
1622
1573
  });
1623
1574
  }
1624
1575
  };
1625
- JobManager = __decorate$u([
1576
+ JobManager = __decorate$w([
1626
1577
  injectable(),
1627
1578
  scoped(Lifecycle.ContainerScoped),
1628
- __param$7(1, inject(DI_CONTAINER)), __param$7(2, injectAll(JOB)),
1629
- __metadata$n("design:paramtypes", [Configuration, Object, Array])
1579
+ __param$8(2, inject(DI_CONTAINER)),
1580
+ __param$8(3, injectAll(JOB)),
1581
+ __metadata$q("design:paramtypes", [Configuration,
1582
+ Logger, Object, Array])
1630
1583
  ], JobManager);
1631
1584
 
1632
1585
  var __awaiter$p = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1839,13 +1792,13 @@ class SubProgress {
1839
1792
  }
1840
1793
  }
1841
1794
 
1842
- var __decorate$t = (this && this.__decorate) || function (decorators, target, key, desc) {
1795
+ var __decorate$v = (this && this.__decorate) || function (decorators, target, key, desc) {
1843
1796
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1844
1797
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1845
1798
  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;
1846
1799
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1847
1800
  };
1848
- var __metadata$m = (this && this.__metadata) || function (k, v) {
1801
+ var __metadata$p = (this && this.__metadata) || function (k, v) {
1849
1802
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1850
1803
  };
1851
1804
  var __awaiter$o = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1945,19 +1898,19 @@ let Progresses = class Progresses {
1945
1898
  });
1946
1899
  }
1947
1900
  };
1948
- Progresses = __decorate$t([
1901
+ Progresses = __decorate$v([
1949
1902
  injectable(),
1950
1903
  singleton(),
1951
- __metadata$m("design:paramtypes", [MongoConnector, JobManager])
1904
+ __metadata$p("design:paramtypes", [MongoConnector, JobManager])
1952
1905
  ], Progresses);
1953
1906
 
1954
- var __decorate$s = (this && this.__decorate) || function (decorators, target, key, desc) {
1907
+ var __decorate$u = (this && this.__decorate) || function (decorators, target, key, desc) {
1955
1908
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1956
1909
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1957
1910
  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;
1958
1911
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1959
1912
  };
1960
- var __metadata$l = (this && this.__metadata) || function (k, v) {
1913
+ var __metadata$o = (this && this.__metadata) || function (k, v) {
1961
1914
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1962
1915
  };
1963
1916
  var __awaiter$n = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1970,10 +1923,11 @@ var __awaiter$n = (this && this.__awaiter) || function (thisArg, _arguments, P,
1970
1923
  });
1971
1924
  };
1972
1925
  let LazyAssets = class LazyAssets {
1973
- constructor(connector, assets, progresses, jobMan) {
1926
+ constructor(connector, assets, progresses, logger, jobMan) {
1974
1927
  this.connector = connector;
1975
1928
  this.assets = assets;
1976
1929
  this.progresses = progresses;
1930
+ this.logger = logger;
1977
1931
  this.jobMan = jobMan;
1978
1932
  this.collection = connector.database.collection("lazyassets");
1979
1933
  }
@@ -1989,7 +1943,7 @@ let LazyAssets = class LazyAssets {
1989
1943
  if (existingAsset)
1990
1944
  return existingAsset;
1991
1945
  const res = yield this.collection.insertOne(data);
1992
- return new LazyAsset(res.insertedId, data, this.collection, this.assets, this.progresses);
1946
+ return new LazyAsset(res.insertedId, data, this.collection, this.logger, this.assets, this.progresses);
1993
1947
  });
1994
1948
  }
1995
1949
  read(id) {
@@ -2002,7 +1956,7 @@ let LazyAssets = class LazyAssets {
2002
1956
  const data = yield this.collection.findOne(where);
2003
1957
  return !data
2004
1958
  ? null
2005
- : new LazyAsset(data._id, data, this.collection, this.assets, this.progresses);
1959
+ : new LazyAsset(data._id, data, this.collection, this.logger, this.assets, this.progresses);
2006
1960
  });
2007
1961
  }
2008
1962
  unlink(id) {
@@ -2014,22 +1968,23 @@ let LazyAssets = class LazyAssets {
2014
1968
  });
2015
1969
  }
2016
1970
  };
2017
- LazyAssets = __decorate$s([
1971
+ LazyAssets = __decorate$u([
2018
1972
  injectable(),
2019
1973
  scoped(Lifecycle.ContainerScoped),
2020
- __metadata$l("design:paramtypes", [MongoConnector,
1974
+ __metadata$o("design:paramtypes", [MongoConnector,
2021
1975
  Assets,
2022
1976
  Progresses,
1977
+ Logger,
2023
1978
  JobManager])
2024
1979
  ], LazyAssets);
2025
1980
 
2026
- var __decorate$r = (this && this.__decorate) || function (decorators, target, key, desc) {
1981
+ var __decorate$t = (this && this.__decorate) || function (decorators, target, key, desc) {
2027
1982
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2028
1983
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2029
1984
  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;
2030
1985
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2031
1986
  };
2032
- var __metadata$k = (this && this.__metadata) || function (k, v) {
1987
+ var __metadata$n = (this && this.__metadata) || function (k, v) {
2033
1988
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2034
1989
  };
2035
1990
  var __awaiter$m = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2066,19 +2021,19 @@ let AssetResolver = class AssetResolver {
2066
2021
  });
2067
2022
  }
2068
2023
  };
2069
- AssetResolver = __decorate$r([
2024
+ AssetResolver = __decorate$t([
2070
2025
  injectable(),
2071
2026
  scoped(Lifecycle.ContainerScoped),
2072
- __metadata$k("design:paramtypes", [Assets, LazyAssets])
2027
+ __metadata$n("design:paramtypes", [Assets, LazyAssets])
2073
2028
  ], AssetResolver);
2074
2029
 
2075
- var __decorate$q = (this && this.__decorate) || function (decorators, target, key, desc) {
2030
+ var __decorate$s = (this && this.__decorate) || function (decorators, target, key, desc) {
2076
2031
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2077
2032
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2078
2033
  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;
2079
2034
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2080
2035
  };
2081
- var __metadata$j = (this && this.__metadata) || function (k, v) {
2036
+ var __metadata$m = (this && this.__metadata) || function (k, v) {
2082
2037
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2083
2038
  };
2084
2039
  const express = express_;
@@ -2094,13 +2049,13 @@ let BackendProvider = class BackendProvider {
2094
2049
  return this.ioServer;
2095
2050
  }
2096
2051
  };
2097
- BackendProvider = __decorate$q([
2052
+ BackendProvider = __decorate$s([
2098
2053
  injectable(),
2099
2054
  singleton(),
2100
- __metadata$j("design:paramtypes", [])
2055
+ __metadata$m("design:paramtypes", [])
2101
2056
  ], BackendProvider);
2102
2057
 
2103
- var __decorate$p = (this && this.__decorate) || function (decorators, target, key, desc) {
2058
+ var __decorate$r = (this && this.__decorate) || function (decorators, target, key, desc) {
2104
2059
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2105
2060
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2106
2061
  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;
@@ -2127,18 +2082,18 @@ let CacheProcessor = class CacheProcessor {
2127
2082
  });
2128
2083
  }
2129
2084
  };
2130
- CacheProcessor = __decorate$p([
2085
+ CacheProcessor = __decorate$r([
2131
2086
  injectable(),
2132
2087
  scoped(Lifecycle.ContainerScoped)
2133
2088
  ], CacheProcessor);
2134
2089
 
2135
- var __decorate$o = (this && this.__decorate) || function (decorators, target, key, desc) {
2090
+ var __decorate$q = (this && this.__decorate) || function (decorators, target, key, desc) {
2136
2091
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2137
2092
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2138
2093
  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;
2139
2094
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2140
2095
  };
2141
- var __metadata$i = (this && this.__metadata) || function (k, v) {
2096
+ var __metadata$l = (this && this.__metadata) || function (k, v) {
2142
2097
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2143
2098
  };
2144
2099
  var __awaiter$k = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2215,13 +2170,13 @@ let Cache = class Cache {
2215
2170
  });
2216
2171
  }
2217
2172
  };
2218
- Cache = __decorate$o([
2173
+ Cache = __decorate$q([
2219
2174
  injectable(),
2220
2175
  scoped(Lifecycle.ContainerScoped),
2221
- __metadata$i("design:paramtypes", [MongoConnector, Configuration, CacheProcessor])
2176
+ __metadata$l("design:paramtypes", [MongoConnector, Configuration, CacheProcessor])
2222
2177
  ], Cache);
2223
2178
 
2224
- var __decorate$n = (this && this.__decorate) || function (decorators, target, key, desc) {
2179
+ var __decorate$p = (this && this.__decorate) || function (decorators, target, key, desc) {
2225
2180
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2226
2181
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2227
2182
  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;
@@ -2243,21 +2198,21 @@ let EndpointProvider = class EndpointProvider {
2243
2198
  });
2244
2199
  }
2245
2200
  };
2246
- EndpointProvider = __decorate$n([
2201
+ EndpointProvider = __decorate$p([
2247
2202
  injectable(),
2248
2203
  scoped(Lifecycle.ContainerScoped)
2249
2204
  ], EndpointProvider);
2250
2205
 
2251
- var __decorate$m = (this && this.__decorate) || function (decorators, target, key, desc) {
2206
+ var __decorate$o = (this && this.__decorate) || function (decorators, target, key, desc) {
2252
2207
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2253
2208
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2254
2209
  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;
2255
2210
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2256
2211
  };
2257
- var __metadata$h = (this && this.__metadata) || function (k, v) {
2212
+ var __metadata$k = (this && this.__metadata) || function (k, v) {
2258
2213
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2259
2214
  };
2260
- var __param$6 = (this && this.__param) || function (paramIndex, decorator) {
2215
+ var __param$7 = (this && this.__param) || function (paramIndex, decorator) {
2261
2216
  return function (target, key) { decorator(target, key, paramIndex); }
2262
2217
  };
2263
2218
  var __awaiter$i = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2283,11 +2238,11 @@ let Fixtures = class Fixtures {
2283
2238
  });
2284
2239
  }
2285
2240
  };
2286
- Fixtures = __decorate$m([
2241
+ Fixtures = __decorate$o([
2287
2242
  injectable(),
2288
2243
  scoped(Lifecycle.ContainerScoped),
2289
- __param$6(0, injectAll(FIXTURE)),
2290
- __metadata$h("design:paramtypes", [Array])
2244
+ __param$7(0, injectAll(FIXTURE)),
2245
+ __metadata$k("design:paramtypes", [Array])
2291
2246
  ], Fixtures);
2292
2247
 
2293
2248
  var __awaiter$h = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2336,13 +2291,13 @@ class GalleryImage {
2336
2291
  }
2337
2292
  }
2338
2293
 
2339
- var __decorate$l = (this && this.__decorate) || function (decorators, target, key, desc) {
2294
+ var __decorate$n = (this && this.__decorate) || function (decorators, target, key, desc) {
2340
2295
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2341
2296
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2342
2297
  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;
2343
2298
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2344
2299
  };
2345
- var __metadata$g = (this && this.__metadata) || function (k, v) {
2300
+ var __metadata$j = (this && this.__metadata) || function (k, v) {
2346
2301
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2347
2302
  };
2348
2303
  let GalleryCache = class GalleryCache {
@@ -2363,19 +2318,19 @@ let GalleryCache = class GalleryCache {
2363
2318
  return image;
2364
2319
  }
2365
2320
  };
2366
- GalleryCache = __decorate$l([
2321
+ GalleryCache = __decorate$n([
2367
2322
  injectable(),
2368
2323
  scoped(Lifecycle.ContainerScoped),
2369
- __metadata$g("design:paramtypes", [])
2324
+ __metadata$j("design:paramtypes", [])
2370
2325
  ], GalleryCache);
2371
2326
 
2372
- var __decorate$k = (this && this.__decorate) || function (decorators, target, key, desc) {
2327
+ var __decorate$m = (this && this.__decorate) || function (decorators, target, key, desc) {
2373
2328
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2374
2329
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2375
2330
  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;
2376
2331
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2377
2332
  };
2378
- var __metadata$f = (this && this.__metadata) || function (k, v) {
2333
+ var __metadata$i = (this && this.__metadata) || function (k, v) {
2379
2334
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2380
2335
  };
2381
2336
  var __awaiter$g = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2493,19 +2448,19 @@ let Gallery = class Gallery {
2493
2448
  });
2494
2449
  }
2495
2450
  };
2496
- Gallery = __decorate$k([
2451
+ Gallery = __decorate$m([
2497
2452
  injectable(),
2498
2453
  scoped(Lifecycle.ContainerScoped),
2499
- __metadata$f("design:paramtypes", [Configuration, GalleryCache])
2454
+ __metadata$i("design:paramtypes", [Configuration, GalleryCache])
2500
2455
  ], Gallery);
2501
2456
 
2502
- var __decorate$j = (this && this.__decorate) || function (decorators, target, key, desc) {
2457
+ var __decorate$l = (this && this.__decorate) || function (decorators, target, key, desc) {
2503
2458
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2504
2459
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2505
2460
  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;
2506
2461
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2507
2462
  };
2508
- var __metadata$e = (this && this.__metadata) || function (k, v) {
2463
+ var __metadata$h = (this && this.__metadata) || function (k, v) {
2509
2464
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2510
2465
  };
2511
2466
  var __awaiter$f = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2552,19 +2507,19 @@ let IdGenerator = class IdGenerator {
2552
2507
  }).join(this.separator);
2553
2508
  }
2554
2509
  };
2555
- IdGenerator = __decorate$j([
2510
+ IdGenerator = __decorate$l([
2556
2511
  injectable(),
2557
2512
  scoped(Lifecycle.ContainerScoped),
2558
- __metadata$e("design:paramtypes", [Configuration])
2513
+ __metadata$h("design:paramtypes", [Configuration])
2559
2514
  ], IdGenerator);
2560
2515
 
2561
- var __decorate$i = (this && this.__decorate) || function (decorators, target, key, desc) {
2516
+ var __decorate$k = (this && this.__decorate) || function (decorators, target, key, desc) {
2562
2517
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2563
2518
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2564
2519
  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;
2565
2520
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2566
2521
  };
2567
- var __metadata$d = (this && this.__metadata) || function (k, v) {
2522
+ var __metadata$g = (this && this.__metadata) || function (k, v) {
2568
2523
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2569
2524
  };
2570
2525
  let TranslationProvider = class TranslationProvider {
@@ -2579,19 +2534,19 @@ let TranslationProvider = class TranslationProvider {
2579
2534
  return this.cache[language];
2580
2535
  }
2581
2536
  };
2582
- TranslationProvider = __decorate$i([
2537
+ TranslationProvider = __decorate$k([
2583
2538
  injectable(),
2584
2539
  singleton(),
2585
- __metadata$d("design:paramtypes", [Configuration])
2540
+ __metadata$g("design:paramtypes", [Configuration])
2586
2541
  ], TranslationProvider);
2587
2542
 
2588
- var __decorate$h = (this && this.__decorate) || function (decorators, target, key, desc) {
2543
+ var __decorate$j = (this && this.__decorate) || function (decorators, target, key, desc) {
2589
2544
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2590
2545
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2591
2546
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2592
2547
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2593
2548
  };
2594
- var __metadata$c = (this && this.__metadata) || function (k, v) {
2549
+ var __metadata$f = (this && this.__metadata) || function (k, v) {
2595
2550
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2596
2551
  };
2597
2552
  var __awaiter$e = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2660,19 +2615,19 @@ let Translator = class Translator {
2660
2615
  });
2661
2616
  }
2662
2617
  };
2663
- Translator = __decorate$h([
2618
+ Translator = __decorate$j([
2664
2619
  injectable(),
2665
2620
  singleton(),
2666
- __metadata$c("design:paramtypes", [TranslationProvider])
2621
+ __metadata$f("design:paramtypes", [TranslationProvider])
2667
2622
  ], Translator);
2668
2623
 
2669
- var __decorate$g = (this && this.__decorate) || function (decorators, target, key, desc) {
2624
+ var __decorate$i = (this && this.__decorate) || function (decorators, target, key, desc) {
2670
2625
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2671
2626
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2672
2627
  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;
2673
2628
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2674
2629
  };
2675
- var __metadata$b = (this && this.__metadata) || function (k, v) {
2630
+ var __metadata$e = (this && this.__metadata) || function (k, v) {
2676
2631
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2677
2632
  };
2678
2633
  var __awaiter$d = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2742,19 +2697,19 @@ let TemplateRenderer = class TemplateRenderer {
2742
2697
  });
2743
2698
  }
2744
2699
  };
2745
- TemplateRenderer = __decorate$g([
2700
+ TemplateRenderer = __decorate$i([
2746
2701
  injectable(),
2747
2702
  singleton(),
2748
- __metadata$b("design:paramtypes", [Translator, Configuration])
2703
+ __metadata$e("design:paramtypes", [Translator, Configuration])
2749
2704
  ], TemplateRenderer);
2750
2705
 
2751
- var __decorate$f = (this && this.__decorate) || function (decorators, target, key, desc) {
2706
+ var __decorate$h = (this && this.__decorate) || function (decorators, target, key, desc) {
2752
2707
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2753
2708
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2754
2709
  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;
2755
2710
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2756
2711
  };
2757
- var __metadata$a = (this && this.__metadata) || function (k, v) {
2712
+ var __metadata$d = (this && this.__metadata) || function (k, v) {
2758
2713
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2759
2714
  };
2760
2715
  var __awaiter$c = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2796,19 +2751,19 @@ let MailSender = class MailSender {
2796
2751
  });
2797
2752
  }
2798
2753
  };
2799
- MailSender = __decorate$f([
2754
+ MailSender = __decorate$h([
2800
2755
  injectable(),
2801
2756
  singleton(),
2802
- __metadata$a("design:paramtypes", [Configuration, TemplateRenderer])
2757
+ __metadata$d("design:paramtypes", [Configuration, TemplateRenderer])
2803
2758
  ], MailSender);
2804
2759
 
2805
- var __decorate$e = (this && this.__decorate) || function (decorators, target, key, desc) {
2760
+ var __decorate$g = (this && this.__decorate) || function (decorators, target, key, desc) {
2806
2761
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2807
2762
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2808
2763
  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
2764
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2810
2765
  };
2811
- var __metadata$9 = (this && this.__metadata) || function (k, v) {
2766
+ var __metadata$c = (this && this.__metadata) || function (k, v) {
2812
2767
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2813
2768
  };
2814
2769
  var __awaiter$b = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2877,12 +2832,125 @@ let MemoryCache = class MemoryCache {
2877
2832
  });
2878
2833
  }
2879
2834
  };
2880
- MemoryCache = __decorate$e([
2835
+ MemoryCache = __decorate$g([
2881
2836
  injectable(),
2882
2837
  scoped(Lifecycle.ContainerScoped),
2883
- __metadata$9("design:paramtypes", [Cache])
2838
+ __metadata$c("design:paramtypes", [Cache])
2884
2839
  ], MemoryCache);
2885
2840
 
2841
+ var __decorate$f = (this && this.__decorate) || function (decorators, target, key, desc) {
2842
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2843
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2844
+ 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;
2845
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2846
+ };
2847
+ function checkValue(multi, value) {
2848
+ if (multi) {
2849
+ return Array.isArray(value) && value.every(v => {
2850
+ try {
2851
+ const id = new ObjectId$1(v);
2852
+ return id instanceof ObjectId$1;
2853
+ }
2854
+ catch (e) {
2855
+ return false;
2856
+ }
2857
+ });
2858
+ }
2859
+ if (null === value)
2860
+ return true;
2861
+ try {
2862
+ const id = new ObjectId$1(value);
2863
+ return id instanceof ObjectId$1;
2864
+ }
2865
+ catch (e) {
2866
+ return false;
2867
+ }
2868
+ }
2869
+ let IsFile = class IsFile {
2870
+ validate(value, validationArguments) {
2871
+ const [multi] = (validationArguments.constraints || []);
2872
+ return checkValue(multi, value);
2873
+ }
2874
+ };
2875
+ IsFile = __decorate$f([
2876
+ ValidatorConstraint()
2877
+ ], IsFile);
2878
+ let IsObjectId = class IsObjectId {
2879
+ validate(value, validationArguments) {
2880
+ const [_, multi] = (validationArguments.constraints || []);
2881
+ return checkValue(multi, value);
2882
+ }
2883
+ };
2884
+ IsObjectId = __decorate$f([
2885
+ ValidatorConstraint()
2886
+ ], IsObjectId);
2887
+
2888
+ var __decorate$e = (this && this.__decorate) || function (decorators, target, key, desc) {
2889
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2890
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2891
+ 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;
2892
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
2893
+ };
2894
+ var __metadata$b = (this && this.__metadata) || function (k, v) {
2895
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2896
+ };
2897
+ var __param$6 = (this && this.__param) || function (paramIndex, decorator) {
2898
+ return function (target, key) { decorator(target, key, paramIndex); }
2899
+ };
2900
+ let OpenApi = class OpenApi {
2901
+ constructor(customValidation = null) {
2902
+ this.customValidation = customValidation;
2903
+ this.docs = null;
2904
+ }
2905
+ get apiDocs() {
2906
+ if (!this.docs)
2907
+ this.docs = this.createApiDocs();
2908
+ return this.docs;
2909
+ }
2910
+ get apiDocsStr() {
2911
+ if (!this.docsStr)
2912
+ this.docsStr = JSON.stringify(this.apiDocs);
2913
+ return this.docsStr;
2914
+ }
2915
+ createApiDocs() {
2916
+ const storage = getMetadataArgsStorage();
2917
+ const docs = routingControllersToSpec(storage);
2918
+ docs.basePath = "/api/";
2919
+ docs.definitions = validationMetadatasToSchemas({
2920
+ classTransformerMetadataStorage: defaultMetadataStorage,
2921
+ additionalConverters: {
2922
+ [ValidationTypes.CUSTOM_VALIDATION]: (meta, options) => {
2923
+ const res = isFunction(this.customValidation) ? this.customValidation(meta, options) : this.customValidation;
2924
+ if (isObject(res))
2925
+ return res;
2926
+ const constraints = meta.constraints || [];
2927
+ if (meta.constraintCls === IsFile) {
2928
+ return {
2929
+ multi: constraints[0] || false,
2930
+ type: "file"
2931
+ };
2932
+ }
2933
+ if (meta.constraintCls === IsObjectId) {
2934
+ return {
2935
+ endpoint: constraints[0] || false,
2936
+ multi: constraints[1] || false,
2937
+ type: "list"
2938
+ };
2939
+ }
2940
+ return null;
2941
+ }
2942
+ }
2943
+ });
2944
+ docs.components.schemas = docs.definitions;
2945
+ return docs;
2946
+ }
2947
+ };
2948
+ OpenApi = __decorate$e([
2949
+ singleton(),
2950
+ __param$6(0, inject(OPENAPI_VALIDATION)),
2951
+ __metadata$b("design:paramtypes", [Object])
2952
+ ], OpenApi);
2953
+
2886
2954
  var __decorate$d = (this && this.__decorate) || function (decorators, target, key, desc) {
2887
2955
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2888
2956
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -2934,7 +3002,7 @@ var __decorate$c = (this && this.__decorate) || function (decorators, target, ke
2934
3002
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2935
3003
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2936
3004
  };
2937
- var __metadata$8 = (this && this.__metadata) || function (k, v) {
3005
+ var __metadata$a = (this && this.__metadata) || function (k, v) {
2938
3006
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2939
3007
  };
2940
3008
  class AssetImageParams {
@@ -2954,47 +3022,47 @@ __decorate$c([
2954
3022
  Min(-360),
2955
3023
  Max(360),
2956
3024
  IsOptional(),
2957
- __metadata$8("design:type", Number)
3025
+ __metadata$a("design:type", Number)
2958
3026
  ], AssetImageParams.prototype, "rotation", void 0);
2959
3027
  __decorate$c([
2960
3028
  Min(0.0001),
2961
3029
  IsOptional(),
2962
- __metadata$8("design:type", Number)
3030
+ __metadata$a("design:type", Number)
2963
3031
  ], AssetImageParams.prototype, "canvasScaleX", void 0);
2964
3032
  __decorate$c([
2965
3033
  Min(0.0001),
2966
3034
  IsOptional(),
2967
- __metadata$8("design:type", Number)
3035
+ __metadata$a("design:type", Number)
2968
3036
  ], AssetImageParams.prototype, "canvasScaleY", void 0);
2969
3037
  __decorate$c([
2970
3038
  Min(0.0001),
2971
3039
  IsOptional(),
2972
- __metadata$8("design:type", Number)
3040
+ __metadata$a("design:type", Number)
2973
3041
  ], AssetImageParams.prototype, "scaleX", void 0);
2974
3042
  __decorate$c([
2975
3043
  Min(0.0001),
2976
3044
  IsOptional(),
2977
- __metadata$8("design:type", Number)
3045
+ __metadata$a("design:type", Number)
2978
3046
  ], AssetImageParams.prototype, "scaleY", void 0);
2979
3047
  __decorate$c([
2980
3048
  IsBoolean(),
2981
3049
  IsOptional(),
2982
- __metadata$8("design:type", Boolean)
3050
+ __metadata$a("design:type", Boolean)
2983
3051
  ], AssetImageParams.prototype, "lazy", void 0);
2984
3052
  __decorate$c([
2985
3053
  IsBoolean(),
2986
3054
  IsOptional(),
2987
- __metadata$8("design:type", Boolean)
3055
+ __metadata$a("design:type", Boolean)
2988
3056
  ], AssetImageParams.prototype, "crop", void 0);
2989
3057
  __decorate$c([
2990
3058
  IsBoolean(),
2991
3059
  IsOptional(),
2992
- __metadata$8("design:type", Boolean)
3060
+ __metadata$a("design:type", Boolean)
2993
3061
  ], AssetImageParams.prototype, "cropBefore", void 0);
2994
3062
  __decorate$c([
2995
3063
  IsBoolean(),
2996
3064
  IsOptional(),
2997
- __metadata$8("design:type", Boolean)
3065
+ __metadata$a("design:type", Boolean)
2998
3066
  ], AssetImageParams.prototype, "cropAfter", void 0);
2999
3067
 
3000
3068
  var __decorate$b = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -3003,7 +3071,7 @@ var __decorate$b = (this && this.__decorate) || function (decorators, target, ke
3003
3071
  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;
3004
3072
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3005
3073
  };
3006
- var __metadata$7 = (this && this.__metadata) || function (k, v) {
3074
+ var __metadata$9 = (this && this.__metadata) || function (k, v) {
3007
3075
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3008
3076
  };
3009
3077
  var __param$5 = (this && this.__param) || function (paramIndex, decorator) {
@@ -3118,57 +3186,57 @@ __decorate$b([
3118
3186
  Authorized(),
3119
3187
  Post(""),
3120
3188
  __param$5(0, UploadedFile("file")),
3121
- __metadata$7("design:type", Function),
3122
- __metadata$7("design:paramtypes", [Object]),
3123
- __metadata$7("design:returntype", Promise)
3189
+ __metadata$9("design:type", Function),
3190
+ __metadata$9("design:paramtypes", [Object]),
3191
+ __metadata$9("design:returntype", Promise)
3124
3192
  ], AssetsController.prototype, "upload", null);
3125
3193
  __decorate$b([
3126
3194
  Authorized(),
3127
3195
  Post("url"),
3128
3196
  __param$5(0, Body()),
3129
- __metadata$7("design:type", Function),
3130
- __metadata$7("design:paramtypes", [Object]),
3131
- __metadata$7("design:returntype", Promise)
3197
+ __metadata$9("design:type", Function),
3198
+ __metadata$9("design:paramtypes", [Object]),
3199
+ __metadata$9("design:returntype", Promise)
3132
3200
  ], AssetsController.prototype, "uploadUrl", null);
3133
3201
  __decorate$b([
3134
3202
  Get("/:id"),
3135
3203
  __param$5(0, Param("id")), __param$5(1, QueryParam("lazy")), __param$5(2, Res()),
3136
- __metadata$7("design:type", Function),
3137
- __metadata$7("design:paramtypes", [String, Boolean, Object]),
3138
- __metadata$7("design:returntype", Promise)
3204
+ __metadata$9("design:type", Function),
3205
+ __metadata$9("design:paramtypes", [String, Boolean, Object]),
3206
+ __metadata$9("design:returntype", Promise)
3139
3207
  ], AssetsController.prototype, "getFile", null);
3140
3208
  __decorate$b([
3141
3209
  Get("/image/:id/:rotation"),
3142
3210
  __param$5(0, Param("id")), __param$5(1, QueryParams()), __param$5(2, Res()), __param$5(3, Param("rotation")),
3143
- __metadata$7("design:type", Function),
3144
- __metadata$7("design:paramtypes", [String, AssetImageParams, Object, Number]),
3145
- __metadata$7("design:returntype", Promise)
3211
+ __metadata$9("design:type", Function),
3212
+ __metadata$9("design:paramtypes", [String, AssetImageParams, Object, Number]),
3213
+ __metadata$9("design:returntype", Promise)
3146
3214
  ], AssetsController.prototype, "getImageRotation", null);
3147
3215
  __decorate$b([
3148
3216
  Get("/image/:id"),
3149
3217
  __param$5(0, Param("id")), __param$5(1, QueryParams()), __param$5(2, Res()),
3150
- __metadata$7("design:type", Function),
3151
- __metadata$7("design:paramtypes", [String, AssetImageParams, Object]),
3152
- __metadata$7("design:returntype", Promise)
3218
+ __metadata$9("design:type", Function),
3219
+ __metadata$9("design:paramtypes", [String, AssetImageParams, Object]),
3220
+ __metadata$9("design:returntype", Promise)
3153
3221
  ], AssetsController.prototype, "getImage", null);
3154
3222
  __decorate$b([
3155
3223
  Get("/by-name/:name"),
3156
3224
  __param$5(0, Param("name")), __param$5(1, Res()),
3157
- __metadata$7("design:type", Function),
3158
- __metadata$7("design:paramtypes", [String, Object]),
3159
- __metadata$7("design:returntype", Promise)
3225
+ __metadata$9("design:type", Function),
3226
+ __metadata$9("design:paramtypes", [String, Object]),
3227
+ __metadata$9("design:returntype", Promise)
3160
3228
  ], AssetsController.prototype, "getFileByName", null);
3161
3229
  __decorate$b([
3162
3230
  Get("/by-name/image/:name"),
3163
3231
  __param$5(0, Param("name")), __param$5(1, QueryParams()), __param$5(2, Res()),
3164
- __metadata$7("design:type", Function),
3165
- __metadata$7("design:paramtypes", [String, AssetImageParams, Object]),
3166
- __metadata$7("design:returntype", Promise)
3232
+ __metadata$9("design:type", Function),
3233
+ __metadata$9("design:paramtypes", [String, AssetImageParams, Object]),
3234
+ __metadata$9("design:returntype", Promise)
3167
3235
  ], AssetsController.prototype, "getImageByName", null);
3168
3236
  AssetsController = __decorate$b([
3169
3237
  injectable(),
3170
3238
  Controller("/assets"),
3171
- __metadata$7("design:paramtypes", [Assets, AssetResolver])
3239
+ __metadata$9("design:paramtypes", [Assets, AssetResolver])
3172
3240
  ], AssetsController);
3173
3241
 
3174
3242
  var __decorate$a = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -3177,7 +3245,7 @@ var __decorate$a = (this && this.__decorate) || function (decorators, target, ke
3177
3245
  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;
3178
3246
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3179
3247
  };
3180
- var __metadata$6 = (this && this.__metadata) || function (k, v) {
3248
+ var __metadata$8 = (this && this.__metadata) || function (k, v) {
3181
3249
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3182
3250
  };
3183
3251
  var __param$4 = (this && this.__param) || function (paramIndex, decorator) {
@@ -3222,22 +3290,22 @@ let AuthController = class AuthController {
3222
3290
  __decorate$a([
3223
3291
  Post("/login"),
3224
3292
  __param$4(0, Body()), __param$4(1, Res()),
3225
- __metadata$6("design:type", Function),
3226
- __metadata$6("design:paramtypes", [Object, Object]),
3227
- __metadata$6("design:returntype", Promise)
3293
+ __metadata$8("design:type", Function),
3294
+ __metadata$8("design:paramtypes", [Object, Object]),
3295
+ __metadata$8("design:returntype", Promise)
3228
3296
  ], AuthController.prototype, "login", null);
3229
3297
  __decorate$a([
3230
3298
  Authorized(),
3231
3299
  Get("/user"),
3232
3300
  __param$4(0, CurrentUser()),
3233
- __metadata$6("design:type", Function),
3234
- __metadata$6("design:paramtypes", [Object]),
3235
- __metadata$6("design:returntype", void 0)
3301
+ __metadata$8("design:type", Function),
3302
+ __metadata$8("design:paramtypes", [Object]),
3303
+ __metadata$8("design:returntype", void 0)
3236
3304
  ], AuthController.prototype, "getProfile", null);
3237
3305
  AuthController = __decorate$a([
3238
3306
  injectable(),
3239
3307
  Controller(),
3240
- __metadata$6("design:paramtypes", [Configuration, UserManager])
3308
+ __metadata$8("design:paramtypes", [Configuration, UserManager])
3241
3309
  ], AuthController);
3242
3310
 
3243
3311
  var __decorate$9 = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -3246,7 +3314,7 @@ var __decorate$9 = (this && this.__decorate) || function (decorators, target, ke
3246
3314
  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;
3247
3315
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3248
3316
  };
3249
- var __metadata$5 = (this && this.__metadata) || function (k, v) {
3317
+ var __metadata$7 = (this && this.__metadata) || function (k, v) {
3250
3318
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3251
3319
  };
3252
3320
  var __param$3 = (this && this.__param) || function (paramIndex, decorator) {
@@ -3263,14 +3331,14 @@ let GalleryController = class GalleryController {
3263
3331
  __decorate$9([
3264
3332
  Get("/:id"),
3265
3333
  __param$3(0, Param("id")),
3266
- __metadata$5("design:type", Function),
3267
- __metadata$5("design:paramtypes", [String]),
3268
- __metadata$5("design:returntype", void 0)
3334
+ __metadata$7("design:type", Function),
3335
+ __metadata$7("design:paramtypes", [String]),
3336
+ __metadata$7("design:returntype", void 0)
3269
3337
  ], GalleryController.prototype, "getFile", null);
3270
3338
  GalleryController = __decorate$9([
3271
3339
  injectable(),
3272
3340
  Controller("/gallery"),
3273
- __metadata$5("design:paramtypes", [GalleryCache])
3341
+ __metadata$7("design:paramtypes", [GalleryCache])
3274
3342
  ], GalleryController);
3275
3343
 
3276
3344
  var __decorate$8 = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -3279,7 +3347,7 @@ var __decorate$8 = (this && this.__decorate) || function (decorators, target, ke
3279
3347
  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;
3280
3348
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3281
3349
  };
3282
- var __metadata$4 = (this && this.__metadata) || function (k, v) {
3350
+ var __metadata$6 = (this && this.__metadata) || function (k, v) {
3283
3351
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3284
3352
  };
3285
3353
  var __param$2 = (this && this.__param) || function (paramIndex, decorator) {
@@ -3315,14 +3383,14 @@ let ProgressesController = class ProgressesController {
3315
3383
  __decorate$8([
3316
3384
  Get("/:id"),
3317
3385
  __param$2(0, Param("id")),
3318
- __metadata$4("design:type", Function),
3319
- __metadata$4("design:paramtypes", [String]),
3320
- __metadata$4("design:returntype", Promise)
3386
+ __metadata$6("design:type", Function),
3387
+ __metadata$6("design:paramtypes", [String]),
3388
+ __metadata$6("design:returntype", Promise)
3321
3389
  ], ProgressesController.prototype, "getProgress", null);
3322
3390
  ProgressesController = __decorate$8([
3323
3391
  injectable(),
3324
3392
  Controller("/progresses"),
3325
- __metadata$4("design:paramtypes", [Progresses, Configuration])
3393
+ __metadata$6("design:paramtypes", [Progresses, Configuration])
3326
3394
  ], ProgressesController);
3327
3395
 
3328
3396
  var __decorate$7 = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -3331,7 +3399,7 @@ var __decorate$7 = (this && this.__decorate) || function (decorators, target, ke
3331
3399
  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;
3332
3400
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3333
3401
  };
3334
- var __metadata$3 = (this && this.__metadata) || function (k, v) {
3402
+ var __metadata$5 = (this && this.__metadata) || function (k, v) {
3335
3403
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3336
3404
  };
3337
3405
  var __awaiter$6 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -3370,6 +3438,9 @@ let ErrorHandlerMiddleware = class ErrorHandlerMiddleware {
3370
3438
  result.param = error.message;
3371
3439
  }
3372
3440
  else {
3441
+ if (error instanceof AxiosError) {
3442
+ console.log(error.response);
3443
+ }
3373
3444
  result.message = error.message || (yield this.translator.getTranslation(req.language, "message.form-validation.error"));
3374
3445
  result.errors = error["errors"];
3375
3446
  if (this.isDev) {
@@ -3400,7 +3471,7 @@ let ErrorHandlerMiddleware = class ErrorHandlerMiddleware {
3400
3471
  ErrorHandlerMiddleware = __decorate$7([
3401
3472
  injectable(),
3402
3473
  Middleware({ type: "after" }),
3403
- __metadata$3("design:paramtypes", [Configuration, Translator])
3474
+ __metadata$5("design:paramtypes", [Configuration, Translator])
3404
3475
  ], ErrorHandlerMiddleware);
3405
3476
 
3406
3477
  var __decorate$6 = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -3409,7 +3480,7 @@ var __decorate$6 = (this && this.__decorate) || function (decorators, target, ke
3409
3480
  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;
3410
3481
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3411
3482
  };
3412
- var __metadata$2 = (this && this.__metadata) || function (k, v) {
3483
+ var __metadata$4 = (this && this.__metadata) || function (k, v) {
3413
3484
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3414
3485
  };
3415
3486
  var __param$1 = (this && this.__param) || function (paramIndex, decorator) {
@@ -3428,7 +3499,7 @@ ContainerMiddleware = __decorate$6([
3428
3499
  injectable(),
3429
3500
  Middleware({ type: "before" }),
3430
3501
  __param$1(0, inject(DI_CONTAINER)),
3431
- __metadata$2("design:paramtypes", [Object])
3502
+ __metadata$4("design:paramtypes", [Object])
3432
3503
  ], ContainerMiddleware);
3433
3504
 
3434
3505
  var __decorate$5 = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -3437,7 +3508,7 @@ var __decorate$5 = (this && this.__decorate) || function (decorators, target, ke
3437
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;
3438
3509
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3439
3510
  };
3440
- var __metadata$1 = (this && this.__metadata) || function (k, v) {
3511
+ var __metadata$3 = (this && this.__metadata) || function (k, v) {
3441
3512
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3442
3513
  };
3443
3514
  let LanguageMiddleware = class LanguageMiddleware {
@@ -3452,7 +3523,7 @@ let LanguageMiddleware = class LanguageMiddleware {
3452
3523
  LanguageMiddleware = __decorate$5([
3453
3524
  injectable(),
3454
3525
  Middleware({ type: "before" }),
3455
- __metadata$1("design:paramtypes", [Configuration])
3526
+ __metadata$3("design:paramtypes", [Configuration])
3456
3527
  ], LanguageMiddleware);
3457
3528
 
3458
3529
  var __decorate$4 = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -3461,19 +3532,26 @@ var __decorate$4 = (this && this.__decorate) || function (decorators, target, ke
3461
3532
  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;
3462
3533
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3463
3534
  };
3535
+ var __metadata$2 = (this && this.__metadata) || function (k, v) {
3536
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3537
+ };
3464
3538
  let RequestEndedMiddleware = class RequestEndedMiddleware {
3539
+ constructor(logger) {
3540
+ this.logger = logger;
3541
+ }
3465
3542
  use(request, response, next) {
3466
3543
  request.ended = moment();
3467
3544
  const diff = request.ended.diff(request.started);
3468
3545
  const duration = moment.duration(diff);
3469
- console.log(`Request '${request.id}' ended at: ${request.ended.format("YYYY-MM-DD HH:mm:ss")} [${request.method}] ${request.url}`);
3470
- console.log(`Request '${request.id}' lasted: ${duration.asMilliseconds()}ms`);
3546
+ this.logger.log("request-time", `Request '${request.id}' ended at: ${request.ended.format("YYYY-MM-DD HH:mm:ss")} [${request.method}] ${request.url}`);
3547
+ this.logger.log("request-time", `Request '${request.id}' lasted: ${duration.asMilliseconds()}ms`);
3471
3548
  next(null);
3472
3549
  }
3473
3550
  };
3474
3551
  RequestEndedMiddleware = __decorate$4([
3475
3552
  injectable(),
3476
- Middleware({ type: "after" })
3553
+ Middleware({ type: "after" }),
3554
+ __metadata$2("design:paramtypes", [Logger])
3477
3555
  ], RequestEndedMiddleware);
3478
3556
 
3479
3557
  var __decorate$3 = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -3482,17 +3560,24 @@ var __decorate$3 = (this && this.__decorate) || function (decorators, target, ke
3482
3560
  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;
3483
3561
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3484
3562
  };
3563
+ var __metadata$1 = (this && this.__metadata) || function (k, v) {
3564
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
3565
+ };
3485
3566
  let RequestStartedMiddleware = class RequestStartedMiddleware {
3567
+ constructor(logger) {
3568
+ this.logger = logger;
3569
+ }
3486
3570
  use(request, response, next) {
3487
3571
  request.id = new ObjectId$1().toHexString();
3488
3572
  request.started = moment();
3489
- console.log(`Request '${request.id}' started at: ${request.started.format("YYYY-MM-DD HH:mm:ss")} [${request.method}] ${request.url}`);
3573
+ this.logger.log("request-time", `Request '${request.id}' started at: ${request.started.format("YYYY-MM-DD HH:mm:ss")} [${request.method}] ${request.url}`);
3490
3574
  next(null);
3491
3575
  }
3492
3576
  };
3493
3577
  RequestStartedMiddleware = __decorate$3([
3494
3578
  injectable(),
3495
- Middleware({ type: "before" })
3579
+ Middleware({ type: "before" }),
3580
+ __metadata$1("design:paramtypes", [Logger])
3496
3581
  ], RequestStartedMiddleware);
3497
3582
 
3498
3583
  var __decorate$2 = (this && this.__decorate) || function (decorators, target, key, desc) {
@@ -3587,52 +3672,6 @@ CompressionMiddleware = __decorate$1([
3587
3672
  Middleware$1()
3588
3673
  ], CompressionMiddleware);
3589
3674
 
3590
- var __awaiter$4 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3591
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3592
- return new (P || (P = Promise))(function (resolve, reject) {
3593
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
3594
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
3595
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
3596
- step((generator = generator.apply(thisArg, _arguments || [])).next());
3597
- });
3598
- };
3599
- function setupStatic(rootFolder, container) {
3600
- return __awaiter$4(this, void 0, void 0, function* () {
3601
- const browserFolder = resolve(rootFolder || __dirname, `public_html`);
3602
- const app = container.get(EXPRESS);
3603
- const ep = container.get(EndpointProvider);
3604
- console.log(browserFolder, existsSync(browserFolder));
3605
- if (existsSync(browserFolder)) {
3606
- console.log(`public_html exists. setting up static files serving...`);
3607
- app.use(static$1(browserFolder, {
3608
- maxAge: "1y"
3609
- }));
3610
- }
3611
- else {
3612
- console.log(`public_html does not exist on path: "${browserFolder}"`);
3613
- }
3614
- yield ep.configure(app);
3615
- });
3616
- }
3617
-
3618
- class BaseDoc {
3619
- /**
3620
- * Casts this to DocumentType<this> to allow using document methods in get/set-s
3621
- */
3622
- cast() {
3623
- return this;
3624
- }
3625
- /**
3626
- * Gets a pre-compiled model from typegoose cache by its class type
3627
- * @param type
3628
- */
3629
- model(type) {
3630
- return getModelForClass(type);
3631
- }
3632
- }
3633
- const PrimitiveArray = Types.Array;
3634
- const DocumentArray = Types.DocumentArray;
3635
-
3636
3675
  class Tree {
3637
3676
  constructor(container, exists, path) {
3638
3677
  this.container = container;
@@ -3834,7 +3873,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
3834
3873
  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;
3835
3874
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3836
3875
  };
3837
- var __awaiter$3 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3876
+ var __awaiter$4 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3838
3877
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3839
3878
  return new (P || (P = Promise))(function (resolve, reject) {
3840
3879
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3845,7 +3884,7 @@ var __awaiter$3 = (this && this.__awaiter) || function (thisArg, _arguments, P,
3845
3884
  };
3846
3885
  let EmptyJob = class EmptyJob {
3847
3886
  process() {
3848
- return __awaiter$3(this, void 0, void 0, function* () {
3887
+ return __awaiter$4(this, void 0, void 0, function* () {
3849
3888
  return null;
3850
3889
  });
3851
3890
  }
@@ -3855,6 +3894,59 @@ EmptyJob = __decorate([
3855
3894
  scoped(Lifecycle.ContainerScoped)
3856
3895
  ], EmptyJob);
3857
3896
 
3897
+ var __awaiter$3 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3898
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3899
+ return new (P || (P = Promise))(function (resolve, reject) {
3900
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
3901
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
3902
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
3903
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
3904
+ });
3905
+ };
3906
+ function setupStatic(rootFolder, container) {
3907
+ return __awaiter$3(this, void 0, void 0, function* () {
3908
+ const browserFolder = resolve(rootFolder || __dirname, `public_html`);
3909
+ const app = container.get(EXPRESS);
3910
+ const ep = container.get(EndpointProvider);
3911
+ console.log(browserFolder, existsSync(browserFolder));
3912
+ if (existsSync(browserFolder)) {
3913
+ console.log(`public_html exists. setting up static files serving...`);
3914
+ app.use(static$1(browserFolder, {
3915
+ maxAge: "1y"
3916
+ }));
3917
+ }
3918
+ else {
3919
+ console.log(`public_html does not exist on path: "${browserFolder}"`);
3920
+ }
3921
+ yield ep.configure(app);
3922
+ });
3923
+ }
3924
+
3925
+ class BaseDoc {
3926
+ /**
3927
+ * Casts this to DocumentType<this> to allow using document methods in get/set-s
3928
+ */
3929
+ cast() {
3930
+ return this;
3931
+ }
3932
+ /**
3933
+ * Gets a pre-compiled model from typegoose cache by its class type
3934
+ * @param type
3935
+ */
3936
+ model(type) {
3937
+ return getModelForClass(type);
3938
+ }
3939
+ }
3940
+ const PrimitiveArray = Types.Array;
3941
+ const DocumentArray = Types.DocumentArray;
3942
+
3943
+ function IsDocumented() {
3944
+ return OpenAPI(operation => {
3945
+ operation.tags = ["Documented"].concat(operation.tags || []);
3946
+ return operation;
3947
+ });
3948
+ }
3949
+
3858
3950
  var __awaiter$2 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3859
3951
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3860
3952
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -4184,6 +4276,7 @@ function createServices() {
4184
4276
  new Parameter("jsonLimit", "250mb"),
4185
4277
  new Parameter("jobTimeout", 5 * 60 * 1000),
4186
4278
  new Parameter("cacheCollection", "cache"),
4279
+ new Parameter("logTags", []),
4187
4280
  ];
4188
4281
  // Convert parameters to providers
4189
4282
  const paramProviders = params.map(p => {
@@ -4208,9 +4301,11 @@ function createServices() {
4208
4301
  IdGenerator,
4209
4302
  JobManager,
4210
4303
  LazyAssets,
4304
+ Logger,
4211
4305
  MailSender,
4212
4306
  MemoryCache,
4213
4307
  MongoConnector,
4308
+ OpenApi,
4214
4309
  Progresses,
4215
4310
  TemplateRenderer,
4216
4311
  TranslationProvider,
@@ -4314,6 +4409,9 @@ function setupBackend(config, providers, parent) {
4314
4409
  diContainer.register(DI_CONTAINER, {
4315
4410
  useValue: diContainer
4316
4411
  });
4412
+ diContainer.register(OPENAPI_VALIDATION, {
4413
+ useValue: config.customValidation || (() => null)
4414
+ });
4317
4415
  diContainers.appContainer = diContainers.appContainer || diContainer;
4318
4416
  // Authentication
4319
4417
  restOptions.authorizationChecker = (action, roles) => __awaiter(this, void 0, void 0, function* () {
@@ -4365,8 +4463,12 @@ function setupBackend(config, providers, parent) {
4365
4463
  useContainer(diContainer);
4366
4464
  useExpressServer(bp.express, restOptions);
4367
4465
  // Setup rest ai docs
4466
+ let openApi = null;
4368
4467
  bp.express.get("/api-docs", (req, res) => {
4369
- res.status(200).end(getApiDocs(config.customValidation));
4468
+ openApi = openApi || diContainer.get(OpenApi);
4469
+ res.header("Content-Type", "application/json")
4470
+ .status(200)
4471
+ .end(openApi.apiDocsStr);
4370
4472
  });
4371
4473
  }
4372
4474
  if (config.socketOptions) {
@@ -4389,5 +4491,5 @@ function setupBackend(config, providers, parent) {
4389
4491
  * Generated bundle index. Do not edit.
4390
4492
  */
4391
4493
 
4392
- 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, IsFile, IsObjectId, JOB, JobManager, LanguageMiddleware, LazyAssetGenerator, LazyAssets, MailSender, MemoryCache, MongoConnector, PARAMETER, Parameter, PrimitiveArray, Progresses, ResolveEntity, SOCKET_SERVER, TemplateRenderer, TranslationProvider, Translator, Type, UserManager, assign, broadcast, bufferToStream, colorize, convertValue, copy, copyStream, createIdString, createServices, createTransformer, deleteFile, deleteFromBucket, filter, firstItem, 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, projectStage, promiseTimeout, rand, random, readAndDeleteFile, readFile, regroup, replaceSpecialChars, resolveUser, runCommand, service, setupBackend, streamToBuffer, toImage, ucFirst, uniqueItems, unwindStage, valueToPromise, writeFile };
4494
+ 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, LanguageMiddleware, LazyAssetGenerator, LazyAssets, MailSender, MemoryCache, MongoConnector, OPENAPI_VALIDATION, OpenApi, PARAMETER, Parameter, PrimitiveArray, Progresses, ResolveEntity, SOCKET_SERVER, TemplateRenderer, TranslationProvider, Translator, Type, UserManager, assign, broadcast, bufferToStream, colorize, convertValue, copy, copyStream, createIdString, createServices, createTransformer, deleteFile, deleteFromBucket, filter, firstItem, 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, projectStage, promiseTimeout, rand, random, readAndDeleteFile, readFile, regroup, replaceSpecialChars, resolveUser, runCommand, service, setupBackend, streamToBuffer, toImage, ucFirst, uniqueItems, unwindStage, valueToPromise, writeFile, Logger as ɵa };
4393
4495
  //# sourceMappingURL=stemy-backend.js.map