@decaf-ts/transactional-decorators 0.0.4

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.
Files changed (51) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +297 -0
  3. package/dist/esm/transactional-decorators.bundle.min.esm.js +2 -0
  4. package/dist/esm/transactional-decorators.bundle.min.esm.js.LICENSE.txt +14 -0
  5. package/dist/transactional-decorators.bundle.min.js +2 -0
  6. package/dist/transactional-decorators.bundle.min.js.LICENSE.txt +14 -0
  7. package/lib/Transaction.cjs +3 -0
  8. package/lib/Transaction.d.ts +79 -0
  9. package/lib/constants.cjs +1 -0
  10. package/lib/constants.d.ts +1 -0
  11. package/lib/decorators.cjs +1 -0
  12. package/lib/decorators.d.ts +26 -0
  13. package/lib/esm/Transaction.d.ts +79 -0
  14. package/lib/esm/Transaction.js +3 -0
  15. package/lib/esm/constants.d.ts +1 -0
  16. package/lib/esm/constants.js +1 -0
  17. package/lib/esm/decorators.d.ts +26 -0
  18. package/lib/esm/decorators.js +1 -0
  19. package/lib/esm/index.d.ts +24 -0
  20. package/lib/esm/index.js +1 -0
  21. package/lib/esm/interfaces/TransactionLock.d.ts +26 -0
  22. package/lib/esm/interfaces/TransactionLock.js +0 -0
  23. package/lib/esm/interfaces/index.d.ts +1 -0
  24. package/lib/esm/interfaces/index.js +1 -0
  25. package/lib/esm/locks/Lock.d.ts +24 -0
  26. package/lib/esm/locks/Lock.js +1 -0
  27. package/lib/esm/locks/SyncronousLock.d.ts +40 -0
  28. package/lib/esm/locks/SyncronousLock.js +1 -0
  29. package/lib/esm/locks/index.d.ts +2 -0
  30. package/lib/esm/locks/index.js +1 -0
  31. package/lib/esm/types.d.ts +7 -0
  32. package/lib/esm/types.js +0 -0
  33. package/lib/esm/utils.d.ts +1 -0
  34. package/lib/esm/utils.js +1 -0
  35. package/lib/index.cjs +1 -0
  36. package/lib/index.d.ts +24 -0
  37. package/lib/interfaces/TransactionLock.cjs +1 -0
  38. package/lib/interfaces/TransactionLock.d.ts +26 -0
  39. package/lib/interfaces/index.cjs +1 -0
  40. package/lib/interfaces/index.d.ts +1 -0
  41. package/lib/locks/Lock.cjs +1 -0
  42. package/lib/locks/Lock.d.ts +24 -0
  43. package/lib/locks/SyncronousLock.cjs +1 -0
  44. package/lib/locks/SyncronousLock.d.ts +40 -0
  45. package/lib/locks/index.cjs +1 -0
  46. package/lib/locks/index.d.ts +2 -0
  47. package/lib/types.cjs +1 -0
  48. package/lib/types.d.ts +7 -0
  49. package/lib/utils.cjs +1 -0
  50. package/lib/utils.d.ts +1 -0
  51. package/package.json +107 -0
