@stemy/backend 2.6.0 → 2.7.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.
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("path"),require("body-parser"),require("jsonwebtoken"),require("tsyringe"),require("routing-controllers"),require("socket-controllers"),require("routing-controllers-openapi"),require("class-transformer/storage"),require("class-validator"),require("class-validator-jsonschema"),require("child_process"),require("crypto"),require("rxjs"),require("rxjs/internal/util/canReportError"),require("fs"),require("mongoose"),require("mongoose/lib/utils"),require("stream"),require("bson"),require("fontkit"),require("file-type"),require("sharp"),require("mongodb"),require("dotenv"),require("node-resque"),require("node-cron"),require("ioredis"),require("socket.io-client"),require("http"),require("express"),require("socket.io"),require("uuid"),require("nodemailer"),require("handlebars"),require("axios"),require("bcrypt"),require("moment")):"function"==typeof define&&define.amd?define("@stemy/backend",["exports","path","body-parser","jsonwebtoken","tsyringe","routing-controllers","socket-controllers","routing-controllers-openapi","class-transformer/storage","class-validator","class-validator-jsonschema","child_process","crypto","rxjs","rxjs/internal/util/canReportError","fs","mongoose","mongoose/lib/utils","stream","bson","fontkit","file-type","sharp","mongodb","dotenv","node-resque","node-cron","ioredis","socket.io-client","http","express","socket.io","uuid","nodemailer","handlebars","axios","bcrypt","moment"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).stemy=e.stemy||{},e.stemy.backend={}),e.path,e["body-parser"],e.jsonwebtoken,e.tsyringe,e["routing-controllers"],e["socket-controllers"],e["routing-controllers-openapi"],e["class-transformer/storage"],e["class-validator"],e["class-validator-jsonschema"],e.child_process,e.crypto,e.rxjs,e.rxjs["internal/util/canReportError"],e.fs,e.mongoose,e["mongoose-lib-utils"],e.stream,e.bson,e.fontkit,e["file-type"],e.sharp,e.mongodb,e.dotenv,e["node-resque"],e["node-cron"],e.ioredis,e.socket["io-client"],e.http,e.express,e.socket.io,e.uuid,e.nodemailer,e.handlebars,e.axios,e.bcrypt,e.moment)}(this,(function(e,t,n,r,o,i,s,a,c,u,l,f,h,d,p,y,v,g,m,b,w,j,P,O,_,R,x,S,C,k,M,A,I,T,E,D,F,N){"use strict";function q(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function z(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var B=q(w),L=q(P),H=q(_),J=q(S),G=q(C),V=q(M),U=q(A),$=z(E),Y=q(D),X=q(N),W=function(e,t){return(W=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function Q(e,t){var n,r,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,r=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(o=s.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}Object.create;function K(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Z(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s}function ee(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(Z(arguments[t]));return e}Object.create;var te=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},ne={appContainer:null};function re(e){return null==e||void 0===e}function oe(e){return!re(e)}function ie(e){var t=new RegExp("\\s([a-zA-Z]+)");return Object.prototype.toString.call(e).match(t)[1].toLowerCase()}function se(e){return"object"==ie(e)}function ae(e){return Array.isArray(e)}function ce(e){return!!e&&e[Symbol.toPrimitive]&&!isNaN(e)&&void 0!==e.getDate}function ue(e){var t=typeof e;return null==e||"object"!==t&&"function"!==t}function le(e){return"string"==typeof e}function fe(e){return"function"==typeof e}function he(e){return(e&&"function"==typeof e&&e.prototype&&e.prototype.constructor)===e&&"Object"!==e.name}function de(e){return he(e)}function pe(e){return e?e[0].toLowerCase()+e.substr(1):""}function ye(e,t,n,r){void 0===r&&(r=!1);var o=(t=t||"").split("."),i="";do{i+=o.shift(),!oe(e)||!oe(e[i])||"object"!=typeof e[i]&&o.length?o.length?i+=".":(n=void 0===n?t.replace(new RegExp(i+"$"),"{"+i+"}"):n,e=r&&e||n):(e=e[i],i="")}while(o.length);return e}function ve(e,t){switch(t){case"boolean":return"no"!=(e="string"==typeof e?e.toLowerCase():e)&&"false"!=e&&"0"!=e&&!!e;case"number":var n=parseFloat(e);return isNaN(n)?0:n;case"array":try{return JSON.parse(e)}catch(t){return(""+e).split(", ")}}return e}function ge(e,t){var n={};Object.keys(t).forEach((function(r){e.virtual(r).get((function(){var e=ne.appContainer;return n[r]=n[r]||(e?e.resolve(t[r]):{}),n[r]}))}))}function me(e,t){var n,r,o=e.hydrate(t),i=function(e,n){var r=n.ref,i=n.type;if(Array.isArray(i)&&i.length>0&&(r=i[0].ref),!r)return"continue";var s=g.getValue(e,t),a=function(e){return null==e||e instanceof v.Types.ObjectId?e:me(v.model(r),e)};if(Array.isArray(s))return g.setValue(e,s.map(a),o),"continue";g.setValue(e,a(s),o)};try{for(var s=K(Object.entries(e.schema.obj)),a=s.next();!a.done;a=s.next()){var c=Z(a.value,2);i(c[0],c[1])}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return o}function be(e){var t=new m.PassThrough;return t.end(e),t}function we(e){return new Promise((function(t,n){var r=[];e.on("data",(function(e){r.push(e)})),e.on("error",n),e.on("end",(function(){return t(Buffer.concat(r))}))}))}var je=function(e){function t(t,n){var r=e.call(this,n)||this;return null==t||t.on("data",(function(e){r.push(e)})),null==t||t.on("end",(function(){r.push(null)})),null==t||t.on("error",(function(e){r.emit("error",e)})),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}W(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(t,e),t.prototype._read=function(e){},t}(m.Readable);function Pe(e,t){return new je(e,t)}function Oe(e,t){return void 0===t&&(t=null),new Promise((function(n,r){y.mkdir(e,{mode:t||511,recursive:!0},(function(e){e?r(e):n()}))}))}function _e(e){return new Promise((function(t,n){y.readFile(e,(function(e,r){e?n(e):t(r)}))}))}function Re(e){return e instanceof Promise?e:Promise.resolve(e)}function xe(e){return void 0===e&&(e=1e3),new Promise((function(t){setTimeout((function(){t()}),e)}))}function Se(e){return e.prototype.constructor.name}function Ce(e){var t=e.toString().replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/(.)*/g,"").replace(/{[\s\S]*}/,"").replace(/=>/g,"").trim(),n=t.indexOf("(")+1,r=t.length-1,o=t.substring(n,r).split(", "),i=[];return o.forEach((function(e){(e=e.replace(/=[\s\S]*/g,"").trim()).length>0&&i.push(e)})),i}function ke(e){return function(){var t=Array.from(arguments);return t.unshift(this),this.helper[e].apply(this.helper,t)}}function Me(e){return Array.isArray(e)?e.map(Me):e instanceof b.ObjectId?e.toHexString():null}function Ae(e,t){Array.from(Object.values(e.sockets.sockets)).forEach(t)}function Ie(e,t){return Math.round(Te(e,t))}function Te(e,t){return e+Math.random()*(t-e)}function Ee(e,t){return new Promise((function(n,r){e.delete(t,(function(e){var o=e;!e||le(o=e.message||e||"")&&o.startsWith("FileNotFound")?n(t.toHexString()):r(o)}))}))}var De=function(){return!0};function Fe(e,t,n){var r,o;if(n=n||De,ue(t)||ce(t)||fe(t))return t;if(ae(t))return e=ae(e)?Array.from(e):[],t.forEach((function(r,o){n(r,o,e,t)&&(e.length>o?e[o]=Fe(e[o],r,n):e.push(Fe(null,r,n)))})),e;var i=fe(t.__shouldCopy)?t.__shouldCopy:function(){return!0};if(he(t.constructor)){if(!1===t.__shouldCopy)return t;if(!e)try{e=new t.constructor}catch(n){var s=t.constructor.prototype||t.prototype;e=Object.create(s)}}else e=Object.assign({},e||{});if(e instanceof Map){if(t instanceof Map)try{for(var a=K(t.entries()),c=a.next();!c.done;c=a.next()){var u=Z(c.value,2),l=u[0],f=u[1];n(f,l,e,t)&&e.set(l,i(l,f)?Fe(e.get(l),f,n):f)}}catch(e){r={error:e}}finally{try{c&&!c.done&&(o=a.return)&&o.call(a)}finally{if(r)throw r.error}}return e}var h=Object.keys(t);e=h.reduce((function(e,r){return n(t[r],r,e,t)?(e[r]=i(r,t[r])?Fe(e[r],t[r],n):t[r],e):e}),e);var d=Object.getOwnPropertyDescriptors(t);return(h=Object.keys(d).filter((function(e){return h.indexOf(e)<0}))).forEach((function(t){Object.defineProperty(e,t,d[t])})),e}var Ne=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s};function qe(e,t){if(e)return Array.isArray(t)&&t.every((function(e){try{return new b.ObjectId(e)instanceof b.ObjectId}catch(e){return!1}}));if(null===t)return!0;try{return new b.ObjectId(t)instanceof b.ObjectId}catch(e){return!1}}e.IsFile=function(){function e(){}return e.prototype.validate=function(e,t){return qe(Z(t.constraints||[],1)[0],e)},e}(),e.IsFile=Ne([u.ValidatorConstraint()],e.IsFile),e.IsObjectId=function(){function e(){}return e.prototype.validate=function(e,t){var n=Z(t.constraints||[],2);n[0];return qe(n[1],e)},e}(),e.IsObjectId=Ne([u.ValidatorConstraint()],e.IsObjectId);var ze=null;var Be,Le=Function,He=Symbol.for("fixture-token"),Je=Symbol.for("job-token"),Ge=Symbol.for("express-token"),Ve=Symbol.for("http-server-token"),Ue=Symbol.for("socket-server-token"),$e=Symbol.for("parameter-token"),Ye=Symbol.for("di-container-token"),Xe=function(e,t,n){void 0===n&&(n=null),this.name=e,this.defaultValue=t,this.resolver=n},We=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Qe=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},Ke=L.default,Ze=B.default,et=["application/font-woff","application/font-woff2","application/x-font-opentype","application/x-font-truetype","application/x-font-datafork","font/woff","font/woff2","font/otf","font/ttf","font/datafork"],tt=["image/jpeg","image/jpg","image/png"],nt=["postscriptName","fullName","familyName","subfamilyName","copyright","version","unitsPerEm","ascent","descent","lineGap","underlinePosition","underlineThickness","italicAngle","capHeight","xHeight","numGlyphs","characterSet","availableFeatures"];e.AssetProcessor=Be=function(){function e(){}return e.getMimeType=function(e,t){return Qe(this,void 0,void 0,(function(){var n;return Q(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,j.fromBuffer(e)];case 1:return t=r.sent().mime,[3,3];case 2:if(n=r.sent(),!t)throw"Can't determine mime type";return console.log("Can't determine mime type",n),[3,3];case 3:return[2,t]}}))}))},e.extractFontFormat=function(e){var t=e.constructor.name,n=e.directory.tag;switch(t){case"TTFFont":return"OTTO"===n?"opentype":"truetype";case"WOFF2Font":return"woff2";case"WOFFFont":return"woff";case"DFont":return"datafork"}return null},e.isImage=function(e){return tt.indexOf(e)>=0},e.copyImageMeta=function(e,t){return Qe(this,void 0,void 0,(function(){var n;return Q(this,(function(r){switch(r.label){case 0:return[4,Ke(e).rotate().toBuffer({resolveWithObject:!0})];case 1:return n=r.sent(),Object.assign(t,n.info),[2,n.data]}}))}))},e.isFont=function(e){return et.indexOf(e)>=0},e.copyFontMeta=function(e,t){var n=Ze.create(e);t.format=Be.extractFontFormat(n),nt.forEach((function(e){t[e]=n[e]}))},e.prototype.process=function(e,t,n){return Qe(this,void 0,void 0,(function(){return Q(this,(function(r){switch(r.label){case 0:return Be.isImage(n)?[4,Be.copyImageMeta(e,t)]:[3,2];case 1:e=r.sent(),r.label=2;case 2:return Be.isFont(n)&&Be.copyFontMeta(e,t),[2,e]}}))}))},e}(),e.AssetProcessor=Be=We([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped)],e.AssetProcessor);var rt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},ot=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},it=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};e.Configuration=function(){function e(e){var t=this;H.default.config(),this.paramMap={},(e||[]).forEach((function(e){return t.add(e)}))}return e.prototype.add=function(e){var t=this.paramMap[e.name]||e;t.defaultValue=e.defaultValue,t.resolver=e.resolver||t.resolver,this.paramMap[e.name]=t},e.prototype.hasParam=function(e){return!!this.paramMap[e]},e.prototype.resolve=function(e){var t=this.paramMap[e];if(!t)throw new Error("Parameter with name: '"+e+"' does not exists in configuration");var n=t.name.replace(/\.?([A-Z|0-9]+)/g,(function(e,t){return"_"+t.toLowerCase()})).replace(/\./gi,"_").replace(/^_/,"").toUpperCase(),r=process.env[n];return void 0!==r?fe(t.resolver)?t.resolver(r):ve(r,ie(t.defaultValue)):t.defaultValue},e}(),e.Configuration=rt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),it(0,o.injectAll($e)),ot("design:paramtypes",[Array])],e.Configuration);var st=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},at=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},ct=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.MongoConnector=function(){function e(e){this.configuration=e,this.conn=null,this.db=null,this.fsBucket=null}return Object.defineProperty(e.prototype,"connection",{get:function(){return this.conn},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"database",{get:function(){return this.db},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bucket",{get:function(){return this.fsBucket},enumerable:!1,configurable:!0}),e.prototype.connect=function(){return ct(this,void 0,void 0,(function(){var e;return Q(this,(function(t){switch(t.label){case 0:return this.db?[2,this.db]:(e=this,[4,v.connect(this.configuration.resolve("mongoUri"),{dbName:this.configuration.resolve("mongoDb"),user:this.configuration.resolve("mongoUser"),pass:this.configuration.resolve("mongoPassword"),useNewUrlParser:!0,useUnifiedTopology:!0})]);case 1:return e.conn=t.sent().connection,this.db=this.conn.db,this.fsBucket=new O.GridFSBucket(this.db,{bucketName:"assets"}),[2]}}))}))},e}(),e.MongoConnector=st([o.injectable(),o.singleton(),at("design:paramtypes",[e.Configuration])],e.MongoConnector);var ut=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},lt=L.default,ft=function(){function e(e,t,n,r,o,i){this.fileId=e,this.filename=t,this.contentType=n,this.metadata=r,this.bucket=o,this.collection=i}return e.toImage=function(e,t){return ut(this,void 0,void 0,(function(){var n,r,o,i;return Q(this,(function(s){switch(s.label){case 0:return t=t||{},0==Object.keys(t).length?[2,e]:[4,we(e)];case 1:n=s.sent(),t.rotation=isNaN(t.rotation)?0:90*Math.round(t.rotation/90),t.canvasScaleX=isNaN(t.canvasScaleX)?1:t.canvasScaleX,t.canvasScaleY=isNaN(t.canvasScaleY)?1:t.canvasScaleY,t.scaleX=isNaN(t.scaleX)?1:t.scaleX,t.scaleY=isNaN(t.scaleY)?1:t.scaleY,s.label=2;case 2:return s.trys.push([2,10,,11]),[4,lt(n).metadata()];case 3:return r=s.sent(),o=r.width,i=r.height,1===t.canvasScaleX&&1===t.canvasScaleY?[3,5]:(o=Math.round(o*t.canvasScaleX),i=Math.round(i*t.canvasScaleY),[4,lt(n).resize({width:o,height:i,background:"#00000000",fit:"contain"}).toBuffer()]);case 4:n=s.sent(),s.label=5;case 5:return 1===t.scaleX&&1===t.scaleY?[3,7]:(o=Math.round(o*t.scaleX),i=Math.round(i*t.scaleY),[4,lt(n).resize({width:o,height:i,background:"#00000000",fit:"fill"}).toBuffer()]);case 6:n=s.sent(),s.label=7;case 7:return 0===t.rotation?[3,9]:[4,lt(n).rotate(t.rotation).toBuffer()];case 8:n=s.sent(),s.label=9;case 9:return[2,be(n)];case 10:return s.sent(),[2,be(n)];case 11:return[2]}}))}))},Object.defineProperty(e.prototype,"id",{get:function(){return this.fileId.toHexString()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"stream",{get:function(){return this.bucket.openDownloadStream(this.fileId)},enumerable:!1,configurable:!0}),e.prototype.unlink=function(){return ut(this,void 0,void 0,(function(){return Q(this,(function(e){return[2,Ee(this.bucket,this.fileId)]}))}))},e.prototype.getBuffer=function(){return we(this.stream)},e.prototype.download=function(e){return ut(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return(e=Object.assign(this.metadata,e||{})).downloadCount=isNaN(e.downloadCount)||!e.firstDownload?1:e.downloadCount+1,e.firstDownload=e.firstDownload||new Date,e.lastDownload=new Date,[4,this.collection.updateOne({_id:this.fileId},{$set:{metadata:e}})];case 1:return t.sent(),[2,this.stream]}}))}))},e.prototype.getImage=function(t){return void 0===t&&(t=null),ut(this,void 0,void 0,(function(){return Q(this,(function(n){return[2,e.toImage(this.stream,t)]}))}))},e.prototype.downloadImage=function(t,n){return ut(this,void 0,void 0,(function(){var r,o;return Q(this,(function(i){switch(i.label){case 0:return o=(r=e).toImage,[4,this.download(n)];case 1:return[2,o.apply(r,[i.sent(),t])]}}))}))},e.prototype.toJSON=function(){return{id:this.id,filename:this.filename,contentType:this.contentType,metadata:this.metadata}},e}(),ht=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},dt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},pt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.Assets=function(){function t(e,t){this.connector=e,this.assetProcessor=t,this.bucket=e.bucket,this.collection=e.database.collection("assets.files")}return t.prototype.write=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),pt(this,void 0,void 0,(function(){var r,o,i,s,a,c=this;return Q(this,(function(u){switch(u.label){case 0:r=null,o=Pe(e),i=Pe(e),u.label=1;case 1:return u.trys.push([1,3,,4]),[4,j.fromStream(o)];case 2:return s=u.sent(),t=s.mime,r=s.ext,[3,4];case 3:if(a=u.sent(),!t)throw"Can't determine content type";return console.log("Can't determine content type",a),[3,4];case 4:return t=t.trim(),r=(r||"").trim(),(n=Object.assign({extension:r,downloadCount:0,firstDownload:null,lastDownload:null},n||{})).filename=n.filename||(new b.ObjectId).toHexString(),[2,new Promise((function(e,r){var o=c.bucket.openUploadStream(n.filename);i.pipe(o).on("error",(function(e){r(e.message||e)})).on("finish",(function(){var i=new ft(o.id,n.filename,t,n,c.bucket,c.collection);c.collection.updateOne({_id:o.id},{$set:i.toJSON()}).then((function(){e(i)}),(function(e){r(e.message||e)}))}))}))]}}))}))},t.prototype.writeBuffer=function(t,n,r){return void 0===n&&(n=null),void 0===r&&(r=null),pt(this,void 0,void 0,(function(){return Q(this,(function(o){switch(o.label){case 0:return[4,e.AssetProcessor.getMimeType(t,r)];case 1:return r=o.sent(),n=n||{},[4,this.assetProcessor.process(t,n,r)];case 2:return t=o.sent(),[2,this.write(be(t),r,n)]}}))}))},t.prototype.read=function(e){return pt(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,this.find({_id:new b.ObjectId(e)})]}))}))},t.prototype.find=function(e){return pt(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.collection.findOne(e)];case 1:return[2,(t=n.sent())?new ft(t._id,t.filename,t.contentType,t.metadata,this.bucket,this.collection):null]}}))}))},t.prototype.unlink=function(e){return pt(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.read(e)];case 1:return(t=n.sent())?[2,t.unlink()]:[2,null]}}))}))},t}(),e.Assets=ht([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),dt("design:paramtypes",[e.MongoConnector,e.AssetProcessor])],e.Assets);var yt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},vt=function(){function e(e,t,n,r,o,i,s,a,c,u){this.lazyId=e,this.jobName=t,this.jobParams=n,this.jobQue=r,this.mProgressId=o,this.mAssetId=i,this.assets=s,this.progresses=a,this.jobMan=c,this.collection=u}return Object.defineProperty(e.prototype,"id",{get:function(){return this.lazyId.toHexString()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"progressId",{get:function(){return this.mProgressId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"assetId",{get:function(){return this.mAssetId},enumerable:!1,configurable:!0}),e.prototype.unlink=function(){return yt(this,void 0,void 0,(function(){return Q(this,(function(e){switch(e.label){case 0:return[4,this.collection.deleteOne({_id:this.lazyId})];case 1:return e.sent(),[2,Ee(this.assets.bucket,new b.ObjectId(this.mAssetId))]}}))}))},e.prototype.startWorking=function(){var e=this;this.mProgressId||this.startWorkingOnAsset().then((function(){console.log("Started working on lazy asset: "+e.id)})).catch((function(t){console.log("Can't start working on lazy asset: "+e.id+"\nReason: "+t)}))},e.prototype.loadAsset=function(){return yt(this,void 0,void 0,(function(){var e;return Q(this,(function(t){switch(t.label){case 0:return this.mAssetId?[2,this.assets.read(this.mAssetId)]:this.mProgressId?[4,this.progresses.waitToFinish(this.mProgressId)]:[3,3];case 1:return t.sent(),[4,this.collection.findOne({_id:this.lazyId})];case 2:return e=t.sent(),this.mAssetId=e.assetId,[2,this.loadAsset()];case 3:return[4,this.startWorkingOnAsset()];case 4:return t.sent(),[2,this.loadAsset()]}}))}))},e.prototype.writeAsset=function(e){return yt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return this.mAssetId=e.id,[4,this.save()];case 1:return t.sent(),[2,e]}}))}))},e.prototype.save=function(){return this.collection.updateOne({_id:this.lazyId},{$set:this.toJSON()})},e.prototype.toJSON=function(){return{id:this.id,jobName:this.jobName,jobParams:this.jobParams,jobQue:this.jobQue,progressId:this.progressId,assetId:this.assetId}},e.prototype.startWorkingOnAsset=function(){return yt(this,void 0,void 0,(function(){var e;return Q(this,(function(t){switch(t.label){case 0:return[4,this.progresses.create()];case 1:return e=t.sent(),this.mProgressId=e.id,[4,this.save()];case 2:return t.sent(),[4,this.jobMan.enqueueWithName(this.jobName,Object.assign(Object.assign({},this.jobParams),{lazyId:this.id}))];case 3:return t.sent(),[2]}}))}))},e}(),gt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},mt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},bt=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},wt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},jt=J.default;e.JobManager=function(){function e(e,t,n){var r=this;this.config=e,this.container=t,this.jobTypes=n||[],this.jobs=this.jobTypes.reduce((function(e,t){return e[Se(t)]={perform:r.toPerformFunction(t)},e}),{})}return e.prototype.process=function(e,t){return void 0===t&&(t={}),wt(this,void 0,void 0,(function(){var n;return Q(this,(function(r){n=null;try{n=this.resolveJobInstance(e,t)}catch(n){throw"Can't resolve params for job: "+Se(e)+", with params: "+JSON.stringify(t)+". Reason: "+n}return[2,n.process()]}))}))},e.prototype.enqueueWithName=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n="main"),wt(this,void 0,void 0,(function(){var r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.tryResolveFromName(e,t)];case 1:return r=o.sent(),[4,this.queue.enqueue(n,r,[t])];case 2:return o.sent(),[2]}}))}))},e.prototype.enqueue=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n="main"),wt(this,void 0,void 0,(function(){var r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.tryResolveAndConnect(e,t)];case 1:return r=o.sent(),[4,this.queue.enqueue(n,r,[t])];case 2:return o.sent(),[2]}}))}))},e.prototype.enqueueAt=function(e,t,n,r){return void 0===n&&(n={}),void 0===r&&(r="main"),wt(this,void 0,void 0,(function(){var o;return Q(this,(function(i){switch(i.label){case 0:return[4,this.tryResolveAndConnect(t,n)];case 1:return o=i.sent(),[4,this.queue.enqueueAt(e,r,o,[n])];case 2:return i.sent(),[2]}}))}))},e.prototype.enqueueIn=function(e,t,n,r){return void 0===n&&(n={}),void 0===r&&(r="main"),wt(this,void 0,void 0,(function(){var o;return Q(this,(function(i){switch(i.label){case 0:return[4,this.tryResolveAndConnect(t,n)];case 1:return o=i.sent(),[4,this.queue.enqueueIn(e,r,o,[n])];case 2:return i.sent(),[2]}}))}))},e.prototype.schedule=function(e,t,n,r,o,i,s,a){var c=this;void 0===s&&(s={}),void 0===a&&(a="main");var u=[e,t,n,r,o].map((function(e){if(se(e)){var t=e;return(t.min||0)+"-"+(t.max||0)}return ae(e)?e.join(","):""+e})).join(" "),l=Se(i);return x.validate(u)?x.schedule(u,(function(){c.enqueue(i,s,a).catch((function(e){console.log("Can't enqueue job: '"+l+"' because: "+e)}))})):(console.log("Can't schedule the task: '"+l+"' because time expression is invalid."),null)},e.prototype.startProcessing=function(){return wt(this,void 0,void 0,(function(){return Q(this,(function(e){switch(e.label){case 0:return this.initialize(),[4,this.worker.connect()];case 1:return e.sent(),[4,this.worker.start()];case 2:return e.sent(),[4,this.scheduler.connect()];case 3:return e.sent(),[4,this.scheduler.start()];case 4:return e.sent(),[2]}}))}))},e.prototype.tryResolve=function(e,t){var n=Se(e);if(!this.jobs[n])throw"Can't find job with name: "+n+" so it can't be enqueued!";try{this.resolveJobInstance(e,t)}catch(e){throw"Can't resolve params for job: "+n+", with params: "+JSON.stringify(t)+". Reason: "+e}return n},e.prototype.initialize=function(){if(!this.queue){var e=this.config,t={password:e.resolve("redisPassword")},n=e.resolve("redisSentinels"),r=n?new jt({sentinels:n,name:e.resolve("redisCluster")}):null,o={pkg:"ioredis",host:e.resolve("redisHost"),password:t.password,port:e.resolve("redisPort"),namespace:e.resolve("redisNamespace"),redis:r,options:t},i=e.resolve("workQueues");this.queue=new R.Queue({connection:o},this.jobs),this.worker=new R.Worker({connection:o,queues:i},this.jobs),this.worker.on("job",(function(e,t){console.log("working job "+e+" "+JSON.stringify(t))})),this.worker.on("reEnqueue",(function(e,t,n){console.log("reEnqueue job ("+n+") "+e+" "+JSON.stringify(t))})),this.worker.on("success",(function(e,t,n,r){console.log("job success "+e+" "+JSON.stringify(t)+" >> "+n+" ("+r+"ms)")})),this.worker.on("failure",(function(e,t,n,r){console.log("job failure "+e+" "+JSON.stringify(t)+" >> "+n+" ("+r+"ms)")})),this.worker.on("error",(function(e,t,n){console.log("error "+t+" "+JSON.stringify(n)+" >> "+e)})),this.scheduler=new R.Scheduler({connection:o},this.jobs)}},e.prototype.tryResolveFromName=function(e,t){var n=this.jobTypes.find((function(t){return Se(t)==e}));if(!n)throw"Can't find job type with name: "+e+" so it can't be enqueued!";return this.tryResolveAndConnect(n,t)},e.prototype.tryResolveAndConnect=function(e,t){return wt(this,void 0,void 0,(function(){var n;return Q(this,(function(r){switch(r.label){case 0:return this.initialize(),n=this.tryResolve(e,t),[4,this.queue.connect()];case 1:return r.sent(),[2,n]}}))}))},e.prototype.resolveJobInstance=function(e,t){var n=this.container.createChildContainer();return Object.keys(t).map((function(e){n.register(e,{useValue:t[e]})})),n.register(e,e),n.resolve(e)},e.prototype.toPerformFunction=function(e){var t=this;return function(n){return t.resolveJobInstance(e,n).process()}},e}(),e.JobManager=gt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),bt(1,o.inject(Ye)),bt(2,o.injectAll(Je)),mt("design:paramtypes",[e.Configuration,Object,Array])],e.JobManager);var Pt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},Ot=function(){function e(e,t,n,r,o,i,s){this.progressId=e,this.mCurrent=t,this.mMax=n,this.mMessage=r,this.mError=o,this.client=i,this.collection=s}return Object.defineProperty(e.prototype,"id",{get:function(){return this.progressId.toHexString()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"current",{get:function(){return this.mCurrent},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"max",{get:function(){return this.mMax},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this.mMessage},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"error",{get:function(){return this.mError},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"percent",{get:function(){return this.mMax>0?Math.round(this.mCurrent/this.mMax*100):0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"remaining",{get:function(){return this.mMax>0?this.mMax-this.mCurrent:0},enumerable:!1,configurable:!0}),e.prototype.createSubProgress=function(e,t,n){return Pt(this,void 0,void 0,(function(){return Q(this,(function(r){switch(r.label){case 0:return t<=0&&e>0?[4,this.advance(e)]:[3,2];case 1:r.sent(),r.label=2;case 2:return null===n?[3,4]:(this.mMessage=n,[4,this.save()]);case 3:r.sent(),r.label=4;case 4:return[2,new _t(this,this.mCurrent,e,Math.max(t,1))]}}))}))},e.prototype.setMax=function(e){return Pt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:if(isNaN(e)||e<=0)throw"Max progress value must be bigger than zero";return this.mMax=e,[4,this.save()];case 1:return t.sent(),[2]}}))}))},e.prototype.setError=function(e){return Pt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return this.mError=e,[4,this.save()];case 1:return t.sent(),[2]}}))}))},e.prototype.advance=function(e){return void 0===e&&(e=1),Pt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:if(isNaN(e)||e<=0)throw"Advance value must be bigger than zero";return this.mCurrent=Math.min(this.mMax,this.mCurrent+e),[4,this.save()];case 1:return t.sent(),this.client?(this.client.emit("background-progress",this.id),[2]):[2]}}))}))},e.prototype.toJSON=function(){return{id:this.id,current:this.current,max:this.max,message:this.message,error:this.error}},e.prototype.save=function(){return this.collection.updateOne({_id:this.progressId},{$set:this.toJSON()})},e}(),_t=function(){function e(e,t,n,r){if(void 0===r&&(r=100),this.parent=e,this.progressFrom=t,this.progressValue=n,this.max=r,t<0)throw"Progress from must be bigger than or zero";if(n<=0)throw"Progress value must be bigger than zero";this.currentValue=0}return Object.defineProperty(e.prototype,"id",{get:function(){return this.parent.id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this.parent.message},set:function(e){this.parent.message=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"error",{get:function(){return this.parent.error},set:function(e){this.parent.error=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"percent",{get:function(){return this.parent.percent},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"current",{get:function(){return this.currentValue},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"remaining",{get:function(){return this.max-this.currentValue},enumerable:!1,configurable:!0}),e.prototype.createSubProgress=function(t,n,r){return Pt(this,void 0,void 0,(function(){return Q(this,(function(o){switch(o.label){case 0:return n<=0&&t>0?[4,this.advance(t)]:[3,2];case 1:o.sent(),o.label=2;case 2:return null===r?[3,4]:(this.message=r,[4,this.parent.save()]);case 3:o.sent(),o.label=4;case 4:return[2,new e(this,this.current,t,Math.max(n,1))]}}))}))},e.prototype.setMax=function(e){return Pt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:if(isNaN(e)||e<=0)throw"Max progress value must be bigger than zero";return this.max=e,[4,this.save()];case 1:return t.sent(),[2]}}))}))},e.prototype.setError=function(e){return Pt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return this.error=e||null,[4,this.save()];case 1:return t.sent(),[2]}}))}))},e.prototype.advance=function(e){return void 0===e&&(e=1),Pt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:if(isNaN(e)||e<=0)throw"Advance value must be bigger than zero";return this.currentValue=Math.min(this.max,this.currentValue+e),[4,this.save()];case 1:return t.sent(),[2]}}))}))},e.prototype.save=function(){return Pt(this,void 0,void 0,(function(){var e,t,n;return Q(this,(function(r){switch(r.label){case 0:return e=this.max>0?this.currentValue/this.max:0,t=this.progressFrom+Math.round(this.progressValue*e),n=this.parent.current,t<=n?[2,null]:[4,this.parent.advance(t)];case 1:return r.sent(),[2]}}))}))},e.prototype.toJSON=function(){return this.parent.toJSON()},e}(),Rt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},xt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},St=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},Ct=G.default;e.Progresses=function(){function e(e,t){this.connector=e,this.config=t;var n=this.config.resolve("mainEndpoint");this.client=n?Ct(n,{path:"/socket"}):null,this.collection=e.database.collection("progresses")}return e.prototype.waitToFinish=function(e){return St(this,void 0,void 0,(function(){var t,n;return Q(this,(function(r){switch(r.label){case 0:t=!1,n=null,r.label=1;case 1:return t?[3,5]:[4,this.get(e)];case 2:if(!(n=r.sent()))throw"Progress does not exists with id: "+e;if(n.error)throw n.error;return(t=100==n.percent)?[3,4]:[4,xe(150)];case 3:r.sent(),r.label=4;case 4:return[3,1];case 5:return[2,n]}}))}))},e.prototype.get=function(e){return St(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,this.find({_id:new b.ObjectId(e)})]}))}))},e.prototype.find=function(e){return St(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.collection.findOne(e)];case 1:return[2,(t=n.sent())?new Ot(t._id,t.current,t.max,t.message,t.error,this.client,this.collection):null]}}))}))},e.prototype.create=function(e){return void 0===e&&(e=100),St(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:if(isNaN(e)||e<=0)throw"Max progress value must be bigger than zero";return[4,this.collection.insertOne({current:0,max:e})];case 1:return t=n.sent(),[2,new Ot(t.insertedId,0,e,"","",this.client,this.collection)]}}))}))},e.prototype.remove=function(e){return St(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return[4,this.collection.deleteOne({_id:new b.ObjectId(e)})];case 1:return t.sent(),[2,e]}}))}))},e}(),e.Progresses=Rt([o.injectable(),o.singleton(),xt("design:paramtypes",[e.MongoConnector,e.Configuration])],e.Progresses);var kt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Mt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},At=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.LazyAssets=function(){function e(e,t,n,r){this.connector=e,this.assets=t,this.progresses=n,this.jobMan=r,this.collection=e.database.collection("lazyassets")}return e.prototype.create=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n="main"),At(this,void 0,void 0,(function(){var r,o;return Q(this,(function(i){switch(i.label){case 0:return r=this.jobMan.tryResolve(e,Object.assign(Object.assign({},t),{lazyId:""})),[4,this.collection.insertOne({jobName:r,jobParams:t,jobQue:n})];case 1:return o=i.sent(),[2,new vt(o.insertedId,r,t,n,null,null,this.assets,this.progresses,this.jobMan,this.collection)]}}))}))},e.prototype.read=function(e){return At(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,this.find({_id:new b.ObjectId(e)})]}))}))},e.prototype.find=function(e){return At(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.collection.findOne(e)];case 1:return[2,(t=n.sent())?new vt(t._id,t.jobName,t.jobParams,t.jobQue,t.progressId,t.assetId,this.assets,this.progresses,this.jobMan,this.collection):null]}}))}))},e.prototype.unlink=function(e){return At(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.read(e)];case 1:return(t=n.sent())?[2,t.unlink()]:[2,null]}}))}))},e}(),e.LazyAssets=kt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),Mt("design:paramtypes",[e.MongoConnector,e.Assets,e.Progresses,e.JobManager])],e.LazyAssets);var It=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Tt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Et=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.AssetResolver=function(){function e(e,t){this.assets=e,this.lazyAssets=t}return e.prototype.resolve=function(e,t){return void 0===t&&(t=!1),Et(this,void 0,void 0,(function(){var n,r;return Q(this,(function(o){switch(o.label){case 0:return n=null,t?[4,this.lazyAssets.read(e)]:[3,2];case 1:return(r=o.sent())?[2,r.loadAsset()]:[2,null];case 2:return[4,this.assets.read(e)];case 3:return(n=o.sent())?[3,5]:[4,this.lazyAssets.read(e)];case 4:return(r=o.sent())?[2,r.loadAsset()]:[2,null];case 5:return[2,n]}}))}))},e}(),e.AssetResolver=It([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),Tt("design:paramtypes",[e.Assets,e.LazyAssets])],e.AssetResolver);var Dt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Ft=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Nt=V.default,qt=U.default;e.BackendProvider=function(){function e(){this.express=Nt(),this.server=k.createServer(this.express)}return Object.defineProperty(e.prototype,"io",{get:function(){return this.ioServer=this.ioServer||qt(this.server,{path:"/socket"}),this.ioServer},enumerable:!1,configurable:!0}),e}(),e.BackendProvider=Dt([o.injectable(),o.singleton(),Ft("design:paramtypes",[])],e.BackendProvider);var zt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Bt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.CacheProcessor=function(){function e(){}return e.prototype.serialize=function(e){return Bt(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,e]}))}))},e.prototype.deserialize=function(e){return Bt(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,e]}))}))},e}(),e.CacheProcessor=zt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped)],e.CacheProcessor);var Lt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Ht=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Jt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.Cache=function(){function e(e,t,n){this.connector=e,this.config=t,this.cacheProcessor=n}return e.prototype.prepare=function(){return Jt(this,void 0,void 0,(function(){return Q(this,(function(e){switch(e.label){case 0:if(this.collection)return[2];if(!this.connector.database)throw new Error("You can't use cache without mongo connection!");return this.collection=this.connector.database.collection(this.config.resolve("cacheCollection")),[4,this.collection.createIndex({expiresAt:1},{expireAfterSeconds:0})];case 1:return e.sent(),[2]}}))}))},e.prototype.set=function(e,t,n,r,o){return void 0===r&&(r=null),void 0===o&&(o={}),Jt(this,void 0,void 0,(function(){var i,s,a;return Q(this,(function(c){switch(c.label){case 0:return[4,this.prepare()];case 1:return c.sent(),s={_id:e},[4,this.cacheProcessor.serialize(t)];case 2:return s.data=c.sent(),[4,this.cacheProcessor.serialize(o)];case 3:return s.tags=c.sent(),s.expirationTimestamp=r,i=s,n&&(a=Math.round((new Date).getTime()/1e3),i.expiresAt=a+n),[4,this.collection.updateOne({_id:e},{$set:i},{upsert:!0})];case 4:return c.sent(),[2,t]}}))}))},e.prototype.get=function(e){return Jt(this,void 0,void 0,(function(){var t,n;return Q(this,(function(r){switch(r.label){case 0:return[4,this.prepare()];case 1:return r.sent(),[4,this.collection.findOne({_id:e})];case 2:if(t=r.sent(),n=Math.round((new Date).getTime()/1e3),t&&t.expiresAt&&t.expiresAt<n&&(t=null),!t)throw new Error("Cache probably doesn't exists with key: "+e);return[4,this.cacheProcessor.deserialize(t.data)];case 3:return[2,r.sent()]}}))}))},e.prototype.getOrSet=function(e,t,n,r,o){return void 0===r&&(r=null),void 0===o&&(o={}),Jt(this,void 0,void 0,(function(){var i,s;return Q(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,5]),[4,this.get(e)];case 1:return[2,a.sent()];case 2:return a.sent(),i=this.set,s=[e],[4,t()];case 3:return[4,i.apply(this,s.concat([a.sent(),n,r,o]))];case 4:return[2,a.sent()];case 5:return[2]}}))}))},e.prototype.delete=function(e){return Jt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return[4,this.prepare()];case 1:return t.sent(),[4,this.collection.deleteOne({_id:e})];case 2:return t.sent(),[2]}}))}))},e}(),e.Cache=Lt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),Ht("design:paramtypes",[e.MongoConnector,e.Configuration,e.CacheProcessor])],e.Cache);var Gt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Vt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.EndpointProvider=function(){function e(){}return e.prototype.configure=function(e){return Vt(this,void 0,void 0,(function(){return Q(this,(function(t){return console.log("Express app is mounted to: "+e.mountpath),[2]}))}))},e}(),e.EndpointProvider=Gt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped)],e.EndpointProvider);var Ut=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},$t=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Yt=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},Xt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.Fixtures=function(){function e(e){this.fixtures=e}return e.prototype.load=function(){return Xt(this,void 0,void 0,(function(){var e,t,n,r,o;return Q(this,(function(i){switch(i.label){case 0:if(!this.fixtures)return[2];i.label=1;case 1:i.trys.push([1,6,7,8]),e=K(this.fixtures),t=e.next(),i.label=2;case 2:return t.done?[3,5]:[4,t.value.load()];case 3:i.sent(),i.label=4;case 4:return t=e.next(),[3,2];case 5:return[3,8];case 6:return n=i.sent(),r={error:n},[3,8];case 7:try{t&&!t.done&&(o=e.return)&&o.call(e)}finally{if(r)throw r.error}return[7];case 8:return[2]}}))}))},e}(),e.Fixtures=Ut([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),Yt(0,o.injectAll(He)),$t("design:paramtypes",[Array])],e.Fixtures);var Wt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},Qt=L.default,Kt=function(){function e(e,t,n){this.folder=e,this.handler=n,this.thumb=I.v4(),this.big=I.v4(),this.targetSize=t||{width:250,height:250}}return e.prototype.serve=function(e){return Wt(this,void 0,void 0,(function(){var t,n,r,o,i,s,a,c,u,l,f;return Q(this,(function(h){switch(h.label){case 0:return t=e==this.thumb,[4,this.handler.hasResult(t)];case 1:return h.sent()?[2,this.handler.serveResult(t)]:(r=Qt,[4,this.handler.getOriginal()]);case 2:return[4,(n=r.apply(void 0,[h.sent()]).rotate()).metadata()];case 3:return o=h.sent(),i=o.width/o.height,s=t?this.targetSize.width/this.targetSize.height:1,a=t?Math.max(this.targetSize.width,this.targetSize.height):1500,c=i>s?a:Math.round(a/i),u=Math.round(c*i),l=n.resize(u,c),[4,t?l.extract({left:Math.floor((u-this.targetSize.width)/2),top:Math.floor((c-this.targetSize.height)/2),width:this.targetSize.width,height:this.targetSize.height}).toBuffer():l.toBuffer()];case 4:return f=h.sent(),[4,this.handler.writeResult(t,f)];case 5:return h.sent(),[2,this.handler.serveResult(t)]}}))}))},e}(),Zt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},en=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};e.GalleryCache=function(){function e(){this.imgCache={}}return e.prototype.put=function(e){this.imgCache[e.thumb]=e,this.imgCache[e.big]=e},e.prototype.serve=function(e){var t=this.imgCache[e];return t?t.serve(e):null},e.prototype.create=function(e,t,n){var r=new Kt(e,t,n);return this.put(r),r},e}(),e.GalleryCache=Zt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),en("design:paramtypes",[])],e.GalleryCache);var tn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},nn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},rn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},on=L.default;e.Gallery=function(){function e(e,n){this.config=e,this.galleryCache=n,this.cache={},this.dir=this.config.resolve("galleryDir"),this.output=t.join(this.config.resolve("cacheDir"),"gallery")}return e.prototype.getFolder=function(e,n){return void 0===n&&(n=null),rn(this,void 0,void 0,(function(){var r=this;return Q(this,(function(o){return this.cache[e]=this.cache[e]||new Promise((function(o){y.lstat(t.join(r.dir,e),(function(t,i){!t&&i.isDirectory()?r.readRecursive(e,"",n).then(o,(function(){return o([])})):o([])}))})),[2,this.cache[e]]}))}))},e.prototype.readRecursive=function(e,n,r){var o=this;return new Promise((function(i){y.readdir(t.join(o.dir,e),(function(s,a){if(s)i([]);else{var c=a.map((function(i){return new Promise((function(s){return rn(o,void 0,void 0,(function(){var o,a,c=this;return Q(this,(function(u){return o=t.join(e,i),a=t.join(this.dir,o),y.lstat(a,(function(e,u){e?s([]):u.isDirectory()?c.readRecursive(o,t.join(n,i),r).then(s):on(a).rotate().metadata().then((function(){var e=function(e){return t.join(c.output,o.replace(/.([a-z|A-Z]+)$/gi,(function(t){return"-"+(e?"thumb":"big")+t})))};s([c.galleryCache.create(n,r,{getOriginal:function(){return new Promise((function(e,t){y.readFile(a,(function(n,r){n?t(n):e(r)}))}))},writeResult:function(n,r){return new Promise((function(o,i){return rn(c,void 0,void 0,(function(){var s;return Q(this,(function(a){switch(a.label){case 0:return s=e(n),[4,Oe(t.dirname(s))];case 1:return a.sent(),y.writeFile(s,r,(function(e){e?i(e):o()})),[2]}}))}))}))},hasResult:function(t){return new Promise((function(n){y.access(e(t),y.constants.R_OK,(function(e){n(!e)}))}))},serveResult:function(t){return new Promise((function(n,r){y.readFile(e(t),(function(e,t){e?r(e):n(t)}))}))}})])}),(function(){return s([])}))})),[2]}))}))}))}));Promise.all(c).then((function(e){i([].concat.apply([],e))}))}}))}))},e}(),e.Gallery=tn([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),nn("design:paramtypes",[e.Configuration,e.GalleryCache])],e.Gallery);var sn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},an=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},cn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.IdGenerator=function(){function e(e){this.config=e,this.prefix=e.resolve("idPrefix"),this.separator=e.resolve("idSeparator"),this.chars=e.resolve("idChars"),this.parts=e.resolve("idParts")}return e.prototype.generate=function(e){return cn(this,void 0,void 0,(function(){var t,n,r;return Q(this,(function(o){switch(o.label){case 0:t=null,n=0,r=!0,o.label=1;case 1:return r&&n<5?(t=this.generateId(),[4,e(t)]):[3,3];case 2:return r=o.sent(),n++,[3,1];case 3:if(r)throw"Couldn't generate an unique id..";return[2,t]}}))}))},e.prototype.generateId=function(){var e=this;return this.prefix+this.parts.map((function(t){for(var n="",r=0;r<t;r++){var o=Ie(0,e.chars.length-1);n+=e.chars[o]}return n})).join(this.separator)},e}(),e.IdGenerator=sn([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),an("design:paramtypes",[e.Configuration])],e.IdGenerator);var un=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},ln=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};e.TranslationProvider=function(){function e(e){this.config=e,this.cache={}}return e.prototype.getDictionary=function(e){return this.cache[e]=this.cache[e]||Y.default.get(this.config.resolve("translationsTemplate").replace("[lang]",e)).then((function(e){return e.data}),(function(e){return{message:e}})),this.cache[e]},e}(),e.TranslationProvider=un([o.injectable(),o.singleton(),ln("design:paramtypes",[e.Configuration])],e.TranslationProvider);var fn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},hn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},dn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.Translator=function(){function e(e){this.translationProvider=e,this.cache={}}return e.prototype.getDictionary=function(e){return dn(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.translationProvider.getDictionary(e)];case 1:return t=n.sent(),this.cache[e]=t,[2,t]}}))}))},e.prototype.getTranslationSync=function(e,t,n){if(!le(t)||!t.length)throw new Error('Parameter "key" required');var r=ye(this.cache[e],t,t)||t;return this.interpolate(r,n)},e.prototype.getTranslation=function(e,t,n){var r=this;if(!le(t)||!t.length)throw new Error('Parameter "key" required');return this.getDictionary(e).then((function(e){var o=ye(e,t,t)||t;return r.interpolate(o,n)}))},e.prototype.getTranslations=function(e){for(var t=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return new Promise((function(r){Promise.all(n.map((function(n){return t.getTranslation(e,n)}))).then((function(e){r(n.reduce((function(t,n,r){return t[n]=e[r],t}),{}))}))}))},e.prototype.interpolate=function(e,t){return"string"==typeof e?this.interpolateString(e,t):"function"==typeof e?e(t):e},e.prototype.interpolateString=function(e,t){return e&&t?e.replace(/{{\s?([^{}\s]*)\s?}}/g,(function(e,n){var r=ye(t,n);return oe(r)?r:e})):e},e}(),e.Translator=fn([o.injectable(),o.singleton(),hn("design:paramtypes",[e.TranslationProvider])],e.Translator);var pn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},yn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},vn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.TemplateRenderer=function(){function e(e,t){this.translator=e,this.config=t,this.templates={},$.registerHelper("object",(function(e){return e.hash})),$.registerHelper("now",(function(){return(new Date).getTime()})),$.registerHelper("keys",(function(e){return e?Object.keys(e):[]})),$.registerHelper("translate",(function(t,n){return e.getTranslationSync(this.language,t,n)}))}return e.prototype.init=function(){return this.initPromise=this.initPromise||this.parseTemplates(this.config.resolve("templatesDir"),[]),this.initPromise},e.prototype.parseTemplates=function(e,n){return vn(this,void 0,void 0,(function(){var r=this;return Q(this,(function(o){return[2,new Promise((function(o){y.readdir(e,(function(i,s){return vn(r,void 0,void 0,(function(){var r,i,a,c,u,l,f,h,d,p,v;return Q(this,(function(g){switch(g.label){case 0:g.trys.push([0,6,7,8]),r=K(s),i=r.next(),g.label=1;case 1:return i.done?[3,5]:(a=i.value,c=t.join(e,a),y.lstatSync(c).isDirectory()?[4,this.parseTemplates(t.join(e,a),n.concat([a]))]:[3,3]);case 2:return g.sent(),[3,4];case 3:(u=a.split(".")).pop(),l=u.join("."),f=n.concat([l]).join("-"),h=y.readFileSync(c).toString("utf8"),this.templates[f]=$.compile(h),$.registerPartial(f,h),g.label=4;case 4:return i=r.next(),[3,1];case 5:return[3,8];case 6:return d=g.sent(),p={error:d},[3,8];case 7:try{i&&!i.done&&(v=r.return)&&v.call(r)}finally{if(p)throw p.error}return[7];case 8:return o(),[2]}}))}))}))}))]}))}))},e.prototype.render=function(e,t,n){return vn(this,void 0,void 0,(function(){var r,o;return Q(this,(function(i){switch(i.label){case 0:return[4,this.init()];case 1:return i.sent(),[4,this.translator.getDictionary(t)];case 2:return i.sent(),this.templates[e]?(n=Object.assign({language:t},n||{}),(r=this.templates[e](n))instanceof Error?[4,Promise.reject(r)]:[3,4]):[2,Promise.reject("Template not found with name: "+e)];case 3:return o=i.sent(),[3,5];case 4:o=r,i.label=5;case 5:return[2,o]}}))}))},e}(),e.TemplateRenderer=pn([o.injectable(),o.singleton(),yn("design:paramtypes",[e.Translator,e.Configuration])],e.TemplateRenderer);var gn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},mn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},bn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.MailSender=function(){function e(e,t){this.config=e,this.renderer=t,this.transporter=T.createTransport({host:this.config.resolve("smtpHost"),port:this.config.resolve("smtpPort"),auth:{user:this.config.resolve("smtpUser"),pass:this.config.resolve("smtpPassword")}})}return Object.defineProperty(e.prototype,"translator",{get:function(){return this.renderer.translator},enumerable:!1,configurable:!0}),e.prototype.sendMail=function(e,t){return bn(this,void 0,void 0,(function(){var n,r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.translator.getTranslation(e,t.subject||"-")];case 1:return n=o.sent(),[4,this.renderer.render(t.template,e,t.context)];case 2:return r=o.sent(),[2,this.transporter.sendMail({from:t.from||this.config.resolve("mailSenderAddress"),to:t.to,attachments:t.attachments,subject:n,html:r})]}}))}))},e}(),e.MailSender=gn([o.injectable(),o.singleton(),mn("design:paramtypes",[e.Configuration,e.TemplateRenderer])],e.MailSender);var wn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},jn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Pn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.MemoryCache=function(){function e(e){this.cache=e,this.cacheMap=new Map}return e.prototype.set=function(e,t,n,r,o){return void 0===r&&(r=null),void 0===o&&(o={}),Pn(this,void 0,void 0,(function(){var i,s;return Q(this,(function(a){return i=Math.round((new Date).getTime()/1e3),s=Math.min(isNaN(n)?Number.MAX_SAFE_INTEGER:n,3600),this.cacheMap.set(e,{_id:e,data:t,expirationTimestamp:s,expiresAt:i+s}),[2,this.cache.set(e,t,n,r,o)]}))}))},e.prototype.get=function(e){return Pn(this,void 0,void 0,(function(){var t,n,r,o;return Q(this,(function(i){switch(i.label){case 0:return t=this.cacheMap.get(e),n=Math.round((new Date).getTime()/1e3),r=3600,t&&t.expiresAt&&t.expiresAt<n&&(r=t.expirationTimestamp,t=null),t?[3,2]:[4,this.cache.get(e)];case 1:return o=i.sent(),this.cacheMap.set(e,{_id:e,data:o,expirationTimestamp:r,expiresAt:n+r}),[2,o];case 2:return[2,t.data]}}))}))},e.prototype.getOrSet=function(e,t,n,r,o){return void 0===r&&(r=null),void 0===o&&(o={}),Pn(this,void 0,void 0,(function(){var i,s;return Q(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,5]),[4,this.get(e)];case 1:return[2,a.sent()];case 2:return a.sent(),i=this.set,s=[e],[4,t()];case 3:return[4,i.apply(this,s.concat([a.sent(),n,r,o]))];case 4:return[2,a.sent()];case 5:return[2]}}))}))},e.prototype.delete=function(e){return Pn(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return this.cacheMap.delete(e),[4,this.cacheMap.delete(e)];case 1:return t.sent(),[2]}}))}))},e}(),e.MemoryCache=wn([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),jn("design:paramtypes",[e.Cache])],e.MemoryCache);var On=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},_n=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},Rn={id:"5a3cdf7c6a9cf0ba32feccdf",email:"admin@site.com",password:"",roles:["admin"]};e.UserManager=function(){function e(){}return e.prototype.getByCredentials=function(e){return _n(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return Rn.email!=e.email?[3,1]:(t=Rn,[3,3]);case 1:return[4,Promise.reject("message.login.error")];case 2:t=n.sent(),n.label=3;case 3:return[2,t]}}))}))},e.prototype.getById=function(e){return _n(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,Rn.id==e?Rn:null]}))}))},e.prototype.serialize=function(e){return _n(this,void 0,void 0,(function(){var t;return Q(this,(function(n){return delete(t=Object.assign({},e)).password,[2,t]}))}))},e}(),e.UserManager=On([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped)],e.UserManager);var xn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Sn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Cn=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},kn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},Mn=function(){function e(e,t){this.assets=e,this.assetResolver=t}return e.prototype.upload=function(e){return kn(this,void 0,void 0,(function(){var t,n,r;return Q(this,(function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),t="application/octet-stream"===e.mimetype?null:e.mimetype,[4,this.assets.writeBuffer(e.buffer,{filename:e.filename},t)];case 1:return[2,o.sent().toJSON()];case 2:throw n=o.sent(),r=(null==n?void 0:n.message)||n||"Unknown error",new i.HttpError(400,"Asset can't be uploaded.\n"+r);case 3:return[2]}}))}))},e.prototype.getImageRotation=function(e,t,n){var r;return void 0===n&&(n=0),kn(this,void 0,void 0,(function(){var o;return Q(this,(function(s){switch(s.label){case 0:return[4,this.assetResolver.resolve(e,t.lazy)];case 1:if(!(o=s.sent()))throw new i.HttpError(404,"Image with id: '"+e+"' not found.");if(null===(r=o.metadata)||void 0===r?void 0:r.classified)throw new i.HttpError(403,"Image is classified, and can be only downloaded from a custom url.");return t.rotation=t.rotation||n,[2,o.downloadImage(t)]}}))}))},e.prototype.getImage=function(e,t){return kn(this,void 0,void 0,(function(){return Q(this,(function(n){return[2,this.getImageRotation(e,t)]}))}))},e.prototype.getFile=function(e,t,n){var r,o;return kn(this,void 0,void 0,(function(){var s,a;return Q(this,(function(c){switch(c.label){case 0:return[4,this.assetResolver.resolve(e,t)];case 1:if(!(s=c.sent()))throw new i.HttpError(404,"File with id: '"+e+"' not found.");if(null===(r=s.metadata)||void 0===r?void 0:r.classified)throw new i.HttpError(403,"Asset is classified, and can be only downloaded from a custom url.");return(a=null===(o=s.metadata)||void 0===o?void 0:o.extension)&&n.header("content-disposition","inline; filename="+s.filename+"."+a),[2,s.download()]}}))}))},e}();xn([i.Authorized(),i.Post(""),Cn(0,i.UploadedFile("file")),Sn("design:type",Function),Sn("design:paramtypes",[Object]),Sn("design:returntype",Promise)],Mn.prototype,"upload",null),xn([i.Get("/image/:id/:rotation"),Cn(0,i.Param("id")),Cn(1,i.QueryParams()),Cn(2,i.Param("rotation")),Sn("design:type",Function),Sn("design:paramtypes",[String,Object,Number]),Sn("design:returntype",Promise)],Mn.prototype,"getImageRotation",null),xn([i.Get("/image/:id"),Cn(0,i.Param("id")),Cn(1,i.QueryParams()),Sn("design:type",Function),Sn("design:paramtypes",[String,Object]),Sn("design:returntype",Promise)],Mn.prototype,"getImage",null),xn([i.Get("/:id"),Cn(0,i.Param("id")),Cn(1,i.QueryParam("lazy")),Cn(2,i.Res()),Sn("design:type",Function),Sn("design:paramtypes",[String,Boolean,Object]),Sn("design:returntype",Promise)],Mn.prototype,"getFile",null),Mn=xn([o.injectable(),i.Controller("/assets"),Sn("design:paramtypes",[e.Assets,e.AssetResolver])],Mn);var An=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},In=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Tn=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},En=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.AuthController=function(){function e(e,t){this.config=e,this.userManager=t}return e.prototype.login=function(e,t){return En(this,void 0,void 0,(function(){var t,n,o;return Q(this,(function(s){switch(s.label){case 0:return s.trys.push([0,4,,5]),[4,this.userManager.getByCredentials(e)];case 1:return t=s.sent(),[4,F.compare(e.password,t.password)];case 2:if(!0!==s.sent())throw"message.login.error";return n={token:r.sign({id:t._id||t.id},this.config.resolve("jwtSecret"))},[4,this.userManager.serialize(t)];case 3:return[2,(n.user=s.sent(),n)];case 4:throw o=s.sent(),new i.HttpError(401,o);case 5:return[2]}}))}))},e.prototype.getProfile=function(e){return this.userManager.serialize(e)},e}(),An([i.Post("/login"),Tn(0,i.Body()),Tn(1,i.Res()),In("design:type",Function),In("design:paramtypes",[Object,Object]),In("design:returntype",Promise)],e.AuthController.prototype,"login",null),An([i.Authorized(),i.Get("/user"),Tn(0,i.CurrentUser()),In("design:type",Function),In("design:paramtypes",[Object]),In("design:returntype",void 0)],e.AuthController.prototype,"getProfile",null),e.AuthController=An([o.injectable(),i.Controller(),In("design:paramtypes",[e.Configuration,e.UserManager])],e.AuthController);var Dn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Fn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Nn=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};e.GalleryController=function(){function e(e){this.galleryCache=e}return e.prototype.getFile=function(e){return this.galleryCache.serve(e)},e}(),Dn([i.Get("/:id"),Nn(0,i.Param("id")),Fn("design:type",Function),Fn("design:paramtypes",[String]),Fn("design:returntype",void 0)],e.GalleryController.prototype,"getFile",null),e.GalleryController=Dn([o.injectable(),i.Controller("/gallery"),Fn("design:paramtypes",[e.GalleryCache])],e.GalleryController);var qn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},zn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Bn=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},Ln=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},Hn=function(){function e(e,t){this.progresses=e,this.config=t;var n=this.config.resolve("mainEndpoint");this.connectionType=n?"socket":"polling"}return e.prototype.getProgress=function(e){return Ln(this,void 0,void 0,(function(){var t,n;return Q(this,(function(r){switch(r.label){case 0:return[4,this.progresses.get(e)];case 1:return(t=r.sent())?((n=t.toJSON()).connectionType=this.connectionType,[2,n]):[2,null]}}))}))},e}();qn([i.Get("/:id"),Bn(0,i.Param("id")),zn("design:type",Function),zn("design:paramtypes",[String]),zn("design:returntype",Promise)],Hn.prototype,"getProgress",null),Hn=qn([o.injectable(),i.Controller("/progresses"),zn("design:paramtypes",[e.Progresses,e.Configuration])],Hn);var Jn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Gn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Vn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.ErrorHandlerMiddleware=function(){function e(e,t){this.configuration=e,this.translator=t}return Object.defineProperty(e.prototype,"isDev",{get:function(){return"development"===this.configuration.resolve("nodeEnv")},enumerable:!1,configurable:!0}),e.prototype.error=function(e,t,n,r){return Vn(this,void 0,void 0,(function(){var r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.getResult(e,t,n)];case 1:return r=o.sent(),this.isDev&&console.log("ERROR",r,n.statusCode),n.json(r),[2]}}))}))},e.prototype.getResult=function(e,t,n){return Vn(this,void 0,void 0,(function(){var r,o,s,a;return Q(this,(function(c){switch(c.label){case 0:return r={},e instanceof i.BadRequestError?(n.status(400),"ParamRequiredError"!==e.constructor.name?[3,2]:(o=r,[4,this.translator.getTranslation(t.language,"message.parameter-required.error")])):[3,6];case 1:return o.message=c.sent(),r.param=e.message,[3,5];case 2:return s=r,(a=e.message)?[3,4]:[4,this.translator.getTranslation(t.language,"message.form-validation.error")];case 3:a=c.sent(),c.label=4;case 4:s.message=a,r.errors=e.errors,this.isDev&&(r.stack=e.stack),c.label=5;case 5:return[2,r];case 6:return n.status(e.httpCode||500),e instanceof Error?(e.name&&(r.name=e.name),e.message&&(r.message=e.message),e.stack&&this.isDev&&(r.stack=e.stack)):"string"==typeof e&&(r.message=e),[2,r]}}))}))},e}(),e.ErrorHandlerMiddleware=Jn([o.injectable(),i.Middleware({type:"after"}),Gn("design:paramtypes",[e.Configuration,e.Translator])],e.ErrorHandlerMiddleware);var Un=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},$n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Yn=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},Xn=function(){function e(e){this.container=e}return e.prototype.use=function(e,t,n){e.container=this.container,n(null)},e}();Xn=Un([o.injectable(),i.Middleware({type:"before"}),Yn(0,o.inject(Ye)),$n("design:paramtypes",[Object])],Xn);var Wn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Qn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};e.LanguageMiddleware=function(){function e(e){this.config=e}return e.prototype.use=function(e,t,n){e.language=e.query.language||this.config.resolve("defaultLanguage"),n(null)},e}(),e.LanguageMiddleware=Wn([o.injectable(),i.Middleware({type:"before"}),Qn("design:paramtypes",[e.Configuration])],e.LanguageMiddleware);var Kn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Zn=function(){function e(){}return e.prototype.use=function(e,t,n){e.ended=X.default();var r=e.ended.diff(e.started),o=X.default.duration(r);console.log("Request '"+e.id+"' ended at: "+e.ended.format("YYYY-MM-DD HH:mm:ss")+" ["+e.method+"] "+e.url),console.log("Request '"+e.id+"' lasted: "+o.asMilliseconds()+"ms"),n(null)},e}();Zn=Kn([o.injectable(),i.Middleware({type:"after"})],Zn);var er=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},tr=function(){function e(){}return e.prototype.use=function(e,t,n){e.id=(new b.ObjectId).toHexString(),e.started=X.default(),console.log("Request '"+e.id+"' started at: "+e.started.format("YYYY-MM-DD HH:mm:ss")+" ["+e.method+"] "+e.url),n(null)},e}();tr=er([o.injectable(),i.Middleware({type:"before"})],tr);var nr=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},rr=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},or=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},ir=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},sr=function(){function e(e,t){this.progresses=e,this.socketServer=t}return e.prototype.advanceProgress=function(e,t){return ir(this,void 0,void 0,(function(){var n,r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.progresses.get(t)];case 1:return(n=o.sent())?(r=n.toJSON(),Ae(this.socketServer,(function(n){n.interestedProgresses instanceof Set&&n.interestedProgresses.has(t)&&e.emit("background-progress-changed",r)})),console.log("progress changed: "+e.id+", data: "+JSON.stringify(r)),[2]):[2]}}))}))},e.prototype.setProgressInterest=function(e,t){return ir(this,void 0,void 0,(function(){var n,r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.progresses.get(t)];case 1:return(n=o.sent())?(r=n.toJSON(),e.interestedProgresses=e.interestedProgresses||new Set,e.interestedProgresses.has(t)||(e.interestedProgresses.add(t),e.emit("background-progress-changed",r),console.log("progress interest added: "+e.id+", data: "+JSON.stringify(r))),[2]):[2]}}))}))},e}();nr([s.OnMessage("background-progress"),or(0,s.ConnectedSocket()),or(1,s.MessageBody()),rr("design:type",Function),rr("design:paramtypes",[Object,String]),rr("design:returntype",Promise)],sr.prototype,"advanceProgress",null),nr([s.OnMessage("background-progress-interest"),or(0,s.ConnectedSocket()),or(1,s.MessageBody()),rr("design:type",Function),rr("design:paramtypes",[Object,String]),rr("design:returntype",Promise)],sr.prototype,"setProgressInterest",null),sr=nr([o.injectable(),s.SocketController(),or(1,o.inject(Ue)),rr("design:paramtypes",[e.Progresses,Object])],sr);var ar=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},cr=function(){function e(){}return e.prototype.use=function(e,t){t()},e}();cr=ar([o.injectable(),s.Middleware()],cr);var ur=function(){function e(e,t){this.container=e,this.path=t,this.map=new Map}return Object.defineProperty(e.prototype,"parentTree",{get:function(){return this.container.parent.tree},enumerable:!1,configurable:!0}),e.prototype.resolveService=function(){return this.container.resolve(this.path)},e.prototype.resolveLeaves=function(){var e;try{var t=this.parentTree.resolvePath(this.path);e=t.resolveLeaves()}catch(t){e=new Map}var n=function(t,r){t.forEach((function(t,o){var i=r?r+"."+o:o;0!=t.map.size?n(t.map,i):e.set(i,t)}))};return n(this.map,""),e},e.prototype.resolveServices=function(){var e=new Map;return this.resolveLeaves().forEach((function(t,n){e.set(n,t.resolveService())})),e},e.prototype.resolveAncestor=function(t){var n,r,o;if(!le(t)||0==t.length)return this;try{o=(o=this.parentTree.resolvePath(this.path)).resolveAncestor(t)}catch(t){o=new e(this.container,"")}var i=t.split("."),s=this,a=this;try{for(var c=K(i),u=c.next();!u.done;u=c.next()){var l=u.value;if(!(s=s.map.get(l))){if(a==this){if(o.path.length>0)return o;throw new Error("Ancestor '"+t+"' not found in current tree: '"+this.path+"'")}return a}a=s}}catch(e){n={error:e}}finally{try{u&&!u.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}return o.path.length>a.path.length?o:a},e.prototype.resolvePath=function(t,n){void 0===n&&(n=!0);var r=this.path?this.path+"."+t:t,o=new e(this.container,r);try{o=this.resolveAncestor(t)}catch(e){if(n)throw new Error("Path '"+t+"' not found in current tree: '"+this.path+"'");return o}if(o.path!==r){if(n)throw new Error("Path '"+t+"' not found in current tree: '"+this.path+"'");return o}return o},e.prototype.addPath=function(t){var n,r;if(!le(t)||0==t.length)return this;var o=t.split("."),i=this;t=this.path;try{for(var s=K(o),a=s.next();!a.done;a=s.next()){var c=a.value;i.map.has(c)||i.map.set(c,new e(this.container,t?t+"."+c:c)),t=(i=i.map.get(c)).path}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return this},e}(),lr=function(){function e(e,t){void 0===t&&(t=null),this.container=e,this.parent=t,e.wrapperContainer=this,this.tokens=[],this.tokenSet=new Set,this.myTree=new ur(this,"")}return Object.defineProperty(e.prototype,"registeredTokens",{get:function(){var e;return((null===(e=this.parent)||void 0===e?void 0:e.registeredTokens)||[]).concat(this.tokens)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"tree",{get:function(){return this.myTree},enumerable:!1,configurable:!0}),e.prototype.beforeResolution=function(e,t,n){this.container.beforeResolution(e,t,n)},e.prototype.afterResolution=function(e,t,n){this.container.afterResolution(e,t,n)},e.prototype.clearInstances=function(){this.container.clearInstances()},e.prototype.createChildContainer=function(){return new e(this.container.createChildContainer(),this)},e.prototype.isRegistered=function(e,t){return this.container.isRegistered(e,t)},e.prototype.register=function(e,t,n){return o.isFactoryProvider(t)?(this.container.register(e,{useFactory:function(e){return t.useFactory(e.wrapperContainer)}}),this.addToken(e)):(this.container.register(e,t),this.addToken(e))},e.prototype.registerInstance=function(e,t){return this.container.registerInstance(e,t),this.addToken(e)},e.prototype.registerSingleton=function(e,t){return this.container.registerSingleton(e,t),this.addToken(e)},e.prototype.registerType=function(e,t){return this.container.registerType(e,t),this.addToken(e)},e.prototype.reset=function(){this.tokens=[],this.tokenSet=new Set,this.container.reset()},e.prototype.resolve=function(e){return this.container.resolve(e)},e.prototype.resolveAll=function(e){return this.container.resolveAll(e)},e.prototype.get=function(e){return this.container.resolve(e)},e.prototype.addToken=function(e){return this.tokenSet.has(e)||(this.tokenSet.add(e),this.tokens.push(e),le(e)&&this.myTree.addPath(e)),this},e}(),fr=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};function hr(n,r){return fr(this,void 0,void 0,(function(){var o,i,s;return Q(this,(function(a){switch(a.label){case 0:return o=t.resolve(n||__dirname,"public_html"),i=r.get(Ge),s=r.get(e.EndpointProvider),console.log(o,y.existsSync(o)),y.existsSync(o)?(console.log("public_html exists. setting up static files serving..."),i.use(M.static(o,{maxAge:"1y"}))):console.log('public_html does not exist on path: "'+o+'"'),[4,s.configure(i)];case 1:return a.sent(),[2]}}))}))}var dr=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},pr=function(){function e(e,t,n){this.assetResolver=e,this.progresses=t,this.lazyId=n}return Object.defineProperty(e.prototype,"assets",{get:function(){return this.assetResolver.assets},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"lazyAssets",{get:function(){return this.assetResolver.lazyAssets},enumerable:!1,configurable:!0}),e.prototype.process=function(){return dr(this,void 0,void 0,(function(){var e,t,n,r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.lazyAssets.read(this.lazyId)];case 1:return e=o.sent(),[4,this.progresses.get(e.progressId)];case 2:t=o.sent(),o.label=3;case 3:return o.trys.push([3,6,,8]),[4,this.generate(t)];case 4:return n=o.sent(),[4,e.writeAsset(n)];case 5:return o.sent(),[3,8];case 6:return r=o.sent(),[4,t.setError(r.message||r)];case 7:throw o.sent(),r;case 8:return t.remaining>0?[4,t.advance(t.remaining)]:[3,10];case 9:o.sent(),o.label=10;case 10:return[2]}}))}))},e}(),yr=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};function vr(t,n){return yr(this,void 0,void 0,(function(){var o,s,a,c;return Q(this,(function(u){switch(u.label){case 0:if(n.user)return[2,n.user];o=n.header("Authorization")||"",s=null;try{a=t.resolve(e.Configuration),s=r.verify(o.split(" ")[1],a.resolve("jwtSecret"))}catch(e){throw new i.HttpError(401,"Authentication failed. ("+e.message+")")}if(!s)throw new i.HttpError(401,"Authentication failed. (Maybe invalid token)");return c=n,[4,t.resolve(e.UserManager).getById(s.id)];case 1:return c.user=u.sent(),[2,n.user]}}))}))}function gr(){var n=[new Xe("templatesDir",t.join(__dirname,"templates")),new Xe("galleryDir",t.join(__dirname,"gallery")),new Xe("cacheDir",t.join(__dirname,"cache")),new Xe("defaultLanguage","en"),new Xe("smtpHost","smtp.sendgrid.net"),new Xe("smtpPort",587),new Xe("smtpUser","apikey"),new Xe("smtpPassword",""),new Xe("mailSenderAddress","info@stemy.hu"),new Xe("translationsTemplate","https://translation.service/[lang]"),new Xe("jwtSecret","eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9"),new Xe("mongoUri",""),new Xe("mongoDb","node-backend"),new Xe("mongoUser",null),new Xe("mongoPassword",null),new Xe("nodeEnv","development"),new Xe("appPort",80),new Xe("redisHost","127.0.0.1"),new Xe("redisPort",6379),new Xe("redisPassword","123456"),new Xe("redisNamespace","resque"),new Xe("redisCluster","mymaster"),new Xe("redisSentinels",null,(function(e){return e?e.split(", ").map((function(e){var t=e.split(":");return{host:t[0],port:Number(t[1])}})):null})),new Xe("workQueues",["main"]),new Xe("isWorker",!1),new Xe("mainEndpoint",""),new Xe("idChars","0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"),new Xe("idSeparator","-"),new Xe("idPrefix","ID-"),new Xe("idParts",[4,4]),new Xe("jsonLimit","250mb"),new Xe("cacheCollection","cache")].map((function(e){return{provide:$e,useValue:e}})),r=[e.AssetProcessor,e.AssetResolver,e.Assets,e.BackendProvider,e.Cache,e.CacheProcessor,e.Configuration,e.EndpointProvider,e.Fixtures,e.Gallery,e.GalleryCache,e.IdGenerator,e.JobManager,e.LazyAssets,e.MailSender,e.MemoryCache,e.MongoConnector,e.Progresses,e.TemplateRenderer,e.TranslationProvider,e.Translator,e.UserManager],i=new lr(o.container.createChildContainer());return n.forEach((function(e){i.register(e.provide,e)})),r.forEach((function(e){o.container.isRegistered(e)||i.register(e,e)})),i}e.DI_CONTAINER=Ye,e.EXPRESS=Ge,e.FIXTURE=He,e.HTTP_SERVER=Ve,e.JOB=Je,e.LazyAssetGenerator=pr,e.PARAMETER=$e,e.Parameter=Xe,e.ResolveEntity=function(e,t){var n=this,r=e.modelName,o=r.toLowerCase();return i.createParamDecorator({required:!1,value:function(s){return te(n,void 0,void 0,(function(){var n,a,c,u,l,f,h,d;return Q(this,(function(p){switch(p.label){case 0:if(n=s.request,a=n.header("x-"+o+"-token"),!(c=n.params[o+"Id"])&&!a)throw new i.BadRequestError(r+" id or token should be defined!");return[4,u=a?e.findOne({token:a}):e.findById(c)];case 1:if(!(l=p.sent()))throw new i.HttpError(404,a?r+" could not be found with token: "+a:r+" could not be found with id: "+c);if(!fe(t))return[3,5];p.label=2;case 2:return p.trys.push([2,4,,5]),f=s.request,h=o,[4,Re(t(u,s))];case 3:return f[h]=p.sent()||l,[2,s.request[o]];case 4:throw d=p.sent(),new i.BadRequestError(r+" check error: "+(d.message||d));case 5:return s.request[o]=l,[2,l]}}))}))}})},e.SOCKET_SERVER=Ue,e.Type=Le,e.assign=function(e,t,n){return Fe(e,t,n)},e.broadcast=Ae,e.bufferToStream=be,e.convertValue=ve,e.copy=function(e){return Fe(null,e)},e.copyStream=Pe,e.createServices=gr,e.createTransformer=function(e){return function(t,n,r){return n.id=Me(n.id)||n.id,t._id&&(n._id=Me(t._id),n.id=n.id||n._id),delete n.__v,fe(e)&&e(t,n,r)||n}},e.deleteFile=function(e){return new Promise((function(t,n){y.unlink(e,(function(e){e?n(e):t()}))}))},e.deleteFromBucket=Ee,e.filter=function(e,t){return Fe(null,e,t)},e.firstItem=function(e){return e[0]},e.getConstructorName=Se,e.getExtension=function(e){return t.basename(e||"").split(".").pop()},e.getFileName=function(e,n){void 0===n&&(n=!1);var r=t.basename(e||"");return n?r:r.split(".").slice(0,-1).join(".")},e.getFunctionParams=Ce,e.getType=ie,e.getValue=ye,e.groupBy=function(e,t){return e.reduce((function(e,n){var r=t(n);return e[r]=e[r]||[],e[r].push(n),e}),{})},e.hydratePopulated=me,e.idToString=Me,e.injectServices=ge,e.isArray=ae,e.isBoolean=function(e){return"boolean"==typeof e},e.isConstructor=he,e.isDate=ce,e.isDefined=oe,e.isFunction=fe,e.isNullOrUndefined=re,e.isObject=se,e.isPrimitive=ue,e.isString=le,e.isType=de,e.lastItem=function(e){return e[e.length-1]},e.lcFirst=pe,e.lookupPipelines=function(e,t,n,r,o){void 0===n&&(n=null),void 0===r&&(r="_id"),void 0===o&&(o=!0),n=n||t.replace("Id","");var i=[{$lookup:{from:e,localField:t,foreignField:r,as:n}},{$unwind:{path:"$"+n,preserveNullAndEmptyArrays:!0}}];return o?i:i.slice(0,0)},e.md5=function(e){if(se(e)&&(e=JSON.stringify(e)),!le(e))throw"Can't md5 other that raw object or string";return h.createHash("md5").update(e).digest("hex")},e.mkdirRecursive=Oe,e.multiSubscription=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return new d.Subscription((function(){e.forEach((function(e){e.unsubscribe()}))}))},e.observableFromFunction=function(e){var t;return new d.Observable((function(n){if(!t){t=new d.Subject;try{t=d.from(e())}catch(e){p.canReportError(t)?t.error(e):console.warn(e)}}return t.subscribe(n)}))},e.padLeft=function(e,t,n){return void 0===t&&(t=3),void 0===n&&(n="0"),(""+e).padStart(t,n)},e.padRight=function(e,t,n){return void 0===t&&(t=3),void 0===n&&(n="0"),(""+e).padEnd(t,n)},e.paginate=function(e,t,n){return e.countDocuments(t).then((function(r){var o=e.find(t);return le(n.sort)&&(o=o.sort(n.sort)),ae(n.populate)&&n.populate.forEach((function(e){o=o.populate(e)})),(n.limit>0?o.skip(n.page*n.limit).limit(n.limit):o).then((function(e){return{count:r,items:e,meta:{total:r}}}))}))},e.paginateAggregations=function(e,t,n,r){return void 0===r&&(r={}),te(this,void 0,void 0,(function(){var o,i,s,a,c;return Q(this,(function(u){switch(u.label){case 0:return o=le(n.sort)&&n.sort?n.sort.startsWith("-")?n.sort.substr(1):n.sort:null,i=o?[{$sort:(c={},c[o]=o==n.sort?1:-1,c)}]:[],[4,e.aggregate(ee(t,i,[{$group:{_id:"results",result:{$push:"$$CURRENT"}}},{$project:{_id:0,items:n.limit>0?{$slice:["$result",n.page*n.limit,n.limit]}:"$result",count:{$size:"$result"},meta:Object.assign({total:{$size:"$result"}},r)}}]))];case 1:return s=u.sent(),(a=s[0])?(a.items=a.items.map((function(t){return me(e,t)})),[2,a]):[2,{items:[],count:0,meta:{total:0}}]}}))}))},e.promiseTimeout=xe,e.proxyFunction=ke,e.proxyFunctions=function(e,t,n){void 0===n&&(n=null),n=n||pe(Se(t)).replace(/helper$/gi,"");var r=Object.getOwnPropertyDescriptors(t.prototype);Object.keys(r).forEach((function(t){var o=r[t].value;fe(o)&&"constructor"!==t&&(Ce(o)[0]==n&&(e.methods[t]=ke(t)))})),ge(e,{helper:t})},e.rand=Ie,e.random=Te,e.readAndDeleteFile=function(e,t){return void 0===t&&(t=5e3),te(this,void 0,void 0,(function(){var n;return Q(this,(function(r){switch(r.label){case 0:return[4,_e(e)];case 1:return n=r.sent(),setTimeout((function(){y.unlink(e,(function(){}))}),t),[2,n]}}))}))},e.readFile=_e,e.runCommand=function(e,t){return void 0===t&&(t=0),new Promise((function(n,r){var o=f.exec(e,(function(e,o){if(e&&t!==e.code)return console.log(e),void r(e);for(var i=(o||"").split("\n"),s=null;!s&&i.length>0;)s=i.pop();n(s)}));o.stdout.on("data",(function(e){console.log(e.toString())})),o.stderr.on("data",(function(e){console.error(e.toString())}))}))},e.setupBackend=function(t,r,o){return yr(this,void 0,void 0,(function(){var f,h,d,p,y,v,g,m,b,w,j=this;return Q(this,(function(P){switch(P.label){case 0:return r=Array.isArray(r)?r:[],o=o||gr(),f=t.fixtures||[],h=f.map((function(e){return{provide:He,useClass:e}})),d=(t.params||[]).map((function(e){return{provide:$e,useValue:e}})),p=(t.jobs||[]).map((function(e){return{provide:Je,useValue:e}})),(y=t.restOptions||{}).defaultErrorHandler=!1,y.cors={credentials:!0,origin:function(e,t){t(null,!0)}},y.routePrefix=t.routePrefix||"/api",y.routePrefix="/"==y.routePrefix?"":y.routePrefix,y.middlewares=[e.ErrorHandlerMiddleware,Xn,e.LanguageMiddleware,tr,Zn].concat(y.middlewares||[]),y.controllers=[Mn,e.AuthController,e.GalleryController,Hn].concat(y.controllers||[]),(v=t.socketOptions||{}).middlewares=[cr].concat(v.middlewares||[]),v.controllers=[sr].concat(v.controllers||[]),g=[],[$e].forEach((function(e){o.resolveAll(e).forEach((function(t){g.push({provide:e,useValue:t})}))})),g.push.apply(g,ee(f,h,d,p,y.middlewares,y.controllers,v.middlewares,v.controllers,r,[{provide:Ge,useFactory:function(t){return t.resolve(e.BackendProvider).express}},{provide:Ve,useFactory:function(t){return t.resolve(e.BackendProvider).server}},{provide:Ue,useFactory:function(t){return t.resolve(e.BackendProvider).io}}])),m=o.createChildContainer(),g.forEach((function(e){de(e)?m.register(e,e):m.register(e.provide,e)})),m.register(Ye,{useValue:m}),ne.appContainer=ne.appContainer||m,y.authorizationChecker=function(e,t){return yr(j,void 0,void 0,(function(){var n,r,o,s,a,c,u,l,f,h,d;return Q(this,(function(p){switch(p.label){case 0:return[4,vr(m,e.request)];case 1:if(!(n=p.sent()))throw new i.HttpError(401,"Authentication failed. (User can't be found.)");if(r=Array.isArray(n.roles)?n.roles:[],!(Array.isArray(t)&&t.length>0))return[3,13];o=null,p.label=2;case 2:p.trys.push([2,10,11,12]),s=K(t),a=s.next(),p.label=3;case 3:if(a.done)return[3,9];if(!fe(c=a.value))return[3,7];p.label=4;case 4:return p.trys.push([4,6,,7]),[4,Re(c(n,e))];case 5:return p.sent()?[2,!0]:[3,7];case 6:return u=p.sent(),o=u,[3,7];case 7:if(r.indexOf(c)>=0)return[2,!0];p.label=8;case 8:return a=s.next(),[3,3];case 9:return[3,12];case 10:return l=p.sent(),h={error:l},[3,12];case 11:try{a&&!a.done&&(d=s.return)&&d.call(s)}finally{if(h)throw h.error}return[7];case 12:throw f=o&&(o.message||le(o))?o.message||o:"User doesn't have access to this resource",new i.HttpError(401,"Authentication failed. ("+f+")");case 13:return[2,!0]}}))}))},y.currentUserChecker=function(e){return yr(j,void 0,void 0,(function(){return Q(this,(function(t){return[2,vr(m,e.request)]}))}))},b=m.resolve(e.Configuration),w=m.resolve(e.BackendProvider),t.restOptions&&(w.express.use(n.json({limit:b.hasParam("jsonLimit")?b.resolve("jsonLimit"):"250mb"})),i.useContainer(m),i.useExpressServer(w.express,y),w.express.get("/api-docs",(function(n,r){r.status(200).end(function(t){var n;if(ze)return ze;var r=i.getMetadataArgsStorage(),o=a.routingControllersToSpec(r);return o.basePath="/api/",o.definitions=l.validationMetadatasToSchemas({classTransformerMetadataStorage:c.defaultMetadataStorage,additionalConverters:(n={},n[u.ValidationTypes.CUSTOM_VALIDATION]=function(n,r){var o=fe(t)?t(n,r):t;if(o)return o;var i=n.constraints||[];return n.constraintCls===e.IsFile?{multi:i[0]||!1,type:"file"}:n.constraintCls===e.IsObjectId?{endpoint:i[0]||!1,multi:i[1]||!1,type:"list"}:null},n)}),o.components.schemas=o.definitions,ze=JSON.stringify(o)}(t.customValidation))}))),t.socketOptions&&(s.useContainer(m),s.useSocketServer(w.io,v)),b.hasParam("mongoUri")&&b.resolve("mongoUri")?(console.log("Connecting to MongoDB..."),[4,m.resolve(e.MongoConnector).connect()]):[3,2];case 1:P.sent(),console.log("Successfully connected to MongoDB."),P.label=2;case 2:return[4,hr(t.rootFolder,m)];case 3:return P.sent(),[2,m]}}))}))},e.streamToBuffer=we,e.ucFirst=function(e){return e?e[0].toUpperCase()+e.substr(1):""},e.valueToPromise=Re,e.writeFile=function(e,n){return te(this,void 0,void 0,(function(){return Q(this,(function(r){switch(r.label){case 0:return[4,Oe(t.dirname(e))];case 1:return r.sent(),[2,new Promise((function(t,r){y.writeFile(e,n,(function(e){e?r(e):t(n)}))}))]}}))}))},Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("path"),require("body-parser"),require("jsonwebtoken"),require("tsyringe"),require("routing-controllers"),require("socket-controllers"),require("routing-controllers-openapi"),require("class-transformer/storage"),require("class-validator"),require("class-validator-jsonschema"),require("child_process"),require("crypto"),require("rxjs"),require("rxjs/internal/util/canReportError"),require("fs"),require("mongoose"),require("mongoose/lib/utils"),require("stream"),require("bson"),require("fontkit"),require("file-type"),require("sharp"),require("mongodb"),require("dotenv"),require("node-resque"),require("node-cron"),require("ioredis"),require("socket.io-client"),require("http"),require("express"),require("socket.io"),require("uuid"),require("nodemailer"),require("handlebars"),require("axios"),require("bcrypt"),require("moment")):"function"==typeof define&&define.amd?define("@stemy/backend",["exports","path","body-parser","jsonwebtoken","tsyringe","routing-controllers","socket-controllers","routing-controllers-openapi","class-transformer/storage","class-validator","class-validator-jsonschema","child_process","crypto","rxjs","rxjs/internal/util/canReportError","fs","mongoose","mongoose/lib/utils","stream","bson","fontkit","file-type","sharp","mongodb","dotenv","node-resque","node-cron","ioredis","socket.io-client","http","express","socket.io","uuid","nodemailer","handlebars","axios","bcrypt","moment"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).stemy=e.stemy||{},e.stemy.backend={}),e.path,e["body-parser"],e.jsonwebtoken,e.tsyringe,e["routing-controllers"],e["socket-controllers"],e["routing-controllers-openapi"],e["class-transformer/storage"],e["class-validator"],e["class-validator-jsonschema"],e.child_process,e.crypto,e.rxjs,e.rxjs["internal/util/canReportError"],e.fs,e.mongoose,e["mongoose-lib-utils"],e.stream,e.bson,e.fontkit,e["file-type"],e.sharp,e.mongodb,e.dotenv,e["node-resque"],e["node-cron"],e.ioredis,e.socket["io-client"],e.http,e.express,e.socket.io,e.uuid,e.nodemailer,e.handlebars,e.axios,e.bcrypt,e.moment)}(this,(function(e,t,n,r,o,i,s,a,c,u,l,f,h,d,p,y,v,g,m,b,w,j,P,O,_,R,x,C,S,k,M,A,I,T,E,D,F,N){"use strict";function q(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function z(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var B=q(w),L=q(P),J=q(_),H=q(C),G=q(S),V=q(M),U=q(A),$=z(E),Y=q(D),W=q(N),X=function(e,t){return(X=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])})(e,t)};function Q(e,t){var n,r,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,r=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(o=s.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}}Object.create;function K(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Z(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(e){o={error:e}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return s}function ee(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(Z(arguments[t]));return e}Object.create;var te=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},ne={appContainer:null};function re(e){return null==e||void 0===e}function oe(e){return!re(e)}function ie(e){var t=new RegExp("\\s([a-zA-Z]+)");return Object.prototype.toString.call(e).match(t)[1].toLowerCase()}function se(e){return"object"==ie(e)}function ae(e){return Array.isArray(e)}function ce(e){return"boolean"==typeof e}function ue(e){return!!e&&e[Symbol.toPrimitive]&&!isNaN(e)&&void 0!==e.getDate}function le(e){var t=typeof e;return null==e||"object"!==t&&"function"!==t}function fe(e){return"string"==typeof e}function he(e){return"function"==typeof e}function de(e){return(e&&"function"==typeof e&&e.prototype&&e.prototype.constructor)===e&&"Object"!==e.name}function pe(e){return de(e)}function ye(e,t){var n,r;if(!e||"object"!=typeof e||ae(e)||!se(t))return!1;var o=Object.keys(t);try{for(var i=K(o),s=i.next();!s.done;s=i.next()){var a=s.value,c=t[a]||"";if(c.startsWith("*")){if(c=c.substr(1),e.hasOwnProperty(a)&&ie(e[a])!==c)return!1}else if(!e.hasOwnProperty(a)||ie(e[a])!==c)return!1}}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return!0}function ve(e){return e?e[0].toLowerCase()+e.substr(1):""}function ge(e,t,n,r){void 0===r&&(r=!1);var o=(t=t||"").split("."),i="";do{i+=o.shift(),!oe(e)||!oe(e[i])||"object"!=typeof e[i]&&o.length?o.length?i+=".":(n=void 0===n?t.replace(new RegExp(i+"$"),"{"+i+"}"):n,e=r&&e||n):(e=e[i],i="")}while(o.length);return e}function me(e,t){switch(t){case"boolean":return"no"!=(e="string"==typeof e?e.toLowerCase():e)&&"false"!=e&&"0"!=e&&!!e;case"number":var n=parseFloat(e);return isNaN(n)?0:n;case"array":try{return JSON.parse(e)}catch(t){return(""+e).split(", ")}}return e}function be(e,t){var n={};Object.keys(t).forEach((function(r){e.virtual(r).get((function(){var e=ne.appContainer;return n[r]=n[r]||(e?e.resolve(t[r]):{}),n[r]}))}))}function we(e,t){var n,r,o=e.hydrate(t),i=function(e,n){var r=n.ref,i=n.type;if(Array.isArray(i)&&i.length>0&&(r=i[0].ref),!r)return"continue";var s=g.getValue(e,t),a=function(e){return null==e||e instanceof v.Types.ObjectId?e:we(v.model(r),e)};if(Array.isArray(s))return g.setValue(e,s.map(a),o),"continue";g.setValue(e,a(s),o)};try{for(var s=K(Object.entries(e.schema.obj)),a=s.next();!a.done;a=s.next()){var c=Z(a.value,2);i(c[0],c[1])}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return o}function je(e){var t=new m.PassThrough;return t.end(e),t}function Pe(e){return new Promise((function(t,n){var r=[];e.on("data",(function(e){r.push(e)})),e.on("error",n),e.on("end",(function(){return t(Buffer.concat(r))}))}))}var Oe=function(e){function t(t,n){var r=e.call(this,n)||this;return null==t||t.on("data",(function(e){r.push(e)})),null==t||t.on("end",(function(){r.push(null)})),null==t||t.on("error",(function(e){r.emit("error",e)})),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}X(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}(t,e),t.prototype._read=function(e){},t}(m.Readable);function _e(e,t){return new Oe(e,t)}function Re(e,t){return void 0===t&&(t=null),new Promise((function(n,r){y.mkdir(e,{mode:t||511,recursive:!0},(function(e){e?r(e):n()}))}))}function xe(e){return new Promise((function(t,n){y.readFile(e,(function(e,r){e?n(e):t(r)}))}))}function Ce(e){return e instanceof Promise?e:Promise.resolve(e)}function Se(e){return void 0===e&&(e=1e3),new Promise((function(t){setTimeout((function(){t()}),e)}))}function ke(e){return e.prototype.constructor.name}function Me(e){var t=e.toString().replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/(.)*/g,"").replace(/{[\s\S]*}/,"").replace(/=>/g,"").trim(),n=t.indexOf("(")+1,r=t.length-1,o=t.substring(n,r).split(", "),i=[];return o.forEach((function(e){(e=e.replace(/=[\s\S]*/g,"").trim()).length>0&&i.push(e)})),i}function Ae(e){return function(){var t=Array.from(arguments);return t.unshift(this),this.helper[e].apply(this.helper,t)}}function Ie(e){return Array.isArray(e)?e.map(Ie):e instanceof b.ObjectId?e.toHexString():null}function Te(e,t){Array.from(Object.values(e.sockets.sockets)).forEach(t)}function Ee(e,t){return Math.round(De(e,t))}function De(e,t){return e+Math.random()*(t-e)}function Fe(e,t){return new Promise((function(n,r){e.delete(t,(function(e){var o=e;!e||fe(o=e.message||e||"")&&o.startsWith("FileNotFound")?n(t.toHexString()):r(o)}))}))}var Ne=function(){return!0};function qe(e,t,n){var r,o;if(n=n||Ne,le(t)||ue(t)||he(t))return t;if(ae(t))return e=ae(e)?Array.from(e):[],t.forEach((function(r,o){n(r,o,e,t)&&(e.length>o?e[o]=qe(e[o],r,n):e.push(qe(null,r,n)))})),e;var i=he(t.__shouldCopy)?t.__shouldCopy:function(){return!0};if(de(t.constructor)){if(!1===t.__shouldCopy)return t;if(!e)try{e=new t.constructor}catch(n){var s=t.constructor.prototype||t.prototype;e=Object.create(s)}}else e=Object.assign({},e||{});if(e instanceof Map){if(t instanceof Map)try{for(var a=K(t.entries()),c=a.next();!c.done;c=a.next()){var u=Z(c.value,2),l=u[0],f=u[1];n(f,l,e,t)&&e.set(l,i(l,f)?qe(e.get(l),f,n):f)}}catch(e){r={error:e}}finally{try{c&&!c.done&&(o=a.return)&&o.call(a)}finally{if(r)throw r.error}}return e}var h=Object.keys(t);e=h.reduce((function(e,r){return n(t[r],r,e,t)?(e[r]=i(r,t[r])?qe(e[r],t[r],n):t[r],e):e}),e);var d=Object.getOwnPropertyDescriptors(t);return(h=Object.keys(d).filter((function(e){return h.indexOf(e)<0}))).forEach((function(t){Object.defineProperty(e,t,d[t])})),e}var ze=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s};function Be(e,t){if(e)return Array.isArray(t)&&t.every((function(e){try{return new b.ObjectId(e)instanceof b.ObjectId}catch(e){return!1}}));if(null===t)return!0;try{return new b.ObjectId(t)instanceof b.ObjectId}catch(e){return!1}}e.IsFile=function(){function e(){}return e.prototype.validate=function(e,t){return Be(Z(t.constraints||[],1)[0],e)},e}(),e.IsFile=ze([u.ValidatorConstraint()],e.IsFile),e.IsObjectId=function(){function e(){}return e.prototype.validate=function(e,t){var n=Z(t.constraints||[],2);n[0];return Be(n[1],e)},e}(),e.IsObjectId=ze([u.ValidatorConstraint()],e.IsObjectId);var Le=null;var Je,He=Function,Ge=Symbol.for("fixture-token"),Ve=Symbol.for("job-token"),Ue=Symbol.for("express-token"),$e=Symbol.for("http-server-token"),Ye=Symbol.for("socket-server-token"),We=Symbol.for("parameter-token"),Xe=Symbol.for("di-container-token"),Qe=function(e,t,n){void 0===n&&(n=null),this.name=e,this.defaultValue=t,this.resolver=n},Ke=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Ze=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},et=L.default,tt=B.default,nt=["application/font-woff","application/font-woff2","application/x-font-opentype","application/x-font-truetype","application/x-font-datafork","font/woff","font/woff2","font/otf","font/ttf","font/datafork"],rt=["image/jpeg","image/jpg","image/png"],ot=["postscriptName","fullName","familyName","subfamilyName","copyright","version","unitsPerEm","ascent","descent","lineGap","underlinePosition","underlineThickness","italicAngle","capHeight","xHeight","numGlyphs","characterSet","availableFeatures"];e.AssetProcessor=Je=function(){function e(){}return e.getMimeType=function(e,t){return Ze(this,void 0,void 0,(function(){var n;return Q(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,j.fromBuffer(e)];case 1:return t=r.sent().mime,[3,3];case 2:if(n=r.sent(),!t)throw"Can't determine mime type";return console.log("Can't determine mime type",n),[3,3];case 3:return[2,t]}}))}))},e.extractFontFormat=function(e){var t=e.constructor.name,n=e.directory.tag;switch(t){case"TTFFont":return"OTTO"===n?"opentype":"truetype";case"WOFF2Font":return"woff2";case"WOFFFont":return"woff";case"DFont":return"datafork"}return null},e.isImage=function(e){return rt.indexOf(e)>=0},e.copyImageMeta=function(e,t){return Ze(this,void 0,void 0,(function(){var n;return Q(this,(function(r){switch(r.label){case 0:return[4,et(e).rotate().toBuffer({resolveWithObject:!0})];case 1:return n=r.sent(),Object.assign(t,n.info),[2,n.data]}}))}))},e.isFont=function(e){return nt.indexOf(e)>=0},e.copyFontMeta=function(e,t){var n=tt.create(e);t.format=Je.extractFontFormat(n),ot.forEach((function(e){t[e]=n[e]}))},e.prototype.process=function(e,t,n){return Ze(this,void 0,void 0,(function(){return Q(this,(function(r){switch(r.label){case 0:return Je.isImage(n)?[4,Je.copyImageMeta(e,t)]:[3,2];case 1:e=r.sent(),r.label=2;case 2:return Je.isFont(n)&&Je.copyFontMeta(e,t),[2,e]}}))}))},e}(),e.AssetProcessor=Je=Ke([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped)],e.AssetProcessor);var it=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},st=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},at=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};e.Configuration=function(){function e(e){var t=this;J.default.config(),this.paramMap={},(e||[]).forEach((function(e){return t.add(e)}))}return e.prototype.add=function(e){var t=this.paramMap[e.name]||e;t.defaultValue=e.defaultValue,t.resolver=e.resolver||t.resolver,this.paramMap[e.name]=t},e.prototype.hasParam=function(e){return!!this.paramMap[e]},e.prototype.resolve=function(e){var t=this.paramMap[e];if(!t)throw new Error("Parameter with name: '"+e+"' does not exists in configuration");var n=t.name.replace(/\.?([A-Z|0-9]+)/g,(function(e,t){return"_"+t.toLowerCase()})).replace(/\./gi,"_").replace(/^_/,"").toUpperCase(),r=process.env[n];return void 0!==r?he(t.resolver)?t.resolver(r):me(r,ie(t.defaultValue)):t.defaultValue},e}(),e.Configuration=it([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),at(0,o.injectAll(We)),st("design:paramtypes",[Array])],e.Configuration);var ct=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},ut=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},lt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.MongoConnector=function(){function e(e){this.configuration=e,this.conn=null,this.db=null,this.fsBucket=null}return Object.defineProperty(e.prototype,"connection",{get:function(){return this.conn},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"database",{get:function(){return this.db},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bucket",{get:function(){return this.fsBucket},enumerable:!1,configurable:!0}),e.prototype.connect=function(){return lt(this,void 0,void 0,(function(){var e;return Q(this,(function(t){switch(t.label){case 0:return this.db?[2,this.db]:(e=this,[4,v.connect(this.configuration.resolve("mongoUri"),{dbName:this.configuration.resolve("mongoDb"),user:this.configuration.resolve("mongoUser"),pass:this.configuration.resolve("mongoPassword"),useNewUrlParser:!0,useUnifiedTopology:!0})]);case 1:return e.conn=t.sent().connection,this.db=this.conn.db,this.fsBucket=new O.GridFSBucket(this.db,{bucketName:"assets"}),[2]}}))}))},e}(),e.MongoConnector=ct([o.injectable(),o.singleton(),ut("design:paramtypes",[e.Configuration])],e.MongoConnector);var ft=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},ht=L.default,dt={x:"number",y:"number",w:"number",h:"number"},pt=function(){function e(e,t,n,r,o,i){this.fileId=e,this.filename=t,this.contentType=n,this.metadata=r,this.bucket=o,this.collection=i}return e.toCropRegion=function(e){var t=e;if(fe(e))try{t=JSON.parse(e)}catch(e){return null}return ye(t,dt)?{width:Math.round(t.w),height:Math.round(t.h),top:Math.round(t.y),left:Math.round(t.x)}:null},e.toImage=function(t,n,r){return ft(this,void 0,void 0,(function(){var o,i,s,a,c,u,l,f;return Q(this,(function(h){switch(h.label){case 0:return r=r||{},0==Object.keys(r).length?[2,t]:[4,Pe(t)];case 1:o=h.sent(),r.rotation=isNaN(r.rotation)?0:90*Math.round(r.rotation/90),r.canvasScaleX=isNaN(r.canvasScaleX)?1:r.canvasScaleX,r.canvasScaleY=isNaN(r.canvasScaleY)?1:r.canvasScaleY,r.scaleX=isNaN(r.scaleX)?1:r.scaleX,r.scaleY=isNaN(r.scaleY)?1:r.scaleY,r.crop=ce(r.crop)?r.crop:"true"==r.crop,h.label=2;case 2:return h.trys.push([2,16,,17]),i=e.toCropRegion(n.crop),s=e.toCropRegion(r.cropBefore||(r.crop?n.cropBefore:null)),a=e.toCropRegion(r.cropAfter||(r.crop?n.cropAfter:null)),[4,ht(o).metadata()];case 3:return c=h.sent(),u=c.width,l=c.height,s?[4,ht(o).extract(s).toBuffer()]:[3,5];case 4:return o=h.sent(),u=s.width,l=s.height,[3,7];case 5:return i?[4,ht(o).extract(i).toBuffer()]:[3,7];case 6:o=h.sent(),u=i.width,l=i.height,h.label=7;case 7:return 1===r.canvasScaleX&&1===r.canvasScaleY?[3,9]:(u=Math.round(u*r.canvasScaleX),l=Math.round(l*r.canvasScaleY),[4,ht(o).resize({width:u,height:l,background:"#00000000",fit:"contain"}).toBuffer()]);case 8:o=h.sent(),h.label=9;case 9:return 1===r.scaleX&&1===r.scaleY?[3,11]:(u=Math.round(u*r.scaleX),l=Math.round(l*r.scaleY),[4,ht(o).resize({width:u,height:l,background:"#00000000",fit:"fill"}).toBuffer()]);case 10:o=h.sent(),h.label=11;case 11:return a?[4,ht(o).extract(a).toBuffer()]:[3,13];case 12:o=h.sent(),h.label=13;case 13:return 0===r.rotation?[3,15]:[4,ht(o).rotate(r.rotation).toBuffer()];case 14:o=h.sent(),h.label=15;case 15:return[2,je(o)];case 16:return f=h.sent(),console.log("Asset image conversion error",f),[2,je(o)];case 17:return[2]}}))}))},Object.defineProperty(e.prototype,"id",{get:function(){return this.fileId.toHexString()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"stream",{get:function(){return this.bucket.openDownloadStream(this.fileId)},enumerable:!1,configurable:!0}),e.prototype.unlink=function(){return ft(this,void 0,void 0,(function(){return Q(this,(function(e){return[2,Fe(this.bucket,this.fileId)]}))}))},e.prototype.getBuffer=function(){return Pe(this.stream)},e.prototype.download=function(e){return ft(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return(e=Object.assign(this.metadata,e||{})).downloadCount=isNaN(e.downloadCount)||!e.firstDownload?1:e.downloadCount+1,e.firstDownload=e.firstDownload||new Date,e.lastDownload=new Date,[4,this.collection.updateOne({_id:this.fileId},{$set:{metadata:e}})];case 1:return t.sent(),[2,this.stream]}}))}))},e.prototype.getImage=function(t){return void 0===t&&(t=null),ft(this,void 0,void 0,(function(){return Q(this,(function(n){return[2,e.toImage(this.stream,this.metadata,t)]}))}))},e.prototype.downloadImage=function(t,n){return ft(this,void 0,void 0,(function(){var r,o;return Q(this,(function(i){switch(i.label){case 0:return o=(r=e).toImage,[4,this.download(n)];case 1:return[2,o.apply(r,[i.sent(),this.metadata,t])]}}))}))},e.prototype.toJSON=function(){return{id:this.id,filename:this.filename,contentType:this.contentType,metadata:this.metadata}},e}(),yt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},vt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},gt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.Assets=function(){function t(e,t){var n;this.connector=e,this.assetProcessor=t,this.bucket=e.bucket,this.collection=null===(n=e.database)||void 0===n?void 0:n.collection("assets.files")}return t.prototype.write=function(e,t,n){return void 0===t&&(t=null),void 0===n&&(n=null),gt(this,void 0,void 0,(function(){var r,o,i,s,a,c=this;return Q(this,(function(u){switch(u.label){case 0:r=null,o=_e(e),i=_e(e),u.label=1;case 1:return u.trys.push([1,3,,4]),[4,j.fromStream(o)];case 2:return s=u.sent(),t=s.mime,r=s.ext,[3,4];case 3:if(a=u.sent(),!t)throw"Can't determine content type";return console.log("Can't determine content type",a),[3,4];case 4:return t=t.trim(),r=(r||"").trim(),(n=Object.assign({extension:r,downloadCount:0,firstDownload:null,lastDownload:null},n||{})).filename=n.filename||(new b.ObjectId).toHexString(),[2,new Promise((function(e,r){var o=c.bucket.openUploadStream(n.filename);i.pipe(o).on("error",(function(e){r(e.message||e)})).on("finish",(function(){var i=new pt(o.id,n.filename,t,n,c.bucket,c.collection);c.collection.updateOne({_id:o.id},{$set:i.toJSON()}).then((function(){e(i)}),(function(e){r(e.message||e)}))}))}))]}}))}))},t.prototype.writeBuffer=function(t,n,r){return void 0===n&&(n=null),void 0===r&&(r=null),gt(this,void 0,void 0,(function(){return Q(this,(function(o){switch(o.label){case 0:return[4,e.AssetProcessor.getMimeType(t,r)];case 1:return r=o.sent(),n=n||{},[4,this.assetProcessor.process(t,n,r)];case 2:return t=o.sent(),[2,this.write(je(t),r,n)]}}))}))},t.prototype.read=function(e){return gt(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,this.find({_id:new b.ObjectId(e)})]}))}))},t.prototype.find=function(e){return gt(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.collection.findOne(e)];case 1:return[2,(t=n.sent())?new pt(t._id,t.filename,t.contentType,t.metadata,this.bucket,this.collection):null]}}))}))},t.prototype.unlink=function(e){return gt(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.read(e)];case 1:return(t=n.sent())?[2,t.unlink()]:[2,null]}}))}))},t}(),e.Assets=yt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),vt("design:paramtypes",[e.MongoConnector,e.AssetProcessor])],e.Assets);var mt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},bt=function(){function e(e,t,n,r,o,i,s,a,c,u){this.lazyId=e,this.jobName=t,this.jobParams=n,this.jobQue=r,this.mProgressId=o,this.mAssetId=i,this.assets=s,this.progresses=a,this.jobMan=c,this.collection=u}return Object.defineProperty(e.prototype,"id",{get:function(){return this.lazyId.toHexString()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"progressId",{get:function(){return this.mProgressId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"assetId",{get:function(){return this.mAssetId},enumerable:!1,configurable:!0}),e.prototype.unlink=function(){return mt(this,void 0,void 0,(function(){return Q(this,(function(e){switch(e.label){case 0:return[4,this.collection.deleteOne({_id:this.lazyId})];case 1:return e.sent(),[2,Fe(this.assets.bucket,new b.ObjectId(this.mAssetId))]}}))}))},e.prototype.startWorking=function(){var e=this;this.mProgressId||this.startWorkingOnAsset().then((function(){console.log("Started working on lazy asset: "+e.id)})).catch((function(t){console.log("Can't start working on lazy asset: "+e.id+"\nReason: "+t)}))},e.prototype.loadAsset=function(){return mt(this,void 0,void 0,(function(){var e;return Q(this,(function(t){switch(t.label){case 0:return this.mAssetId?[2,this.assets.read(this.mAssetId)]:this.mProgressId?[4,this.progresses.waitToFinish(this.mProgressId)]:[3,3];case 1:return t.sent(),[4,this.collection.findOne({_id:this.lazyId})];case 2:return e=t.sent(),this.mAssetId=e.assetId,[2,this.loadAsset()];case 3:return[4,this.startWorkingOnAsset()];case 4:return t.sent(),[2,this.loadAsset()]}}))}))},e.prototype.writeAsset=function(e){return mt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return this.mAssetId=e.id,[4,this.save()];case 1:return t.sent(),[2,e]}}))}))},e.prototype.save=function(){return this.collection.updateOne({_id:this.lazyId},{$set:this.toJSON()})},e.prototype.toJSON=function(){return{id:this.id,jobName:this.jobName,jobParams:this.jobParams,jobQue:this.jobQue,progressId:this.progressId,assetId:this.assetId}},e.prototype.startWorkingOnAsset=function(){return mt(this,void 0,void 0,(function(){var e;return Q(this,(function(t){switch(t.label){case 0:return[4,this.progresses.create()];case 1:return e=t.sent(),this.mProgressId=e.id,[4,this.save()];case 2:return t.sent(),[4,this.jobMan.enqueueWithName(this.jobName,Object.assign(Object.assign({},this.jobParams),{lazyId:this.id}))];case 3:return t.sent(),[2]}}))}))},e}(),wt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},jt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Pt=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},Ot=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},_t=H.default;e.JobManager=function(){function e(e,t,n){var r=this;this.config=e,this.container=t,this.jobTypes=n||[],this.jobs=this.jobTypes.reduce((function(e,t){return e[ke(t)]={perform:r.toPerformFunction(t)},e}),{})}return e.prototype.process=function(e,t){return void 0===t&&(t={}),Ot(this,void 0,void 0,(function(){var n;return Q(this,(function(r){n=null;try{n=this.resolveJobInstance(e,t)}catch(n){throw"Can't resolve params for job: "+ke(e)+", with params: "+JSON.stringify(t)+". Reason: "+n}return[2,n.process()]}))}))},e.prototype.enqueueWithName=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n="main"),Ot(this,void 0,void 0,(function(){var r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.tryResolveFromName(e,t)];case 1:return r=o.sent(),[4,this.queue.enqueue(n,r,[t])];case 2:return o.sent(),[2]}}))}))},e.prototype.enqueue=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n="main"),Ot(this,void 0,void 0,(function(){var r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.tryResolveAndConnect(e,t)];case 1:return r=o.sent(),[4,this.queue.enqueue(n,r,[t])];case 2:return o.sent(),[2]}}))}))},e.prototype.enqueueAt=function(e,t,n,r){return void 0===n&&(n={}),void 0===r&&(r="main"),Ot(this,void 0,void 0,(function(){var o;return Q(this,(function(i){switch(i.label){case 0:return[4,this.tryResolveAndConnect(t,n)];case 1:return o=i.sent(),[4,this.queue.enqueueAt(e,r,o,[n])];case 2:return i.sent(),[2]}}))}))},e.prototype.enqueueIn=function(e,t,n,r){return void 0===n&&(n={}),void 0===r&&(r="main"),Ot(this,void 0,void 0,(function(){var o;return Q(this,(function(i){switch(i.label){case 0:return[4,this.tryResolveAndConnect(t,n)];case 1:return o=i.sent(),[4,this.queue.enqueueIn(e,r,o,[n])];case 2:return i.sent(),[2]}}))}))},e.prototype.schedule=function(e,t,n,r,o,i,s,a){var c=this;void 0===s&&(s={}),void 0===a&&(a="main");var u=[e,t,n,r,o].map((function(e){if(se(e)){var t=e;return(t.min||0)+"-"+(t.max||0)}return ae(e)?e.join(","):""+e})).join(" "),l=ke(i);return x.validate(u)?x.schedule(u,(function(){c.enqueue(i,s,a).catch((function(e){console.log("Can't enqueue job: '"+l+"' because: "+e)}))})):(console.log("Can't schedule the task: '"+l+"' because time expression is invalid."),null)},e.prototype.startProcessing=function(){return Ot(this,void 0,void 0,(function(){return Q(this,(function(e){switch(e.label){case 0:return this.initialize(),[4,this.worker.connect()];case 1:return e.sent(),[4,this.worker.start()];case 2:return e.sent(),[4,this.scheduler.connect()];case 3:return e.sent(),[4,this.scheduler.start()];case 4:return e.sent(),[2]}}))}))},e.prototype.tryResolve=function(e,t){var n=ke(e);if(!this.jobs[n])throw"Can't find job with name: "+n+" so it can't be enqueued!";try{this.resolveJobInstance(e,t)}catch(e){throw"Can't resolve params for job: "+n+", with params: "+JSON.stringify(t)+". Reason: "+e}return n},e.prototype.initialize=function(){if(!this.queue){var e=this.config,t={password:e.resolve("redisPassword")},n=e.resolve("redisSentinels"),r=n?new _t({sentinels:n,name:e.resolve("redisCluster")}):null,o={pkg:"ioredis",host:e.resolve("redisHost"),password:t.password,port:e.resolve("redisPort"),namespace:e.resolve("redisNamespace"),redis:r,options:t},i=e.resolve("workQueues");this.queue=new R.Queue({connection:o},this.jobs),this.worker=new R.Worker({connection:o,queues:i},this.jobs),this.worker.on("job",(function(e,t){console.log("working job "+e+" "+JSON.stringify(t))})),this.worker.on("reEnqueue",(function(e,t,n){console.log("reEnqueue job ("+n+") "+e+" "+JSON.stringify(t))})),this.worker.on("success",(function(e,t,n,r){console.log("job success "+e+" "+JSON.stringify(t)+" >> "+n+" ("+r+"ms)")})),this.worker.on("failure",(function(e,t,n,r){console.log("job failure "+e+" "+JSON.stringify(t)+" >> "+n+" ("+r+"ms)")})),this.worker.on("error",(function(e,t,n){console.log("error "+t+" "+JSON.stringify(n)+" >> "+e)})),this.scheduler=new R.Scheduler({connection:o},this.jobs)}},e.prototype.tryResolveFromName=function(e,t){var n=this.jobTypes.find((function(t){return ke(t)==e}));if(!n)throw"Can't find job type with name: "+e+" so it can't be enqueued!";return this.tryResolveAndConnect(n,t)},e.prototype.tryResolveAndConnect=function(e,t){return Ot(this,void 0,void 0,(function(){var n;return Q(this,(function(r){switch(r.label){case 0:return this.initialize(),n=this.tryResolve(e,t),[4,this.queue.connect()];case 1:return r.sent(),[2,n]}}))}))},e.prototype.resolveJobInstance=function(e,t){var n=this.container.createChildContainer();return Object.keys(t).map((function(e){n.register(e,{useValue:t[e]})})),n.register(e,e),n.resolve(e)},e.prototype.toPerformFunction=function(e){var t=this;return function(n){return t.resolveJobInstance(e,n).process()}},e}(),e.JobManager=wt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),Pt(1,o.inject(Xe)),Pt(2,o.injectAll(Ve)),jt("design:paramtypes",[e.Configuration,Object,Array])],e.JobManager);var Rt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},xt=function(){function e(e,t,n,r,o,i,s){this.progressId=e,this.mCurrent=t,this.mMax=n,this.mMessage=r,this.mError=o,this.client=i,this.collection=s}return Object.defineProperty(e.prototype,"id",{get:function(){return this.progressId.toHexString()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"current",{get:function(){return this.mCurrent},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"max",{get:function(){return this.mMax},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this.mMessage},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"error",{get:function(){return this.mError},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"percent",{get:function(){return this.mMax>0?Math.round(this.mCurrent/this.mMax*100):0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"remaining",{get:function(){return this.mMax>0?this.mMax-this.mCurrent:0},enumerable:!1,configurable:!0}),e.prototype.createSubProgress=function(e,t,n){return Rt(this,void 0,void 0,(function(){return Q(this,(function(r){switch(r.label){case 0:return t<=0&&e>0?[4,this.advance(e)]:[3,2];case 1:r.sent(),r.label=2;case 2:return null===n?[3,4]:(this.mMessage=n,[4,this.save()]);case 3:r.sent(),r.label=4;case 4:return[2,new Ct(this,this.mCurrent,e,Math.max(t,1))]}}))}))},e.prototype.setMax=function(e){return Rt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:if(isNaN(e)||e<=0)throw"Max progress value must be bigger than zero";return this.mMax=e,[4,this.save()];case 1:return t.sent(),[2]}}))}))},e.prototype.setError=function(e){return Rt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return this.mError=e,[4,this.save()];case 1:return t.sent(),[2]}}))}))},e.prototype.advance=function(e){return void 0===e&&(e=1),Rt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:if(isNaN(e)||e<=0)throw"Advance value must be bigger than zero";return this.mCurrent=Math.min(this.mMax,this.mCurrent+e),[4,this.save()];case 1:return t.sent(),this.client?(this.client.emit("background-progress",this.id),[2]):[2]}}))}))},e.prototype.toJSON=function(){return{id:this.id,current:this.current,max:this.max,message:this.message,error:this.error}},e.prototype.save=function(){return this.collection.updateOne({_id:this.progressId},{$set:this.toJSON()})},e}(),Ct=function(){function e(e,t,n,r){if(void 0===r&&(r=100),this.parent=e,this.progressFrom=t,this.progressValue=n,this.max=r,t<0)throw"Progress from must be bigger than or zero";if(n<=0)throw"Progress value must be bigger than zero";this.currentValue=0}return Object.defineProperty(e.prototype,"id",{get:function(){return this.parent.id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this.parent.message},set:function(e){this.parent.message=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"error",{get:function(){return this.parent.error},set:function(e){this.parent.error=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"percent",{get:function(){return this.parent.percent},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"current",{get:function(){return this.currentValue},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"remaining",{get:function(){return this.max-this.currentValue},enumerable:!1,configurable:!0}),e.prototype.createSubProgress=function(t,n,r){return Rt(this,void 0,void 0,(function(){return Q(this,(function(o){switch(o.label){case 0:return n<=0&&t>0?[4,this.advance(t)]:[3,2];case 1:o.sent(),o.label=2;case 2:return null===r?[3,4]:(this.message=r,[4,this.parent.save()]);case 3:o.sent(),o.label=4;case 4:return[2,new e(this,this.current,t,Math.max(n,1))]}}))}))},e.prototype.setMax=function(e){return Rt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:if(isNaN(e)||e<=0)throw"Max progress value must be bigger than zero";return this.max=e,[4,this.save()];case 1:return t.sent(),[2]}}))}))},e.prototype.setError=function(e){return Rt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return this.error=e||null,[4,this.save()];case 1:return t.sent(),[2]}}))}))},e.prototype.advance=function(e){return void 0===e&&(e=1),Rt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:if(isNaN(e)||e<=0)throw"Advance value must be bigger than zero";return this.currentValue=Math.min(this.max,this.currentValue+e),[4,this.save()];case 1:return t.sent(),[2]}}))}))},e.prototype.save=function(){return Rt(this,void 0,void 0,(function(){var e,t,n;return Q(this,(function(r){switch(r.label){case 0:return e=this.max>0?this.currentValue/this.max:0,t=this.progressFrom+Math.round(this.progressValue*e),n=this.parent.current,t<=n?[2,null]:[4,this.parent.advance(t)];case 1:return r.sent(),[2]}}))}))},e.prototype.toJSON=function(){return this.parent.toJSON()},e}(),St=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},kt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Mt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},At=G.default;e.Progresses=function(){function e(e,t){this.connector=e,this.config=t;var n=this.config.resolve("mainEndpoint");this.client=n?At(n,{path:"/socket"}):null,this.collection=e.database.collection("progresses")}return e.prototype.waitToFinish=function(e){return Mt(this,void 0,void 0,(function(){var t,n;return Q(this,(function(r){switch(r.label){case 0:t=!1,n=null,r.label=1;case 1:return t?[3,5]:[4,this.get(e)];case 2:if(!(n=r.sent()))throw"Progress does not exists with id: "+e;if(n.error)throw n.error;return(t=100==n.percent)?[3,4]:[4,Se(150)];case 3:r.sent(),r.label=4;case 4:return[3,1];case 5:return[2,n]}}))}))},e.prototype.get=function(e){return Mt(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,this.find({_id:new b.ObjectId(e)})]}))}))},e.prototype.find=function(e){return Mt(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.collection.findOne(e)];case 1:return[2,(t=n.sent())?new xt(t._id,t.current,t.max,t.message,t.error,this.client,this.collection):null]}}))}))},e.prototype.create=function(e){return void 0===e&&(e=100),Mt(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:if(isNaN(e)||e<=0)throw"Max progress value must be bigger than zero";return[4,this.collection.insertOne({current:0,max:e})];case 1:return t=n.sent(),[2,new xt(t.insertedId,0,e,"","",this.client,this.collection)]}}))}))},e.prototype.remove=function(e){return Mt(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return[4,this.collection.deleteOne({_id:new b.ObjectId(e)})];case 1:return t.sent(),[2,e]}}))}))},e}(),e.Progresses=St([o.injectable(),o.singleton(),kt("design:paramtypes",[e.MongoConnector,e.Configuration])],e.Progresses);var It=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Tt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Et=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.LazyAssets=function(){function e(e,t,n,r){this.connector=e,this.assets=t,this.progresses=n,this.jobMan=r,this.collection=e.database.collection("lazyassets")}return e.prototype.create=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n="main"),Et(this,void 0,void 0,(function(){var r,o;return Q(this,(function(i){switch(i.label){case 0:return r=this.jobMan.tryResolve(e,Object.assign(Object.assign({},t),{lazyId:""})),[4,this.collection.insertOne({jobName:r,jobParams:t,jobQue:n})];case 1:return o=i.sent(),[2,new bt(o.insertedId,r,t,n,null,null,this.assets,this.progresses,this.jobMan,this.collection)]}}))}))},e.prototype.read=function(e){return Et(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,this.find({_id:new b.ObjectId(e)})]}))}))},e.prototype.find=function(e){return Et(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.collection.findOne(e)];case 1:return[2,(t=n.sent())?new bt(t._id,t.jobName,t.jobParams,t.jobQue,t.progressId,t.assetId,this.assets,this.progresses,this.jobMan,this.collection):null]}}))}))},e.prototype.unlink=function(e){return Et(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.read(e)];case 1:return(t=n.sent())?[2,t.unlink()]:[2,null]}}))}))},e}(),e.LazyAssets=It([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),Tt("design:paramtypes",[e.MongoConnector,e.Assets,e.Progresses,e.JobManager])],e.LazyAssets);var Dt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Ft=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Nt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.AssetResolver=function(){function e(e,t){this.assets=e,this.lazyAssets=t}return e.prototype.resolve=function(e,t){return void 0===t&&(t=!1),Nt(this,void 0,void 0,(function(){var n,r;return Q(this,(function(o){switch(o.label){case 0:return n=null,t?[4,this.lazyAssets.read(e)]:[3,2];case 1:return(r=o.sent())?[2,r.loadAsset()]:[2,null];case 2:return[4,this.assets.read(e)];case 3:return(n=o.sent())?[3,5]:[4,this.lazyAssets.read(e)];case 4:return(r=o.sent())?[2,r.loadAsset()]:[2,null];case 5:return[2,n]}}))}))},e}(),e.AssetResolver=Dt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),Ft("design:paramtypes",[e.Assets,e.LazyAssets])],e.AssetResolver);var qt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},zt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Bt=V.default,Lt=U.default;e.BackendProvider=function(){function e(){this.express=Bt(),this.server=k.createServer(this.express)}return Object.defineProperty(e.prototype,"io",{get:function(){return this.ioServer=this.ioServer||Lt(this.server,{path:"/socket"}),this.ioServer},enumerable:!1,configurable:!0}),e}(),e.BackendProvider=qt([o.injectable(),o.singleton(),zt("design:paramtypes",[])],e.BackendProvider);var Jt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Ht=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.CacheProcessor=function(){function e(){}return e.prototype.serialize=function(e){return Ht(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,e]}))}))},e.prototype.deserialize=function(e){return Ht(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,e]}))}))},e}(),e.CacheProcessor=Jt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped)],e.CacheProcessor);var Gt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Vt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Ut=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.Cache=function(){function e(e,t,n){this.connector=e,this.config=t,this.cacheProcessor=n}return e.prototype.prepare=function(){return Ut(this,void 0,void 0,(function(){return Q(this,(function(e){switch(e.label){case 0:if(this.collection)return[2];if(!this.connector.database)throw new Error("You can't use cache without mongo connection!");return this.collection=this.connector.database.collection(this.config.resolve("cacheCollection")),[4,this.collection.createIndex({expiresAt:1},{expireAfterSeconds:0})];case 1:return e.sent(),[2]}}))}))},e.prototype.set=function(e,t,n,r,o){return void 0===r&&(r=null),void 0===o&&(o={}),Ut(this,void 0,void 0,(function(){var i,s,a;return Q(this,(function(c){switch(c.label){case 0:return[4,this.prepare()];case 1:return c.sent(),s={_id:e},[4,this.cacheProcessor.serialize(t)];case 2:return s.data=c.sent(),[4,this.cacheProcessor.serialize(o)];case 3:return s.tags=c.sent(),s.expirationTimestamp=r,i=s,n&&(a=Math.round((new Date).getTime()/1e3),i.expiresAt=a+n),[4,this.collection.updateOne({_id:e},{$set:i},{upsert:!0})];case 4:return c.sent(),[2,t]}}))}))},e.prototype.get=function(e){return Ut(this,void 0,void 0,(function(){var t,n;return Q(this,(function(r){switch(r.label){case 0:return[4,this.prepare()];case 1:return r.sent(),[4,this.collection.findOne({_id:e})];case 2:if(t=r.sent(),n=Math.round((new Date).getTime()/1e3),t&&t.expiresAt&&t.expiresAt<n&&(t=null),!t)throw new Error("Cache probably doesn't exists with key: "+e);return[4,this.cacheProcessor.deserialize(t.data)];case 3:return[2,r.sent()]}}))}))},e.prototype.getOrSet=function(e,t,n,r,o){return void 0===r&&(r=null),void 0===o&&(o={}),Ut(this,void 0,void 0,(function(){var i,s;return Q(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,5]),[4,this.get(e)];case 1:return[2,a.sent()];case 2:return a.sent(),i=this.set,s=[e],[4,t()];case 3:return[4,i.apply(this,s.concat([a.sent(),n,r,o]))];case 4:return[2,a.sent()];case 5:return[2]}}))}))},e.prototype.delete=function(e){return Ut(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return[4,this.prepare()];case 1:return t.sent(),[4,this.collection.deleteOne({_id:e})];case 2:return t.sent(),[2]}}))}))},e}(),e.Cache=Gt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),Vt("design:paramtypes",[e.MongoConnector,e.Configuration,e.CacheProcessor])],e.Cache);var $t=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Yt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.EndpointProvider=function(){function e(){}return e.prototype.configure=function(e){return Yt(this,void 0,void 0,(function(){return Q(this,(function(t){return console.log("Express app is mounted to: "+e.mountpath),[2]}))}))},e}(),e.EndpointProvider=$t([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped)],e.EndpointProvider);var Wt=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Xt=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Qt=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},Kt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.Fixtures=function(){function e(e){this.fixtures=e}return e.prototype.load=function(){return Kt(this,void 0,void 0,(function(){var e,t,n,r,o;return Q(this,(function(i){switch(i.label){case 0:if(!this.fixtures)return[2];i.label=1;case 1:i.trys.push([1,6,7,8]),e=K(this.fixtures),t=e.next(),i.label=2;case 2:return t.done?[3,5]:[4,t.value.load()];case 3:i.sent(),i.label=4;case 4:return t=e.next(),[3,2];case 5:return[3,8];case 6:return n=i.sent(),r={error:n},[3,8];case 7:try{t&&!t.done&&(o=e.return)&&o.call(e)}finally{if(r)throw r.error}return[7];case 8:return[2]}}))}))},e}(),e.Fixtures=Wt([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),Qt(0,o.injectAll(Ge)),Xt("design:paramtypes",[Array])],e.Fixtures);var Zt=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},en=L.default,tn=function(){function e(e,t,n){this.folder=e,this.handler=n,this.thumb=I.v4(),this.big=I.v4(),this.targetSize=t||{width:250,height:250}}return e.prototype.serve=function(e){return Zt(this,void 0,void 0,(function(){var t,n,r,o,i,s,a,c,u,l,f;return Q(this,(function(h){switch(h.label){case 0:return t=e==this.thumb,[4,this.handler.hasResult(t)];case 1:return h.sent()?[2,this.handler.serveResult(t)]:(r=en,[4,this.handler.getOriginal()]);case 2:return[4,(n=r.apply(void 0,[h.sent()]).rotate()).metadata()];case 3:return o=h.sent(),i=o.width/o.height,s=t?this.targetSize.width/this.targetSize.height:1,a=t?Math.max(this.targetSize.width,this.targetSize.height):1500,c=i>s?a:Math.round(a/i),u=Math.round(c*i),l=n.resize(u,c),[4,t?l.extract({left:Math.floor((u-this.targetSize.width)/2),top:Math.floor((c-this.targetSize.height)/2),width:this.targetSize.width,height:this.targetSize.height}).toBuffer():l.toBuffer()];case 4:return f=h.sent(),[4,this.handler.writeResult(t,f)];case 5:return h.sent(),[2,this.handler.serveResult(t)]}}))}))},e}(),nn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},rn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};e.GalleryCache=function(){function e(){this.imgCache={}}return e.prototype.put=function(e){this.imgCache[e.thumb]=e,this.imgCache[e.big]=e},e.prototype.serve=function(e){var t=this.imgCache[e];return t?t.serve(e):null},e.prototype.create=function(e,t,n){var r=new tn(e,t,n);return this.put(r),r},e}(),e.GalleryCache=nn([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),rn("design:paramtypes",[])],e.GalleryCache);var on=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},sn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},an=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},cn=L.default;e.Gallery=function(){function e(e,n){this.config=e,this.galleryCache=n,this.cache={},this.dir=this.config.resolve("galleryDir"),this.output=t.join(this.config.resolve("cacheDir"),"gallery")}return e.prototype.getFolder=function(e,n){return void 0===n&&(n=null),an(this,void 0,void 0,(function(){var r=this;return Q(this,(function(o){return this.cache[e]=this.cache[e]||new Promise((function(o){y.lstat(t.join(r.dir,e),(function(t,i){!t&&i.isDirectory()?r.readRecursive(e,"",n).then(o,(function(){return o([])})):o([])}))})),[2,this.cache[e]]}))}))},e.prototype.readRecursive=function(e,n,r){var o=this;return new Promise((function(i){y.readdir(t.join(o.dir,e),(function(s,a){if(s)i([]);else{var c=a.map((function(i){return new Promise((function(s){return an(o,void 0,void 0,(function(){var o,a,c=this;return Q(this,(function(u){return o=t.join(e,i),a=t.join(this.dir,o),y.lstat(a,(function(e,u){e?s([]):u.isDirectory()?c.readRecursive(o,t.join(n,i),r).then(s):cn(a).rotate().metadata().then((function(){var e=function(e){return t.join(c.output,o.replace(/.([a-z|A-Z]+)$/gi,(function(t){return"-"+(e?"thumb":"big")+t})))};s([c.galleryCache.create(n,r,{getOriginal:function(){return new Promise((function(e,t){y.readFile(a,(function(n,r){n?t(n):e(r)}))}))},writeResult:function(n,r){return new Promise((function(o,i){return an(c,void 0,void 0,(function(){var s;return Q(this,(function(a){switch(a.label){case 0:return s=e(n),[4,Re(t.dirname(s))];case 1:return a.sent(),y.writeFile(s,r,(function(e){e?i(e):o()})),[2]}}))}))}))},hasResult:function(t){return new Promise((function(n){y.access(e(t),y.constants.R_OK,(function(e){n(!e)}))}))},serveResult:function(t){return new Promise((function(n,r){y.readFile(e(t),(function(e,t){e?r(e):n(t)}))}))}})])}),(function(){return s([])}))})),[2]}))}))}))}));Promise.all(c).then((function(e){i([].concat.apply([],e))}))}}))}))},e}(),e.Gallery=on([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),sn("design:paramtypes",[e.Configuration,e.GalleryCache])],e.Gallery);var un=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},ln=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},fn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.IdGenerator=function(){function e(e){this.config=e,this.prefix=e.resolve("idPrefix"),this.separator=e.resolve("idSeparator"),this.chars=e.resolve("idChars"),this.parts=e.resolve("idParts")}return e.prototype.generate=function(e){return fn(this,void 0,void 0,(function(){var t,n,r;return Q(this,(function(o){switch(o.label){case 0:t=null,n=0,r=!0,o.label=1;case 1:return r&&n<5?(t=this.generateId(),[4,e(t)]):[3,3];case 2:return r=o.sent(),n++,[3,1];case 3:if(r)throw"Couldn't generate an unique id..";return[2,t]}}))}))},e.prototype.generateId=function(){var e=this;return this.prefix+this.parts.map((function(t){for(var n="",r=0;r<t;r++){var o=Ee(0,e.chars.length-1);n+=e.chars[o]}return n})).join(this.separator)},e}(),e.IdGenerator=un([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),ln("design:paramtypes",[e.Configuration])],e.IdGenerator);var hn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},dn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};e.TranslationProvider=function(){function e(e){this.config=e,this.cache={}}return e.prototype.getDictionary=function(e){return this.cache[e]=this.cache[e]||Y.default.get(this.config.resolve("translationsTemplate").replace("[lang]",e)).then((function(e){return e.data}),(function(e){return{message:e}})),this.cache[e]},e}(),e.TranslationProvider=hn([o.injectable(),o.singleton(),dn("design:paramtypes",[e.Configuration])],e.TranslationProvider);var pn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},yn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},vn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.Translator=function(){function e(e){this.translationProvider=e,this.cache={}}return e.prototype.getDictionary=function(e){return vn(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return[4,this.translationProvider.getDictionary(e)];case 1:return t=n.sent(),this.cache[e]=t,[2,t]}}))}))},e.prototype.getTranslationSync=function(e,t,n){if(!fe(t)||!t.length)throw new Error('Parameter "key" required');var r=ge(this.cache[e],t,t)||t;return this.interpolate(r,n)},e.prototype.getTranslation=function(e,t,n){var r=this;if(!fe(t)||!t.length)throw new Error('Parameter "key" required');return this.getDictionary(e).then((function(e){var o=ge(e,t,t)||t;return r.interpolate(o,n)}))},e.prototype.getTranslations=function(e){for(var t=this,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return new Promise((function(r){Promise.all(n.map((function(n){return t.getTranslation(e,n)}))).then((function(e){r(n.reduce((function(t,n,r){return t[n]=e[r],t}),{}))}))}))},e.prototype.interpolate=function(e,t){return"string"==typeof e?this.interpolateString(e,t):"function"==typeof e?e(t):e},e.prototype.interpolateString=function(e,t){return e&&t?e.replace(/{{\s?([^{}\s]*)\s?}}/g,(function(e,n){var r=ge(t,n);return oe(r)?r:e})):e},e}(),e.Translator=pn([o.injectable(),o.singleton(),yn("design:paramtypes",[e.TranslationProvider])],e.Translator);var gn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},mn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},bn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.TemplateRenderer=function(){function e(e,t){this.translator=e,this.config=t,this.templates={},$.registerHelper("object",(function(e){return e.hash})),$.registerHelper("now",(function(){return(new Date).getTime()})),$.registerHelper("keys",(function(e){return e?Object.keys(e):[]})),$.registerHelper("translate",(function(t,n){return e.getTranslationSync(this.language,t,n)}))}return e.prototype.init=function(){return this.initPromise=this.initPromise||this.parseTemplates(this.config.resolve("templatesDir"),[]),this.initPromise},e.prototype.parseTemplates=function(e,n){return bn(this,void 0,void 0,(function(){var r=this;return Q(this,(function(o){return[2,new Promise((function(o){y.readdir(e,(function(i,s){return bn(r,void 0,void 0,(function(){var r,i,a,c,u,l,f,h,d,p,v;return Q(this,(function(g){switch(g.label){case 0:g.trys.push([0,6,7,8]),r=K(s),i=r.next(),g.label=1;case 1:return i.done?[3,5]:(a=i.value,c=t.join(e,a),y.lstatSync(c).isDirectory()?[4,this.parseTemplates(t.join(e,a),n.concat([a]))]:[3,3]);case 2:return g.sent(),[3,4];case 3:(u=a.split(".")).pop(),l=u.join("."),f=n.concat([l]).join("-"),h=y.readFileSync(c).toString("utf8"),this.templates[f]=$.compile(h),$.registerPartial(f,h),g.label=4;case 4:return i=r.next(),[3,1];case 5:return[3,8];case 6:return d=g.sent(),p={error:d},[3,8];case 7:try{i&&!i.done&&(v=r.return)&&v.call(r)}finally{if(p)throw p.error}return[7];case 8:return o(),[2]}}))}))}))}))]}))}))},e.prototype.render=function(e,t,n){return bn(this,void 0,void 0,(function(){var r,o;return Q(this,(function(i){switch(i.label){case 0:return[4,this.init()];case 1:return i.sent(),[4,this.translator.getDictionary(t)];case 2:return i.sent(),this.templates[e]?(n=Object.assign({language:t},n||{}),(r=this.templates[e](n))instanceof Error?[4,Promise.reject(r)]:[3,4]):[2,Promise.reject("Template not found with name: "+e)];case 3:return o=i.sent(),[3,5];case 4:o=r,i.label=5;case 5:return[2,o]}}))}))},e}(),e.TemplateRenderer=gn([o.injectable(),o.singleton(),mn("design:paramtypes",[e.Translator,e.Configuration])],e.TemplateRenderer);var wn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},jn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Pn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.MailSender=function(){function e(e,t){this.config=e,this.renderer=t,this.transporter=T.createTransport({host:this.config.resolve("smtpHost"),port:this.config.resolve("smtpPort"),auth:{user:this.config.resolve("smtpUser"),pass:this.config.resolve("smtpPassword")}})}return Object.defineProperty(e.prototype,"translator",{get:function(){return this.renderer.translator},enumerable:!1,configurable:!0}),e.prototype.sendMail=function(e,t){return Pn(this,void 0,void 0,(function(){var n,r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.translator.getTranslation(e,t.subject||"-")];case 1:return n=o.sent(),[4,this.renderer.render(t.template,e,t.context)];case 2:return r=o.sent(),[2,this.transporter.sendMail({from:t.from||this.config.resolve("mailSenderAddress"),to:t.to,attachments:t.attachments,subject:n,html:r})]}}))}))},e}(),e.MailSender=wn([o.injectable(),o.singleton(),jn("design:paramtypes",[e.Configuration,e.TemplateRenderer])],e.MailSender);var On=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},_n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Rn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.MemoryCache=function(){function e(e){this.cache=e,this.cacheMap=new Map}return e.prototype.set=function(e,t,n,r,o){return void 0===r&&(r=null),void 0===o&&(o={}),Rn(this,void 0,void 0,(function(){var i,s;return Q(this,(function(a){return i=Math.round((new Date).getTime()/1e3),s=Math.min(isNaN(n)?Number.MAX_SAFE_INTEGER:n,3600),this.cacheMap.set(e,{_id:e,data:t,expirationTimestamp:s,expiresAt:i+s}),[2,this.cache.set(e,t,n,r,o)]}))}))},e.prototype.get=function(e){return Rn(this,void 0,void 0,(function(){var t,n,r,o;return Q(this,(function(i){switch(i.label){case 0:return t=this.cacheMap.get(e),n=Math.round((new Date).getTime()/1e3),r=3600,t&&t.expiresAt&&t.expiresAt<n&&(r=t.expirationTimestamp,t=null),t?[3,2]:[4,this.cache.get(e)];case 1:return o=i.sent(),this.cacheMap.set(e,{_id:e,data:o,expirationTimestamp:r,expiresAt:n+r}),[2,o];case 2:return[2,t.data]}}))}))},e.prototype.getOrSet=function(e,t,n,r,o){return void 0===r&&(r=null),void 0===o&&(o={}),Rn(this,void 0,void 0,(function(){var i,s;return Q(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,5]),[4,this.get(e)];case 1:return[2,a.sent()];case 2:return a.sent(),i=this.set,s=[e],[4,t()];case 3:return[4,i.apply(this,s.concat([a.sent(),n,r,o]))];case 4:return[2,a.sent()];case 5:return[2]}}))}))},e.prototype.delete=function(e){return Rn(this,void 0,void 0,(function(){return Q(this,(function(t){switch(t.label){case 0:return this.cacheMap.delete(e),[4,this.cacheMap.delete(e)];case 1:return t.sent(),[2]}}))}))},e}(),e.MemoryCache=On([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped),_n("design:paramtypes",[e.Cache])],e.MemoryCache);var xn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Cn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},Sn={id:"5a3cdf7c6a9cf0ba32feccdf",email:"admin@site.com",password:"",roles:["admin"]};e.UserManager=function(){function e(){}return e.prototype.getByCredentials=function(e){return Cn(this,void 0,void 0,(function(){var t;return Q(this,(function(n){switch(n.label){case 0:return Sn.email!=e.email?[3,1]:(t=Sn,[3,3]);case 1:return[4,Promise.reject("message.login.error")];case 2:t=n.sent(),n.label=3;case 3:return[2,t]}}))}))},e.prototype.getById=function(e){return Cn(this,void 0,void 0,(function(){return Q(this,(function(t){return[2,Sn.id==e?Sn:null]}))}))},e.prototype.serialize=function(e){return Cn(this,void 0,void 0,(function(){var t;return Q(this,(function(n){return delete(t=Object.assign({},e)).password,[2,t]}))}))},e}(),e.UserManager=xn([o.injectable(),o.scoped(o.Lifecycle.ContainerScoped)],e.UserManager);var kn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Mn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},An=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},In=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},Tn=function(){function e(e,t){this.assets=e,this.assetResolver=t}return e.prototype.upload=function(e){return In(this,void 0,void 0,(function(){var t,n,r;return Q(this,(function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),t="application/octet-stream"===e.mimetype?null:e.mimetype,[4,this.assets.writeBuffer(e.buffer,{filename:e.filename},t)];case 1:return[2,o.sent().toJSON()];case 2:throw n=o.sent(),r=(null==n?void 0:n.message)||n||"Unknown error",new i.HttpError(400,"Asset can't be uploaded.\n"+r);case 3:return[2]}}))}))},e.prototype.getImageRotation=function(e,t,n){var r;return void 0===n&&(n=0),In(this,void 0,void 0,(function(){var o;return Q(this,(function(s){switch(s.label){case 0:return[4,this.assetResolver.resolve(e,t.lazy)];case 1:if(!(o=s.sent()))throw new i.HttpError(404,"Image with id: '"+e+"' not found.");if(null===(r=o.metadata)||void 0===r?void 0:r.classified)throw new i.HttpError(403,"Image is classified, and can be only downloaded from a custom url.");return t.rotation=t.rotation||n,[2,o.downloadImage(t)]}}))}))},e.prototype.getImage=function(e,t){return In(this,void 0,void 0,(function(){return Q(this,(function(n){return[2,this.getImageRotation(e,t)]}))}))},e.prototype.getFile=function(e,t,n){var r,o;return In(this,void 0,void 0,(function(){var s,a;return Q(this,(function(c){switch(c.label){case 0:return[4,this.assetResolver.resolve(e,t)];case 1:if(!(s=c.sent()))throw new i.HttpError(404,"File with id: '"+e+"' not found.");if(null===(r=s.metadata)||void 0===r?void 0:r.classified)throw new i.HttpError(403,"Asset is classified, and can be only downloaded from a custom url.");return(a=null===(o=s.metadata)||void 0===o?void 0:o.extension)&&n.header("content-disposition","inline; filename="+s.filename+"."+a),[2,s.download()]}}))}))},e}();kn([i.Authorized(),i.Post(""),An(0,i.UploadedFile("file")),Mn("design:type",Function),Mn("design:paramtypes",[Object]),Mn("design:returntype",Promise)],Tn.prototype,"upload",null),kn([i.Get("/image/:id/:rotation"),An(0,i.Param("id")),An(1,i.QueryParams()),An(2,i.Param("rotation")),Mn("design:type",Function),Mn("design:paramtypes",[String,Object,Number]),Mn("design:returntype",Promise)],Tn.prototype,"getImageRotation",null),kn([i.Get("/image/:id"),An(0,i.Param("id")),An(1,i.QueryParams()),Mn("design:type",Function),Mn("design:paramtypes",[String,Object]),Mn("design:returntype",Promise)],Tn.prototype,"getImage",null),kn([i.Get("/:id"),An(0,i.Param("id")),An(1,i.QueryParam("lazy")),An(2,i.Res()),Mn("design:type",Function),Mn("design:paramtypes",[String,Boolean,Object]),Mn("design:returntype",Promise)],Tn.prototype,"getFile",null),Tn=kn([o.injectable(),i.Controller("/assets"),Mn("design:paramtypes",[e.Assets,e.AssetResolver])],Tn);var En=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Dn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Fn=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},Nn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.AuthController=function(){function e(e,t){this.config=e,this.userManager=t}return e.prototype.login=function(e,t){return Nn(this,void 0,void 0,(function(){var t,n,o;return Q(this,(function(s){switch(s.label){case 0:return s.trys.push([0,4,,5]),[4,this.userManager.getByCredentials(e)];case 1:return t=s.sent(),[4,F.compare(e.password,t.password)];case 2:if(!0!==s.sent())throw"message.login.error";return n={token:r.sign({id:t._id||t.id},this.config.resolve("jwtSecret"))},[4,this.userManager.serialize(t)];case 3:return[2,(n.user=s.sent(),n)];case 4:throw o=s.sent(),new i.HttpError(401,o);case 5:return[2]}}))}))},e.prototype.getProfile=function(e){return this.userManager.serialize(e)},e}(),En([i.Post("/login"),Fn(0,i.Body()),Fn(1,i.Res()),Dn("design:type",Function),Dn("design:paramtypes",[Object,Object]),Dn("design:returntype",Promise)],e.AuthController.prototype,"login",null),En([i.Authorized(),i.Get("/user"),Fn(0,i.CurrentUser()),Dn("design:type",Function),Dn("design:paramtypes",[Object]),Dn("design:returntype",void 0)],e.AuthController.prototype,"getProfile",null),e.AuthController=En([o.injectable(),i.Controller(),Dn("design:paramtypes",[e.Configuration,e.UserManager])],e.AuthController);var qn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},zn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Bn=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}};e.GalleryController=function(){function e(e){this.galleryCache=e}return e.prototype.getFile=function(e){return this.galleryCache.serve(e)},e}(),qn([i.Get("/:id"),Bn(0,i.Param("id")),zn("design:type",Function),zn("design:paramtypes",[String]),zn("design:returntype",void 0)],e.GalleryController.prototype,"getFile",null),e.GalleryController=qn([o.injectable(),i.Controller("/gallery"),zn("design:paramtypes",[e.GalleryCache])],e.GalleryController);var Ln=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Jn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Hn=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},Gn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},Vn=function(){function e(e,t){this.progresses=e,this.config=t;var n=this.config.resolve("mainEndpoint");this.connectionType=n?"socket":"polling"}return e.prototype.getProgress=function(e){return Gn(this,void 0,void 0,(function(){var t,n;return Q(this,(function(r){switch(r.label){case 0:return[4,this.progresses.get(e)];case 1:return(t=r.sent())?((n=t.toJSON()).connectionType=this.connectionType,[2,n]):[2,null]}}))}))},e}();Ln([i.Get("/:id"),Hn(0,i.Param("id")),Jn("design:type",Function),Jn("design:paramtypes",[String]),Jn("design:returntype",Promise)],Vn.prototype,"getProgress",null),Vn=Ln([o.injectable(),i.Controller("/progresses"),Jn("design:paramtypes",[e.Progresses,e.Configuration])],Vn);var Un=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},$n=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Yn=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};e.ErrorHandlerMiddleware=function(){function e(e,t){this.configuration=e,this.translator=t}return Object.defineProperty(e.prototype,"isDev",{get:function(){return"development"===this.configuration.resolve("nodeEnv")},enumerable:!1,configurable:!0}),e.prototype.error=function(e,t,n,r){return Yn(this,void 0,void 0,(function(){var r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.getResult(e,t,n)];case 1:return r=o.sent(),this.isDev&&console.log("ERROR",r,n.statusCode),n.json(r),[2]}}))}))},e.prototype.getResult=function(e,t,n){return Yn(this,void 0,void 0,(function(){var r,o,s,a;return Q(this,(function(c){switch(c.label){case 0:return r={},e instanceof i.BadRequestError?(n.status(400),"ParamRequiredError"!==e.constructor.name?[3,2]:(o=r,[4,this.translator.getTranslation(t.language,"message.parameter-required.error")])):[3,6];case 1:return o.message=c.sent(),r.param=e.message,[3,5];case 2:return s=r,(a=e.message)?[3,4]:[4,this.translator.getTranslation(t.language,"message.form-validation.error")];case 3:a=c.sent(),c.label=4;case 4:s.message=a,r.errors=e.errors,this.isDev&&(r.stack=e.stack),c.label=5;case 5:return[2,r];case 6:return n.status(e.httpCode||500),e instanceof Error?(e.name&&(r.name=e.name),e.message&&(r.message=e.message),e.stack&&this.isDev&&(r.stack=e.stack)):"string"==typeof e&&(r.message=e),[2,r]}}))}))},e}(),e.ErrorHandlerMiddleware=Un([o.injectable(),i.Middleware({type:"after"}),$n("design:paramtypes",[e.Configuration,e.Translator])],e.ErrorHandlerMiddleware);var Wn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},Xn=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},Qn=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},Kn=function(){function e(e){this.container=e}return e.prototype.use=function(e,t,n){e.container=this.container,n(null)},e}();Kn=Wn([o.injectable(),i.Middleware({type:"before"}),Qn(0,o.inject(Xe)),Xn("design:paramtypes",[Object])],Kn);var Zn=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},er=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};e.LanguageMiddleware=function(){function e(e){this.config=e}return e.prototype.use=function(e,t,n){e.language=e.query.language||this.config.resolve("defaultLanguage"),n(null)},e}(),e.LanguageMiddleware=Zn([o.injectable(),i.Middleware({type:"before"}),er("design:paramtypes",[e.Configuration])],e.LanguageMiddleware);var tr=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},nr=function(){function e(){}return e.prototype.use=function(e,t,n){e.ended=W.default();var r=e.ended.diff(e.started),o=W.default.duration(r);console.log("Request '"+e.id+"' ended at: "+e.ended.format("YYYY-MM-DD HH:mm:ss")+" ["+e.method+"] "+e.url),console.log("Request '"+e.id+"' lasted: "+o.asMilliseconds()+"ms"),n(null)},e}();nr=tr([o.injectable(),i.Middleware({type:"after"})],nr);var rr=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},or=function(){function e(){}return e.prototype.use=function(e,t,n){e.id=(new b.ObjectId).toHexString(),e.started=W.default(),console.log("Request '"+e.id+"' started at: "+e.started.format("YYYY-MM-DD HH:mm:ss")+" ["+e.method+"] "+e.url),n(null)},e}();or=rr([o.injectable(),i.Middleware({type:"before"})],or);var ir=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},sr=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},ar=this&&this.__param||function(e,t){return function(n,r){t(n,r,e)}},cr=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},ur=function(){function e(e,t){this.progresses=e,this.socketServer=t}return e.prototype.advanceProgress=function(e,t){return cr(this,void 0,void 0,(function(){var n,r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.progresses.get(t)];case 1:return(n=o.sent())?(r=n.toJSON(),Te(this.socketServer,(function(n){n.interestedProgresses instanceof Set&&n.interestedProgresses.has(t)&&e.emit("background-progress-changed",r)})),console.log("progress changed: "+e.id+", data: "+JSON.stringify(r)),[2]):[2]}}))}))},e.prototype.setProgressInterest=function(e,t){return cr(this,void 0,void 0,(function(){var n,r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.progresses.get(t)];case 1:return(n=o.sent())?(r=n.toJSON(),e.interestedProgresses=e.interestedProgresses||new Set,e.interestedProgresses.has(t)||(e.interestedProgresses.add(t),e.emit("background-progress-changed",r),console.log("progress interest added: "+e.id+", data: "+JSON.stringify(r))),[2]):[2]}}))}))},e}();ir([s.OnMessage("background-progress"),ar(0,s.ConnectedSocket()),ar(1,s.MessageBody()),sr("design:type",Function),sr("design:paramtypes",[Object,String]),sr("design:returntype",Promise)],ur.prototype,"advanceProgress",null),ir([s.OnMessage("background-progress-interest"),ar(0,s.ConnectedSocket()),ar(1,s.MessageBody()),sr("design:type",Function),sr("design:paramtypes",[Object,String]),sr("design:returntype",Promise)],ur.prototype,"setProgressInterest",null),ur=ir([o.injectable(),s.SocketController(),ar(1,o.inject(Ye)),sr("design:paramtypes",[e.Progresses,Object])],ur);var lr=this&&this.__decorate||function(e,t,n,r){var o,i=arguments.length,s=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(o=e[a])&&(s=(i<3?o(s):i>3?o(t,n,s):o(t,n))||s);return i>3&&s&&Object.defineProperty(t,n,s),s},fr=function(){function e(){}return e.prototype.use=function(e,t){t()},e}();fr=lr([o.injectable(),s.Middleware()],fr);var hr=function(){function e(e,t){this.container=e,this.path=t,this.map=new Map}return Object.defineProperty(e.prototype,"parentTree",{get:function(){return this.container.parent.tree},enumerable:!1,configurable:!0}),e.prototype.resolveService=function(){return this.container.resolve(this.path)},e.prototype.resolveLeaves=function(){var e;try{var t=this.parentTree.resolvePath(this.path);e=t.resolveLeaves()}catch(t){e=new Map}var n=function(t,r){t.forEach((function(t,o){var i=r?r+"."+o:o;0!=t.map.size?n(t.map,i):e.set(i,t)}))};return n(this.map,""),e},e.prototype.resolveServices=function(){var e=new Map;return this.resolveLeaves().forEach((function(t,n){e.set(n,t.resolveService())})),e},e.prototype.resolveAncestor=function(t){var n,r,o;if(!fe(t)||0==t.length)return this;try{o=(o=this.parentTree.resolvePath(this.path)).resolveAncestor(t)}catch(t){o=new e(this.container,"")}var i=t.split("."),s=this,a=this;try{for(var c=K(i),u=c.next();!u.done;u=c.next()){var l=u.value;if(!(s=s.map.get(l))){if(a==this){if(o.path.length>0)return o;throw new Error("Ancestor '"+t+"' not found in current tree: '"+this.path+"'")}return a}a=s}}catch(e){n={error:e}}finally{try{u&&!u.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}return o.path.length>a.path.length?o:a},e.prototype.resolvePath=function(t,n){void 0===n&&(n=!0);var r=this.path?this.path+"."+t:t,o=new e(this.container,r);try{o=this.resolveAncestor(t)}catch(e){if(n)throw new Error("Path '"+t+"' not found in current tree: '"+this.path+"'");return o}if(o.path!==r){if(n)throw new Error("Path '"+t+"' not found in current tree: '"+this.path+"'");return o}return o},e.prototype.addPath=function(t){var n,r;if(!fe(t)||0==t.length)return this;var o=t.split("."),i=this;t=this.path;try{for(var s=K(o),a=s.next();!a.done;a=s.next()){var c=a.value;i.map.has(c)||i.map.set(c,new e(this.container,t?t+"."+c:c)),t=(i=i.map.get(c)).path}}catch(e){n={error:e}}finally{try{a&&!a.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return this},e}(),dr=function(){function e(e,t){void 0===t&&(t=null),this.container=e,this.parent=t,e.wrapperContainer=this,this.tokens=[],this.tokenSet=new Set,this.myTree=new hr(this,"")}return Object.defineProperty(e.prototype,"registeredTokens",{get:function(){var e;return((null===(e=this.parent)||void 0===e?void 0:e.registeredTokens)||[]).concat(this.tokens)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"tree",{get:function(){return this.myTree},enumerable:!1,configurable:!0}),e.prototype.beforeResolution=function(e,t,n){this.container.beforeResolution(e,t,n)},e.prototype.afterResolution=function(e,t,n){this.container.afterResolution(e,t,n)},e.prototype.clearInstances=function(){this.container.clearInstances()},e.prototype.createChildContainer=function(){return new e(this.container.createChildContainer(),this)},e.prototype.isRegistered=function(e,t){return this.container.isRegistered(e,t)},e.prototype.register=function(e,t,n){return o.isFactoryProvider(t)?(this.container.register(e,{useFactory:function(e){return t.useFactory(e.wrapperContainer)}}),this.addToken(e)):(this.container.register(e,t),this.addToken(e))},e.prototype.registerInstance=function(e,t){return this.container.registerInstance(e,t),this.addToken(e)},e.prototype.registerSingleton=function(e,t){return this.container.registerSingleton(e,t),this.addToken(e)},e.prototype.registerType=function(e,t){return this.container.registerType(e,t),this.addToken(e)},e.prototype.reset=function(){this.tokens=[],this.tokenSet=new Set,this.container.reset()},e.prototype.resolve=function(e){return this.container.resolve(e)},e.prototype.resolveAll=function(e){return this.container.resolveAll(e)},e.prototype.get=function(e){return this.container.resolve(e)},e.prototype.addToken=function(e){return this.tokenSet.has(e)||(this.tokenSet.add(e),this.tokens.push(e),fe(e)&&this.myTree.addPath(e)),this},e}(),pr=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};function yr(n,r){return pr(this,void 0,void 0,(function(){var o,i,s;return Q(this,(function(a){switch(a.label){case 0:return o=t.resolve(n||__dirname,"public_html"),i=r.get(Ue),s=r.get(e.EndpointProvider),console.log(o,y.existsSync(o)),y.existsSync(o)?(console.log("public_html exists. setting up static files serving..."),i.use(M.static(o,{maxAge:"1y"}))):console.log('public_html does not exist on path: "'+o+'"'),[4,s.configure(i)];case 1:return a.sent(),[2]}}))}))}var vr=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))},gr=function(){function e(e,t,n){this.assetResolver=e,this.progresses=t,this.lazyId=n}return Object.defineProperty(e.prototype,"assets",{get:function(){return this.assetResolver.assets},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"lazyAssets",{get:function(){return this.assetResolver.lazyAssets},enumerable:!1,configurable:!0}),e.prototype.process=function(){return vr(this,void 0,void 0,(function(){var e,t,n,r;return Q(this,(function(o){switch(o.label){case 0:return[4,this.lazyAssets.read(this.lazyId)];case 1:return e=o.sent(),[4,this.progresses.get(e.progressId)];case 2:t=o.sent(),o.label=3;case 3:return o.trys.push([3,6,,8]),[4,this.generate(t)];case 4:return n=o.sent(),[4,e.writeAsset(n)];case 5:return o.sent(),[3,8];case 6:return r=o.sent(),[4,t.setError(r.message||r)];case 7:throw o.sent(),r;case 8:return t.remaining>0?[4,t.advance(t.remaining)]:[3,10];case 9:o.sent(),o.label=10;case 10:return[2]}}))}))},e}(),mr=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function s(e){try{c(r.next(e))}catch(e){i(e)}}function a(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))};function br(t,n){return mr(this,void 0,void 0,(function(){var o,s,a,c;return Q(this,(function(u){switch(u.label){case 0:if(n.user)return[2,n.user];o=n.header("Authorization")||"",s=null;try{a=t.resolve(e.Configuration),s=r.verify(o.split(" ")[1],a.resolve("jwtSecret"))}catch(e){throw new i.HttpError(401,"Authentication failed. ("+e.message+")")}if(!s)throw new i.HttpError(401,"Authentication failed. (Maybe invalid token)");return c=n,[4,t.resolve(e.UserManager).getById(s.id)];case 1:return c.user=u.sent(),[2,n.user]}}))}))}function wr(){var n=[new Qe("templatesDir",t.join(__dirname,"templates")),new Qe("galleryDir",t.join(__dirname,"gallery")),new Qe("cacheDir",t.join(__dirname,"cache")),new Qe("defaultLanguage","en"),new Qe("smtpHost","smtp.sendgrid.net"),new Qe("smtpPort",587),new Qe("smtpUser","apikey"),new Qe("smtpPassword",""),new Qe("mailSenderAddress","info@stemy.hu"),new Qe("translationsTemplate","https://translation.service/[lang]"),new Qe("jwtSecret","eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9"),new Qe("mongoUri",""),new Qe("mongoDb","node-backend"),new Qe("mongoUser",null),new Qe("mongoPassword",null),new Qe("nodeEnv","development"),new Qe("appPort",80),new Qe("redisHost","127.0.0.1"),new Qe("redisPort",6379),new Qe("redisPassword","123456"),new Qe("redisNamespace","resque"),new Qe("redisCluster","mymaster"),new Qe("redisSentinels",null,(function(e){return e?e.split(", ").map((function(e){var t=e.split(":");return{host:t[0],port:Number(t[1])}})):null})),new Qe("workQueues",["main"]),new Qe("isWorker",!1),new Qe("mainEndpoint",""),new Qe("idChars","0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"),new Qe("idSeparator","-"),new Qe("idPrefix","ID-"),new Qe("idParts",[4,4]),new Qe("jsonLimit","250mb"),new Qe("cacheCollection","cache")].map((function(e){return{provide:We,useValue:e}})),r=[e.AssetProcessor,e.AssetResolver,e.Assets,e.BackendProvider,e.Cache,e.CacheProcessor,e.Configuration,e.EndpointProvider,e.Fixtures,e.Gallery,e.GalleryCache,e.IdGenerator,e.JobManager,e.LazyAssets,e.MailSender,e.MemoryCache,e.MongoConnector,e.Progresses,e.TemplateRenderer,e.TranslationProvider,e.Translator,e.UserManager],i=new dr(o.container.createChildContainer());return n.forEach((function(e){i.register(e.provide,e)})),r.forEach((function(e){o.container.isRegistered(e)||i.register(e,e)})),i}e.DI_CONTAINER=Xe,e.EXPRESS=Ue,e.FIXTURE=Ge,e.HTTP_SERVER=$e,e.JOB=Ve,e.LazyAssetGenerator=gr,e.PARAMETER=We,e.Parameter=Qe,e.ResolveEntity=function(e,t){var n=this,r=e.modelName,o=r.toLowerCase();return i.createParamDecorator({required:!1,value:function(s){return te(n,void 0,void 0,(function(){var n,a,c,u,l,f,h,d;return Q(this,(function(p){switch(p.label){case 0:if(n=s.request,a=n.header("x-"+o+"-token"),!(c=n.params[o+"Id"])&&!a)throw new i.BadRequestError(r+" id or token should be defined!");return[4,u=a?e.findOne({token:a}):e.findById(c)];case 1:if(!(l=p.sent()))throw new i.HttpError(404,a?r+" could not be found with token: "+a:r+" could not be found with id: "+c);if(!he(t))return[3,5];p.label=2;case 2:return p.trys.push([2,4,,5]),f=s.request,h=o,[4,Ce(t(u,s))];case 3:return f[h]=p.sent()||l,[2,s.request[o]];case 4:throw d=p.sent(),new i.BadRequestError(r+" check error: "+(d.message||d));case 5:return s.request[o]=l,[2,l]}}))}))}})},e.SOCKET_SERVER=Ye,e.Type=He,e.assign=function(e,t,n){return qe(e,t,n)},e.broadcast=Te,e.bufferToStream=je,e.convertValue=me,e.copy=function(e){return qe(null,e)},e.copyStream=_e,e.createServices=wr,e.createTransformer=function(e){return function(t,n,r){return n.id=Ie(n.id)||n.id,t._id&&(n._id=Ie(t._id),n.id=n.id||n._id),delete n.__v,he(e)&&e(t,n,r)||n}},e.deleteFile=function(e){return new Promise((function(t,n){y.unlink(e,(function(e){e?n(e):t()}))}))},e.deleteFromBucket=Fe,e.filter=function(e,t){return qe(null,e,t)},e.firstItem=function(e){return e[0]},e.getConstructorName=ke,e.getExtension=function(e){return t.basename(e||"").split(".").pop()},e.getFileName=function(e,n){void 0===n&&(n=!1);var r=t.basename(e||"");return n?r:r.split(".").slice(0,-1).join(".")},e.getFunctionParams=Me,e.getType=ie,e.getValue=ge,e.groupBy=function(e,t){return e.reduce((function(e,n){var r=t(n);return e[r]=e[r]||[],e[r].push(n),e}),{})},e.hydratePopulated=we,e.idToString=Ie,e.injectServices=be,e.isArray=ae,e.isBoolean=ce,e.isConstructor=de,e.isDate=ue,e.isDefined=oe,e.isFunction=he,e.isInterface=ye,e.isNullOrUndefined=re,e.isObject=se,e.isPrimitive=le,e.isString=fe,e.isType=pe,e.lastItem=function(e){return e[e.length-1]},e.lcFirst=ve,e.lookupPipelines=function(e,t,n,r,o){void 0===n&&(n=null),void 0===r&&(r="_id"),void 0===o&&(o=!0),n=n||t.replace("Id","");var i=[{$lookup:{from:e,localField:t,foreignField:r,as:n}},{$unwind:{path:"$"+n,preserveNullAndEmptyArrays:!0}}];return o?i:i.slice(0,0)},e.md5=function(e){if(se(e)&&(e=JSON.stringify(e)),!fe(e))throw"Can't md5 other that raw object or string";return h.createHash("md5").update(e).digest("hex")},e.mkdirRecursive=Re,e.multiSubscription=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return new d.Subscription((function(){e.forEach((function(e){e.unsubscribe()}))}))},e.observableFromFunction=function(e){var t;return new d.Observable((function(n){if(!t){t=new d.Subject;try{t=d.from(e())}catch(e){p.canReportError(t)?t.error(e):console.warn(e)}}return t.subscribe(n)}))},e.padLeft=function(e,t,n){return void 0===t&&(t=3),void 0===n&&(n="0"),(""+e).padStart(t,n)},e.padRight=function(e,t,n){return void 0===t&&(t=3),void 0===n&&(n="0"),(""+e).padEnd(t,n)},e.paginate=function(e,t,n){return e.countDocuments(t).then((function(r){var o=e.find(t);return fe(n.sort)&&(o=o.sort(n.sort)),ae(n.populate)&&n.populate.forEach((function(e){o=o.populate(e)})),(n.limit>0?o.skip(n.page*n.limit).limit(n.limit):o).then((function(e){return{count:r,items:e,meta:{total:r}}}))}))},e.paginateAggregations=function(e,t,n,r){return void 0===r&&(r={}),te(this,void 0,void 0,(function(){var o,i,s,a,c;return Q(this,(function(u){switch(u.label){case 0:return o=fe(n.sort)&&n.sort?n.sort.startsWith("-")?n.sort.substr(1):n.sort:null,i=o?[{$sort:(c={},c[o]=o==n.sort?1:-1,c)}]:[],[4,e.aggregate(ee(t,i,[{$group:{_id:"results",result:{$push:"$$CURRENT"}}},{$project:{_id:0,items:n.limit>0?{$slice:["$result",n.page*n.limit,n.limit]}:"$result",count:{$size:"$result"},meta:Object.assign({total:{$size:"$result"}},r)}}]))];case 1:return s=u.sent(),(a=s[0])?(a.items=a.items.map((function(t){return we(e,t)})),[2,a]):[2,{items:[],count:0,meta:{total:0}}]}}))}))},e.promiseTimeout=Se,e.proxyFunction=Ae,e.proxyFunctions=function(e,t,n){void 0===n&&(n=null),n=n||ve(ke(t)).replace(/helper$/gi,"");var r=Object.getOwnPropertyDescriptors(t.prototype);Object.keys(r).forEach((function(t){var o=r[t].value;he(o)&&"constructor"!==t&&(Me(o)[0]==n&&(e.methods[t]=Ae(t)))})),be(e,{helper:t})},e.rand=Ee,e.random=De,e.readAndDeleteFile=function(e,t){return void 0===t&&(t=5e3),te(this,void 0,void 0,(function(){var n;return Q(this,(function(r){switch(r.label){case 0:return[4,xe(e)];case 1:return n=r.sent(),setTimeout((function(){y.unlink(e,(function(){}))}),t),[2,n]}}))}))},e.readFile=xe,e.runCommand=function(e,t){return void 0===t&&(t=0),new Promise((function(n,r){var o=f.exec(e,(function(e,o){if(e&&t!==e.code)return console.log(e),void r(e);for(var i=(o||"").split("\n"),s=null;!s&&i.length>0;)s=i.pop();n(s)}));o.stdout.on("data",(function(e){console.log(e.toString())})),o.stderr.on("data",(function(e){console.error(e.toString())}))}))},e.setupBackend=function(t,r,o){return mr(this,void 0,void 0,(function(){var f,h,d,p,y,v,g,m,b,w,j=this;return Q(this,(function(P){switch(P.label){case 0:return r=Array.isArray(r)?r:[],o=o||wr(),f=t.fixtures||[],h=f.map((function(e){return{provide:Ge,useClass:e}})),d=(t.params||[]).map((function(e){return{provide:We,useValue:e}})),p=(t.jobs||[]).map((function(e){return{provide:Ve,useValue:e}})),(y=t.restOptions||{}).defaultErrorHandler=!1,y.cors={credentials:!0,origin:function(e,t){t(null,!0)}},y.routePrefix=t.routePrefix||"/api",y.routePrefix="/"==y.routePrefix?"":y.routePrefix,y.middlewares=[e.ErrorHandlerMiddleware,Kn,e.LanguageMiddleware,or,nr].concat(y.middlewares||[]),y.controllers=[Tn,e.AuthController,e.GalleryController,Vn].concat(y.controllers||[]),(v=t.socketOptions||{}).middlewares=[fr].concat(v.middlewares||[]),v.controllers=[ur].concat(v.controllers||[]),g=[],[We].forEach((function(e){o.resolveAll(e).forEach((function(t){g.push({provide:e,useValue:t})}))})),g.push.apply(g,ee(f,h,d,p,y.middlewares,y.controllers,v.middlewares,v.controllers,r,[{provide:Ue,useFactory:function(t){return t.resolve(e.BackendProvider).express}},{provide:$e,useFactory:function(t){return t.resolve(e.BackendProvider).server}},{provide:Ye,useFactory:function(t){return t.resolve(e.BackendProvider).io}}])),m=o.createChildContainer(),g.forEach((function(e){pe(e)?m.register(e,e):m.register(e.provide,e)})),m.register(Xe,{useValue:m}),ne.appContainer=ne.appContainer||m,y.authorizationChecker=function(e,t){return mr(j,void 0,void 0,(function(){var n,r,o,s,a,c,u,l,f,h,d;return Q(this,(function(p){switch(p.label){case 0:return[4,br(m,e.request)];case 1:if(!(n=p.sent()))throw new i.HttpError(401,"Authentication failed. (User can't be found.)");if(r=Array.isArray(n.roles)?n.roles:[],!(Array.isArray(t)&&t.length>0))return[3,13];o=null,p.label=2;case 2:p.trys.push([2,10,11,12]),s=K(t),a=s.next(),p.label=3;case 3:if(a.done)return[3,9];if(!he(c=a.value))return[3,7];p.label=4;case 4:return p.trys.push([4,6,,7]),[4,Ce(c(n,e))];case 5:return p.sent()?[2,!0]:[3,7];case 6:return u=p.sent(),o=u,[3,7];case 7:if(r.indexOf(c)>=0)return[2,!0];p.label=8;case 8:return a=s.next(),[3,3];case 9:return[3,12];case 10:return l=p.sent(),h={error:l},[3,12];case 11:try{a&&!a.done&&(d=s.return)&&d.call(s)}finally{if(h)throw h.error}return[7];case 12:throw f=o&&(o.message||fe(o))?o.message||o:"User doesn't have access to this resource",new i.HttpError(401,"Authentication failed. ("+f+")");case 13:return[2,!0]}}))}))},y.currentUserChecker=function(e){return mr(j,void 0,void 0,(function(){return Q(this,(function(t){return[2,br(m,e.request)]}))}))},b=m.resolve(e.Configuration),w=m.resolve(e.BackendProvider),t.restOptions&&(w.express.use(n.json({limit:b.hasParam("jsonLimit")?b.resolve("jsonLimit"):"250mb"})),i.useContainer(m),i.useExpressServer(w.express,y),w.express.get("/api-docs",(function(n,r){r.status(200).end(function(t){var n;if(Le)return Le;var r=i.getMetadataArgsStorage(),o=a.routingControllersToSpec(r);return o.basePath="/api/",o.definitions=l.validationMetadatasToSchemas({classTransformerMetadataStorage:c.defaultMetadataStorage,additionalConverters:(n={},n[u.ValidationTypes.CUSTOM_VALIDATION]=function(n,r){var o=he(t)?t(n,r):t;if(o)return o;var i=n.constraints||[];return n.constraintCls===e.IsFile?{multi:i[0]||!1,type:"file"}:n.constraintCls===e.IsObjectId?{endpoint:i[0]||!1,multi:i[1]||!1,type:"list"}:null},n)}),o.components.schemas=o.definitions,Le=JSON.stringify(o)}(t.customValidation))}))),t.socketOptions&&(s.useContainer(m),s.useSocketServer(w.io,v)),b.hasParam("mongoUri")&&b.resolve("mongoUri")?(console.log("Connecting to MongoDB..."),[4,m.resolve(e.MongoConnector).connect()]):[3,2];case 1:P.sent(),console.log("Successfully connected to MongoDB."),P.label=2;case 2:return[4,yr(t.rootFolder,m)];case 3:return P.sent(),[2,m]}}))}))},e.streamToBuffer=Pe,e.ucFirst=function(e){return e?e[0].toUpperCase()+e.substr(1):""},e.valueToPromise=Ce,e.writeFile=function(e,n){return te(this,void 0,void 0,(function(){return Q(this,(function(r){switch(r.label){case 0:return[4,Re(t.dirname(e))];case 1:return r.sent(),[2,new Promise((function(t,r){y.writeFile(e,n,(function(e){e?r(e):t(n)}))}))]}}))}))},Object.defineProperty(e,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=stemy-backend.umd.min.js.map