@stemy/backend 3.5.0 → 3.5.2

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.
@@ -4,10 +4,11 @@ import { sign, verify } from 'jsonwebtoken';
4
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 => {
@@ -669,249 +812,23 @@ function jsonHighlight(input, colorOptions) {
669
812
  ? colors.nullColor
670
813
  : color;
671
814
  }
672
- return `${color}${match}${ConsoleColor.Reset}`;
673
- });
674
- }
675
- function replaceSpecialChars(str, to = "-") {
676
- return `${str}`.replace(/[&\/\\#, +()$~%.@'":*?<>{}]/g, to);
677
- }
678
-
679
- var __decorate$A = (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$A([
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$A([
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$z = (this && this.__decorate) || function (decorators, target, key, desc) {
782
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
783
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
784
- 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
- return c > 3 && r && Object.defineProperty(target, key, r), r;
786
- };
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$z([
901
- injectable(),
902
- scoped(Lifecycle.ContainerScoped)
903
- ], AssetProcessor);
815
+ return `${color}${match}${ConsoleColor.Reset}`;
816
+ });
817
+ }
818
+ function replaceSpecialChars(str, to = "-") {
819
+ return `${str}`.replace(/[&\/\\#, +()$~%.@'":*?<>{}]/g, to);
820
+ }
904
821
 
905
- var __decorate$y = (this && this.__decorate) || function (decorators, target, key, desc) {
822
+ var __decorate$A = (this && this.__decorate) || function (decorators, target, key, desc) {
906
823
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
907
824
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
908
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;
909
826
  return c > 3 && r && Object.defineProperty(target, key, r), r;
910
827
  };
911
- var __metadata$t = (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 {
@@ -954,19 +871,19 @@ let Configuration = class Configuration {
954
871
  return this.paramValues[name];
955
872
  }
956
873
  };
957
- Configuration = __decorate$y([
874
+ Configuration = __decorate$A([
958
875
  singleton(),
959
- __param$8(0, injectAll(PARAMETER)),
960
- __metadata$t("design:paramtypes", [Array])
876
+ __param$9(0, injectAll(PARAMETER)),
877
+ __metadata$u("design:paramtypes", [Array])
961
878
  ], Configuration);
962
879
 
963
- var __decorate$x = (this && this.__decorate) || function (decorators, target, key, desc) {
880
+ var __decorate$z = (this && this.__decorate) || function (decorators, target, key, desc) {
964
881
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
965
882
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
966
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;
967
884
  return c > 3 && r && Object.defineProperty(target, key, r), r;
968
885
  };
969
- var __metadata$s = (this && this.__metadata) || function (k, v) {
886
+ var __metadata$t = (this && this.__metadata) || function (k, v) {
970
887
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
971
888
  };
972
889
  var __awaiter$w = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1008,10 +925,10 @@ let MongoConnector = class MongoConnector {
1008
925
  });
1009
926
  }
1010
927
  };
1011
- MongoConnector = __decorate$x([
928
+ MongoConnector = __decorate$z([
1012
929
  injectable(),
1013
930
  singleton(),
1014
- __metadata$s("design:paramtypes", [Configuration])
931
+ __metadata$t("design:paramtypes", [Configuration])
1015
932
  ], MongoConnector);
1016
933
 
1017
934
  var __awaiter$v = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1171,13 +1088,13 @@ class TempAsset {
1171
1088
  }
1172
1089
  }
1173
1090
 
1174
- var __decorate$w = (this && this.__decorate) || function (decorators, target, key, desc) {
1091
+ var __decorate$y = (this && this.__decorate) || function (decorators, target, key, desc) {
1175
1092
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1176
1093
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1177
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;
1178
1095
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1179
1096
  };
1180
- var __metadata$r = (this && this.__metadata) || function (k, v) {
1097
+ var __metadata$s = (this && this.__metadata) || function (k, v) {
1181
1098
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1182
1099
  };
1183
1100
  var __awaiter$s = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1336,10 +1253,10 @@ let Assets = class Assets {
1336
1253
  });
1337
1254
  }
1338
1255
  };
1339
- Assets = __decorate$w([
1256
+ Assets = __decorate$y([
1340
1257
  injectable(),
1341
1258
  scoped(Lifecycle.ContainerScoped),
1342
- __metadata$r("design:paramtypes", [MongoConnector, AssetProcessor])
1259
+ __metadata$s("design:paramtypes", [MongoConnector, AssetProcessor])
1343
1260
  ], Assets);
1344
1261
 
1345
1262
  var __awaiter$r = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1429,13 +1346,13 @@ class LazyAsset extends BaseEntity {
1429
1346
  }
1430
1347
  }
1431
1348
 
1432
- var __decorate$v = (this && this.__decorate) || function (decorators, target, key, desc) {
1349
+ var __decorate$x = (this && this.__decorate) || function (decorators, target, key, desc) {
1433
1350
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1434
1351
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1435
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;
1436
1353
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1437
1354
  };
1438
- var __metadata$q = (this && this.__metadata) || function (k, v) {
1355
+ var __metadata$r = (this && this.__metadata) || function (k, v) {
1439
1356
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1440
1357
  };
1441
1358
  let Logger = class Logger {
@@ -1450,21 +1367,21 @@ let Logger = class Logger {
1450
1367
  }
1451
1368
  }
1452
1369
  };
1453
- Logger = __decorate$v([
1370
+ Logger = __decorate$x([
1454
1371
  singleton(),
1455
- __metadata$q("design:paramtypes", [Configuration])
1372
+ __metadata$r("design:paramtypes", [Configuration])
1456
1373
  ], Logger);
1457
1374
 
1458
- var __decorate$u = (this && this.__decorate) || function (decorators, target, key, desc) {
1375
+ var __decorate$w = (this && this.__decorate) || function (decorators, target, key, desc) {
1459
1376
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1460
1377
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1461
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;
1462
1379
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1463
1380
  };
1464
- var __metadata$p = (this && this.__metadata) || function (k, v) {
1381
+ var __metadata$q = (this && this.__metadata) || function (k, v) {
1465
1382
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1466
1383
  };
1467
- var __param$7 = (this && this.__param) || function (paramIndex, decorator) {
1384
+ var __param$8 = (this && this.__param) || function (paramIndex, decorator) {
1468
1385
  return function (target, key) { decorator(target, key, paramIndex); }
1469
1386
  };
1470
1387
  var __awaiter$q = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1656,12 +1573,12 @@ let JobManager = class JobManager {
1656
1573
  });
1657
1574
  }
1658
1575
  };
1659
- JobManager = __decorate$u([
1576
+ JobManager = __decorate$w([
1660
1577
  injectable(),
1661
1578
  scoped(Lifecycle.ContainerScoped),
1662
- __param$7(2, inject(DI_CONTAINER)),
1663
- __param$7(3, injectAll(JOB)),
1664
- __metadata$p("design:paramtypes", [Configuration,
1579
+ __param$8(2, inject(DI_CONTAINER)),
1580
+ __param$8(3, injectAll(JOB)),
1581
+ __metadata$q("design:paramtypes", [Configuration,
1665
1582
  Logger, Object, Array])
1666
1583
  ], JobManager);
1667
1584
 
@@ -1875,13 +1792,13 @@ class SubProgress {
1875
1792
  }
1876
1793
  }
1877
1794
 
1878
- var __decorate$t = (this && this.__decorate) || function (decorators, target, key, desc) {
1795
+ var __decorate$v = (this && this.__decorate) || function (decorators, target, key, desc) {
1879
1796
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1880
1797
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1881
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;
1882
1799
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1883
1800
  };
1884
- var __metadata$o = (this && this.__metadata) || function (k, v) {
1801
+ var __metadata$p = (this && this.__metadata) || function (k, v) {
1885
1802
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1886
1803
  };
1887
1804
  var __awaiter$o = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -1981,19 +1898,19 @@ let Progresses = class Progresses {
1981
1898
  });
1982
1899
  }
1983
1900
  };
1984
- Progresses = __decorate$t([
1901
+ Progresses = __decorate$v([
1985
1902
  injectable(),
1986
1903
  singleton(),
1987
- __metadata$o("design:paramtypes", [MongoConnector, JobManager])
1904
+ __metadata$p("design:paramtypes", [MongoConnector, JobManager])
1988
1905
  ], Progresses);
1989
1906
 
1990
- var __decorate$s = (this && this.__decorate) || function (decorators, target, key, desc) {
1907
+ var __decorate$u = (this && this.__decorate) || function (decorators, target, key, desc) {
1991
1908
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1992
1909
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1993
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;
1994
1911
  return c > 3 && r && Object.defineProperty(target, key, r), r;
1995
1912
  };
1996
- var __metadata$n = (this && this.__metadata) || function (k, v) {
1913
+ var __metadata$o = (this && this.__metadata) || function (k, v) {
1997
1914
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1998
1915
  };
1999
1916
  var __awaiter$n = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2051,23 +1968,23 @@ let LazyAssets = class LazyAssets {
2051
1968
  });
2052
1969
  }
2053
1970
  };
2054
- LazyAssets = __decorate$s([
1971
+ LazyAssets = __decorate$u([
2055
1972
  injectable(),
2056
1973
  scoped(Lifecycle.ContainerScoped),
2057
- __metadata$n("design:paramtypes", [MongoConnector,
1974
+ __metadata$o("design:paramtypes", [MongoConnector,
2058
1975
  Assets,
2059
1976
  Progresses,
2060
1977
  Logger,
2061
1978
  JobManager])
2062
1979
  ], LazyAssets);
2063
1980
 
2064
- var __decorate$r = (this && this.__decorate) || function (decorators, target, key, desc) {
1981
+ var __decorate$t = (this && this.__decorate) || function (decorators, target, key, desc) {
2065
1982
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2066
1983
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2067
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;
2068
1985
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2069
1986
  };
2070
- var __metadata$m = (this && this.__metadata) || function (k, v) {
1987
+ var __metadata$n = (this && this.__metadata) || function (k, v) {
2071
1988
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2072
1989
  };
2073
1990
  var __awaiter$m = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2104,19 +2021,19 @@ let AssetResolver = class AssetResolver {
2104
2021
  });
2105
2022
  }
2106
2023
  };
2107
- AssetResolver = __decorate$r([
2024
+ AssetResolver = __decorate$t([
2108
2025
  injectable(),
2109
2026
  scoped(Lifecycle.ContainerScoped),
2110
- __metadata$m("design:paramtypes", [Assets, LazyAssets])
2027
+ __metadata$n("design:paramtypes", [Assets, LazyAssets])
2111
2028
  ], AssetResolver);
2112
2029
 
2113
- var __decorate$q = (this && this.__decorate) || function (decorators, target, key, desc) {
2030
+ var __decorate$s = (this && this.__decorate) || function (decorators, target, key, desc) {
2114
2031
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2115
2032
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2116
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;
2117
2034
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2118
2035
  };
2119
- var __metadata$l = (this && this.__metadata) || function (k, v) {
2036
+ var __metadata$m = (this && this.__metadata) || function (k, v) {
2120
2037
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2121
2038
  };
2122
2039
  const express = express_;
@@ -2132,13 +2049,13 @@ let BackendProvider = class BackendProvider {
2132
2049
  return this.ioServer;
2133
2050
  }
2134
2051
  };
2135
- BackendProvider = __decorate$q([
2052
+ BackendProvider = __decorate$s([
2136
2053
  injectable(),
2137
2054
  singleton(),
2138
- __metadata$l("design:paramtypes", [])
2055
+ __metadata$m("design:paramtypes", [])
2139
2056
  ], BackendProvider);
2140
2057
 
2141
- var __decorate$p = (this && this.__decorate) || function (decorators, target, key, desc) {
2058
+ var __decorate$r = (this && this.__decorate) || function (decorators, target, key, desc) {
2142
2059
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2143
2060
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2144
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;
@@ -2165,18 +2082,18 @@ let CacheProcessor = class CacheProcessor {
2165
2082
  });
2166
2083
  }
2167
2084
  };
2168
- CacheProcessor = __decorate$p([
2085
+ CacheProcessor = __decorate$r([
2169
2086
  injectable(),
2170
2087
  scoped(Lifecycle.ContainerScoped)
2171
2088
  ], CacheProcessor);
2172
2089
 
2173
- var __decorate$o = (this && this.__decorate) || function (decorators, target, key, desc) {
2090
+ var __decorate$q = (this && this.__decorate) || function (decorators, target, key, desc) {
2174
2091
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2175
2092
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2176
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;
2177
2094
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2178
2095
  };
2179
- var __metadata$k = (this && this.__metadata) || function (k, v) {
2096
+ var __metadata$l = (this && this.__metadata) || function (k, v) {
2180
2097
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2181
2098
  };
2182
2099
  var __awaiter$k = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2253,13 +2170,13 @@ let Cache = class Cache {
2253
2170
  });
2254
2171
  }
2255
2172
  };
2256
- Cache = __decorate$o([
2173
+ Cache = __decorate$q([
2257
2174
  injectable(),
2258
2175
  scoped(Lifecycle.ContainerScoped),
2259
- __metadata$k("design:paramtypes", [MongoConnector, Configuration, CacheProcessor])
2176
+ __metadata$l("design:paramtypes", [MongoConnector, Configuration, CacheProcessor])
2260
2177
  ], Cache);
2261
2178
 
2262
- var __decorate$n = (this && this.__decorate) || function (decorators, target, key, desc) {
2179
+ var __decorate$p = (this && this.__decorate) || function (decorators, target, key, desc) {
2263
2180
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2264
2181
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2265
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;
@@ -2281,21 +2198,21 @@ let EndpointProvider = class EndpointProvider {
2281
2198
  });
2282
2199
  }
2283
2200
  };
2284
- EndpointProvider = __decorate$n([
2201
+ EndpointProvider = __decorate$p([
2285
2202
  injectable(),
2286
2203
  scoped(Lifecycle.ContainerScoped)
2287
2204
  ], EndpointProvider);
2288
2205
 
2289
- var __decorate$m = (this && this.__decorate) || function (decorators, target, key, desc) {
2206
+ var __decorate$o = (this && this.__decorate) || function (decorators, target, key, desc) {
2290
2207
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2291
2208
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2292
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;
2293
2210
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2294
2211
  };
2295
- var __metadata$j = (this && this.__metadata) || function (k, v) {
2212
+ var __metadata$k = (this && this.__metadata) || function (k, v) {
2296
2213
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2297
2214
  };
2298
- var __param$6 = (this && this.__param) || function (paramIndex, decorator) {
2215
+ var __param$7 = (this && this.__param) || function (paramIndex, decorator) {
2299
2216
  return function (target, key) { decorator(target, key, paramIndex); }
2300
2217
  };
2301
2218
  var __awaiter$i = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2321,11 +2238,11 @@ let Fixtures = class Fixtures {
2321
2238
  });
2322
2239
  }
2323
2240
  };
2324
- Fixtures = __decorate$m([
2241
+ Fixtures = __decorate$o([
2325
2242
  injectable(),
2326
2243
  scoped(Lifecycle.ContainerScoped),
2327
- __param$6(0, injectAll(FIXTURE)),
2328
- __metadata$j("design:paramtypes", [Array])
2244
+ __param$7(0, injectAll(FIXTURE)),
2245
+ __metadata$k("design:paramtypes", [Array])
2329
2246
  ], Fixtures);
2330
2247
 
2331
2248
  var __awaiter$h = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2374,13 +2291,13 @@ class GalleryImage {
2374
2291
  }
2375
2292
  }
2376
2293
 
2377
- var __decorate$l = (this && this.__decorate) || function (decorators, target, key, desc) {
2294
+ var __decorate$n = (this && this.__decorate) || function (decorators, target, key, desc) {
2378
2295
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2379
2296
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2380
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;
2381
2298
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2382
2299
  };
2383
- var __metadata$i = (this && this.__metadata) || function (k, v) {
2300
+ var __metadata$j = (this && this.__metadata) || function (k, v) {
2384
2301
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2385
2302
  };
2386
2303
  let GalleryCache = class GalleryCache {
@@ -2401,19 +2318,19 @@ let GalleryCache = class GalleryCache {
2401
2318
  return image;
2402
2319
  }
2403
2320
  };
2404
- GalleryCache = __decorate$l([
2321
+ GalleryCache = __decorate$n([
2405
2322
  injectable(),
2406
2323
  scoped(Lifecycle.ContainerScoped),
2407
- __metadata$i("design:paramtypes", [])
2324
+ __metadata$j("design:paramtypes", [])
2408
2325
  ], GalleryCache);
2409
2326
 
2410
- var __decorate$k = (this && this.__decorate) || function (decorators, target, key, desc) {
2327
+ var __decorate$m = (this && this.__decorate) || function (decorators, target, key, desc) {
2411
2328
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2412
2329
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2413
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;
2414
2331
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2415
2332
  };
2416
- var __metadata$h = (this && this.__metadata) || function (k, v) {
2333
+ var __metadata$i = (this && this.__metadata) || function (k, v) {
2417
2334
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2418
2335
  };
2419
2336
  var __awaiter$g = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2531,19 +2448,19 @@ let Gallery = class Gallery {
2531
2448
  });
2532
2449
  }
2533
2450
  };
2534
- Gallery = __decorate$k([
2451
+ Gallery = __decorate$m([
2535
2452
  injectable(),
2536
2453
  scoped(Lifecycle.ContainerScoped),
2537
- __metadata$h("design:paramtypes", [Configuration, GalleryCache])
2454
+ __metadata$i("design:paramtypes", [Configuration, GalleryCache])
2538
2455
  ], Gallery);
2539
2456
 
2540
- var __decorate$j = (this && this.__decorate) || function (decorators, target, key, desc) {
2457
+ var __decorate$l = (this && this.__decorate) || function (decorators, target, key, desc) {
2541
2458
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2542
2459
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2543
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;
2544
2461
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2545
2462
  };
2546
- var __metadata$g = (this && this.__metadata) || function (k, v) {
2463
+ var __metadata$h = (this && this.__metadata) || function (k, v) {
2547
2464
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2548
2465
  };
2549
2466
  var __awaiter$f = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2590,19 +2507,19 @@ let IdGenerator = class IdGenerator {
2590
2507
  }).join(this.separator);
2591
2508
  }
2592
2509
  };
2593
- IdGenerator = __decorate$j([
2510
+ IdGenerator = __decorate$l([
2594
2511
  injectable(),
2595
2512
  scoped(Lifecycle.ContainerScoped),
2596
- __metadata$g("design:paramtypes", [Configuration])
2513
+ __metadata$h("design:paramtypes", [Configuration])
2597
2514
  ], IdGenerator);
2598
2515
 
2599
- var __decorate$i = (this && this.__decorate) || function (decorators, target, key, desc) {
2516
+ var __decorate$k = (this && this.__decorate) || function (decorators, target, key, desc) {
2600
2517
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2601
2518
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2602
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;
2603
2520
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2604
2521
  };
2605
- var __metadata$f = (this && this.__metadata) || function (k, v) {
2522
+ var __metadata$g = (this && this.__metadata) || function (k, v) {
2606
2523
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2607
2524
  };
2608
2525
  let TranslationProvider = class TranslationProvider {
@@ -2617,19 +2534,19 @@ let TranslationProvider = class TranslationProvider {
2617
2534
  return this.cache[language];
2618
2535
  }
2619
2536
  };
2620
- TranslationProvider = __decorate$i([
2537
+ TranslationProvider = __decorate$k([
2621
2538
  injectable(),
2622
2539
  singleton(),
2623
- __metadata$f("design:paramtypes", [Configuration])
2540
+ __metadata$g("design:paramtypes", [Configuration])
2624
2541
  ], TranslationProvider);
2625
2542
 
2626
- var __decorate$h = (this && this.__decorate) || function (decorators, target, key, desc) {
2543
+ var __decorate$j = (this && this.__decorate) || function (decorators, target, key, desc) {
2627
2544
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2628
2545
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2629
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;
2630
2547
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2631
2548
  };
2632
- var __metadata$e = (this && this.__metadata) || function (k, v) {
2549
+ var __metadata$f = (this && this.__metadata) || function (k, v) {
2633
2550
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2634
2551
  };
2635
2552
  var __awaiter$e = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2698,19 +2615,19 @@ let Translator = class Translator {
2698
2615
  });
2699
2616
  }
2700
2617
  };
2701
- Translator = __decorate$h([
2618
+ Translator = __decorate$j([
2702
2619
  injectable(),
2703
2620
  singleton(),
2704
- __metadata$e("design:paramtypes", [TranslationProvider])
2621
+ __metadata$f("design:paramtypes", [TranslationProvider])
2705
2622
  ], Translator);
2706
2623
 
2707
- var __decorate$g = (this && this.__decorate) || function (decorators, target, key, desc) {
2624
+ var __decorate$i = (this && this.__decorate) || function (decorators, target, key, desc) {
2708
2625
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2709
2626
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2710
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;
2711
2628
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2712
2629
  };
2713
- var __metadata$d = (this && this.__metadata) || function (k, v) {
2630
+ var __metadata$e = (this && this.__metadata) || function (k, v) {
2714
2631
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2715
2632
  };
2716
2633
  var __awaiter$d = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2780,19 +2697,19 @@ let TemplateRenderer = class TemplateRenderer {
2780
2697
  });
2781
2698
  }
2782
2699
  };
2783
- TemplateRenderer = __decorate$g([
2700
+ TemplateRenderer = __decorate$i([
2784
2701
  injectable(),
2785
2702
  singleton(),
2786
- __metadata$d("design:paramtypes", [Translator, Configuration])
2703
+ __metadata$e("design:paramtypes", [Translator, Configuration])
2787
2704
  ], TemplateRenderer);
2788
2705
 
2789
- var __decorate$f = (this && this.__decorate) || function (decorators, target, key, desc) {
2706
+ var __decorate$h = (this && this.__decorate) || function (decorators, target, key, desc) {
2790
2707
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2791
2708
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2792
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;
2793
2710
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2794
2711
  };
2795
- var __metadata$c = (this && this.__metadata) || function (k, v) {
2712
+ var __metadata$d = (this && this.__metadata) || function (k, v) {
2796
2713
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2797
2714
  };
2798
2715
  var __awaiter$c = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2834,19 +2751,19 @@ let MailSender = class MailSender {
2834
2751
  });
2835
2752
  }
2836
2753
  };
2837
- MailSender = __decorate$f([
2754
+ MailSender = __decorate$h([
2838
2755
  injectable(),
2839
2756
  singleton(),
2840
- __metadata$c("design:paramtypes", [Configuration, TemplateRenderer])
2757
+ __metadata$d("design:paramtypes", [Configuration, TemplateRenderer])
2841
2758
  ], MailSender);
2842
2759
 
2843
- var __decorate$e = (this && this.__decorate) || function (decorators, target, key, desc) {
2760
+ var __decorate$g = (this && this.__decorate) || function (decorators, target, key, desc) {
2844
2761
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2845
2762
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2846
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;
2847
2764
  return c > 3 && r && Object.defineProperty(target, key, r), r;
2848
2765
  };
2849
- var __metadata$b = (this && this.__metadata) || function (k, v) {
2766
+ var __metadata$c = (this && this.__metadata) || function (k, v) {
2850
2767
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
2851
2768
  };
2852
2769
  var __awaiter$b = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -2915,12 +2832,125 @@ let MemoryCache = class MemoryCache {
2915
2832
  });
2916
2833
  }
2917
2834
  };
2918
- MemoryCache = __decorate$e([
2835
+ MemoryCache = __decorate$g([
2919
2836
  injectable(),
2920
2837
  scoped(Lifecycle.ContainerScoped),
2921
- __metadata$b("design:paramtypes", [Cache])
2838
+ __metadata$c("design:paramtypes", [Cache])
2922
2839
  ], MemoryCache);
2923
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
+
2924
2954
  var __decorate$d = (this && this.__decorate) || function (decorators, target, key, desc) {
2925
2955
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2926
2956
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -3408,6 +3438,9 @@ let ErrorHandlerMiddleware = class ErrorHandlerMiddleware {
3408
3438
  result.param = error.message;
3409
3439
  }
3410
3440
  else {
3441
+ if (error instanceof AxiosError) {
3442
+ console.log(error.response);
3443
+ }
3411
3444
  result.message = error.message || (yield this.translator.getTranslation(req.language, "message.form-validation.error"));
3412
3445
  result.errors = error["errors"];
3413
3446
  if (this.isDev) {
@@ -3639,52 +3672,6 @@ CompressionMiddleware = __decorate$1([
3639
3672
  Middleware$1()
3640
3673
  ], CompressionMiddleware);
3641
3674
 
3642
- var __awaiter$4 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3643
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3644
- return new (P || (P = Promise))(function (resolve, reject) {
3645
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
3646
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
3647
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
3648
- step((generator = generator.apply(thisArg, _arguments || [])).next());
3649
- });
3650
- };
3651
- function setupStatic(rootFolder, container) {
3652
- return __awaiter$4(this, void 0, void 0, function* () {
3653
- const browserFolder = resolve(rootFolder || __dirname, `public_html`);
3654
- const app = container.get(EXPRESS);
3655
- const ep = container.get(EndpointProvider);
3656
- console.log(browserFolder, existsSync(browserFolder));
3657
- if (existsSync(browserFolder)) {
3658
- console.log(`public_html exists. setting up static files serving...`);
3659
- app.use(static$1(browserFolder, {
3660
- maxAge: "1y"
3661
- }));
3662
- }
3663
- else {
3664
- console.log(`public_html does not exist on path: "${browserFolder}"`);
3665
- }
3666
- yield ep.configure(app);
3667
- });
3668
- }
3669
-
3670
- class BaseDoc {
3671
- /**
3672
- * Casts this to DocumentType<this> to allow using document methods in get/set-s
3673
- */
3674
- cast() {
3675
- return this;
3676
- }
3677
- /**
3678
- * Gets a pre-compiled model from typegoose cache by its class type
3679
- * @param type
3680
- */
3681
- model(type) {
3682
- return getModelForClass(type);
3683
- }
3684
- }
3685
- const PrimitiveArray = Types.Array;
3686
- const DocumentArray = Types.DocumentArray;
3687
-
3688
3675
  class Tree {
3689
3676
  constructor(container, exists, path) {
3690
3677
  this.container = container;
@@ -3886,7 +3873,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
3886
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;
3887
3874
  return c > 3 && r && Object.defineProperty(target, key, r), r;
3888
3875
  };
3889
- var __awaiter$3 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3876
+ var __awaiter$4 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3890
3877
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3891
3878
  return new (P || (P = Promise))(function (resolve, reject) {
3892
3879
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3897,7 +3884,7 @@ var __awaiter$3 = (this && this.__awaiter) || function (thisArg, _arguments, P,
3897
3884
  };
3898
3885
  let EmptyJob = class EmptyJob {
3899
3886
  process() {
3900
- return __awaiter$3(this, void 0, void 0, function* () {
3887
+ return __awaiter$4(this, void 0, void 0, function* () {
3901
3888
  return null;
3902
3889
  });
3903
3890
  }
@@ -3907,6 +3894,60 @@ EmptyJob = __decorate([
3907
3894
  scoped(Lifecycle.ContainerScoped)
3908
3895
  ], EmptyJob);
3909
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(summary = null) {
3944
+ return OpenAPI(operation => {
3945
+ operation.summary = summary || operation.summary;
3946
+ operation.tags = ["Documented"].concat(operation.tags || []);
3947
+ return operation;
3948
+ });
3949
+ }
3950
+
3910
3951
  var __awaiter$2 = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3911
3952
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3912
3953
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -4265,6 +4306,7 @@ function createServices() {
4265
4306
  MailSender,
4266
4307
  MemoryCache,
4267
4308
  MongoConnector,
4309
+ OpenApi,
4268
4310
  Progresses,
4269
4311
  TemplateRenderer,
4270
4312
  TranslationProvider,
@@ -4368,6 +4410,9 @@ function setupBackend(config, providers, parent) {
4368
4410
  diContainer.register(DI_CONTAINER, {
4369
4411
  useValue: diContainer
4370
4412
  });
4413
+ diContainer.register(OPENAPI_VALIDATION, {
4414
+ useValue: config.customValidation || (() => null)
4415
+ });
4371
4416
  diContainers.appContainer = diContainers.appContainer || diContainer;
4372
4417
  // Authentication
4373
4418
  restOptions.authorizationChecker = (action, roles) => __awaiter(this, void 0, void 0, function* () {
@@ -4419,8 +4464,12 @@ function setupBackend(config, providers, parent) {
4419
4464
  useContainer(diContainer);
4420
4465
  useExpressServer(bp.express, restOptions);
4421
4466
  // Setup rest ai docs
4467
+ let openApi = null;
4422
4468
  bp.express.get("/api-docs", (req, res) => {
4423
- res.status(200).end(getApiDocs(config.customValidation));
4469
+ openApi = openApi || diContainer.get(OpenApi);
4470
+ res.header("Content-Type", "application/json")
4471
+ .status(200)
4472
+ .end(openApi.apiDocsStr);
4424
4473
  });
4425
4474
  }
4426
4475
  if (config.socketOptions) {
@@ -4443,5 +4492,5 @@ function setupBackend(config, providers, parent) {
4443
4492
  * Generated bundle index. Do not edit.
4444
4493
  */
4445
4494
 
4446
- 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, Logger as ɵa };
4495
+ 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 };
4447
4496
  //# sourceMappingURL=stemy-backend.js.map