@@ -0,0 +1,2 @@
1
+ /*! For license information please see transactional-decorators.bundle.min.js.LICENSE.txt */
2
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("transactional-decorators",[],t):"object"==typeof exports?exports["transactional-decorators"]=t():e["transactional-decorators"]=t()}(this,(()=>(()=>{var e={5789:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Transaction=void 0;const n=r(32),o=r(2156),a=r(5922),i=r(2552),s=r(2640);class c{constructor(e,t,r,n){this.id=Date.now(),this.action=r,this.method=t,this.log=[[this.id,e,t].join(" | ")],this.source=e,this.metadata=n}static push(e,t,...r){const n=r.pop();if(!n||"function"!=typeof n)throw new Error("Missing callback");const o=(e,...t)=>{this.getLock().release(e).then((()=>n(e,...t)))},a=new c(e.constructor.name,t.name?(0,i.getObjectName)(t):"Anonymous",(()=>t.call(a.bindToTransaction(e),...r,o)));this.getLock().submit(a)}static setLock(e){this.lock=e}static getLock(){return this.lock||(this.lock=new o.SyncronousLock),this.lock}static submit(e){this.getLock().submit(e)}static async release(e){return this.getLock().release(e)}getMetadata(){return this.metadata?[...this.metadata]:void 0}bindTransaction(e){this.log.push(...e.log),e.bindTransaction=this.bindToTransaction.bind(this),e.bindToTransaction=this.bindToTransaction.bind(this),this.action=e.action}bindToTransaction(e){const t=(0,a.getAllPropertyDecoratorsRecursive)(e,void 0,s.TransactionalKeys.REFLECT);if(!t)return e;const r=this,o=(0,n.getAllProperties)(e).reduce(((o,a)=>(-1!==Object.keys(t).indexOf(a)&&t[a].find((e=>e.key===s.TransactionalKeys.TRANSACTIONAL))?o[a]=(...t)=>e[a].call(e.__originalObj||e,r,...t):"clazz"===a||"constructor"===a?o[a]=e[a]:"function"==typeof e[a]?o[a]=e[a].bind(e.__originalObj||e):"object"==typeof e[a]&&e[a].constructor&&(0,n.getClassDecorators)(s.TransactionalKeys.REFLECT,e[a]).find((e=>e.key===s.TransactionalKeys.TRANSACTIONAL))?o[a]=r.bindToTransaction(e[a]):o[a]=e[a],o)),{});return o[a.DBKeys.ORIGINAL]=e[a.DBKeys.ORIGINAL]||e,o.toString=()=>(0,i.getObjectName)(o[a.DBKeys.ORIGINAL])+" proxy for transaction "+this.id,o}fire(){if(!this.action)throw new Error("Missing the method");return this.action()}toString(e=!0,t=!1){return`${e?`[${this.id}]`:""}[Transaction][${this.source}.${this.method}${t?`]\nTransaction Log:\n${this.log.join("\n")}`:"]"}`}}t.Transaction=c},2640:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TransactionalKeys=void 0,t.TransactionalKeys={REFLECT:"model.transactional.",TRANSACTIONAL:"transactional"}},2503:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getTransactionalKey=void 0,t.transactional=function(...e){return function(r,i,s){(0,o.metadata)((0,t.getTransactionalKey)(n.TransactionalKeys.TRANSACTIONAL),e)(r,i);const c=s.value,u=function(...t){const r=this;return new Promise(((n,o)=>{const s=(e,t)=>{a.Transaction.release(e).then((()=>{if(e)return o(e);n(t)}))};let u=t.shift();if(u instanceof a.Transaction){const s=new a.Transaction(this.constructor.name,i,(async()=>{c.call(s.bindToTransaction(r),...t).then(n).catch(o)}),e.length?e:void 0);u.bindTransaction(s),u.fire()}else t.unshift(u),u=void 0,u=new a.Transaction(this.constructor.name,i,(()=>{c.call(u.bindToTransaction(r),...t).then((e=>s(void 0,e))).catch(s)}),e.length?e:void 0),a.Transaction.submit(u)}))};Object.defineProperty(u,"name",{value:i}),s.value=u}},t.transactionalSuperCall=function(e,...t){e(a.Transaction.getLock().currentTransaction,...t)};const n=r(2640),o=r(32),a=r(5789);t.getTransactionalKey=e=>n.TransactionalKeys.REFLECT+e},7729:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0,o(r(1206),t),o(r(8242),t),o(r(2640),t),o(r(2503),t),o(r(5789),t),o(r(5732),t),t.VERSION="##VERSION##"},7633:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},1206:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(7633),t)},5467:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Lock=void 0,t.Lock=class{constructor(){this.queue=[],this.locked=!1}async execute(e){let t;await this.acquire();try{t=await Promise.resolve(e())}catch(e){throw this.release(),e}return this.release(),t}async acquire(){const e=this;return e.locked?new Promise((t=>e.queue.push(t))):(e.locked=!0,Promise.resolve())}release(){const e=this.queue.shift();e?void 0===globalThis.window?globalThis.process.nextTick(e):setTimeout(e,0):this.locked=!1}}},2156:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SyncronousLock=void 0;const n=r(5467);t.SyncronousLock=class{constructor(e=1,t,r){this.currentTransaction=void 0,this.lock=new n.Lock,this.counter=e,this.pendingTransactions=[],this.onBegin=t,this.onEnd=r}submit(e){const t=this;t.lock.acquire().then((()=>t.currentTransaction&&t.currentTransaction.id===e.id?(t.lock.release(),e.fire()):t.counter>0?(t.counter--,t.lock.release(),t.fireTransaction(e)):(t.pendingTransactions.push(e),void t.lock.release())))}fireTransaction(e){const t=this;t.lock.acquire().then((()=>{t.currentTransaction=e,t.lock.release(),t.onBegin?t.onBegin().then((()=>{e.fire()})):e.fire()}))}async release(e){const t=this;return new Promise((r=>{t.lock.acquire().then((()=>{t.currentTransaction||console.warn("Trying to release an unexisting transaction. should never happen..."),t.currentTransaction=void 0,t.lock.release();const n=()=>{t.lock.acquire().then((()=>{if(t.pendingTransactions.length>0){const e=t.pendingTransactions.shift(),r=()=>t.fireTransaction(e);void 0===globalThis.window?globalThis.process.nextTick(r):setTimeout(r,0)}else t.counter++;t.lock.release(),r()}))};t.onEnd?t.onEnd(e).then((()=>n())):n()}))}))}}},8242:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(5467),t),o(r(2156),t)},5732:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},2552:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getObjectName=function(e){if(e)return"string"==typeof e?e:e.constructor&&e.constructor.name&&-1===["Function","Object"].indexOf(e.constructor.name)?e.constructor.name:"function"==typeof e&&e.name?e.name:e.toString()}},9501:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.id=void 0;const n=r(2302),o=r(32),a=r(3793),i=r(9252),s=r(4367);t.id=function(){return(0,o.apply)((0,n.required)(),(0,i.readonly)(),(0,o.metadata)((0,a.getDBKey)(s.DBKeys.ID),{}))}},5537:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(9501),t),o(r(3802),t)},3802:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createOrUpdate=t.findModelId=t.findPrimaryKey=void 0;const n=r(9325),o=r(3793),a=r(4367),i=r(592),s=r(2302),c=r(3036);function u(e){if(e=(0,i.getAllPropertyDecoratorsRecursive)(e,void 0,(0,o.getDBKey)(a.DBKeys.ID)),e=Object.entries(e).reduce(((e,[t,r])=>(r=r.filter((e=>e.key!==s.ModelKeys.TYPE)),r&&r.length&&(e[t]=e[t]||[],e[t].push(...r)),e)),{}),e&&Object.keys(e).length){if(1<Object.keys(e).length)throw new c.InternalError((0,s.sf)(Object.keys(e).join(", ")));var t=Object.keys(e)[0];if(t)return{id:t,props:e[t][0].props.options}}throw new c.InternalError("Could not find ID decorated Property")}t.findPrimaryKey=u,t.findModelId=function(e,t=!1){var r=u(e).id;if((e=e[r])||t)return e;throw new c.NotFoundError((0,s.sf)("No value for the Id is defined under the property {0}",r))},t.createOrUpdate=async function(e,t=void 0,r){return t=t||n.DBModel.findRepository(e.constructor),void 0===e[r=r||u(e).id]?t.create(e):t.update(e)}},5922:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(5537),t),o(r(8403),t),o(r(2828),t),o(r(7781),t),o(r(9191),t),o(r(3162),t)},1101:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},7674:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8403:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(1101),t),o(r(7674),t)},9325:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DBModel=void 0;const n=r(2302),o=r(3793),a=r(4367),i=r(3036),s=r(465),c=r(6569);class u extends n.Model{constructor(e){super(e)}hasErrors(e,...t){!e||e instanceof u||(t.unshift(e),e=void 0);var r=super.hasErrors(...t);return r||!e?r:(0,c.validateCompare)(e,this,...t)}static findRepository(e){var t=Reflect.getMetadata((0,o.getDBKey)(a.DBKeys.REPOSITORY),e);if(!t)throw new i.InternalError("Could not find any registered repositories for "+e.name);if(t=s.Injectables.get(t))return t;throw new i.NotFoundError("Could not find repository for "+e.name)}}t.DBModel=u},4367:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_TIMESTAMP_FORMAT=t.DefaultSeparator=t.DBKeys=void 0,t.DBKeys={REFLECT:"model.db.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",HASH:"hash",COMPOSED:"composed",ORIGINAL:"__originalObj"},t.DefaultSeparator="_",t.DEFAULT_TIMESTAMP_FORMAT="dd/MM/yyyy HH:mm:ss:S"},3793:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.composed=t.composedFromKeys=t.composedFromCreateUpdate=t.hash=t.hashOnCreateUpdate=t.getDBKey=void 0;const n=r(4367),o=r(32),a=r(2302),i=r(6441),s=r(3036);function c(e){return n.DBKeys.REFLECT+e}function u(e,t,r,n){var o;r[t]&&(o=a.Hashing.hash(r[t]),n&&r[t]===o||(r[t]=o))}function l(){return(0,o.apply)((0,i.onCreateUpdate)(u),(0,o.metadata)(c(n.DBKeys.HASH),{}))}function d(e,t=n.DefaultSeparator,r="values",o="",i=""){return function(n,c){try{var u=e.map((e=>{if(!(e in c))throw new s.InternalError((0,a.sf)("Property {0} not found to compose from",e));if("keys"===r)return e;if(void 0===c[e])throw new s.InternalError((0,a.sf)("Property {0} does not contain a value to compose from",e));return c[e].toString()}));o&&u.unshift(o),i&&u.push(i),c[n]=u.join(t)}catch(n){throw new s.InternalError("Failed to compose value: "+n)}}}function f(e,t=!1,r=n.DefaultSeparator,a="values",s="",u=""){var f={args:e,hashResult:t,separator:r,type:a,prefix:s,suffix:u};return e=[(0,i.onCreateUpdate)(d(e,r,a,s,u)),(0,o.metadata)(c(n.DBKeys.COMPOSED),f)],t&&e.push(l()),(0,o.apply)(...e)}t.getDBKey=c,t.hashOnCreateUpdate=u,t.hash=l,t.composedFromCreateUpdate=d,t.composedFromKeys=function(e,t=!1,r="",o=""){return f(e,t,n.DefaultSeparator,"keys",r,o)},t.composed=function(e,t=!1,r="",o=""){return f(e,t,n.DefaultSeparator,"values",r,o)}},2828:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(4367),t),o(r(9325),t),o(r(3793),t)},6569:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateCompare=void 0;const n=r(2302),o=r(32),a=r(3162),i=r(5537);t.validateCompare=function(e,t,...r){var s=[];for(const e in t)t.hasOwnProperty(e)&&-1===r.indexOf(e)&&s.push((0,o.getPropertyDecorators)(a.UpdateValidationKeys.REFLECT,t,e));let c;for(const r of s){var{prop:u,decorators:l}=r;if(l.shift(),l&&l.length){let o;for(const a of l){var d=n.Validation.get(a.key);d?(d=d.updateHasErrors(t[u.toString()],e[u.toString()],...Object.values(a.props)))&&((o=o||{})[a.key]=d):console.error(`Could not find Matching validator for ${a.key} for property `+String(r.prop))}o&&((c=c||{})[r.prop.toString()]=o)}}for(const a of Object.keys(t).filter((e=>!c||!c[e]))){let s;var f=(0,o.getPropertyDecorators)(n.ValidationKeys.REFLECT,t,a).decorators,p=(0,o.getPropertyDecorators)(n.ValidationKeys.REFLECT,t,a).decorators.filter((e=>-1!==[n.ModelKeys.TYPE,n.ValidationKeys.TYPE].indexOf(e.key)));if(p&&p.length){p=(p=p.pop()).props.name?[p.props.name]:Array.isArray(p.props.customTypes)?p.props.customTypes:[p.props.customTypes];var y=Object.values(n.ReservedModels).map((e=>e.toLowerCase()));for(const o of p){if(-1===y.indexOf(o.toLowerCase()))switch(o){case Array.name:case Set.name:if(f.length&&f.find((e=>e.key===n.ValidationKeys.LIST))){let r,n;switch(o){case Array.name:r=t[a],n=e[a];break;case Set.name:r=t[a].values(),n=e[a].values();break;default:throw new Error("Invalid attribute type "+o)}(s=r.map((e=>{const t=(0,i.findModelId)(e,!0);var r;return t?(r=n.find((e=>t===(0,i.findModelId)(e,!0))))?e.hasErrors(r):void 0:"Failed to find model id"})).filter((e=>!!e)))?.length||(s=void 0)}break;default:try{t[a]&&e[a]&&(s=t[a].hasErrors(e[a]))}catch(r){console.warn((0,n.sf)("Model should be validatable but its not"))}}s&&((c=c||{})[a]=s)}}}return c?new n.ModelErrorDefinition(c):void 0}},9121:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Operations=void 0;const n=r(2302),o=r(4300),a=r(6050);class i{constructor(){}static getHandlerName(e){return e.name||(console.warn("Handler name not defined. A name will be generated, but this is not desirable. please avoid using anonymous functions"),n.Hashing.hash(e.toString()))}static genKey(e){return a.OperationKeys.REFLECT+e}static get(e,t,r){return i.registry.get(e,t,r)}static getOpRegistry(){return i.registry||(i.registry=new o.OperationsRegistry),i.registry}static register(e,t,r,n){i.getOpRegistry().register(e,t,r,n)}}t.Operations=i},4300:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationsRegistry=void 0;const n=r(9121);t.OperationsRegistry=class{constructor(){this.cache={}}get(e,t,r,n){let o;n=n||[];try{o="string"==typeof e?e:e.constructor.name,n.unshift(...Object.values(this.cache[o][t][r]||[]))}catch(t){if("string"==typeof e||e===Object.prototype||Object.getPrototypeOf(e)===Object.prototype)return n}let a=Object.getPrototypeOf(e);return a.constructor.name===o&&(a=Object.getPrototypeOf(a)),this.get(a,t,r,n)}register(e,t,r,o){r=r.constructor.name;var a=n.Operations.getHandlerName(e);this.cache[r]||(this.cache[r]={}),this.cache[r][o]||(this.cache[r][o]={}),this.cache[r][o][t]||(this.cache[r][o][t]={}),this.cache[r][o][t][a]||(this.cache[r][o][t][a]=e)}}},6050:(e,t)=>{"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),t.DBOperations=t.OperationKeys=void 0,(n=r||(t.OperationKeys=r={})).REFLECT="operations.db.",n.CREATE="create",n.READ="read",n.UPDATE="update",n.DELETE="delete",n.ON="on.",n.AFTER="after.",t.DBOperations={CREATE:[r.CREATE],READ:[r.READ],UPDATE:[r.UPDATE],DELETE:[r.DELETE],CREATE_UPDATE:[r.CREATE,r.UPDATE],READ_CREATE:[r.READ,r.CREATE],ALL:[r.CREATE,r.READ,r.UPDATE,r.DELETE]}},6441:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.operation=t.after=t.afterDelete=t.afterRead=t.afterCreate=t.afterUpdate=t.afterCreateUpdate=t.on=t.onDelete=t.onRead=t.onCreate=t.onUpdate=t.onCreateUpdate=void 0;const n=r(6050),o=r(9121),a=r(32);function i(e=n.DBOperations.ALL,t,r){return c(n.OperationKeys.ON,e,t,r)}function s(e=n.DBOperations.ALL,t,r){return c(n.OperationKeys.AFTER,e,t,r)}function c(e,t=n.DBOperations.ALL,r,i){return(n,s)=>{const c=n.constructor.name;var u=t.reduce(((t,u)=>{var l=e+u;let d=Reflect.getMetadata(o.Operations.genKey(l),n,s);return d=d||{operation:u,handlers:{}},u=o.Operations.getHandlerName(r),d.handlers[c]&&d.handlers[c][s]&&u in d.handlers[c][s]||(d.handlers[c]=d.handlers[c]||{},d.handlers[c][s]=d.handlers[c][s]||{},d.handlers[c][s][u]={data:i},t.push(function(e,t){return(r,n)=>{o.Operations.register(t,e,r,n)}}(l,r),(0,a.metadata)(o.Operations.genKey(l),d))),t}),[]);return(0,a.apply)(...u)(n,s)}}t.onCreateUpdate=function(e,t){return i(n.DBOperations.CREATE_UPDATE,e,t)},t.onUpdate=function(e,t){return i(n.DBOperations.UPDATE,e,t)},t.onCreate=function(e,t){return i(n.DBOperations.CREATE,e,t)},t.onRead=function(e,t){return i(n.DBOperations.READ,e,t)},t.onDelete=function(e,t){return i(n.DBOperations.DELETE,e,t)},t.on=i,t.afterCreateUpdate=function(e,t){return s(n.DBOperations.CREATE_UPDATE,e,t)},t.afterUpdate=function(e,t){return s(n.DBOperations.UPDATE,e,t)},t.afterCreate=function(e,t){return s(n.DBOperations.CREATE,e,t)},t.afterRead=function(e,t){return s(n.DBOperations.READ,e,t)},t.afterDelete=function(e,t){return s(n.DBOperations.DELETE,e,t)},t.after=s,t.operation=c},7781:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(6050),t),o(r(6441),t),o(r(9121),t),o(r(4300),t),o(r(5970),t)},5970:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},2022:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BaseRepository=void 0;const n=r(2302),o=r(592),a=r(6050),i=r(3036),s=r(8569),c=r(749),u=r(5537);t.BaseRepository=class{get class(){if(this._class)return this._class;throw new i.InternalError("No class definition found for this repository")}get cache(){return this._cache||(this._cache=new s.DataCache),this._cache}constructor(e){e&&(this._class=e);const t=this;[this.create,this.read,this.update,this.delete].forEach((e=>{var r=e.name;(0,c.wrapMethod)(t,t[r+"Prefix"],e,t[r+"Suffix"])}))}async create(e){throw new Error("Child classes must implement this.")}async createPrefix(e,...t){return e=new this.class(e),await(0,o.enforceDBDecorators)(this,e,a.OperationKeys.CREATE,a.OperationKeys.ON),[e,...t]}async createSuffix(e){return await(0,o.enforceDBDecorators)(this,e,a.OperationKeys.CREATE,a.OperationKeys.AFTER),e}async read(e){throw new Error("Child classes must implement this")}async readSuffix(e){return await(0,o.enforceDBDecorators)(this,e,a.OperationKeys.READ,a.OperationKeys.AFTER),e}async readPrefix(e,...t){var r=new this.class;return await(0,o.enforceDBDecorators)(this,r,a.OperationKeys.READ,a.OperationKeys.ON),[e,...t]}async update(e){throw new Error("Child classes must implement this")}async updateSuffix(e){return e=new this.class(e),await(0,o.enforceDBDecorators)(this,e,a.OperationKeys.UPDATE,a.OperationKeys.AFTER),e}async updatePrefix(e,...t){var r=(0,u.findModelId)(e);return r=await this.read(r),await(0,o.enforceDBDecorators)(this,e,a.OperationKeys.UPDATE,a.OperationKeys.ON,r),[e,...t]}async delete(e){throw new Error("Child classes must implement this")}async deleteSuffix(e){return await(0,o.enforceDBDecorators)(this,e,a.OperationKeys.DELETE,a.OperationKeys.AFTER),e}async deletePrefix(e,...t){var r=await this.read(e,...t);return await(0,o.enforceDBDecorators)(this,r,a.OperationKeys.DELETE,a.OperationKeys.ON),[e,...t]}toString(){return(0,n.sf)("[{0}] - Repository for {1}",this.constructor.name,this.class.name)}}},8569:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DataCache=void 0;const n=r(3036);t.DataCache=class{constructor(){this.cache={}}async get(e){if(e in this.cache)return this.cache[e];throw new n.NotFoundError(`Key ${e} not in dataStore`)}async push(e,t){if(e in this.cache)throw new n.ConflictError(`Key ${e} already in dataStore`);this.cache[e]=t}async put(e,t){this.cache[e]=t}async pop(e){var t=this.get(e);return delete this.cache[e],t}async purge(e){e?await this.pop(e):this.cache={}}}},9553:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Repository=void 0;const n=r(2302),o=r(592),a=r(6050),i=r(3036),s=r(2022),c=r(5537);class u extends s.BaseRepository{constructor(e){super(e)}async create(e){throw new Error("Child classes must implement this.")}async createPrefix(e,...t){e=new this.class(e),await(0,o.enforceDBDecorators)(this,e,a.OperationKeys.CREATE,a.OperationKeys.ON);var r=e.hasErrors();if(r)throw new i.ValidationError(r.toString());let s;try{if(!(s=(0,c.findModelId)(e,!0)))return[e,...t];s&&await this.read(s.toString())}catch(r){if(r instanceof i.NotFoundError)return[e,...t];throw r}throw new i.ConflictError((0,n.sf)("Model with id {0} already exists",s))}async delete(e){throw new Error("Child classes must implement this.")}async deletePrefix(e,...t){var r=new this.class;return await(0,o.enforceDBDecorators)(this,r,a.OperationKeys.DELETE,a.OperationKeys.ON),await this.read(e),[e,...t]}async read(e){throw new Error("Child classes must implement this.")}async update(e){throw new Error("Child classes must implement this.")}async updatePrefix(e,...t){e=new this.class(e);var r=(0,c.findModelId)(e);if(r=await this.read(r),await(0,o.enforceDBDecorators)(this,e,a.OperationKeys.UPDATE,a.OperationKeys.ON,r),r=e.hasErrors(r))throw new i.ValidationError(r.toString());return[e,...t]}}t.Repository=u},3036:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ConflictError=t.NotFoundError=t.SerializationError=t.InternalError=t.ValidationError=t.BaseError=void 0;class r extends Error{constructor(e,t){if(t instanceof r)return t;super(`[${e}] `+(t instanceof Error?t.message:t)),t instanceof Error&&(this.stack=t.stack)}}class n extends(t.BaseError=r){constructor(e){super(n.name,e)}}t.ValidationError=n;class o extends r{constructor(e){super(o.name,e)}}t.InternalError=o;class a extends r{constructor(e){super(a.name,e)}}t.SerializationError=a;class i extends r{constructor(e){super(i.name,e)}}t.NotFoundError=i;class s extends r{constructor(e){super(s.name,e)}}t.ConflictError=s},9191:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(2022),t),o(r(8569),t),o(r(3036),t),o(r(9553),t),o(r(592),t),o(r(749),t)},592:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getAllPropertyDecoratorsRecursive=t.getDbDecorators=t.enforceDBDecorators=t.getHandlerArgs=void 0;const n=r(9121),o=r(6050),a=r(32),i=r(3036),s=r(2302);function c(e,t,r){const n=(0,a.getAllPropertyDecorators)(e,o.OperationKeys.REFLECT+(r||""));if(n)return Object.keys(n).reduce(((e,r)=>{var o=n[r].filter((e=>e.key===t));return o&&o.length&&((e=e||{})[r]=o),e}),void 0)}t.getHandlerArgs=function(e,r,n,o){var a=n.constructor.name;if(!a)throw new i.InternalError("Could not determine model class");o=o||{},e.props.handlers[a]&&e.props.handlers[a][r]&&(o={...e.props.handlers[a][r],...o});let s=Object.getPrototypeOf(n);return s===Object.prototype?o:(s.constructor.name===a&&(s=Object.getPrototypeOf(s)),(0,t.getHandlerArgs)(e,r,s,o))},t.enforceDBDecorators=async function(e,r,a,u,l){var d=c(r,a,u);if(d)for(const c in d)for(const E of d[c]){var f=E.key,p=n.Operations.get(r,c,u+f);if(!p||!p.length)throw new i.InternalError(`Could not find registered handler for the operation ${u+f} under property `+c);var y=(0,t.getHandlerArgs)(E,c,r);if(!y||Object.values(y).length!==p.length)throw new i.InternalError((0,s.sf)("Args and handlers length do not match"));for(let t=0;t<p.length;t++){var h=p[t],g=[Object.values(y)[t].data,c,r];if(a===o.OperationKeys.UPDATE){if(!l)throw new i.InternalError("Missing old model for update operation");g.push(l)}await h.apply(e,g)}}},t.getDbDecorators=c,t.getAllPropertyDecoratorsRecursive=function(e,r,...n){const i=r||{};return(r=(0,a.getAllPropertyDecorators)(e,...n))&&function(e){Object.entries(e).forEach((([e,t])=>{var r;i[e]=i[e]||[],[r,...e]=[e,...t],e.forEach((e=>{var t;if((t=i[r].find((t=>t.key===e.key)))&&t.props.operation===e.props.operation){if(e.key!==s.ModelKeys.TYPE){var{handlers:n,operation:a}=e.props;if(a&&a.match(new RegExp(`^(:?${o.OperationKeys.ON}|${o.OperationKeys.AFTER})(:?${o.OperationKeys.CREATE}|${o.OperationKeys.READ}|${o.OperationKeys.UPDATE}|${o.OperationKeys.DELETE})$`))){const e=t.props.handlers;Object.entries(n).forEach((([t,r])=>{t in e?Object.entries(r).forEach((([r,n])=>{r in e[t]?Object.entries(n).forEach((([n,o])=>{n in e[t][r]?console.warn((0,s.sf)("Skipping handler registration for {0} under prop {0} because handler is the same",t,r)):e[t][r][n]=o})):e[t][r]=n})):e[t]=r}))}else i[r].push(e)}}else i[r].push(e)}))}))}(r),Object.getPrototypeOf(e)!==Object.prototype&&(r=Object.getPrototypeOf(e))?(0,t.getAllPropertyDecoratorsRecursive)(r,i,...n):i}},749:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.wrapMethod=t.suffixMethod=t.prefixMethod=void 0,t.prefixMethod=function(e,t,r,n){var o=async function(...e){return e=await Promise.resolve(r.call(this,...e)),Promise.resolve(t.apply(this,e))}.bind(e);n=n||t.name,Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:n}),e[n]=o},t.suffixMethod=function(e,t,r,n){var o=async function(...e){return e=await Promise.resolve(t.call(this,...e)),r.call(this,...e)}.bind(e);n=n||t.name,Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:n}),e[n]=o},t.wrapMethod=function(e,t,r,n,o){var a=async function(...o){return o=await Promise.resolve(t.call(e,...o)),o=await Promise.resolve(r.call(e,...o)),Promise.resolve(n.call(this,o))}.bind(e);o=o||r.name,Object.defineProperty(a,"name",{enumerable:!0,configurable:!0,writable:!1,value:o}),e[o]=a}},6753:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateValidationKeys=t.DEFAULT_ERROR_MESSAGES=void 0;const n=r(4367);t.DEFAULT_ERROR_MESSAGES={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},t.UpdateValidationKeys={REFLECT:"db.update.validation.",TIMESTAMP:n.DBKeys.TIMESTAMP,READONLY:n.DBKeys.READONLY}},9252:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.serialize=t.serializeAfterAll=t.serializeOnCreateUpdate=t.timestamp=t.timestampHandler=t.readonly=t.getDBUpdateKey=void 0;const n=r(2302),o=r(4367),a=r(6753),i=r(6050),s=r(6441),c=r(3036),u=r(32),l=r(3793);function d(e){return a.UpdateValidationKeys.REFLECT+e}function f(e,t,r){r[t]=new Date}async function p(e,t,r,o){if(r[t])try{r[t]=JSON.stringify(r[t])}catch(e){throw new c.SerializationError((0,n.sf)("Failed to serialize {0} property on {0} model",t,r.constructor.name))}}async function y(e,t,r){if(r[t]&&"string"==typeof r[t])try{r[t]=JSON.parse(r[t])}catch(e){throw new c.SerializationError((0,n.sf)("Failed to deserialize {0} property on {0} model",t,r.constructor.name))}}t.getDBUpdateKey=d,t.readonly=function(e=a.DEFAULT_ERROR_MESSAGES.READONLY.INVALID){return(0,u.metadata)(d(o.DBKeys.READONLY),{message:e})},t.timestampHandler=f,t.timestamp=function(e=i.DBOperations.CREATE_UPDATE,t=o.DEFAULT_TIMESTAMP_FORMAT){return t=[(0,n.date)(t,a.DEFAULT_ERROR_MESSAGES.TIMESTAMP.DATE),(0,n.required)(a.DEFAULT_ERROR_MESSAGES.TIMESTAMP.REQUIRED),(0,s.on)(e,f)],-1!==e.indexOf(i.OperationKeys.UPDATE)&&t.push((0,u.metadata)(d(o.DBKeys.TIMESTAMP),{message:a.DEFAULT_ERROR_MESSAGES.TIMESTAMP.INVALID})),(0,u.apply)(...t)},t.serializeOnCreateUpdate=p,t.serializeAfterAll=y,t.serialize=function(){return(0,u.apply)((0,s.onCreateUpdate)(p),(0,s.after)(i.DBOperations.ALL,y),(0,n.type)([String.name,Object.name]),(0,u.metadata)((0,l.getDBKey)(o.DBKeys.SERIALIZE),{}))}},3162:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(1362),t),o(r(6753),t),o(r(9252),t)},9174:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;0<=s;s--)(o=e[s])&&(i=(a<3?o(i):3<a?o(t,r,i):o(t,r))||i);return 3<a&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ReadOnlyValidator=void 0;const a=r(2302),i=r(6753),s=r(32);let c=class extends a.Validator{constructor(){super(i.DEFAULT_ERROR_MESSAGES.READONLY.INVALID)}hasErrors(e){}updateHasErrors(e,t,r){return void 0===e||(0,s.isEqual)(e,t)?void 0:this.getMessage(r||this.message)}};t.ReadOnlyValidator=c,t.ReadOnlyValidator=c=n([(0,a.validator)(i.UpdateValidationKeys.READONLY),o("design:paramtypes",[])],c)},8944:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;0<=s;s--)(o=e[s])&&(i=(a<3?o(i):3<a?o(t,r,i):o(t,r))||i);return 3<a&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.TimestampValidator=void 0;const a=r(2302),i=r(6753);let s=class extends a.Validator{constructor(){super(i.DEFAULT_ERROR_MESSAGES.TIMESTAMP.INVALID)}hasErrors(e){}updateHasErrors(e,t,r){if(void 0!==e){r=r||this.getMessage(r||this.message);try{e=new Date(e),t=new Date(t)}catch(e){return r}return e<=t?r:void 0}}};t.TimestampValidator=s,t.TimestampValidator=s=n([(0,a.validator)(i.UpdateValidationKeys.TIMESTAMP),o("design:paramtypes",[])],s)},4981:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UpdateValidator=void 0;const n=r(2302);class o extends n.Validator{constructor(e=n.DEFAULT_ERROR_MESSAGES.DEFAULT,...t){super(e,...t)}}t.UpdateValidator=o},1362:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(9174),t),o(r(8944),t),o(r(4981),t)},2302:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0,o(r(4072),t),o(r(5030),t),o(r(5643),t),t.VERSION="1.3.0"},3:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Model=void 0;const n=r(4744),o=r(4939),a=r(1825),i=r(32),s=r(2709),c=r(2252),u=r(9683),l=r(7675);let d,f;class p{constructor(e){}hasErrors(...e){return(0,s.validate)(this,...e)}equals(e,...t){return(0,i.isEqual)(this,e,...t)}serialize(){return p.serialize(this)}toString(){return this.constructor.name+": "+JSON.stringify(this,void 0,2)}hash(){return p.hash(this)}static deserialize(e){const t=Reflect.getMetadata((0,u.getModelKey)(l.ModelKeys.SERIALIZATION),this.constructor);return t&&t.serializer?n.Serialization.deserialize(e,t.serializer,...t.args||[]):n.Serialization.deserialize(e)}static fromObject(e,t){return(0,o.constructFromObject)(e,t)}static fromModel(e,t){return(0,o.constructFromModel)(e,t)}static setBuilder(e){d=e}static getBuilder(){return d}static getRegistry(){return f||(f=new a.ModelRegistryManager),f}static setRegistry(e){f=e}static register(e,t){return p.getRegistry().register(e,t)}static get(e){return p.getRegistry().get(e)}static build(e={},t){return p.getRegistry().build(e,t)}static getMetadata(e){const t=Reflect.getMetadata((0,u.getModelKey)(l.ModelKeys.MODEL),e.constructor);if(!t)throw new Error("could not find metadata for provided "+e.constructor.name);return t}static equals(e,t,...r){return(0,i.isEqual)(e,t,...r)}static hasErrors(e,...t){return(0,s.validate)(e,...t)}static serialize(e){const t=Reflect.getMetadata((0,u.getModelKey)(l.ModelKeys.SERIALIZATION),e.constructor);return t&&t.serializer?n.Serialization.serialize(this,t.serializer,...t.args||[]):n.Serialization.serialize(e)}static hash(e){const t=Reflect.getMetadata((0,u.getModelKey)(l.ModelKeys.HASHING),e.constructor);return t&&t.algorithm?c.Hashing.hash(e,t.algorithm,...t.args||[]):c.Hashing.hash(e)}}t.Model=p},3368:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModelErrorDefinition=void 0,t.ModelErrorDefinition=class{constructor(e){for(const t in e)e.hasOwnProperty(t)&&e[t]&&Object.defineProperty(this,t,{enumerable:!0,configurable:!1,value:e[t],writable:!1})}toString(){const e=this;return Object.keys(e).filter((t=>e.hasOwnProperty(t)&&"function"!=typeof e[t])).reduce(((t,r)=>{let n=Object.keys(e[r]).reduce(((t,n)=>(t?t+=`\n${e[r][n]}`:t=e[r][n],t)),void 0);return n&&(n=`${r} - ${n}`,t?t+=`\n${n}`:t=n),t}),"")}}},1825:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ModelRegistryManager=void 0,t.bulkModelRegister=function(...e){e.forEach((e=>{const t=e.constructor?e.constructor:e;n.Model.register(t,e.name)}))};const n=r(3),o=r(1318),a=r(9683);t.ModelRegistryManager=class{constructor(e=a.isModel){this.cache={},this.testFunction=e}register(e,t){if("function"!=typeof e)throw new Error("Model registering failed. Missing Class name or constructor");t=t||e.name,this.cache[t]=e}get(e){try{return this.cache[e]}catch(e){return}}build(e={},t){if(!t&&!this.testFunction(e))throw new Error("Provided obj is not a Model object");const r=t||n.Model.getMetadata(e);if(!(r in this.cache))throw new Error((0,o.sf)("Provided class {0} is not a registered Model object",r));return new this.cache[r](e)}}},8539:(e,t)=>{"use strict";var r,n;Object.defineProperty(t,"__esModule",{value:!0}),t.jsTypes=t.ReservedModels=t.Primitives=void 0,function(e){e.STRING="string",e.NUMBER="number",e.BOOLEAN="boolean",e.BIGINT="bigint"}(r||(t.Primitives=r={})),function(e){e.STRING="string",e.OBJECT="object",e.NUMBER="number",e.BOOLEAN="boolean",e.BIGINT="bigint",e.DATE="date"}(n||(t.ReservedModels=n={})),t.jsTypes=["string","array","number","boolean","symbol","function","object","undefined","null","bigint"]},4939:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.constructFromObject=function(e,t){if(!t)return e;for(const r in t)t.hasOwnProperty(r)&&(e.hasOwnProperty(r)||e.prototype&&e.prototype.hasOwnProperty(r))&&(e[r]=t[r]||void 0);return e},t.constructFromModel=function(e,t){if(!t)return e;let r,l;for(const d in t)if(t.hasOwnProperty(d)&&(e.hasOwnProperty(d)||e.prototype&&e.prototype.hasOwnProperty(d))){if(e[d]=t[d],"object"!=typeof e[d])continue;if((0,u.isModel)(e[d])){try{e[d]=n.Model.build(e[d])}catch(e){console.log(e)}continue}const f=(0,c.getPropertyDecorators)(o.ValidationKeys.REFLECT,e,d).decorators;if(r=f.filter((e=>-1!==[i.ModelKeys.TYPE,o.ValidationKeys.TYPE].indexOf(e.key))),!r||!r.length)throw new Error((0,s.sf)("failed to find decorators for property {0}",d));l=r.pop();const p=l.props.name?[l.props.name]:Array.isArray(l.props.customTypes)?l.props.customTypes:[l.props.customTypes],y=Object.values(a.ReservedModels).map((e=>e.toLowerCase()));p.forEach((t=>{if(-1===y.indexOf(t.toLowerCase()))try{switch(t){case"Array":case"Set":if(f.length){const r=f.find((e=>e.key===o.ValidationKeys.LIST));if(r){const o=r.props.class.find((e=>!a.jsTypes.includes(e.toLowerCase())));if("Array"===t&&(e[d]=e[d].map((e=>["object","function"].includes(typeof e)&&o?n.Model.build(e,o):e))),"Set"===t){const t=new Set;for(const r of e[d])["object","function"].includes(typeof r)&&o?t.add(n.Model.build(r,o)):t.add(r);e[d]=t}}}break;default:e[d]&&(e[d]=n.Model.build(e[d],t))}}catch(e){console.log(e)}}))}return e},t.construct=function(e,...t){const r=(...t)=>new e(...t);return r.prototype=e.prototype,r(...t)},t.findLastProtoBeforeObject=function(e){let t=Object.getPrototypeOf(e);if(t===Object.prototype)return e;for(;t!==Object.prototype;){if(t=Object.getPrototypeOf(t),t===Object.prototype)return t;if(Object.getPrototypeOf(t)===Object.prototype)return t}throw new Error("Could not find proper prototype")},t.bindModelPrototype=function(e){if(e instanceof n.Model)return;function t(e,t){Object.setPrototypeOf(e,t)}const r=Object.getPrototypeOf(e);if(r===Object.prototype)return t(e,n.Model.prototype);for(;r!==Object.prototype;){const e=Object.getPrototypeOf(r);if(e===Object.prototype||Object.getPrototypeOf(e)===Object.prototype)return t(r,n.Model.prototype)}throw new Error("Could not find proper prototype to bind")};const n=r(3),o=r(5021),a=r(8539),i=r(7675),s=r(1318),c=r(32),u=r(9683)},754:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.model=function(e,t){return r=>{const c=function(...c){const u=(0,n.construct)(r,...c);(0,n.bindModelPrototype)(u);const l=a.Model.getBuilder();return l&&l(u,c.length?c[0]:void 0),(0,s.metadata)((0,i.getModelKey)(o.ModelKeys.MODEL),e||r.name)(u.constructor),t&&t(u,...c),u};return c.prototype=r.prototype,Object.defineProperty(c,"name",{writable:!1,enumerable:!0,configurable:!1,value:r.prototype.constructor.name}),a.Model.register(c,e),c}};const n=r(4939),o=r(7675),a=r(3),i=r(9683),s=r(32)},5643:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(8539),t),o(r(4939),t),o(r(754),t),o(r(3),t),o(r(3368),t),o(r(1825),t),o(r(1967),t),o(r(9683),t),o(r(2709),t)},1967:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},9683:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getModelKey=void 0,t.isModel=function(e){try{return!!o.Model.getMetadata(e)}catch(e){return!1}};const n=r(7675),o=r(3);t.getModelKey=e=>n.ModelKeys.REFLECT+e},2709:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validate=function(e,...t){const r=[];for(const n in e)e.hasOwnProperty(n)&&-1===t.indexOf(n)&&r.push((0,o.getPropertyDecorators)(u.ValidationKeys.REFLECT,e,n));let l;for(const t of r){const{prop:r,decorators:n}=t;if(!n||!n.length)continue;const o=n[0];let i;n.find((e=>e.key===u.ValidationKeys.TYPE||!!e.props.types?.find((e=>e===o.props.name))))&&n.shift();for(const t of n){const n=c.Validation.get(t.key);if(!n)throw new Error(`Missing validator for ${t.key}`);const o=n.hasErrors(e[r.toString()],...t.key===a.ModelKeys.TYPE?[t.props]:Object.values(t.props));o&&(i=i||{},i[t.key]=o)}i&&(l=l||{},l[t.prop.toString()]=i)}for(const t of Object.keys(e).filter((e=>!l||!l[e]))){let r,n;const c=(0,o.getPropertyDecorators)(u.ValidationKeys.REFLECT,e,t).decorators,d=(0,o.getPropertyDecorators)(u.ValidationKeys.REFLECT,e,t).decorators.filter((e=>-1!==[a.ModelKeys.TYPE,u.ValidationKeys.TYPE].indexOf(e.key)));if(!d||!d.length)continue;const f=d.pop(),p=f.props.name?[f.props.name]:Array.isArray(f.props.customTypes)?f.props.customTypes:[f.props.customTypes],y=Object.values(s.ReservedModels).map((e=>e.toLowerCase()));for(const o of p)if(-1===y.indexOf(o.toLowerCase())){const a=Array.isArray(e[t])?u.ValidationKeys.LIST:u.ValidationKeys.TYPE,s=c.find((e=>e.key===a))||{};let l=[];if(s&&s.props){const r=Array.isArray(e[t])?s.props.class:s.props.customTypes;r&&(l=Array.isArray(r)?r.map((e=>`${e}`.toLowerCase())):[r.toLowerCase()])}const d=(e,t,r)=>{const n=t>=0?`at index ${t} `:"";return"object"==typeof r||"function"==typeof r?r.hasErrors?r.hasErrors():`Value in prop ${e} ${n}is not validatable`:l.includes(typeof r)?void 0:`Value in prop ${e} ${n}has no valid type`};switch(o){case Array.name:case Set.name:if(c.length&&c.find((e=>e.key===u.ValidationKeys.LIST))){const n=o===(Array.name?e[t]:e[t].values()).find(((e,r)=>d(t,r,e)));n&&(r=(0,i.sf)(u.DEFAULT_ERROR_MESSAGES.LIST_INSIDE,n.toString()))}break;default:try{e[t]&&(r=d(t,-1,e[t]))}catch(e){console.warn((0,i.sf)("Model should be validatable but its not"))}}r&&(n=n||{},n[t]=r)}n&&(l=l||{},l[t]=n)}return l?new n.ModelErrorDefinition(l):void 0};const n=r(3368),o=r(32),a=r(7675),i=r(1318),s=r(8539),c=r(1375),u=r(5021)},7675:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.ModelKeys=void 0,function(e){e.REFLECT="model.definition.",e.TYPE="design:type",e.PARAMS="design:paramtypes",e.RETURN="design:returntype",e.MODEL="model",e.ANCHOR="__modelDefinition",e.HASHING="hashing",e.SERIALIZATION="serialization",e.BINDING="binding"}(r||(t.ModelKeys=r={}))},5243:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dateFromFormat=a,t.bindDateToString=i,t.isValidDate=s,t.twoDigitPad=c,t.formatDate=u,t.parseDate=function(e,t){let r;if(t){if(t instanceof Date)try{r=a(u(t,e),e)}catch(r){throw new Error((0,o.sf)("Could not convert date {0} to format: {1}",t.toString(),e))}else if("string"==typeof t)r=a(t,e);else if("number"==typeof t)r=a(u(new Date(t),e),e);else{if(!s(t))throw new Error(`Invalid value provided ${t}`);try{r=a(u(new Date(t),e),e)}catch(r){throw new Error((0,o.sf)("Could not convert date {0} to format: {1}",t,e))}}return i(r,e)}},r(8630);const n=r(5021),o=r(1318);function a(e,t){let r=t;r.match(/hh/)?r=r.replace("hh","(?<hour>\\d{2})"):r.match(/h/)?r=r.replace("h","(?<hour>\\d{1,2})"):r.match(/HH/)?r=r.replace("HH","(?<hour>\\d{2})"):r.match(/H/)&&(r=r.replace("H","(?<hour>\\d{1,2})")),r.match(/mm/)?r=r.replace("mm","(?<minutes>\\d{2})"):r.match(/m/)&&(r=r.replace("m","(?<minutes>\\d{1,2})")),r.match(/ss/)?r=r.replace("ss","(?<seconds>\\d{2})"):r.match(/s/)&&(r=r.replace("s","(?<seconds>\\d{1,2})")),r.match(/dd/)?r=r.replace("dd","(?<day>\\d{2})"):r.match(/d/)&&(r=r.replace("d","(?<day>\\d{1,2})")),r.match(/EEEE/)?r=r.replace("EEEE","(?<dayofweek>\\w+)"):r.match(/EEEE/)&&(r=r.replace("EEE","(?<dayofweek>\\w+)")),r.match(/yyyy/)?r=r.replace("yyyy","(?<year>\\d{4})"):r.match(/yy/)&&(r=r.replace("yy","(?<year>\\d{2})")),r.match(/MMMM/)?r=r.replace("MMMM","(?<monthname>\\w+)"):r.match(/MMM/)&&(r=r.replace("MMM","(?<monthnamesmall>\\w+)")),r.match(/MM/)?r=r.replace("MM","(?<month>\\d{2})"):r.match(/M/)&&(r=r.replace("M","(?<month>\\d{1,2})")),r=r.replace("S","(?<milis>\\d{1,3})").replace("aaa","(?<ampm>\\w{2})");const o=new RegExp(r,"g").exec(e);if(!o||!o.groups)return new Date(e);const a=function(e){if(!e)return 0;const t=parseInt(e);return isNaN(t)?0:t},i=a(o.groups.year),s=a(o.groups.day),c=o.groups.ampm;let u=a(o.groups.hour);c&&(u="PM"===c?u+12:u);const l=a(o.groups.minutes),d=a(o.groups.seconds),f=a(o.groups.milis),p=o.groups.monthname,y=o.groups.monthnamesmall;let h=o.groups.month;if(p)h=n.MONTH_NAMES.indexOf(p);else if(y){const t=n.MONTH_NAMES.find((e=>e.toLowerCase().startsWith(y.toLowerCase())));if(!t)return new Date(e);h=n.MONTH_NAMES.indexOf(t)}else h=a(`${h}`);return new Date(i,h-1,s,u,l,d,f)}function i(e,t){if(!e)return;const r=()=>u(e,t);return Object.defineProperty(e,"toISOString",{enumerable:!1,configurable:!1,value:r}),Object.defineProperty(e,"toString",{enumerable:!1,configurable:!1,value:r}),e}function s(e){return e&&"[object Date]"===Object.prototype.toString.call(e)&&!isNaN(e)}function c(e){return e<10?"0"+e:e.toString()}function u(e,t="yyyy/MM/dd"){const r=e.getDate(),o=e.getMonth(),a=e.getFullYear(),i=e.getHours(),s=e.getMinutes(),u=e.getSeconds(),l=e.getMilliseconds(),d=i%12,f=c(d),p=c(i),y=c(s),h=c(u),g=i<12?"AM":"PM",E=n.DAYS_OF_WEEK_NAMES[e.getDay()],v=E.substr(0,3),O=c(r),b=o+1,_=c(b),m=n.MONTH_NAMES[o],R=m.substr(0,3),M=a+"",T=M.substr(2,2);return(t=t.replace("hh",f).replace("h",d.toString()).replace("HH",p).replace("H",i.toString()).replace("mm",y).replace("m",s.toString()).replace("ss",h).replace("s",u.toString()).replace("S",l.toString()).replace("dd",O).replace("d",r.toString()).replace("EEEE",E).replace("EEE",v).replace("yyyy",M).replace("yy",T).replace("aaa",g)).indexOf("MMM")>-1?t.replace("MMMM",m).replace("MMM",R):t.replace("MM",_).replace("M",b.toString())}},3042:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hashedBy=function(e,...t){return(0,n.metadata)((0,a.getModelKey)(o.ModelKeys.HASHING),{algorithm:e,args:t})},t.serializedBy=function(e,...t){return(0,n.metadata)((0,a.getModelKey)(o.ModelKeys.SERIALIZATION),{serializer:e,args:t})};const n=r(32),o=r(7675),a=r(9683)},2252:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Hashing=t.DefaultHashingMethod=void 0,t.hashCode=o,t.hashSerialization=function(e){return o(n.Serialization.serialize(e))},t.hashObj=a;const n=r(4744);function o(e){e=String(e);let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return t.toString()}function a(e){const t=function(e,t){const r=n(t);return"string"==typeof r?n((e||"")+n(t)):0|(e=((e=e||0)<<5)-e+r)},r=o,n=function(e){return void 0===e?"":-1!==["string","number","symbol"].indexOf(typeof e)?r(e.toString()):e instanceof Date?r(e.getTime()):Array.isArray(e)?e.reduce(t,void 0):Object.values(e).reduce(t,void 0)},a=Object.values(e).reduce(t,0);return("number"==typeof a?Math.abs(a):a).toString()}t.DefaultHashingMethod="default";class i{static{this.current=t.DefaultHashingMethod}static{this.cache={default:a}}constructor(){}static get(e){if(e in this.cache)return this.cache[e];throw new Error(`No hashing method registered under ${e}`)}static register(e,t,r=!1){if(e in this.cache)throw new Error(`Hashing method ${e} already registered`);this.cache[e]=t,r&&(this.current=e)}static hash(e,t,...r){return t?this.get(t)(e,...r):this.get(this.current)(e,...r)}static setDefault(e){this.current=this.get(e)}}t.Hashing=i},4072:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(7675),t),o(r(5243),t),o(r(3042),t),o(r(2252),t),o(r(2417),t),o(r(4744),t),o(r(1318),t)},2417:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},4744:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Serialization=t.DefaultSerializationMethod=t.JSONSerializer=void 0;const n=r(3),o=r(7675);class a{preSerialize(e){const t=Object.assign({},e),r=n.Model.getMetadata(e);return t[o.ModelKeys.ANCHOR]=r||e.constructor.name,t}deserialize(e){const t=JSON.parse(e),r=t[o.ModelKeys.ANCHOR];if(!r)throw new Error("Could not find class reference in serialized model");return n.Model.build(t,r)}serialize(e){return JSON.stringify(this.preSerialize(e))}}t.JSONSerializer=a,t.DefaultSerializationMethod="json";class i{static{this.current=t.DefaultSerializationMethod}static{this.cache={json:new a}}constructor(){}static get(e){if(e in this.cache)return this.cache[e];throw new Error(`No serialization method registered under ${e}`)}static register(e,t,r=!1){if(e in this.cache)throw new Error(`Serialization method ${e} already registered`);this.cache[e]=new t,r&&(this.current=e)}static serialize(e,t,...r){return t?this.get(t).serialize(e,...r):this.get(this.current).serialize(e,...r)}static deserialize(e,t,...r){return t?this.get(t).deserialize(e,...r):this.get(this.current).deserialize(e,...r)}static setDefault(e){this.current=this.get(e)}}t.Serialization=i},1318:(e,t)=>{"use strict";function r(e,...t){return e.replace(/{(\d+)}/g,(function(e,r){return void 0!==t[r]?t[r].toString():"undefined"}))}Object.defineProperty(t,"__esModule",{value:!0}),t.sf=void 0,t.stringFormat=r,t.sf=r},1375:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Validation=void 0;const n=r(3201);class o{static{this.actingValidatorRegistry=void 0}constructor(){}static setRegistry(e,t){t&&o.actingValidatorRegistry&&o.actingValidatorRegistry.getKeys().forEach((r=>{const n=e.get(r);n&&e.register(t(n))})),o.actingValidatorRegistry=e}static getRegistry(){return o.actingValidatorRegistry||(o.actingValidatorRegistry=new n.ValidatorRegistry),o.actingValidatorRegistry}static get(e){return o.getRegistry().get(e)}static register(...e){return o.getRegistry().register(...e)}}t.Validation=o},3576:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.DateValidator=void 0;const a=r(7036),i=r(5021),s=r(8024);let c=class extends a.Validator{constructor(e=i.DEFAULT_ERROR_MESSAGES.DATE){super(e,Number.name,Date.name,String.name)}hasErrors(e,t,r){if(void 0!==e)return"string"==typeof e&&(e=new Date(e)),isNaN(e.getDate())?this.getMessage(r||this.message):void 0}};t.DateValidator=c,t.DateValidator=c=n([(0,s.validator)(i.ValidationKeys.DATE),o("design:paramtypes",[String])],c)},5224:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.EmailValidator=void 0;const a=r(5021),i=r(6174),s=r(8024);let c=class extends i.PatternValidator{constructor(e=a.DEFAULT_ERROR_MESSAGES.EMAIL){super(e)}hasErrors(e,t,r){return super.hasErrors(e,t||a.DEFAULT_PATTERNS.EMAIL,r)}};t.EmailValidator=c,t.EmailValidator=c=n([(0,s.validator)(a.ValidationKeys.EMAIL),o("design:paramtypes",[String])],c)},2888:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.ListValidator=void 0;const a=r(7036),i=r(5021),s=r(8024);let c=class extends a.Validator{constructor(e=i.DEFAULT_ERROR_MESSAGES.LIST){super(e,Array.name,Set.name)}hasErrors(e,t,r){if(!e||(Array.isArray(e)?!e.length:!e.size))return;t=Array.isArray(t)?t:[t];let n,o=!0;for(let r=0;r<(Array.isArray(e)?e.length:e.size);r++)switch(n=e[r],typeof n){case"object":case"function":o=t.includes(n.constructor?.name);break;default:o=t.some((e=>typeof n===e.toLowerCase()))}return o?void 0:this.getMessage(r||this.message,t)}};t.ListValidator=c,t.ListValidator=c=n([(0,s.validator)(i.ValidationKeys.LIST),o("design:paramtypes",[String])],c)},2382:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.MaxLengthValidator=void 0;const a=r(7036),i=r(5021),s=r(8024);let c=class extends a.Validator{constructor(e=i.DEFAULT_ERROR_MESSAGES.MAX_LENGTH){super(e,String.name,Array.name)}hasErrors(e,t,r){if(void 0!==e)return e.length>t?this.getMessage(r||this.message,t):void 0}};t.MaxLengthValidator=c,t.MaxLengthValidator=c=n([(0,s.validator)(i.ValidationKeys.MAX_LENGTH),o("design:paramtypes",[String])],c)},9378:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.MaxValidator=void 0;const a=r(7036),i=r(5021),s=r(8024);let c=class extends a.Validator{constructor(e=i.DEFAULT_ERROR_MESSAGES.MAX){super(e,"number","Date","string")}hasErrors(e,t,r){if(void 0!==e){if(e instanceof Date&&!(t instanceof Date)&&(t=new Date(t),isNaN(t.getDate())))throw new Error("Invalid Max param defined");return e>t?this.getMessage(r||this.message,t):void 0}}};t.MaxValidator=c,t.MaxValidator=c=n([(0,s.validator)(i.ValidationKeys.MAX),o("design:paramtypes",[String])],c)},2396:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.MinLengthValidator=void 0;const a=r(7036),i=r(5021),s=r(8024);let c=class extends a.Validator{constructor(e=i.DEFAULT_ERROR_MESSAGES.MIN_LENGTH){super(e,String.name,Array.name)}hasErrors(e,t,r){if(void 0!==e)return e.length<t?this.getMessage(r||this.message,t):void 0}};t.MinLengthValidator=c,t.MinLengthValidator=c=n([(0,s.validator)(i.ValidationKeys.MIN_LENGTH),o("design:paramtypes",[String])],c)},9320:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.MinValidator=void 0;const a=r(7036),i=r(5021),s=r(8024);let c=class extends a.Validator{constructor(e=i.DEFAULT_ERROR_MESSAGES.MIN){super(e,"number","Date","string")}hasErrors(e,t,r){if(void 0!==e){if(e instanceof Date&&!(t instanceof Date)&&(t=new Date(t),isNaN(t.getDate())))throw new Error("Invalid Min param defined");return e<t?this.getMessage(r||this.message,t):void 0}}};t.MinValidator=c,t.MinValidator=c=n([(0,s.validator)(i.ValidationKeys.MIN),o("design:paramtypes",[String])],c)},3317:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.PasswordValidator=void 0;const a=r(6174),i=r(5021),s=r(8024);let c=class extends a.PatternValidator{constructor(e=i.DEFAULT_ERROR_MESSAGES.PASSWORD){super(e)}hasErrors(e,t,r){return super.hasErrors(e,t||i.DEFAULT_ERROR_MESSAGES.PASSWORD,r||this.message)}};t.PasswordValidator=c,t.PasswordValidator=c=n([(0,s.validator)(i.ValidationKeys.PASSWORD),o("design:paramtypes",[Object])],c)},6174:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.PatternValidator=t.regexpParser=void 0;const a=r(7036),i=r(5021),s=r(8024);t.regexpParser=new RegExp("^/(.+)/([gimus]*)$");let c=class extends a.Validator{constructor(e=i.DEFAULT_ERROR_MESSAGES.PATTERN){super(e,"string")}getPattern(e){if(!t.regexpParser.test(e))return new RegExp(e);const r=e.match(t.regexpParser);return new RegExp(r[1],r[2])}hasErrors(e,t,r){if(e){if(!t)throw new Error("Missing Pattern");return(t="string"==typeof t?this.getPattern(t):t).lastIndex=0,t.test(e)?void 0:this.getMessage(r||this.message)}}};t.PatternValidator=c,t.PatternValidator=c=n([(0,s.validator)(i.ValidationKeys.PATTERN),o("design:paramtypes",[String])],c)},8089:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.RequiredValidator=void 0;const a=r(7036),i=r(5021),s=r(8024);let c=class extends a.Validator{constructor(e=i.DEFAULT_ERROR_MESSAGES.REQUIRED){super(e)}hasErrors(e,t){switch(typeof e){case"boolean":case"number":return void 0===e?this.getMessage(t||this.message):void 0;default:return e?void 0:this.getMessage(t||this.message)}}};t.RequiredValidator=c,t.RequiredValidator=c=n([(0,s.validator)(i.ValidationKeys.REQUIRED),o("design:paramtypes",[String])],c)},6942:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.StepValidator=void 0;const a=r(7036),i=r(5021),s=r(8024);let c=class extends a.Validator{constructor(e=i.DEFAULT_ERROR_MESSAGES.STEP){super(e,"number","string")}hasErrors(e,t,r){if(void 0!==e)return Number(e)%Number(t)!=0?this.getMessage(r||this.message,t):void 0}};t.StepValidator=c,t.StepValidator=c=n([(0,s.validator)(i.ValidationKeys.STEP),o("design:paramtypes",[String])],c)},4972:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.TypeValidator=void 0;const a=r(7036),i=r(5021),s=r(8024),c=r(1375),u=r(32),l=r(7675);let d=class extends a.Validator{constructor(e=i.DEFAULT_ERROR_MESSAGES.TYPE){super(e)}hasErrors(e,t,r){if(void 0!==e)return(0,u.evaluateDesignTypes)(e,t)?void 0:this.getMessage(r||this.message,"string"==typeof t?t:Array.isArray(t)?t.join(", "):t.name,typeof e)}};t.TypeValidator=d,t.TypeValidator=d=n([(0,s.validator)(i.ValidationKeys.TYPE),o("design:paramtypes",[String])],d),c.Validation.register({validator:d,validationKey:l.ModelKeys.TYPE,save:!1})},8689:function(e,t,r){"use strict";var n=this&&this.__decorate||function(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i},o=this&&this.__metadata||function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)};Object.defineProperty(t,"__esModule",{value:!0}),t.URLValidator=void 0;const a=r(5021),i=r(6174),s=r(8024);let c=class extends i.PatternValidator{constructor(e=a.DEFAULT_ERROR_MESSAGES.URL){super(e)}hasErrors(e,t,r){return super.hasErrors(e,t||a.DEFAULT_PATTERNS.URL,r)}};t.URLValidator=c,t.URLValidator=c=n([(0,s.validator)(a.ValidationKeys.URL),o("design:paramtypes",[String])],c)},7036:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Validator=void 0;const n=r(5021),o=r(1318),a=r(32);t.Validator=class{constructor(e=n.DEFAULT_ERROR_MESSAGES.DEFAULT,...t){this.message=e,t.length&&(this.acceptedTypes=t),this.acceptedTypes&&(this.hasErrors=this.checkTypeAndHasErrors(this.hasErrors.bind(this)))}getMessage(e,...t){return(0,o.sf)(e,...t)}checkTypeAndHasErrors(e){return function(t,...r){return void 0!==t&&this.acceptedTypes?(0,a.checkTypes)(t,this.acceptedTypes)?e(t,...r):this.getMessage(n.DEFAULT_ERROR_MESSAGES.TYPE,this.acceptedTypes.join(", "),typeof t):e(t,...r)}.bind(this)}}},3201:(e,t)=>{"use strict";function r(e){return e.constructor&&e.hasErrors}Object.defineProperty(t,"__esModule",{value:!0}),t.ValidatorRegistry=void 0,t.isValidator=r,t.ValidatorRegistry=class{constructor(...e){this.cache={},this.customKeyCache={},this.register(...e)}getCustomKeys(){return Object.assign({},this.customKeyCache)}getKeys(){return Object.keys(this.cache)}get(e){if(!(e in this.cache))return;const t=this.cache[e];if(r(t))return t;const n=new(t.default||t);return this.cache[e]=n,n}register(...e){e.forEach((e=>{if(r(e)){if(e.validationKey in this.cache)return;this.cache[e.validationKey]=e}else{const{validationKey:t,validator:r,save:n}=e;if(t in this.cache)return;if(this.cache[t]=r,!n)return;const o={};o[t.toUpperCase()]=t,this.customKeyCache=Object.assign({},this.customKeyCache,o)}}))}}},5021:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DEFAULT_PATTERNS=t.DEFAULT_ERROR_MESSAGES=t.DAYS_OF_WEEK_NAMES=t.MONTH_NAMES=t.ValidationKeys=void 0,t.ValidationKeys={REFLECT:"model.validation.",VALIDATOR:"validator",REQUIRED:"required",MIN:"min",MAX:"max",STEP:"step",MIN_LENGTH:"minlength",MAX_LENGTH:"maxlength",PATTERN:"pattern",EMAIL:"email",URL:"url",DATE:"date",TYPE:"type",PASSWORD:"password",LIST:"list"},t.MONTH_NAMES=["January","February","March","April","May","June","July","August","September","October","November","December"],t.DAYS_OF_WEEK_NAMES=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],t.DEFAULT_ERROR_MESSAGES={REQUIRED:"This field is required",MIN:"The minimum value is {0}",MAX:"The maximum value is {0}",MIN_LENGTH:"The minimum length is {0}",MAX_LENGTH:"The maximum length is {0}",PATTERN:"The value does not match the pattern",EMAIL:"The value is not a valid email",URL:"The value is not a valid URL",TYPE:"Invalid type. Expected {0}, received {1}",STEP:"Invalid value. Not a step of {0}",DATE:"Invalid value. not a valid Date",DEFAULT:"There is an Error",PASSWORD:"Must be at least 8 characters and contain one of number, lower and upper case letters, and special character (@$!%*?&_-.,)",LIST:"Invalid list of {0}",LIST_INSIDE:"Elements of list are invalid: {0}",MODEL_NOT_FOUND:"No model registered under {0}"},t.DEFAULT_PATTERNS={EMAIL:/[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?/,URL:/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i,PASSWORD:{CHAR8_ONE_OF_EACH:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&_\-.,])[A-Za-z\d@$!%*?&_\-.,]{8,}$/g}}},8024:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validator=function(...e){return(0,i.apply)((t=>(e.forEach((e=>{n.Validation.register({validator:t,validationKey:e,save:!0})})),t)),(0,i.metadata)((0,a.getValidationKey)(o.ValidationKeys.VALIDATOR),e))};const n=r(1375),o=r(5021),a=r(2537),i=r(32)},70:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.Validators=void 0;const a=r(3576),i=r(4972),s=r(3317),c=r(6942),u=r(8689),l=r(6174),d=r(9320),f=r(2396),p=r(9378),y=r(2382),h=r(8089),g=r(5224),E=r(2888);o(r(5021),t),o(r(3576),t),o(r(8024),t),o(r(5224),t),o(r(2888),t),o(r(2382),t),o(r(9378),t),o(r(2396),t),o(r(9320),t),o(r(3317),t),o(r(6174),t),o(r(8089),t),o(r(6942),t),o(r(7045),t),o(r(4972),t),o(r(8689),t),o(r(7036),t),o(r(3201),t),t.Validators={DateValidator:a.DateValidator,EmailValidator:g.EmailValidator,ListValidator:E.ListValidator,MaxLengthValidator:y.MaxLengthValidator,MaxValidator:p.MaxValidator,MinLengthValidator:f.MinLengthValidator,MinValidator:d.MinValidator,PasswordValidator:s.PasswordValidator,PatternValidator:l.PatternValidator,RequiredValidator:h.RequiredValidator,StepValidator:c.StepValidator,TypeValidator:i.TypeValidator,URLValidator:u.URLValidator}},7045:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},9944:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.required=function(e=n.DEFAULT_ERROR_MESSAGES.REQUIRED){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.REQUIRED),{message:e})},t.min=function(e,t=n.DEFAULT_ERROR_MESSAGES.MIN){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.MIN),{value:e,message:t,types:[Number.name,Date.name]})},t.max=function(e,t=n.DEFAULT_ERROR_MESSAGES.MAX){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.MAX),{value:e,message:t,types:[Number.name,Date.name]})},t.step=function(e,t=n.DEFAULT_ERROR_MESSAGES.STEP){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.STEP),{value:e,message:t,types:[Number.name]})},t.minlength=function(e,t=n.DEFAULT_ERROR_MESSAGES.MIN_LENGTH){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.MIN_LENGTH),{value:e,message:t,types:[String.name,Array.name,Set.name]})},t.maxlength=function(e,t=n.DEFAULT_ERROR_MESSAGES.MAX_LENGTH){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.MAX_LENGTH),{value:e,message:t,types:[String.name,Array.name,Set.name]})},t.pattern=function(e,t=n.DEFAULT_ERROR_MESSAGES.PATTERN){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.PATTERN),{value:"string"==typeof e?e:e.toString(),message:t,types:[String.name]})},t.email=function(e=n.DEFAULT_ERROR_MESSAGES.EMAIL){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.EMAIL),{pattern:n.DEFAULT_PATTERNS.EMAIL,message:e,types:[String.name]})},t.url=function(e=n.DEFAULT_ERROR_MESSAGES.URL){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.URL),{pattern:n.DEFAULT_PATTERNS.URL,message:e,types:[String.name]})},t.type=function(e,t=n.DEFAULT_ERROR_MESSAGES.TYPE){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.TYPE),{customTypes:e,message:t})},t.date=function(e="dd/MM/yyyy",t=n.DEFAULT_ERROR_MESSAGES.DATE){return(r,c)=>{(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.DATE),{format:e,message:t,types:[Date.name]})(r,c);const u=new WeakMap;Object.defineProperty(r,c,{configurable:!1,set(t){const r=Object.getOwnPropertyDescriptor(this,c);r&&!r.configurable||Object.defineProperty(this,c,{enumerable:!0,configurable:!1,get:()=>u.get(this),set:t=>{let r;try{r=(0,s.parseDate)(e,t),u.set(this,r)}catch(e){console.error((0,o.sf)("Failed to parse date: {0}",e.message||e))}}}),this[c]=t},get(){console.log("here")}})}},t.password=function(e=n.DEFAULT_PATTERNS.PASSWORD.CHAR8_ONE_OF_EACH,t=n.DEFAULT_ERROR_MESSAGES.PASSWORD){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.PASSWORD),{pattern:e,message:t,types:[String.name]})},t.list=c,t.set=function(e,t=n.DEFAULT_ERROR_MESSAGES.LIST){return c(e,"Set",t)},r(8630);const n=r(5021),o=r(1318),a=r(2537),i=r(32),s=r(5243);function c(e,t="Array",r=n.DEFAULT_ERROR_MESSAGES.LIST){return(0,i.metadata)((0,a.getValidationKey)(n.ValidationKeys.LIST),{class:Array.isArray(e)?e.map((e=>e.name)):[e.name],type:t,message:r})}},5030:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(70),t),o(r(9944),t),o(r(4213),t),o(r(2537),t),o(r(1375),t)},4213:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},2537:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getValidationKey=function(e){return n.ValidationKeys.REFLECT+e};const n=r(5021)},871:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Injectables=void 0;let n=r(3018);class o{static{this.actingInjectablesRegistry=void 0}constructor(){}static get(e,...t){return o.getRegistry().get(e,...t)}static register(e,...t){return o.getRegistry().register(e,...t)}static build(e,...t){return o.getRegistry().build(e,...t)}static setRegistry(e){o.actingInjectablesRegistry=e}static getRegistry(){return o.actingInjectablesRegistry||(o.actingInjectablesRegistry=new n.InjectableRegistryImp),o.actingInjectablesRegistry}static reset(){this.setRegistry(new n.InjectableRegistryImp)}static selectiveReset(e){let t="string"==typeof e?new RegExp(e):e;o.actingInjectablesRegistry.cache=Object.entries(o.actingInjectablesRegistry.cache).reduce(((e,[r,n])=>(r.match(t)||(e[r]=n),e)),{})}}t.Injectables=o},6030:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.InjectablesKeys=void 0,t.InjectablesKeys={REFLECT:"inject.db.",INJECTABLE:"injectable",INJECT:"inject"}},8957:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.inject=t.injectable=void 0;let n=r(6030),o=r(871),a=r(8730),i=e=>n.InjectablesKeys.REFLECT+e,s=(t.injectable=(e=void 0,t=!1,r)=>a=>{let s=e||a.name;function c(...e){let c=o.Injectables.get(s,...e);if(!c){if(o.Injectables.register(a,s,!0,t),!(c=o.Injectables.get(s,...e)))return;if(r)try{r(c)}catch(e){console.error(`Failed to call injectable callback for ${s}: `+e)}}return e=Object.assign({},{class:s}),Reflect.defineMetadata(i(n.InjectablesKeys.INJECTABLE),e,c.constructor),c}return c.prototype=a.prototype,Object.defineProperty(c,"name",{writable:!1,enumerable:!0,configurable:!1,value:a.prototype.constructor.name}),c},(e,t)=>(r,s)=>{let c=new WeakMap,u=e||(0,a.getTypeFromDecorator)(r,s);if(!u)throw new Error("Could not get Type from decorator");Reflect.defineMetadata(i(n.InjectablesKeys.INJECT),{injectable:u},r,s),Object.defineProperty(r,s,{configurable:!0,get(){if(Object.getOwnPropertyDescriptor(r,s).configurable)return Object.defineProperty(this,s,{enumerable:!0,configurable:!1,get(){let e=c.get(this);if(!e){if(!(e=o.Injectables.get(u)))throw new Error(`Could not get Injectable ${u} to inject in ${(r.constructor||r).name}'s `+s);if(t)try{e=t(e,r)}catch(e){console.error(e)}c.set(this,e)}return e}}),this[s]}})});t.inject=s},465:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&("get"in o?t.__esModule:!o.writable&&!o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){e[n=void 0===n?r:n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0,o(r(6030),t),o(r(8957),t),o(r(871),t),o(r(3018),t),o(r(8730),t),t.VERSION="1.4.3"},3018:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.InjectableRegistryImp=void 0,t.InjectableRegistryImp=class{constructor(){this.cache={}}get(e,...t){try{var r=this.cache[e],n={name:e};return(r.singleton||r.instance)&&r.instance||this.build(n,...t)}catch(e){}}register(e,t=void 0,r=!0,n=!1){var o=e,a=!o.name&&o.constructor;if("function"!=typeof o&&!a)throw new Error("Injectable registering failed. Missing Class name or constructor");t=t||(a&&a.name&&"Function"!==a.name?a:o).name,this.cache[t]&&!n||(this.cache[t]={instance:a?e:void 0,constructor:a?void 0:e,singleton:r})}build(e,...t){var{constructor:r,singleton:n}=this.cache[e.name];return t=new r(...t),this.cache[e.name]={instance:t,constructor:r,singleton:n},t}}},8730:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TypeKey=void 0,t.getTypeFromDecorator=function(e,r){return"Function"!==(e=Reflect.getMetadata(t.TypeKey,e,r)).name?e.name:void 0},r(8630),t.TypeKey="design:type"},1267:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.ReflectionKeys=void 0,function(e){e.TYPE="design:type"}(r||(t.ReflectionKeys=r={}))},5530:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.metadata=function(e,t){return(r,n,o)=>{o?Reflect.defineMetadata(e,t,o.value):n?Reflect.defineMetadata(e,t,r,n):Reflect.defineMetadata(e,t,r)}},t.apply=function(...e){return(t,r,n)=>{for(const o of e)t instanceof Function&&!n?o(t):o(t,r,n)}},r(8630)},3032:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEqual=function e(t,r,...n){if(t===r)return!0;if(t instanceof Date&&r instanceof Date)return t.getTime()===r.getTime();if(!t||!r||"object"!=typeof t&&"object"!=typeof r)return t===r;if(null==t||null==r)return!1;if(typeof t!=typeof r)return!1;if(t.prototype!==r.prototype)return!1;const o=Object.keys(t).filter((e=>-1===n.indexOf(e)));return o.length===Object.keys(r).filter((e=>-1===n.indexOf(e))).length&&o.every((o=>-1!==n.indexOf(o)||e(t[o],r[o],...n)))}},32:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.VERSION=void 0,o(r(1267),t),o(r(5530),t),o(r(3032),t),o(r(2199),t),o(r(3115),t),t.VERSION="0.2.3"},2199:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},3115:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPropertyDecorators=a,t.getTypeFromDecorator=function(e,t){const r=a(n.ReflectionKeys.TYPE,e,t,!1);if(!r||!r.decorators)return;const o=r.decorators.shift(),i=o.props?o.props.name:void 0;return"Function"!==i?i:void 0},t.getAllPropertyDecorators=function(e,...t){if(t&&t.length)return Object.getOwnPropertyNames(e).reduce(((r,n)=>(t.forEach(((t,o)=>{const i=a(t,e,n,0!==o);r||(r={}),function(e,t,r){r&&r.length&&(e[t]||(e[t]=[]),e[t].push(...r))}(r,n,i.decorators)})),r)),void 0)},t.getAllProperties=function(e,t=!0,r="Object"){const n=[];let o=e;const a=function(){if(!t)return;const e=Object.getPrototypeOf(o);return e&&e.constructor.name!==r?(o=e,o):void 0};do{Object.getOwnPropertyNames(o).forEach((function(e){-1===n.indexOf(e)&&n.push(e)}))}while(a());return n},t.getClassDecorators=function(e,t){return Reflect.getOwnMetadataKeys(t.constructor).filter((t=>t.toString().startsWith(e))).reduce(((r,n)=>{const o={key:n.substring(e.length),props:Reflect.getMetadata(n,t.constructor)};return r.concat(o)}),[])},t.checkType=i,t.checkTypes=s,t.evaluateDesignTypes=function(e,t){switch(typeof t){case"string":return i(e,t);case"object":return!Array.isArray(t)||s(e,t);case"function":return!t.name||"Object"===t.name||i(e,t.name);default:return!0}},r(8630);const n=r(1267),o=r(3032);function a(e,t,r,i=!1,s=!0,c){const u=function(e,t,r,o=!1,a){const i=Reflect.getMetadataKeys(t,r).filter((t=>o?t.toString().startsWith(e):t===n.ReflectionKeys.TYPE||t.toString().startsWith(e))).reduce(((o,a)=>{const i={key:a!==n.ReflectionKeys.TYPE?a.substring(e.length):a,props:Reflect.getMetadata(a,t,r)};return o.concat(i)}),a||[]);return{prop:r.toString(),decorators:i}}(e,t,r,i,c);return s&&Object.getPrototypeOf(t)!==Object.prototype?a(e,Object.getPrototypeOf(t.constructor),r,!0,s,u.decorators):{prop:u.prop,decorators:function(e){const r={};return e.filter((e=>e.key in r?((0,o.isEqual)(e.props,r[e.key])||console.log(`Found a similar decorator for the ${e.key} property of a ${t.constructor.name} model but with different attributes. The original one will be kept`),!1):(r[e.key.toString()]=e.props,!0)))}(u.decorators)}}function i(e,t){return typeof e===t||e.constructor&&e.constructor.name.toLowerCase()===t.toLowerCase()}function s(e,t){return!t.every((t=>!i(e,t)))}},8630:(e,t,r)=>{var n;!function(e){!function(){var t="object"==typeof globalThis?globalThis:"object"==typeof r.g?r.g:"object"==typeof self?self:"object"==typeof this?this:function(){try{return Function("return this;")()}catch(e){}}()||function(){try{return(0,eval)("(function() { return this; })()")}catch(e){}}(),n=o(e);function o(e,t){return function(r,n){Object.defineProperty(e,r,{configurable:!0,writable:!0,value:n}),t&&t(r,n)}}void 0!==t.Reflect&&(n=o(t.Reflect,n)),function(e,t){var r=Object.prototype.hasOwnProperty,n="function"==typeof Symbol,o=n&&void 0!==Symbol.toPrimitive?Symbol.toPrimitive:"@@toPrimitive",a=n&&void 0!==Symbol.iterator?Symbol.iterator:"@@iterator",i="function"==typeof Object.create,s={__proto__:[]}instanceof Array,c=!i&&!s,u={create:i?function(){return B(Object.create(null))}:s?function(){return B({__proto__:null})}:function(){return B({})},has:c?function(e,t){return r.call(e,t)}:function(e,t){return t in e},get:c?function(e,t){return r.call(e,t)?e[t]:void 0}:function(e,t){return e[t]}},l=Object.getPrototypeOf(Function),d="function"==typeof Map&&"function"==typeof Map.prototype.entries?Map:function(){var e={},t=[],r=function(){function e(e,t,r){this._index=0,this._keys=e,this._values=t,this._selector=r}return e.prototype["@@iterator"]=function(){return this},e.prototype[a]=function(){return this},e.prototype.next=function(){var e=this._index;if(e>=0&&e<this._keys.length){var r=this._selector(this._keys[e],this._values[e]);return e+1>=this._keys.length?(this._index=-1,this._keys=t,this._values=t):this._index++,{value:r,done:!1}}return{value:void 0,done:!0}},e.prototype.throw=function(e){throw this._index>=0&&(this._index=-1,this._keys=t,this._values=t),e},e.prototype.return=function(e){return this._index>=0&&(this._index=-1,this._keys=t,this._values=t),{value:e,done:!0}},e}();return function(){function t(){this._keys=[],this._values=[],this._cacheKey=e,this._cacheIndex=-2}return Object.defineProperty(t.prototype,"size",{get:function(){return this._keys.length},enumerable:!0,configurable:!0}),t.prototype.has=function(e){return this._find(e,!1)>=0},t.prototype.get=function(e){var t=this._find(e,!1);return t>=0?this._values[t]:void 0},t.prototype.set=function(e,t){var r=this._find(e,!0);return this._values[r]=t,this},t.prototype.delete=function(t){var r=this._find(t,!1);if(r>=0){for(var n=this._keys.length,o=r+1;o<n;o++)this._keys[o-1]=this._keys[o],this._values[o-1]=this._values[o];return this._keys.length--,this._values.length--,I(t,this._cacheKey)&&(this._cacheKey=e,this._cacheIndex=-2),!0}return!1},t.prototype.clear=function(){this._keys.length=0,this._values.length=0,this._cacheKey=e,this._cacheIndex=-2},t.prototype.keys=function(){return new r(this._keys,this._values,n)},t.prototype.values=function(){return new r(this._keys,this._values,o)},t.prototype.entries=function(){return new r(this._keys,this._values,i)},t.prototype["@@iterator"]=function(){return this.entries()},t.prototype[a]=function(){return this.entries()},t.prototype._find=function(e,t){if(!I(this._cacheKey,e)){this._cacheIndex=-1;for(var r=0;r<this._keys.length;r++)if(I(this._keys[r],e)){this._cacheIndex=r;break}}return this._cacheIndex<0&&t&&(this._cacheIndex=this._keys.length,this._keys.push(e),this._values.push(void 0)),this._cacheIndex},t}();function n(e,t){return e}function o(e,t){return t}function i(e,t){return[e,t]}}(),f="function"==typeof Set&&"function"==typeof Set.prototype.entries?Set:function(){function e(){this._map=new d}return Object.defineProperty(e.prototype,"size",{get:function(){return this._map.size},enumerable:!0,configurable:!0}),e.prototype.has=function(e){return this._map.has(e)},e.prototype.add=function(e){return this._map.set(e,e),this},e.prototype.delete=function(e){return this._map.delete(e)},e.prototype.clear=function(){this._map.clear()},e.prototype.keys=function(){return this._map.keys()},e.prototype.values=function(){return this._map.keys()},e.prototype.entries=function(){return this._map.entries()},e.prototype["@@iterator"]=function(){return this.keys()},e.prototype[a]=function(){return this.keys()},e}(),p="function"==typeof WeakMap?WeakMap:function(){var e=u.create(),t=n();return function(){function e(){this._key=n()}return e.prototype.has=function(e){var t=o(e,!1);return void 0!==t&&u.has(t,this._key)},e.prototype.get=function(e){var t=o(e,!1);return void 0!==t?u.get(t,this._key):void 0},e.prototype.set=function(e,t){return o(e,!0)[this._key]=t,this},e.prototype.delete=function(e){var t=o(e,!1);return void 0!==t&&delete t[this._key]},e.prototype.clear=function(){this._key=n()},e}();function n(){var t;do{t="@@WeakMap@@"+i()}while(u.has(e,t));return e[t]=!0,t}function o(e,n){if(!r.call(e,t)){if(!n)return;Object.defineProperty(e,t,{value:u.create()})}return e[t]}function a(e,t){for(var r=0;r<t;++r)e[r]=255*Math.random()|0;return e}function i(){var e=function(e){if("function"==typeof Uint8Array){var t=new Uint8Array(e);return"undefined"!=typeof crypto?crypto.getRandomValues(t):"undefined"!=typeof msCrypto?msCrypto.getRandomValues(t):a(t,e),t}return a(new Array(e),e)}(16);e[6]=79&e[6]|64,e[8]=191&e[8]|128;for(var t="",r=0;r<16;++r){var n=e[r];4!==r&&6!==r&&8!==r||(t+="-"),n<16&&(t+="0"),t+=n.toString(16).toLowerCase()}return t}}(),y=n?Symbol.for("@reflect-metadata:registry"):void 0,h=function(){var e;return!T(y)&&j(t.Reflect)&&Object.isExtensible(t.Reflect)&&(e=t.Reflect[y]),T(e)&&(e=function(){var e,r,n,o;T(y)||void 0===t.Reflect||y in t.Reflect||"function"!=typeof t.Reflect.defineMetadata||(e=function(e){var t=e.defineMetadata,r=e.hasOwnMetadata,n=e.getOwnMetadata,o=e.getOwnMetadataKeys,a=e.deleteMetadata,i=new p;return{isProviderFor:function(e,t){var r=i.get(e);return!(T(r)||!r.has(t))||!!o(e,t).length&&(T(r)&&(r=new f,i.set(e,r)),r.add(t),!0)},OrdinaryDefineOwnMetadata:t,OrdinaryHasOwnMetadata:r,OrdinaryGetOwnMetadata:n,OrdinaryOwnMetadataKeys:o,OrdinaryDeleteMetadata:a}}(t.Reflect));var a=new p,i={registerProvider:s,getProvider:u,setProvider:h};return i;function s(t){if(!Object.isExtensible(i))throw new Error("Cannot add provider to a frozen registry.");switch(!0){case e===t:break;case T(r):r=t;break;case r===t:break;case T(n):n=t;break;case n===t:break;default:void 0===o&&(o=new f),o.add(t)}}function c(t,a){if(!T(r)){if(r.isProviderFor(t,a))return r;if(!T(n)){if(n.isProviderFor(t,a))return r;if(!T(o))for(var i=N(o);;){var s=k(i);if(!s)return;var c=x(s);if(c.isProviderFor(t,a))return F(i),c}}}if(!T(e)&&e.isProviderFor(t,a))return e}function u(e,t){var r,n=a.get(e);return T(n)||(r=n.get(t)),T(r)?(T(r=c(e,t))||(T(n)&&(n=new d,a.set(e,n)),n.set(t,r)),r):r}function l(e){if(T(e))throw new TypeError;return r===e||n===e||!T(o)&&o.has(e)}function h(e,t,r){if(!l(r))throw new Error("Metadata provider not registered.");var n=u(e,t);if(n!==r){if(!T(n))return!1;var o=a.get(e);T(o)&&(o=new d,a.set(e,o)),o.set(t,r)}return!0}}()),!T(y)&&j(t.Reflect)&&Object.isExtensible(t.Reflect)&&Object.defineProperty(t.Reflect,y,{enumerable:!1,configurable:!1,writable:!1,value:e}),e}(),g=function(e){var t=new p,r={isProviderFor:function(e,r){var n=t.get(e);return!T(n)&&n.has(r)},OrdinaryDefineOwnMetadata:function(e,t,r,o){n(r,o,!0).set(e,t)},OrdinaryHasOwnMetadata:function(e,t,r){var o=n(t,r,!1);return!T(o)&&S(o.has(e))},OrdinaryGetOwnMetadata:function(e,t,r){var o=n(t,r,!1);if(!T(o))return o.get(e)},OrdinaryOwnMetadataKeys:function(e,t){var r=[],o=n(e,t,!1);if(T(o))return r;for(var a=N(o.keys()),i=0;;){var s=k(a);if(!s)return r.length=i,r;var c=x(s);try{r[i]=c}catch(e){try{F(a)}finally{throw e}}i++}},OrdinaryDeleteMetadata:function(e,r,o){var a=n(r,o,!1);if(T(a))return!1;if(!a.delete(e))return!1;if(0===a.size){var i=t.get(r);T(i)||(i.delete(o),0===i.size&&t.delete(i))}return!0}};return h.registerProvider(r),r;function n(n,o,a){var i=t.get(n),s=!1;if(T(i)){if(!a)return;i=new d,t.set(n,i),s=!0}var c=i.get(o);if(T(c)){if(!a)return;if(c=new d,i.set(o,c),!e.setProvider(n,o,r))throw i.delete(o),s&&t.delete(n),new Error("Wrong provider for target.")}return c}}(h);function E(e,t,r){if(v(e,t,r))return!0;var n=C(t);return!w(n)&&E(e,n,r)}function v(e,t,r){var n=U(t,r,!1);return!T(n)&&S(n.OrdinaryHasOwnMetadata(e,t,r))}function O(e,t,r){if(v(e,t,r))return b(e,t,r);var n=C(t);return w(n)?void 0:O(e,n,r)}function b(e,t,r){var n=U(t,r,!1);if(!T(n))return n.OrdinaryGetOwnMetadata(e,t,r)}function _(e,t,r,n){U(r,n,!0).OrdinaryDefineOwnMetadata(e,t,r,n)}function m(e,t){var r=R(e,t),n=C(e);if(null===n)return r;var o=m(n,t);if(o.length<=0)return r;if(r.length<=0)return o;for(var a=new f,i=[],s=0,c=r;s<c.length;s++){var u=c[s];a.has(u)||(a.add(u),i.push(u))}for(var l=0,d=o;l<d.length;l++)u=d[l],a.has(u)||(a.add(u),i.push(u));return i}function R(e,t){var r=U(e,t,!1);return r?r.OrdinaryOwnMetadataKeys(e,t):[]}function M(e){if(null===e)return 1;switch(typeof e){case"undefined":return 0;case"boolean":return 2;case"string":return 3;case"symbol":return 4;case"number":return 5;case"object":return null===e?1:6;default:return 6}}function T(e){return void 0===e}function w(e){return null===e}function j(e){return"object"==typeof e?null!==e:"function"==typeof e}function P(e,t){switch(M(e)){case 0:case 1:case 2:case 3:case 4:case 5:return e}var r=3===t?"string":5===t?"number":"default",n=V(e,o);if(void 0!==n){var a=n.call(e,r);if(j(a))throw new TypeError;return a}return function(e,t){if("string"===t){var r=e.toString;if(L(r)&&!j(o=r.call(e)))return o;if(L(n=e.valueOf)&&!j(o=n.call(e)))return o}else{var n;if(L(n=e.valueOf)&&!j(o=n.call(e)))return o;var o,a=e.toString;if(L(a)&&!j(o=a.call(e)))return o}throw new TypeError}(e,"default"===r?"number":r)}function S(e){return!!e}function A(e){var t=P(e,3);return"symbol"==typeof t?t:function(e){return""+e}(t)}function D(e){return Array.isArray?Array.isArray(e):e instanceof Object?e instanceof Array:"[object Array]"===Object.prototype.toString.call(e)}function L(e){return"function"==typeof e}function K(e){return"function"==typeof e}function I(e,t){return e===t||e!=e&&t!=t}function V(e,t){var r=e[t];if(null!=r){if(!L(r))throw new TypeError;return r}}function N(e){var t=V(e,a);if(!L(t))throw new TypeError;var r=t.call(e);if(!j(r))throw new TypeError;return r}function x(e){return e.value}function k(e){var t=e.next();return!t.done&&t}function F(e){var t=e.return;t&&t.call(e)}function C(e){var t=Object.getPrototypeOf(e);if("function"!=typeof e||e===l)return t;if(t!==l)return t;var r=e.prototype,n=r&&Object.getPrototypeOf(r);if(null==n||n===Object.prototype)return t;var o=n.constructor;return"function"!=typeof o||o===e?t:o}function U(e,t,r){var n=h.getProvider(e,t);if(!T(n))return n;if(r){if(h.setProvider(e,t,g))return g;throw new Error("Illegal state.")}}function B(e){return e.__=void 0,delete e.__,e}e("decorate",(function(e,t,r,n){if(T(r)){if(!D(e))throw new TypeError;if(!K(t))throw new TypeError;return function(e,t){for(var r=e.length-1;r>=0;--r){var n=(0,e[r])(t);if(!T(n)&&!w(n)){if(!K(n))throw new TypeError;t=n}}return t}(e,t)}if(!D(e))throw new TypeError;if(!j(t))throw new TypeError;if(!j(n)&&!T(n)&&!w(n))throw new TypeError;return w(n)&&(n=void 0),function(e,t,r,n){for(var o=e.length-1;o>=0;--o){var a=(0,e[o])(t,r,n);if(!T(a)&&!w(a)){if(!j(a))throw new TypeError;n=a}}return n}(e,t,r=A(r),n)})),e("metadata",(function(e,t){return function(r,n){if(!j(r))throw new TypeError;if(!T(n)&&!function(e){switch(M(e)){case 3:case 4:return!0;default:return!1}}(n))throw new TypeError;_(e,t,r,n)}})),e("defineMetadata",(function(e,t,r,n){if(!j(r))throw new TypeError;return T(n)||(n=A(n)),_(e,t,r,n)})),e("hasMetadata",(function(e,t,r){if(!j(t))throw new TypeError;return T(r)||(r=A(r)),E(e,t,r)})),e("hasOwnMetadata",(function(e,t,r){if(!j(t))throw new TypeError;return T(r)||(r=A(r)),v(e,t,r)})),e("getMetadata",(function(e,t,r){if(!j(t))throw new TypeError;return T(r)||(r=A(r)),O(e,t,r)})),e("getOwnMetadata",(function(e,t,r){if(!j(t))throw new TypeError;return T(r)||(r=A(r)),b(e,t,r)})),e("getMetadataKeys",(function(e,t){if(!j(e))throw new TypeError;return T(t)||(t=A(t)),m(e,t)})),e("getOwnMetadataKeys",(function(e,t){if(!j(e))throw new TypeError;return T(t)||(t=A(t)),R(e,t)})),e("deleteMetadata",(function(e,t,r){if(!j(t))throw new TypeError;if(T(r)||(r=A(r)),!j(t))throw new TypeError;T(r)||(r=A(r));var n=U(t,r,!1);return!T(n)&&n.OrdinaryDeleteMetadata(e,t,r)}))}(n,t),void 0===t.Reflect&&(t.Reflect=e)}()}(n||(n={}))}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,r),a.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r(7729)})()));
@@ -0,0 +1,14 @@
1
+ /*! *****************************************************************************
2
+ Copyright (C) Microsoft. All rights reserved.
3
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
4
+ this file except in compliance with the License. You may obtain a copy of the
5
+ License at http://www.apache.org/licenses/LICENSE-2.0
6
+
7
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
8
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
9
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
10
+ MERCHANTABLITY OR NON-INFRINGEMENT.
11
+
12
+ See the Apache Version 2.0 License for specific language governing permissions
13
+ and limitations under the License.
14
+ ***************************************************************************** */
@@ -0,0 +1,3 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.Transaction=void 0;let reflection_1=require("@decaf-ts/reflection"),SyncronousLock_1=require("./locks/SyncronousLock.cjs"),db_decorators_1=require("@decaf-ts/db-decorators"),utils_1=require("./utils.cjs"),constants_1=require("./constants.cjs");class Transaction{constructor(t,o,s,i){this.id=Date.now(),this.action=s,this.method=o,this.log=[[this.id,t,o].join(" | ")],this.source=t,this.metadata=i}static push(t,o,...s){let i=s.pop();if(!i||"function"!=typeof i)throw new Error("Missing callback");let n=(t,...o)=>{this.getLock().release(t).then(()=>i(t,...o))},e=new Transaction(t.constructor.name,o.name?(0,utils_1.getObjectName)(o):"Anonymous",()=>o.call(e.bindToTransaction(t),...s,n));this.getLock().submit(e)}static setLock(t){this.lock=t}static getLock(){return this.lock||(this.lock=new SyncronousLock_1.SyncronousLock),this.lock}static submit(t){this.getLock().submit(t)}static async release(t){return this.getLock().release(t)}getMetadata(){return this.metadata?[...this.metadata]:void 0}bindTransaction(t){this.log.push(...t.log),t.bindTransaction=this.bindToTransaction.bind(this),t.bindToTransaction=this.bindToTransaction.bind(this),this.action=t.action}bindToTransaction(s){let i=(0,db_decorators_1.getAllPropertyDecoratorsRecursive)(s,void 0,constants_1.TransactionalKeys.REFLECT);if(!i)return s;let n=this,t=(0,reflection_1.getAllProperties)(s).reduce((t,o)=>(-1!==Object.keys(i).indexOf(o)&&i[o].find(t=>t.key===constants_1.TransactionalKeys.TRANSACTIONAL)?t[o]=(...t)=>s[o].call(s.__originalObj||s,n,...t):"clazz"===o||"constructor"===o?t[o]=s[o]:"function"==typeof s[o]?t[o]=s[o].bind(s.__originalObj||s):"object"==typeof s[o]&&s[o].constructor&&(0,reflection_1.getClassDecorators)(constants_1.TransactionalKeys.REFLECT,s[o]).find(t=>t.key===constants_1.TransactionalKeys.TRANSACTIONAL)?t[o]=n.bindToTransaction(s[o]):t[o]=s[o],t),{});return t[db_decorators_1.DBKeys.ORIGINAL]=s[db_decorators_1.DBKeys.ORIGINAL]||s,t.toString=()=>(0,utils_1.getObjectName)(t[db_decorators_1.DBKeys.ORIGINAL])+" proxy for transaction "+this.id,t}fire(){if(this.action)return this.action();throw new Error("Missing the method")}toString(t=!0,o=!1){return`${t?`[${this.id}]`:""}[Transaction][${this.source}.`+this.method+(o?`]
2
+ Transaction Log:
3
+ `+this.log.join("\n"):"]")}}exports.Transaction=Transaction;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @summary Transaction Class
3
+ *
4
+ * @param {string} source
5
+ * @param {string} [method]
6
+ * @param {function(): void} [action]
7
+ * @param {any[]} [metadata]
8
+ *
9
+ * @class Transaction
10
+ *
11
+ * @category Transactions
12
+ */
13
+ import { TransactionLock } from "./interfaces/TransactionLock";
14
+ import { Callback } from "./types";
15
+ export declare class Transaction {
16
+ readonly id: number;
17
+ protected action?: () => any;
18
+ readonly method?: string;
19
+ readonly source?: string;
20
+ readonly log: string[];
21
+ private readonly metadata?;
22
+ private static lock;
23
+ constructor(source: string, method?: string, action?: () => any, metadata?: any[]);
24
+ /**
25
+ * @summary Pushes a transaction to que queue and waits its resolution
26
+ *
27
+ * @param {any} issuer any class. will be used as this when calling the callbackMethod
28
+ * @param {Function} callbackMethod callback function containing the transaction. will be called with the issuear as this
29
+ * @param {any[]} args arguments to pass to the method. Last one must be the callback
30
+ */
31
+ static push(issuer: any, callbackMethod: (...argzz: (any | Callback)[]) => void, ...args: (any | Callback)[]): void;
32
+ /**
33
+ * @summary Sets the lock to be used
34
+ * @param lock
35
+ */
36
+ static setLock(lock: TransactionLock): void;
37
+ /**
38
+ * @summary gets the lock
39
+ */
40
+ static getLock(): TransactionLock;
41
+ /**
42
+ * @summary submits a transaction
43
+ * @param {Transaction} transaction
44
+ */
45
+ static submit(transaction: Transaction): void;
46
+ /**
47
+ * @summary releases the lock
48
+ * @param {Err} err
49
+ */
50
+ static release(err?: Error): Promise<void>;
51
+ /**
52
+ * @summary retrieves the metadata for the transaction
53
+ */
54
+ getMetadata(): any[] | undefined;
55
+ /**
56
+ * @summary Binds a new operation to the current transaction
57
+ * @param {Transaction} nextTransaction
58
+ */
59
+ bindTransaction(nextTransaction: Transaction): void;
60
+ /**
61
+ * @summary Binds the Transactional Decorated Object to the transaction
62
+ * @description by having all {@link transactional} decorated
63
+ * methods always pass the current Transaction as an argument
64
+ *
65
+ * @param {any} obj
66
+ * @return {any} the bound {@param obj}
67
+ */
68
+ bindToTransaction(obj: any): any;
69
+ /**
70
+ * @summary Fires the Transaction
71
+ */
72
+ fire(): any;
73
+ /**
74
+ * @summary toString override
75
+ * @param {boolean} [withId] defaults to true
76
+ * @param {boolean} [withLog] defaults to true
77
+ */
78
+ toString(withId?: boolean, withLog?: boolean): string;
79
+ }
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.TransactionalKeys=void 0,exports.TransactionalKeys={REFLECT:"model.transactional.",TRANSACTIONAL:"transactional"};
@@ -0,0 +1 @@
1
+ export declare const TransactionalKeys: Record<string, string>;
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.getTransactionalKey=void 0,exports.transactional=transactional,exports.transactionalSuperCall=transactionalSuperCall;let constants_1=require("./constants.cjs"),reflection_1=require("@decaf-ts/reflection"),Transaction_1=require("./Transaction.cjs"),getTransactionalKey=n=>constants_1.TransactionalKeys.REFLECT+n;function transactional(...l){return function(n,s,a){(0,reflection_1.metadata)((0,exports.getTransactionalKey)(constants_1.TransactionalKeys.TRANSACTIONAL),l)(n,s);let c=a.value;function t(...o){let i=this;return new Promise((t,e)=>{let a=(n,a)=>{Transaction_1.Transaction.release(n).then(()=>{if(n)return e(n);t(a)})},r=o.shift();if(r instanceof Transaction_1.Transaction){let n=new Transaction_1.Transaction(this.constructor.name,s,async()=>{c.call(n.bindToTransaction(i),...o).then(t).catch(e)},l.length?l:void 0);r.bindTransaction(n),r.fire()}else o.unshift(r),r=void 0,r=new Transaction_1.Transaction(this.constructor.name,s,()=>{c.call(r.bindToTransaction(i),...o).then(n=>a(void 0,n)).catch(a)},l.length?l:void 0),Transaction_1.Transaction.submit(r)})}Object.defineProperty(t,"name",{value:s}),a.value=t}}function transactionalSuperCall(n,...a){n(Transaction_1.Transaction.getLock().currentTransaction,...a)}exports.getTransactionalKey=getTransactionalKey;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @summary gets the transactions reflections key
3
+ * @function getRepoKey
4
+ * @param {string} key
5
+ * @memberOf module:db-decorators.Transactions
6
+ * */
7
+ export declare const getTransactionalKey: (key: string) => string;
8
+ /**
9
+ * @summary Sets a class Async (promise based) method as transactional
10
+ *
11
+ * @param {any[]} [data] option metadata available to the {@link TransactionLock}
12
+ *
13
+ * @function transactionalPromise
14
+ *
15
+ * @memberOf module:db-decorators.Decorators.transactions
16
+ */
17
+ export declare function transactional(...data: any[]): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
18
+ /**
19
+ * @summary Util function to wrap super calls with the transaction when the super's method is also transactional
20
+ *
21
+ * @param {Function} method the super method (must be bound to the proper this), eg: super.create.bind(this)
22
+ * @param {any[]} args the arguments to call the method with
23
+ *
24
+ * @memberOf module:db-decorators.Transaction
25
+ */
26
+ export declare function transactionalSuperCall(method: any, ...args: any): void;
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @summary Transaction Class
3
+ *
4
+ * @param {string} source
5
+ * @param {string} [method]
6
+ * @param {function(): void} [action]
7
+ * @param {any[]} [metadata]
8
+ *
9
+ * @class Transaction
10
+ *
11
+ * @category Transactions
12
+ */
13
+ import { TransactionLock } from "./interfaces/TransactionLock";
14
+ import { Callback } from "./types";
15
+ export declare class Transaction {
16
+ readonly id: number;
17
+ protected action?: () => any;
18
+ readonly method?: string;
19
+ readonly source?: string;
20
+ readonly log: string[];
21
+ private readonly metadata?;
22
+ private static lock;
23
+ constructor(source: string, method?: string, action?: () => any, metadata?: any[]);
24
+ /**
25
+ * @summary Pushes a transaction to que queue and waits its resolution
26
+ *
27
+ * @param {any} issuer any class. will be used as this when calling the callbackMethod
28
+ * @param {Function} callbackMethod callback function containing the transaction. will be called with the issuear as this
29
+ * @param {any[]} args arguments to pass to the method. Last one must be the callback
30
+ */
31
+ static push(issuer: any, callbackMethod: (...argzz: (any | Callback)[]) => void, ...args: (any | Callback)[]): void;
32
+ /**
33
+ * @summary Sets the lock to be used
34
+ * @param lock
35
+ */
36
+ static setLock(lock: TransactionLock): void;
37
+ /**
38
+ * @summary gets the lock
39
+ */
40
+ static getLock(): TransactionLock;
41
+ /**
42
+ * @summary submits a transaction
43
+ * @param {Transaction} transaction
44
+ */
45
+ static submit(transaction: Transaction): void;
46
+ /**
47
+ * @summary releases the lock
48
+ * @param {Err} err
49
+ */
50
+ static release(err?: Error): Promise<void>;
51
+ /**
52
+ * @summary retrieves the metadata for the transaction
53
+ */
54
+ getMetadata(): any[] | undefined;
55
+ /**
56
+ * @summary Binds a new operation to the current transaction
57
+ * @param {Transaction} nextTransaction
58
+ */
59
+ bindTransaction(nextTransaction: Transaction): void;
60
+ /**
61
+ * @summary Binds the Transactional Decorated Object to the transaction
62
+ * @description by having all {@link transactional} decorated
63
+ * methods always pass the current Transaction as an argument
64
+ *
65
+ * @param {any} obj
66
+ * @return {any} the bound {@param obj}
67
+ */
68
+ bindToTransaction(obj: any): any;
69
+ /**
70
+ * @summary Fires the Transaction
71
+ */
72
+ fire(): any;
73
+ /**
74
+ * @summary toString override
75
+ * @param {boolean} [withId] defaults to true
76
+ * @param {boolean} [withLog] defaults to true
77
+ */
78
+ toString(withId?: boolean, withLog?: boolean): string;
79
+ }
@@ -0,0 +1,3 @@
1
+ import{getAllProperties,getClassDecorators}from"@decaf-ts/reflection";import{SyncronousLock}from"./locks/SyncronousLock";import{DBKeys,getAllPropertyDecoratorsRecursive}from"@decaf-ts/db-decorators";import{getObjectName}from"./utils";import{TransactionalKeys}from"./constants";class Transaction{constructor(t,o,i,s){this.id=Date.now(),this.action=i,this.method=o,this.log=[[this.id,t,o].join(" | ")],this.source=t,this.metadata=s}static push(t,o,...i){let s=i.pop();if(!s||"function"!=typeof s)throw new Error("Missing callback");let e=(t,...o)=>{this.getLock().release(t).then(()=>s(t,...o))},n=new Transaction(t.constructor.name,o.name?getObjectName(o):"Anonymous",()=>o.call(n.bindToTransaction(t),...i,e));this.getLock().submit(n)}static setLock(t){this.lock=t}static getLock(){return this.lock||(this.lock=new SyncronousLock),this.lock}static submit(t){this.getLock().submit(t)}static async release(t){return this.getLock().release(t)}getMetadata(){return this.metadata?[...this.metadata]:void 0}bindTransaction(t){this.log.push(...t.log),t.bindTransaction=this.bindToTransaction.bind(this),t.bindToTransaction=this.bindToTransaction.bind(this),this.action=t.action}bindToTransaction(i){let s=getAllPropertyDecoratorsRecursive(i,void 0,TransactionalKeys.REFLECT);if(!s)return i;let e=this,t=getAllProperties(i).reduce((t,o)=>(-1!==Object.keys(s).indexOf(o)&&s[o].find(t=>t.key===TransactionalKeys.TRANSACTIONAL)?t[o]=(...t)=>i[o].call(i.__originalObj||i,e,...t):"clazz"===o||"constructor"===o?t[o]=i[o]:"function"==typeof i[o]?t[o]=i[o].bind(i.__originalObj||i):"object"==typeof i[o]&&i[o].constructor&&getClassDecorators(TransactionalKeys.REFLECT,i[o]).find(t=>t.key===TransactionalKeys.TRANSACTIONAL)?t[o]=e.bindToTransaction(i[o]):t[o]=i[o],t),{});return t[DBKeys.ORIGINAL]=i[DBKeys.ORIGINAL]||i,t.toString=()=>getObjectName(t[DBKeys.ORIGINAL])+" proxy for transaction "+this.id,t}fire(){if(this.action)return this.action();throw new Error("Missing the method")}toString(t=!0,o=!1){return`${t?`[${this.id}]`:""}[Transaction][${this.source}.`+this.method+(o?`]
2
+ Transaction Log:
3
+ `+this.log.join("\n"):"]")}}export{Transaction};
@@ -0,0 +1 @@
1
+ export declare const TransactionalKeys: Record<string, string>;
@@ -0,0 +1 @@
1
+ let TransactionalKeys={REFLECT:"model.transactional.",TRANSACTIONAL:"transactional"};export{TransactionalKeys};
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @summary gets the transactions reflections key
3
+ * @function getRepoKey
4
+ * @param {string} key
5
+ * @memberOf module:db-decorators.Transactions
6
+ * */
7
+ export declare const getTransactionalKey: (key: string) => string;
8
+ /**
9
+ * @summary Sets a class Async (promise based) method as transactional
10
+ *
11
+ * @param {any[]} [data] option metadata available to the {@link TransactionLock}
12
+ *
13
+ * @function transactionalPromise
14
+ *
15
+ * @memberOf module:db-decorators.Decorators.transactions
16
+ */
17
+ export declare function transactional(...data: any[]): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => void;
18
+ /**
19
+ * @summary Util function to wrap super calls with the transaction when the super's method is also transactional
20
+ *
21
+ * @param {Function} method the super method (must be bound to the proper this), eg: super.create.bind(this)
22
+ * @param {any[]} args the arguments to call the method with
23
+ *
24
+ * @memberOf module:db-decorators.Transaction
25
+ */
26
+ export declare function transactionalSuperCall(method: any, ...args: any): void;
@@ -0,0 +1 @@
1
+ import{TransactionalKeys}from"./constants";import{metadata}from"@decaf-ts/reflection";import{Transaction}from"./Transaction";let getTransactionalKey=n=>TransactionalKeys.REFLECT+n;function transactional(...l){return function(n,c,a){metadata(getTransactionalKey(TransactionalKeys.TRANSACTIONAL),l)(n,c);let s=a.value;function t(...o){let r=this;return new Promise((t,e)=>{let a=(n,a)=>{Transaction.release(n).then(()=>{if(n)return e(n);t(a)})},i=o.shift();if(i instanceof Transaction){let n=new Transaction(this.constructor.name,c,async()=>{s.call(n.bindToTransaction(r),...o).then(t).catch(e)},l.length?l:void 0);i.bindTransaction(n),i.fire()}else o.unshift(i),i=void 0,i=new Transaction(this.constructor.name,c,()=>{s.call(i.bindToTransaction(r),...o).then(n=>a(void 0,n)).catch(a)},l.length?l:void 0),Transaction.submit(i)})}Object.defineProperty(t,"name",{value:c}),a.value=t}}function transactionalSuperCall(n,...a){n(Transaction.getLock().currentTransaction,...a)}export{getTransactionalKey,transactional,transactionalSuperCall};
@@ -0,0 +1,24 @@
1
+ export * from "./interfaces";
2
+ export * from "./locks";
3
+ export * from "./constants";
4
+ export * from "./decorators";
5
+ export * from "./Transaction";
6
+ export * from "./types";
7
+ /**
8
+ * @summary Module summary
9
+ * @description Module description
10
+ * @module ts-workspace
11
+ */
12
+ /**
13
+ * @summary Namespace summary
14
+ * @description Namespace description
15
+ * @namespace Namespace
16
+ * @memberOf module:ts-workspace
17
+ */
18
+ /**
19
+ * @summary stores the current package version
20
+ * @description this is how you should document a constant
21
+ * @const VERSION
22
+ * @memberOf module:ts-workspace
23
+ */
24
+ export declare const VERSION = "0.0.3";
@@ -0,0 +1 @@
1
+ export*from"./interfaces";export*from"./locks";export*from"./constants";export*from"./decorators";export*from"./Transaction";export*from"./types";let VERSION="0.0.3";export{VERSION};
@@ -0,0 +1,26 @@
1
+ import { Transaction } from "../Transaction";
2
+ /**
3
+ * @summary Transaction lock interface
4
+ * @interface TransactionLock
5
+ *
6
+ * @category Transactions
7
+ */
8
+ export interface TransactionLock {
9
+ /**
10
+ * @summary stores the current transactions
11
+ * @property currentTransaction
12
+ */
13
+ currentTransaction?: Transaction;
14
+ /**
15
+ * @summary Submits a transaction to be processed
16
+ * @param {Transaction} transaction
17
+ * @method
18
+ */
19
+ submit(transaction: Transaction): void;
20
+ /**
21
+ * @summary Releases The lock after the conclusion of a transaction
22
+ * @param {Err} [err] the error (if any) that caused the release
23
+ * @method
24
+ */
25
+ release(err?: Error): Promise<void>;
26
+ }
File without changes
@@ -0,0 +1 @@
1
+ export * from "./TransactionLock";
@@ -0,0 +1 @@
1
+ export*from"./TransactionLock";
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @summary Simple Promise based Lock class
3
+ *
4
+ * @class Lock
5
+ * @category Transactions
6
+ */
7
+ export declare class Lock {
8
+ private queue;
9
+ private locked;
10
+ /**
11
+ * @summary executes when lock is available
12
+ * @param {Function} func
13
+ */
14
+ execute(func: () => any): Promise<any>;
15
+ /**
16
+ * @summary waits to acquire the lock
17
+ * @param {string} [issuer]
18
+ */
19
+ acquire(): Promise<void>;
20
+ /**
21
+ * @summary releases the lock
22
+ */
23
+ release(): void;
24
+ }
@@ -0,0 +1 @@
1
+ class Lock{constructor(){this.queue=[],this.locked=!1}async execute(e){await this.acquire();let s;try{s=await Promise.resolve(e())}catch(e){throw this.release(),e}return this.release(),s}async acquire(){let s=this;return s.locked?new Promise(e=>s.queue.push(e)):(s.locked=!0,Promise.resolve())}release(){var e=this.queue.shift();e?void 0===globalThis.window?globalThis.process.nextTick(e):setTimeout(e,0):this.locked=!1}}export{Lock};