@decaf-ts/db-decorators 0.6.20 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +1 -1
  2. package/dist/db-decorators.cjs +1 -1
  3. package/dist/db-decorators.cjs.map +1 -1
  4. package/dist/db-decorators.js +1 -1
  5. package/dist/db-decorators.js.map +1 -1
  6. package/lib/esm/identity/decorators.d.ts +1 -1
  7. package/lib/esm/identity/decorators.js +8 -4
  8. package/lib/esm/identity/decorators.js.map +1 -1
  9. package/lib/esm/identity/index.d.ts +0 -1
  10. package/lib/esm/identity/index.js +0 -1
  11. package/lib/esm/identity/index.js.map +1 -1
  12. package/lib/esm/index.d.ts +3 -1
  13. package/lib/esm/index.js +5 -1
  14. package/lib/esm/index.js.map +1 -1
  15. package/lib/esm/model/constants.js +1 -1
  16. package/lib/esm/model/constants.js.map +1 -1
  17. package/lib/esm/model/decorators.d.ts +3 -3
  18. package/lib/esm/model/decorators.js +9 -11
  19. package/lib/esm/model/decorators.js.map +1 -1
  20. package/lib/esm/model/index.d.ts +0 -2
  21. package/lib/esm/model/index.js +0 -2
  22. package/lib/esm/model/index.js.map +1 -1
  23. package/lib/esm/model/validation.d.ts +7 -7
  24. package/lib/esm/model/validation.js +52 -56
  25. package/lib/esm/model/validation.js.map +1 -1
  26. package/lib/esm/operations/constants.d.ts +11 -0
  27. package/lib/esm/operations/constants.js +12 -0
  28. package/lib/esm/operations/constants.js.map +1 -1
  29. package/lib/esm/operations/decorators.js +4 -6
  30. package/lib/esm/operations/decorators.js.map +1 -1
  31. package/lib/esm/overrides/Metadata.d.ts +50 -0
  32. package/lib/esm/overrides/Metadata.js +2 -0
  33. package/lib/esm/overrides/Metadata.js.map +1 -0
  34. package/lib/esm/overrides/Model.d.ts +65 -0
  35. package/lib/esm/overrides/Model.js +2 -0
  36. package/lib/esm/overrides/Model.js.map +1 -0
  37. package/lib/esm/overrides/index.d.ts +3 -0
  38. package/lib/esm/overrides/index.js +4 -0
  39. package/lib/esm/overrides/index.js.map +1 -0
  40. package/lib/esm/overrides/overrides.js +102 -0
  41. package/lib/esm/overrides/overrides.js.map +1 -0
  42. package/lib/esm/repository/BaseRepository.d.ts +3 -1
  43. package/lib/esm/repository/BaseRepository.js +6 -4
  44. package/lib/esm/repository/BaseRepository.js.map +1 -1
  45. package/lib/esm/repository/Context.d.ts +2 -1
  46. package/lib/esm/repository/Context.js.map +1 -1
  47. package/lib/esm/repository/Repository.d.ts +2 -9
  48. package/lib/esm/repository/Repository.js +0 -11
  49. package/lib/esm/repository/Repository.js.map +1 -1
  50. package/lib/esm/repository/types.d.ts +2 -1
  51. package/lib/esm/repository/utils.d.ts +2 -16
  52. package/lib/esm/repository/utils.js +96 -77
  53. package/lib/esm/repository/utils.js.map +1 -1
  54. package/lib/esm/validation/decorators.d.ts +1 -1
  55. package/lib/esm/validation/decorators.js +13 -8
  56. package/lib/esm/validation/decorators.js.map +1 -1
  57. package/lib/esm/validation/validators/ReadOnlyValidator.js +1 -1
  58. package/lib/esm/validation/validators/ReadOnlyValidator.js.map +1 -1
  59. package/lib/identity/decorators.cjs +7 -3
  60. package/lib/identity/decorators.d.ts +1 -1
  61. package/lib/identity/decorators.js.map +1 -1
  62. package/lib/identity/index.cjs +0 -1
  63. package/lib/identity/index.d.ts +0 -1
  64. package/lib/identity/index.js.map +1 -1
  65. package/lib/index.cjs +6 -2
  66. package/lib/index.d.ts +3 -1
  67. package/lib/index.js.map +1 -1
  68. package/lib/model/constants.cjs +1 -1
  69. package/lib/model/constants.js.map +1 -1
  70. package/lib/model/decorators.cjs +10 -12
  71. package/lib/model/decorators.d.ts +3 -3
  72. package/lib/model/decorators.js.map +1 -1
  73. package/lib/model/index.cjs +0 -2
  74. package/lib/model/index.d.ts +0 -2
  75. package/lib/model/index.js.map +1 -1
  76. package/lib/model/validation.cjs +51 -55
  77. package/lib/model/validation.d.ts +7 -7
  78. package/lib/model/validation.js.map +1 -1
  79. package/lib/operations/constants.cjs +13 -1
  80. package/lib/operations/constants.d.ts +11 -0
  81. package/lib/operations/constants.js.map +1 -1
  82. package/lib/operations/decorators.cjs +3 -5
  83. package/lib/operations/decorators.js.map +1 -1
  84. package/lib/overrides/Metadata.cjs +3 -0
  85. package/lib/overrides/Metadata.d.ts +50 -0
  86. package/lib/overrides/Metadata.js.map +1 -0
  87. package/lib/overrides/Model.cjs +4 -0
  88. package/lib/overrides/Model.d.ts +65 -0
  89. package/lib/overrides/Model.js.map +1 -0
  90. package/lib/overrides/index.cjs +20 -0
  91. package/lib/overrides/index.d.ts +3 -0
  92. package/lib/overrides/index.js.map +1 -0
  93. package/lib/overrides/overrides.cjs +104 -0
  94. package/lib/overrides/overrides.js.map +1 -0
  95. package/lib/repository/BaseRepository.cjs +6 -4
  96. package/lib/repository/BaseRepository.d.ts +3 -1
  97. package/lib/repository/BaseRepository.js.map +1 -1
  98. package/lib/repository/Context.d.ts +2 -1
  99. package/lib/repository/Context.js.map +1 -1
  100. package/lib/repository/Repository.cjs +0 -11
  101. package/lib/repository/Repository.d.ts +2 -9
  102. package/lib/repository/Repository.js.map +1 -1
  103. package/lib/repository/types.d.ts +2 -1
  104. package/lib/repository/utils.cjs +96 -78
  105. package/lib/repository/utils.d.ts +2 -16
  106. package/lib/repository/utils.js.map +1 -1
  107. package/lib/validation/decorators.cjs +16 -11
  108. package/lib/validation/decorators.d.ts +1 -1
  109. package/lib/validation/decorators.js.map +1 -1
  110. package/lib/validation/validators/ReadOnlyValidator.cjs +2 -2
  111. package/lib/validation/validators/ReadOnlyValidator.js.map +1 -1
  112. package/package.json +5 -6
  113. package/lib/esm/identity/utils.d.ts +0 -47
  114. package/lib/esm/identity/utils.js +0 -75
  115. package/lib/esm/identity/utils.js.map +0 -1
  116. package/lib/esm/model/overrides.js +0 -33
  117. package/lib/esm/model/overrides.js.map +0 -1
  118. package/lib/esm/model/utils.d.ts +0 -45
  119. package/lib/esm/model/utils.js +0 -71
  120. package/lib/esm/model/utils.js.map +0 -1
  121. package/lib/identity/utils.cjs +0 -79
  122. package/lib/identity/utils.d.ts +0 -47
  123. package/lib/identity/utils.js.map +0 -1
  124. package/lib/model/overrides.cjs +0 -35
  125. package/lib/model/overrides.js.map +0 -1
  126. package/lib/model/utils.cjs +0 -75
  127. package/lib/model/utils.d.ts +0 -45
  128. package/lib/model/utils.js.map +0 -1
  129. /package/lib/esm/{model → overrides}/overrides.d.ts +0 -0
  130. /package/lib/{model → overrides}/overrides.d.ts +0 -0
package/README.md CHANGED
@@ -27,7 +27,7 @@ The db-decorators library provides a comprehensive set of TypeScript decorators
27
27
 
28
28
  Documentation available [here](https://decaf-ts.github.io/db-decorators/)
29
29
 
30
- Minimal size: ##PACKAGE_SIZE## kb gzipped
30
+ Minimal size: 7.1 KB kb gzipped
31
31
 
32
32
 
33
33
 
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,a,o,s){"use strict";const n={REFLECT:t.ModelKeys.REFLECT+"persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},i="_",c="dd/MM/yyyy HH:mm:ss:S",p={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"}},l={REFLECT:"db.update.validation.",TIMESTAMP:n.TIMESTAMP,READONLY:n.READONLY};e.ReadOnlyValidator=class extends t.Validator{constructor(){super(p.READONLY.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,r){if(void 0!==e)return a.isEqual(e,t)?void 0:this.getMessage(r||this.message)}},e.ReadOnlyValidator=r.__decorate([t.validator(l.READONLY),r.__metadata("design:paramtypes",[])],e.ReadOnlyValidator),e.TimestampValidator=class extends t.Validator{constructor(){super(p.TIMESTAMP.INVALID)}hasErrors(e,...t){}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?void 0:r}}},e.TimestampValidator=r.__decorate([t.validator(l.TIMESTAMP),r.__metadata("design:paramtypes",[])],e.TimestampValidator);class d extends t.Validator{constructor(e=t.DEFAULT_ERROR_MESSAGES.DEFAULT,...r){super(e,...r)}}var u,y;t.Validation.updateKey=e=>l.REFLECT+e,e.OperationKeys=void 0,(u=e.OperationKeys||(e.OperationKeys={})).REFLECT="decaf.model.db.operations.",u.CREATE="create",u.READ="read",u.UPDATE="update",u.DELETE="delete",u.ON="on.",u.AFTER="after.",u.BLOCK="block",e.BulkCrudOperationKeys=void 0,(y=e.BulkCrudOperationKeys||(e.BulkCrudOperationKeys={})).CREATE_ALL="createAll",y.READ_ALL="readAll",y.UPDATE_ALL="updateAll",y.DELETE_ALL="deleteAll";const f={CREATE:[e.OperationKeys.CREATE],READ:[e.OperationKeys.READ],UPDATE:[e.OperationKeys.UPDATE],DELETE:[e.OperationKeys.DELETE],CREATE_UPDATE:[e.OperationKeys.CREATE,e.OperationKeys.UPDATE],READ_CREATE:[e.OperationKeys.READ,e.OperationKeys.CREATE],ALL:[e.OperationKeys.CREATE,e.OperationKeys.READ,e.OperationKeys.UPDATE,e.OperationKeys.DELETE]};class h{constructor(){this.cache={}}get(e,t,r,a){let o;a=a||[];try{o="string"==typeof e?e:e.constructor.name,a.unshift(...Object.values(this.cache[o][t][r]||[]))}catch(t){if("string"==typeof e||e===Object.prototype||Object.getPrototypeOf(e)===Object.prototype)return a}let s=Object.getPrototypeOf(e);return s.constructor.name===o&&(s=Object.getPrototypeOf(s)),this.get(s,t,r,a)}register(e,t,r,a){const o=r.constructor.name,s=E.getHandlerName(e);this.cache[o]||(this.cache[o]={}),this.cache[o][a]||(this.cache[o][a]={}),this.cache[o][a][t]||(this.cache[o][a][t]={}),this.cache[o][a][t][s]||(this.cache[o][a][t][s]=e)}}class E{constructor(){}static getHandlerName(e){return e.name?e.name:t.Hashing.hash(e.toString())}static key(t){return e.OperationKeys.REFLECT+t}static get(e,t,r){return E.registry.get(e,t,r)}static getOpRegistry(){return E.registry||(E.registry=new h),E.registry}static register(e,t,r,a){E.getOpRegistry().register(e,t,r,a)}}class O extends Error{constructor(e,t,r){if(t instanceof O)return t;super(`[${e}] ${t instanceof Error?t.message:t}`),this.code=r,t instanceof Error&&(this.stack=t.stack)}}class m extends O{constructor(e,t=m.name,r=400){super(t,e,r)}}class A extends m{constructor(e){super(e,A.name,422)}}class g extends O{constructor(e,t=g.name,r=500){super(t,e,r)}}class T extends g{constructor(e){super(e,T.name,500)}}class w extends m{constructor(e){super(e,w.name,404)}}class P extends m{constructor(e){super(e,P.name,409)}}const R=(e,t,r,a)=>{const o=r.constructor.name;if(!o)throw new g("Could not determine model class");a=a||{},e.props.handlers[o]&&e.props.handlers[o][t]&&(a={...e.props.handlers[o][t],...a});let s=Object.getPrototypeOf(r);return s===Object.prototype?a:(s.constructor.name===o&&(s=Object.getPrototypeOf(s)),R(e,t,s,a))};async function D(t,r,a,o,s,n){const i=K(a,o,s);if(!i)return;const c=M(k(S(a,i,s)));for(const i of c){const c=[r,i.data.length>1?i.data:i.data[0],i.prop.length>1?i.prop:i.prop[0],a];if(o===e.OperationKeys.UPDATE&&s===e.OperationKeys.ON){if(!n)throw new g("Missing old model for update operation");c.push(n)}try{await i.handler.apply(t,c)}catch(e){const t=`Failed to execute handler ${i.handler.name} for ${i.prop} on ${a.constructor.name} due to error: ${e}`;if(r.get("breakOnHandlerError"))throw new g(t)}}}function K(t,r,o){const s=a.Reflection.getAllPropertyDecorators(t,e.OperationKeys.REFLECT+(o||""));if(s)return Object.keys(s).reduce((e,t)=>{const a=s[t].filter(e=>e.key===r);return a&&a.length&&(e||(e={}),e[t]=a),e},void 0)}const b=(r,o,...s)=>{const n=o||{},i=a.Reflection.getAllPropertyDecorators(r,...s);if(i&&(r=>{Object.entries(r).forEach(([r,a])=>{n[r]=n[r]||[],((r,...a)=>{a.forEach(a=>{let o;if(!(o=n[r].find(e=>e.key===a.key))||o.props.operation!==a.props.operation)return void n[r].push(a);if(a.key===t.ModelKeys.TYPE)return;const{handlers:s,operation:i}=a.props;if(!i||!i.match(RegExp(`^(:?${e.OperationKeys.ON}|${e.OperationKeys.AFTER})(:?${e.OperationKeys.CREATE}|${e.OperationKeys.READ}|${e.OperationKeys.UPDATE}|${e.OperationKeys.DELETE})$`)))return void n[r].push(a);const c=o.props.handlers;Object.entries(s).forEach(([e,t])=>{e in c?Object.entries(t).forEach(([t,r])=>{t in c[e]?Object.entries(r).forEach(([r,a])=>{r in c[e][t]||(c[e][t][r]=a)}):c[e][t]=r}):c[e]=t})})})(r,...a)})})(i),Object.getPrototypeOf(r)===Object.prototype)return n;const c=Object.getPrototypeOf(r);return c?b(c,n,...s):n},v=50,L={priority:v};function S(e,t,r){const a=[];for(const o in t){const s=t[o];for(const t of s){const{key:s}=t,n=E.get(e,o,r+s);if(!n||!n.length)throw new g(`Could not find registered handler for the operation ${r+s} under property ${o}`);const i=R(t,o,e);if(!i||Object.values(i).length!==n.length)throw new g("Args and handlers length do not match");for(let e=0;e<n.length;e++){const t=i[n[e].name].data;a.push({handler:n[e],data:[t],prop:[o]})}}}return a}function k(e){const t=e.reduce((e,t)=>{if(!t||!t.data||!t.prop)throw new g("Missing decorator properties or data");if(!t.data[0].group)return e.set(Symbol(),t),e;const r=t.data[0].group;if(e.has(r)){const a=e.get(r);e.set(r,{handler:a.handler,data:[...a.data,...t.data],prop:[...a.prop,...t.prop]})}else e.set(r,{...t});return e},new Map),r=Array.from(t.values());return r.forEach(e=>{const t=e.data.map((t,r)=>({data:t,prop:e.prop[r]}));t.sort((e,t)=>(e.data.groupPriority??50)-(t.data.groupPriority??50)),e.data=t.map(e=>e.data),e.prop=t.map(e=>e.prop)}),r}function M(e){return e.sort((e,t)=>(e.data[0].priority??v)-(t.data[0].priority??v)),e}function C(e,t,r){return N(f.CREATE_UPDATE,e,t,r)}function x(e,t,r){return N(f.UPDATE,e,t,r)}function I(e,t,r){return N(f.CREATE,e,t,r)}function N(t=f.ALL,r,a,o){return U(e.OperationKeys.ON,t,r,a,o)}function j(t=f.ALL,r,a,o){return U(e.OperationKeys.AFTER,t,r,a,o)}function U(e,r=f.ALL,o,s,n=L){return(i,c)=>{const p=i.constructor.name,l=r.reduce((r,a)=>{const l=e+a;let d=Reflect.getMetadata(E.key(l),i,c);d||(d={operation:a,handlers:{}});const u=E.getHandlerName(o);let y=n;if(s){if(Object.keys(s).filter(e=>e in n).length>0)throw new g("Unable to merge groupSort into dataToAdd due to overlaping keys");y={...n,...s}}return d.handlers[p]&&d.handlers[p][c]&&u in d.handlers[p][c]||(d.handlers[p]=d.handlers[p]||{},d.handlers[p][c]=d.handlers[p][c]||{},d.handlers[p][c][u]={data:y},r.push(((e,t)=>(r,a)=>{E.register(t,e,r,a)})(l,o),t.propMetadata(E.key(l),d))),r},[]);return a.apply(...l)(i,c)}}function V(e,t){return(...r)=>o.metadata(e,{args:r,handler:t})}const F={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},$=e=>(new _).accumulate(Object.assign({},e,{timestamp:new Date}));class _{constructor(){this.cache=new s.ObjectAccumulator,Object.defineProperty(this,"cache",{value:new s.ObjectAccumulator,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=$}accumulate(e){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(e),writable:!1,enumerable:!1,configurable:!0}),this}get timestamp(){return this.cache.timestamp}get(e){try{return this.cache.get(e)}catch(t){const r=this.cache.parentContext;if(r)return r.get(e);throw t}}static childFrom(e,t){return _.factory(Object.assign({},e.cache,t||{}))}static async from(e,t,r,...a){return _.factory(Object.assign({},F,t,{operation:e,model:r}))}static async args(e,t,r,a,o){const s=r.pop();async function n(){return a?a.context(e,o||{},t,...r):_.from(e,o||{},t,...r)}let i;return s?s instanceof _?(i=s,r.push(s)):(r.push(s),i=await n(),r.push(i)):(i=await n(),r.push(i)),{context:i,args:r}}}function H(e,t,r,a,o){const s=o||r.name;e[s]=new Proxy(e[s],{apply:async(e,r,o)=>{let s=t.call(r,...o);s instanceof Promise&&(s=await s);const n=s[s.length-1];if(!(n instanceof _))throw new g("Missing a context");let i=await e.call(r,...s);return i instanceof Promise&&(i=await i),i=a.call(r,i,n),i instanceof Promise&&(i=await i),i}})}function Y(e){const r=b(e,void 0,n.REFLECT+n.ID),a=Object.entries(r).reduce((e,[r,a])=>{const o=a.filter(e=>e.key!==t.ModelKeys.TYPE);return o&&o.length&&(e[r]=e[r]||[],e[r].push(...o)),e},{});if(!a||!Object.keys(a).length)throw new g("Could not find ID decorated Property");if(Object.keys(a).length>1)throw new g(t.sf(Object.keys(a).join(", ")));const o=Object.keys(a)[0];if(!o)throw new g("Could not find ID decorated Property");return{id:o,props:a[o][0].props}}function B(e,t=!1){const r=Y(e).id,a=e[r];if(void 0===a&&!t)throw new g("No value for the Id is defined under the property "+r);return a}class q{get class(){if(!this._class)throw new g("No class definition found for this repository");return this._class}get pk(){if(!this._pk){const{id:e,props:t}=Y(new this.class);this._pk=e,this._pkProps=t}return this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(e){e&&(this._class=e);const t=this;[this.create,this.read,this.update,this.delete].forEach(e=>{const r=e.name;H(t,t[r+"Prefix"],e,t[r+"Suffix"])})}async createAll(e,...t){return Promise.all(e.map(e=>this.create(e,...t)))}async createPrefix(t,...r){const a=await _.args(e.OperationKeys.CREATE,this.class,r);return t=new this.class(t),await D(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),[t,...a.args]}async createSuffix(t,r){return await D(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER),t}async createAllPrefix(t,...r){const a=await _.args(e.OperationKeys.CREATE,this.class,r);return await Promise.all(t.map(async t=>(t=new this.class(t),await D(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t))),[t,...a.args]}async createAllSuffix(t,r){return await Promise.all(t.map(t=>D(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER))),t}async readAll(e,...t){return await Promise.all(e.map(e=>this.read(e,...t)))}async readSuffix(t,r){return await D(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER),t}async readPrefix(t,...r){const a=await _.args(e.OperationKeys.READ,this.class,r),o=new this.class;return o[this.pk]=t,await D(this,a.context,o,e.OperationKeys.READ,e.OperationKeys.ON),[t,...a.args]}async readAllPrefix(t,...r){const a=await _.args(e.OperationKeys.READ,this.class,r);return await Promise.all(t.map(async t=>{const r=new this.class;return r[this.pk]=t,D(this,a.context,r,e.OperationKeys.READ,e.OperationKeys.ON)})),[t,...a.args]}async readAllSuffix(t,r){return await Promise.all(t.map(t=>D(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER))),t}async updateAll(e,...t){return Promise.all(e.map(e=>this.update(e,...t)))}async updateSuffix(t,r){return await D(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER),t}async updatePrefix(t,...r){const a=await _.args(e.OperationKeys.UPDATE,this.class,r),o=t[this.pk];if(!o)throw new g("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);return await D(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s),[t,...a.args]}async updateAllPrefix(t,...r){const a=await _.args(e.OperationKeys.UPDATE,this.class,r);return await Promise.all(t.map(t=>(t=new this.class(t),D(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON),t))),[t,...a.args]}async updateAllSuffix(t,r){return await Promise.all(t.map(t=>D(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER))),t}async deleteAll(e,...t){return Promise.all(e.map(e=>this.delete(e,...t)))}async deleteSuffix(t,r){return await D(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER),t}async deletePrefix(t,...r){const a=await _.args(e.OperationKeys.DELETE,this.class,r),o=await this.read(t,...a.args);return await D(this,a.context,o,e.OperationKeys.DELETE,e.OperationKeys.ON),[t,...a.args]}async deleteAllPrefix(t,...r){const a=await _.args(e.OperationKeys.DELETE,this.class,r),o=await this.readAll(t,...a.args);return await Promise.all(o.map(async t=>D(this,a.context,t,e.OperationKeys.DELETE,e.OperationKeys.ON))),[t,...a.args]}async deleteAllSuffix(t,r){return await Promise.all(t.map(t=>D(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER))),t}merge(e,t){const r=e=>Object.entries(e).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});return new this.class(Object.assign({},r(e),r(t)))}toString(){return this.class.name+" Repository"}}class z extends q{constructor(e){super(e)}async createPrefix(t,...r){const a=await _.args(e.OperationKeys.CREATE,this.class,r);t=new this.class(t),await D(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON);const o=await Promise.resolve(t.hasErrors());if(o)throw new A(o.toString());return[t,...a.args]}async createAllPrefix(t,...r){const a=await _.args(e.OperationKeys.CREATE,this.class,r);await Promise.all(t.map(async t=>(t=new this.class(t),await D(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t)));const o=(await Promise.all(t.map(e=>Promise.resolve(e.hasErrors())))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(o)throw new A(o);return[t,...a.args]}async updatePrefix(t,...r){const a=await _.args(e.OperationKeys.UPDATE,this.class,r),o=t[this.pk];if(!o)throw new g("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);t=this.merge(s,t),await D(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s);const n=await Promise.resolve(t.hasErrors(s));if(n)throw new A(n.toString());return[t,...a.args]}async updateAllPrefix(t,...r){const a=await _.args(e.OperationKeys.UPDATE,this.class,r),o=t.map(e=>{const t=e[this.pk];if(void 0===t)throw new g("No value for the Id is defined under the property "+this.pk);return t}),s=await this.readAll(o,...a.args);t=t.map((e,t)=>this.merge(s[t],e)),await Promise.all(t.map((t,r)=>D(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s[r])));const n=(await Promise.all(t.map((e,t)=>Promise.resolve(e.hasErrors(s[t]))))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(n)throw new A(n);return[t,...a.args]}static key(e){return n.REFLECT+e}}function Q(e=p.READONLY.INVALID){const r=t.Validation.updateKey(n.READONLY);return t.Decoration.for(r).define(t.propMetadata(r,{message:e})).apply()}async function G(e,t,r,a){a[r]=e.timestamp}async function J(e,t,r,a){if(a[r])try{a[r]=JSON.stringify(a[r])}catch(e){throw new T(`Failed to serialize ${r.toString()} property of model ${a.constructor.name}: e`)}}async function W(e,t,r,a){if(a[r]&&"string"==typeof a[r])try{a[r]=JSON.parse(a[r])}catch(e){throw new T(`Failed to deserialize ${r.toString()} property of model ${a.constructor.name}: ${e}`)}}function Z(e,r){const a=[];for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&!r.includes(o)){const r=t.getValidationDecorators(e,o,l.REFLECT),s=t.getValidationDecorators(e,o).decorators.find(({key:e})=>e===t.ValidationKeys.LIST);s&&r.decorators.push(s),a.push(r)}return a}function X(e,r,a,o,s){const n=t.Validation.get(o.key);if(!n)throw Error("Missing validator for "+o.key);if(!n.updateHasErrors)return t.toConditionalPromise(void 0,s);if(!s&&o.props.async)return t.toConditionalPromise(void 0,s);const i=Object.values(o.props)||{},c=n.updateHasErrors(e[a],r[a],...i);return t.toConditionalPromise(c,s)}function ee(e,r,a,o,s){const n={};for(const i of o){if(!s&&i.props.async)continue;let o=X(e,r,a,i,s);if(i.key===t.ValidationKeys.LIST&&(!o||s)){const n=e[a],c=r[a],p=n instanceof Set?[...n]:n,l=c instanceof Set?[...c]:c;if(p&&p.length>0){const e=[i.props.class||i.props.clazz||i.props.customTypes].flat().map(e=>((e=(e="function"!=typeof e||e.name?e:e()).name?e.name:e)+"").toLowerCase()),r=p.map(r=>{const a=B(r,!0);if(!a)return"Failed to find model id";const o=l.find(e=>a===B(e,!0));return t.Model.isModel(r)?r.hasErrors(o):e.includes(typeof r)?void 0:"Value has no validatable type"});if(s)o=Promise.all(r).then(e=>e.every(e=>!e)?void 0:e);else{const e=r.every(e=>!e);o=r.length>0&&!e?r:void 0}}}o&&(n[i.key]=o)}if(!s)return Object.keys(n).length>0?n:void 0;const i=Object.keys(n),c=Object.values(n);return Promise.all(c).then(e=>{const t={};for(let r=0;r<e.length;r++){const a=e[r];void 0!==a&&(t[i[r]]=a)}return Object.keys(t).length>0?t:void 0})}function te(e,r,o,...s){const n=Z(r,s),i={},c={};for(const{prop:s,decorators:p}of n){const n=s+"";let l=r[s];if(!p?.length)continue;const d=p.find(e=>[t.ModelKeys.TYPE,t.ValidationKeys.TYPE].includes(e.key));if(!d)continue;const u=d.props.name;if([Array.name,Set.name].includes(u)){const{decorators:e}=a.Reflection.getPropertyDecorators(t.ValidationKeys.REFLECT,r,n);if(!e.some(e=>e.key===t.ValidationKeys.LIST)){i[n]={[t.ValidationKeys.TYPE]:`Array or Set property '${n}' requires a @list decorator`};continue}if(l&&!(Array.isArray(l)||l instanceof Set)){i[n]={[t.ValidationKeys.TYPE]:`Property '${s+""}' must be either an array or a Set`};continue}for(let r=e.length-1;r>=0;r--)e[r].key===t.ModelKeys.TYPE&&e.splice(r,1);l=l instanceof Set?[...l]:l}const y=ee(r,e,n,p,o)||{},f=t.Model.isPropertyModel(r,n);if(l&&f){const t=l;"object"!=typeof t||!t.hasErrors||"function"!=typeof t.hasErrors||(c[n]=t.hasErrors(e[s]))}(Object.keys(y).length>0||o)&&(i[n]=y),o||Object.entries(c[n]||{}).forEach(([e,t])=>{void 0!==t&&(i[`${n}.${e}`]=t)})}if(!o)return Object.keys(i).length>0?new t.ModelErrorDefinition(i):void 0;const p=i,l=Object.keys(p),d=Object.values(p);return Promise.allSettled(d).then(async e=>{const r={};for(const[e,t]of Object.entries(c)){const a=await t;a&&Object.entries(a).forEach(([t,a])=>{void 0!==a&&(r[[e,t].join(".")]=a)})}for(let t=0;t<e.length;t++){const a=l[t],o=e[t];"fulfilled"===o.status&&void 0!==o.value?r[a]=o.value:"rejected"===o.status&&(r[a]=o.reason instanceof Error?o.reason.message:(o.reason||"Validation failed")+"")}return Object.keys(r).length>0?new t.ModelErrorDefinition(r):void 0})}function re(e,r,a,o,s){if(void 0===o[a])return;const n=t.Hashing.hash(o[a]);s&&o[a]===n||(o[a]=n)}function ae(){return a.apply(C(re),t.propMetadata(z.key(n.HASH),{}))}function oe(e,t,r,a){try{const{args:e,type:o,prefix:s,suffix:n,separator:i}=t,c=e.map(t=>{if(!(t in a))throw new g(`Property ${t} not found to compose from`);if("keys"===o)return t;if(void 0===a[t])throw new g(`Property ${e} does not contain a value to compose from`);return a[t].toString()});s&&c.unshift(s),n&&c.push(n),a[r]=c.join(i)}catch(e){throw new g("Failed to compose value: "+e)}}function se(e,r=!1,o=i,s="values",c="",p="",l={priority:55}){const d={args:e,hashResult:r,separator:o,type:s,prefix:c,suffix:p},u=[C(oe,d,l),t.propMetadata(z.key(n.COMPOSED),d)];return r&&u.push(ae()),a.apply(...u)}function ne(t){return(r,a,o,s)=>{try{switch(t){case e.OperationKeys.CREATE:s[o]=1;break;case e.OperationKeys.UPDATE:s[o]++;break;default:throw new g("Invalid operation: "+t)}}catch(e){throw new g("Failed to update version: "+e)}}}function ie(e){return!(!Reflect.getMetadata(z.key(n.TRANSIENT),e.constructor)&&!Reflect.getMetadata(z.key(n.TRANSIENT),t.Model.get(e.constructor.name)))}t.Model.prototype.hasErrors=function(e,...r){!e||e instanceof t.Model||(r.unshift(e),e=void 0);const a=this.isAsync(),o=t.validate(this,a,...r);return a?Promise.resolve(o).then(t=>t||!e?t:te(e,this,a,...r)):o||!e?o:te(e,this,a,...r)},e.BadRequestError=m,e.BaseError=O,e.BaseRepository=q,e.BlockOperations=t=>V(e.OperationKeys.REFLECT+e.OperationKeys.BLOCK,(e,t)=>e.includes(t))(t),e.ConflictError=P,e.Context=_,e.DBKeys=n,e.DBOperations=f,e.DEFAULT_ERROR_MESSAGES=p,e.DEFAULT_TIMESTAMP_FORMAT=c,e.DefaultContextFactory=$,e.DefaultRepositoryFlags=F,e.DefaultSeparator=i,e.InternalError=g,e.NotFoundError=w,e.Operations=E,e.OperationsRegistry=h,e.Repository=z,e.SerializationError=T,e.UpdateValidationKeys=l,e.UpdateValidator=d,e.VERSION="##VERSION##",e.ValidationError=A,e.after=j,e.afterAny=(e,t,r)=>j(f.ALL,e,t,r),e.afterCreate=(e,t,r)=>j(f.CREATE,e,t,r),e.afterCreateUpdate=(e,t,r)=>j(f.CREATE_UPDATE,e,t,r),e.afterDelete=(e,t,r)=>j(f.DELETE,e,t,r),e.afterRead=(e,t,r)=>j(f.READ,e,t,r),e.afterUpdate=(e,t,r)=>j(f.UPDATE,e,t,r),e.composed=(e,t=i,r=!1,a="",o="",s={priority:55})=>se(e,r,t,"values",a,o,s),e.composedFromCreateUpdate=oe,e.composedFromKeys=(e,t=i,r=!1,a="",o="",s={priority:55})=>se(e,r,t,"keys",a,o,s),e.enforceDBDecorators=D,e.findModelId=B,e.findPrimaryKey=Y,e.getAllPropertyDecoratorsRecursive=b,e.getDbDecorators=K,e.getHandlerArgs=R,e.getHandlersDecorators=S,e.getValidatableUpdateProps=Z,e.groupDecorators=k,e.hash=ae,e.hashOnCreateUpdate=re,e.id=()=>a.apply(t.required(),Q(),t.propMetadata(z.key(n.ID),{})),e.isTransient=ie,e.modelToTransient=e=>{if(!ie(e))return{model:e};const r=b(e,void 0,z.key(n.TRANSIENT)),a=Object.entries(r).reduce((t,[r,a])=>{if(a.find(e=>""===e.key)){t.transient=t.transient||{};try{t.transient[r]=e[r]}catch(e){throw new T(`Failed to serialize transient property ${r}: ${e}`)}}else t.model=t.model||{},t.model[r]=e[r];return t},{});return a.model=t.Model.build(a.model,e.constructor.name),a},e.on=N,e.onAny=(e,t,r)=>N(f.ALL,e,t,r),e.onCreate=I,e.onCreateUpdate=C,e.onDelete=(e,t,r)=>N(f.DELETE,e,t,r),e.onRead=(e,t,r)=>N(f.READ,e,t,r),e.onUpdate=x,e.operation=U,e.prefixMethod=function(e,t,r,a){const o=async function(...e){const a=await Promise.resolve(r.call(this,...e));return Promise.resolve(t.apply(this,a))}.bind(e),s=a||t.name;Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:s}),e[s]=o},e.readonly=Q,e.serialize=()=>a.apply(C(J),j(f.ALL,W),t.type([String.name,Object.name]),a.metadata(z.key(n.SERIALIZE),{})),e.serializeAfterAll=W,e.serializeOnCreateUpdate=J,e.sortDecorators=M,e.storeHandlerMetadata=V,e.suffixMethod=function(e,t,r,a){const o=async function(...e){const a=await Promise.resolve(t.call(this,...e));return r.call(this,...a)}.bind(e),s=a||t.name;Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:s}),e[s]=o},e.timestamp=(r=f.CREATE_UPDATE,o=c)=>{const s=t.Validation.updateKey(n.TIMESTAMP);return t.Decoration.for(s).define({decorator:(r,o)=>{const i=[t.date(o,p.TIMESTAMP.DATE),t.required(p.TIMESTAMP.REQUIRED),t.propMetadata(t.Validation.key(n.TIMESTAMP),{operation:r,format:o}),N(r,G)];return-1!==r.indexOf(e.OperationKeys.UPDATE)?i.push(t.propMetadata(s,{message:p.TIMESTAMP.INVALID})):i.push(Q()),a.apply(...i)},args:[r,o]}).apply()},e.timestampHandler=G,e.transient=()=>{const e=z.key(n.TRANSIENT);return t.Decoration.for(e).define((e,r)=>{t.propMetadata(z.key(n.TRANSIENT),!0)(e,r),t.propMetadata(z.key(n.TRANSIENT),!0)(e.constructor)}).apply()},e.validateCompare=te,e.validateDecorator=X,e.validateDecorators=ee,e.version=()=>{const r=z.key(n.VERSION);return t.Decoration.for(r).define(t.type(Number.name),I(ne(e.OperationKeys.CREATE)),x(ne(e.OperationKeys.UPDATE)),t.propMetadata(r,!0)).apply()},e.versionCreateUpdate=ne,e.wrapMethodWithContext=H},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decorator-validation"),require("tslib"),require("@decaf-ts/reflection"),require("@decaf-ts/decoration"),require("typed-object-accumulator")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decorator-validation","tslib","@decaf-ts/reflection","@decaf-ts/decoration","typed-object-accumulator"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["db-decorators"]={},e.decafTsDecoratorValidation,e.tslib,e.decafTsReflection,e.decafTsDecoration,e.typedObjectAccumulator);
1
+ var e,t;e=this,t=function(e,t,a,r,o){"use strict";const s={REFLECT:a.ModelKeys.MODEL+".persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},n="_",i="dd/MM/yyyy HH:mm:ss:S",c={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"}},l={REFLECT:"db.update.validation.",TIMESTAMP:s.TIMESTAMP,READONLY:s.READONLY};e.ReadOnlyValidator=class extends a.Validator{constructor(){super(c.READONLY.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,r){if(void 0!==e)return a.isEqual(e,t)?void 0:this.getMessage(r||this.message)}},e.ReadOnlyValidator=r.__decorate([a.validator(l.READONLY),r.__metadata("design:paramtypes",[])],e.ReadOnlyValidator),e.TimestampValidator=class extends a.Validator{constructor(){super(c.TIMESTAMP.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,a){if(void 0!==e){a=a||this.getMessage(a||this.message);try{e=new Date(e),t=new Date(t)}catch(e){return a}return e>t?void 0:a}}},e.TimestampValidator=r.__decorate([a.validator(l.TIMESTAMP),r.__metadata("design:paramtypes",[])],e.TimestampValidator);class d extends a.Validator{constructor(e=a.DEFAULT_ERROR_MESSAGES.DEFAULT,...t){super(e,...t)}}var p,u,y;a.Validation.updateKey=e=>l.REFLECT+e,e.OperationKeys=void 0,(p=e.OperationKeys||(e.OperationKeys={})).REFLECT="decaf.model.db.operations.",p.CREATE="create",p.READ="read",p.UPDATE="update",p.DELETE="delete",p.ON="on.",p.AFTER="after.",p.BLOCK="block",e.ModelOperations=void 0,(u=e.ModelOperations||(e.ModelOperations={})).OPERATIONS="operations",u.RELATIONS="relations",e.BulkCrudOperationKeys=void 0,(y=e.BulkCrudOperationKeys||(e.BulkCrudOperationKeys={})).CREATE_ALL="createAll",y.READ_ALL="readAll",y.UPDATE_ALL="updateAll",y.DELETE_ALL="deleteAll";const h={CREATE:[e.OperationKeys.CREATE],READ:[e.OperationKeys.READ],UPDATE:[e.OperationKeys.UPDATE],DELETE:[e.OperationKeys.DELETE],CREATE_UPDATE:[e.OperationKeys.CREATE,e.OperationKeys.UPDATE],READ_CREATE:[e.OperationKeys.READ,e.OperationKeys.CREATE],ALL:[e.OperationKeys.CREATE,e.OperationKeys.READ,e.OperationKeys.UPDATE,e.OperationKeys.DELETE]};class f{constructor(){this.cache={}}get(e,t,a,r){let o;r=r||[];try{o="string"==typeof e?e:e.constructor.name,r.unshift(...Object.values(this.cache[o][t][a]||[]))}catch(t){if("string"==typeof e||e===Object.prototype||Object.getPrototypeOf(e)===Object.prototype)return r}let s=Object.getPrototypeOf(e);return s.constructor.name===o&&(s=Object.getPrototypeOf(s)),this.get(s,t,a,r)}register(e,t,a,r){const o=a.constructor.name,s=E.getHandlerName(e);this.cache[o]||(this.cache[o]={}),this.cache[o][r]||(this.cache[o][r]={}),this.cache[o][r][t]||(this.cache[o][r][t]={}),this.cache[o][r][t][s]||(this.cache[o][r][t][s]=e)}}class E{constructor(){}static getHandlerName(e){return e.name?e.name:a.Hashing.hash(e.toString())}static key(t){return e.OperationKeys.REFLECT+t}static get(e,t,a){return E.registry.get(e,t,a)}static getOpRegistry(){return E.registry||(E.registry=new f),E.registry}static register(e,t,a,r){E.getOpRegistry().register(e,t,a,r)}}class O extends Error{constructor(e,t,a){if(t instanceof O)return t;super(`[${e}] ${t instanceof Error?t.message:t}`),this.code=a,t instanceof Error&&(this.stack=t.stack)}}class m extends O{constructor(e,t=m.name,a=400){super(t,e,a)}}class A extends m{constructor(e){super(e,A.name,422)}}class g extends O{constructor(e,t=g.name,a=500){super(t,e,a)}}class T extends g{constructor(e){super(e,T.name,500)}}class w extends m{constructor(e){super(e,w.name,404)}}class P extends m{constructor(e){super(e,P.name,409)}}const D=(e,t,a,r)=>{const o=a.constructor.name;if(!o)throw new g("Could not determine model class");r=r||{},e.props.handlers[o]&&e.props.handlers[o][t]&&(r={...e.props.handlers[o][t],...r});let s=Object.getPrototypeOf(a);return s===Object.prototype?r:(s.constructor.name===o&&(s=Object.getPrototypeOf(s)),D(e,t,s,r))};async function M(t,a,r,o,s,n){const i=R(r,o,s);if(!i)return;const c=L(S(v(r,i,s)));for(const i of c){const c=[a,i.data.length>1?i.data:i.data[0],i.prop.length>1?i.prop:i.prop[0],r];if(o===e.OperationKeys.UPDATE&&s===e.OperationKeys.ON){if(!n)throw new g("Missing old model for update operation");c.push(n)}try{await i.handler.apply(t,c)}catch(e){const t=`Failed to execute handler ${i.handler.name} for ${i.prop} on ${r.constructor.name} due to error: ${e}`;if(a.get("breakOnHandlerError"))throw new g(t)}}}function R(a,r,o){const s=o?.replace(/[.]$/,""),n=t.Metadata.get(a.constructor,e.ModelOperations.OPERATIONS);if(n)return Object.keys(n).reduce((e,t)=>{const a=s?n[t][s]||{}:n[t],o=Object.keys(a).filter(e=>e===r),i=[];for(const e of o)i.push({key:e,props:a[e]});return i&&i.length&&(e||(e={}),e[t]=i),e},void 0)}const K=50,b={priority:K};function v(e,t,a){const r=[];for(const o in t){const s=t[o];for(const t of s){const{key:s}=t,n=E.get(e,o,a+s);if(!n||!n.length)throw new g(`Could not find registered handler for the operation ${a+s} under property ${o}`);const i=D(t,o,e);if(!i||Object.values(i).length!==n.length)throw new g("Args and handlers length do not match");for(let e=0;e<n.length;e++){const t=i[n[e].name].data;r.push({handler:n[e],data:[t],prop:[o]})}}}return r}function S(e){const t=e.reduce((e,t)=>{if(!t||!t.data||!t.prop)throw new g("Missing decorator properties or data");if(!t.data[0].group)return e.set(Symbol(),t),e;const a=t.data[0].group;if(e.has(a)){const r=e.get(a);e.set(a,{handler:r.handler,data:[...r.data,...t.data],prop:[...r.prop,...t.prop]})}else e.set(a,{...t});return e},new Map),a=Array.from(t.values());return a.forEach(e=>{const t=e.data.map((t,a)=>({data:t,prop:e.prop[a]}));t.sort((e,t)=>(e.data.groupPriority??50)-(t.data.groupPriority??50)),e.data=t.map(e=>e.data),e.prop=t.map(e=>e.prop)}),a}function L(e){return e.sort((e,t)=>(e.data[0].priority??K)-(t.data[0].priority??K)),e}function I(e,t,a){return k(h.CREATE_UPDATE,e,t,a)}function N(e,t,a){return k(h.UPDATE,e,t,a)}function x(e,t,a){return k(h.CREATE,e,t,a)}function k(t=h.ALL,a,r,o){return j(e.OperationKeys.ON,t,a,r,o)}function C(t=h.ALL,a,r,o){return j(e.OperationKeys.AFTER,t,a,r,o)}function j(a,r=h.ALL,o,s,n=b){return(i,c)=>{const l=i.constructor.name,d=r.reduce((r,d)=>{const p=a+d;let u=t.Metadata.readOperation(i.constructor,c,p);u||(u={operation:d,handlers:{}});const y=E.getHandlerName(o);let h=n;if(s){if(Object.keys(s).filter(e=>e in n).length>0)throw new g("Unable to merge groupSort into dataToAdd due to overlaping keys");h={...n,...s}}return u.handlers[l]&&u.handlers[l][c]&&y in u.handlers[l][c]||(u.handlers[l]=u.handlers[l]||{},u.handlers[l][c]=u.handlers[l][c]||{},u.handlers[l][c][y]={data:h},r.push(((e,t)=>(a,r)=>{E.register(t,e,a,r)})(p,o),t.propMetadata(t.Metadata.key(e.ModelOperations.OPERATIONS,c,p),u))),r},[]);return t.apply(...d)(i,c)}}function U(e,a){return(...r)=>t.metadata(e,{args:r,handler:a})}function V(e=c.READONLY.INVALID){const r=s.READONLY,o={message:e,description:"defines the attribute as readOnly",async:!1};return t.Decoration.for(r).define({decorator:a.innerValidationDecorator,args:[V,r,o]}).apply()}async function _(e,t,a,r){r[a]=e.timestamp}async function F(e,t,a,r){if(r[a])try{r[a]=JSON.stringify(r[a])}catch(e){throw new T(`Failed to serialize ${a.toString()} property of model ${r.constructor.name}: e`)}}async function $(e,t,a,r){if(r[a]&&"string"==typeof r[a])try{r[a]=JSON.parse(r[a])}catch(e){throw new T(`Failed to deserialize ${a.toString()} property of model ${r.constructor.name}: ${e}`)}}function H(e,a){const r=[];for(const o in e){if(!Object.prototype.hasOwnProperty.call(e,o)||a.includes(o))continue;const s=t.Metadata.validationFor(e.constructor,o)||{};r.push({prop:o,decorators:s})}return r}function Y(e,t,r,o,s){const n=a.Validation.get(o.key);if(!n)throw Error("Missing validator for "+o.key);if(!n.updateHasErrors)return a.toConditionalPromise(void 0,s);if(!s&&o.async)return a.toConditionalPromise(void 0,s);const i=Object.values(o)||{},c=n.updateHasErrors(e[r],t[r],...i);return a.toConditionalPromise(c,s)}function B(e,t,r,o,s){const n={};for(const i in o){const c={...o[i],key:i};if(!s&&c.async)continue;let l=Y(e,t,r,c,s);if(c.key===a.ValidationKeys.LIST&&(!l||s)){const o=e[r],n=t[r],i=o instanceof Set?[...o]:o,d=n instanceof Set?[...n]:n;if(i?.length){const e=[c.class||c.clazz||c.customTypes].flat().map(e=>((e=(e="function"!=typeof e||e.name?e:e()).name?e.name:e)+"").toLowerCase()),t=i.map(t=>{const r=a.Model.pk(t,!0);if(!r)return"Failed to find model id";const o=d.find(e=>r===a.Model.pk(e,!0));return a.Model.isModel(t)?t.hasErrors(o):e.includes(typeof t)?void 0:"Value has no validatable type"});if(s)l=Promise.all(t).then(e=>e.every(e=>!e)?void 0:e);else{const e=t.every(e=>!e);l=t.length>0&&!e?t:void 0}}}l&&(n[c.key]=l)}if(!s)return Object.keys(n).length>0?n:void 0;const i=Object.keys(n),c=Object.values(n);return Promise.all(c).then(e=>{const t={};for(let a=0;a<e.length;a++){const r=e[a];void 0!==r&&(t[i[a]]=r)}return Object.keys(t).length>0?t:void 0})}function q(e,r,o,...s){const n=H(r,s),i={},c={};for(const{prop:s,decorators:l}of n){const n=s+"",d=r[s],{designTypes:p,designType:u}=t.Metadata.getPropDesignTypes(r.constructor,s);if(!p)continue;if(p.some(e=>[Array.name,Set.name].includes(e))){if(!l||!Object.keys(l).includes(a.ValidationKeys.LIST)){i[n]={[a.ValidationKeys.TYPE]:`Array or Set property '${n}' requires a @list decorator`};continue}if(d&&!(Array.isArray(d)||d instanceof Set)){i[n]={[a.ValidationKeys.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const y=B(r,e,n,l,o)||{},h=a.Model.isPropertyModel(r,n);if(null!=d&&h){const t=d,r=(Array.isArray(u)?u:[u]).map(e=>("function"!=typeof e||e.name||(e=e()),a.Model.get(e.name||e))).find(e=>!!e);r&&t instanceof r?c[n]=t.hasErrors(e[s]):(y[a.ValidationKeys.TYPE]=r?"Value must be an instance of "+r.name:`Unable to verify type consistency, missing model registry for ${p.toString()} on prop ${n}`,delete y[a.ModelKeys.TYPE])}(Object.keys(y).length>0||o)&&(i[n]=y),o||Object.entries(c[n]||{}).forEach(([e,t])=>{void 0!==t&&(i[`${n}.${e}`]=t)})}if(!o)return Object.keys(i).length>0?new a.ModelErrorDefinition(i):void 0;const l=i,d=Object.keys(l),p=Object.values(l);return Promise.allSettled(p).then(async e=>{const t={};for(const[e,a]of Object.entries(c)){const r=await a;r&&Object.entries(r).forEach(([a,r])=>{void 0!==r&&(t[[e,a].join(".")]=r)})}for(let a=0;a<e.length;a++){const r=d[a],o=e[a];"fulfilled"===o.status&&void 0!==o.value?t[r]=o.value:"rejected"===o.status&&(t[r]=o.reason instanceof Error?o.reason.message:(o.reason||"Validation failed")+"")}return Object.keys(t).length>0?new a.ModelErrorDefinition(t):void 0})}function z(e,t,r,o,s){if(void 0===o[r])return;const n=a.Hashing.hash(o[r]);s&&o[r]===n||(o[r]=n)}function G(){return t.apply(I(z),t.propMetadata(s.HASH,{}))}function Q(e,t,a,r){try{const{args:e,type:o,prefix:s,suffix:n,separator:i}=t,c=e.map(t=>{if(!(t in r))throw new g(`Property ${t} not found to compose from`);if("keys"===o)return t;if(void 0===r[t])throw new g(`Property ${e} does not contain a value to compose from`);return r[t].toString()});s&&c.unshift(s),n&&c.push(n),r[a]=c.join(i)}catch(e){throw new g("Failed to compose value: "+e)}}function J(e,a=!1,r=n,o="values",i="",c="",l={priority:55}){const d={args:e,hashResult:a,separator:r,type:o,prefix:i,suffix:c},p=[I(Q,d,l),t.propMetadata(s.COMPOSED,d)];return a&&p.push(G()),t.apply(...p)}function W(t){return(a,r,o,s)=>{try{switch(t){case e.OperationKeys.CREATE:s[o]=1;break;case e.OperationKeys.UPDATE:s[o]++;break;default:throw new g("Invalid operation: "+t)}}catch(e){throw new g("Failed to update version: "+e)}}}a.Model.prototype.isTransient=function(){return t.Metadata.isTransient(this)},a.Model.prototype.hasErrors=function(e,...t){!e||e instanceof a.Model||(t.unshift(e),e=void 0);const r=this.isAsync(),o=a.validate(this,r,...t);return r?Promise.resolve(o).then(a=>a||!e?a:q(e,this,r,...t)):o||!e?o:q(e,this,r,...t)},a.Model.prototype.toTransient=function(){return a.Model.toTransient(this)},a.Model.toTransient=e=>{if(!t.Metadata.isTransient(e))return{model:e};const r=t.Metadata.validatableProperties(e.constructor),o=t.Metadata.get(e.constructor,s.TRANSIENT),n={model:{},transient:{}};for(const t of r)if(Object.keys(o).includes(t)){n.transient=n.transient||{};try{n.transient[t]=e[t]}catch(e){throw new T(`Failed to serialize transient property ${t}: ${e}`)}}else n.model=n.model||{},n.model[t]=e[t];return n.model=a.Model.build(n.model,e.constructor.name),n},a.Model.pk=((e,r=!1)=>{if(!e)throw Error("No model was provided");const o=e instanceof a.Model?e.constructor:e,n=t.Metadata.get(o,s.ID);if(!n)throw Error("No Id property defined for model "+(o?.name||"Unknown Model"));const i=Object.keys(n)[0];if(!r)return i;if(e instanceof a.Model)return e[i];throw Error("Cannot get the value of the pk from the constructor")}).bind(a.Model),a.Model.isTransient=(e=>t.Metadata.isTransient(e)).bind(a.Model),t.Metadata.saveOperation=((a,r,o,s)=>{r&&t.Metadata.set(a,t.Metadata.key(e.ModelOperations.OPERATIONS,r,o),s)}).bind(t.Metadata),t.Metadata.readOperation=((a,r,o)=>{if(r&&o)return t.Metadata.get(a,t.Metadata.key(e.ModelOperations.OPERATIONS,r,o))}).bind(t.Metadata),t.Metadata.isTransient=(e=>!!t.Metadata.get("function"!=typeof e?e.constructor:e,s.TRANSIENT)).bind(t.Metadata);const Z={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},X=e=>(new ee).accumulate(Object.assign({},e,{timestamp:new Date}));class ee{constructor(){this.cache=new o.ObjectAccumulator,Object.defineProperty(this,"cache",{value:new o.ObjectAccumulator,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=X}accumulate(e){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(e),writable:!1,enumerable:!1,configurable:!0}),this}get timestamp(){return this.cache.timestamp}get(e){try{return this.cache.get(e)}catch(t){const a=this.cache.parentContext;if(a)return a.get(e);throw t}}static childFrom(e,t){return ee.factory(Object.assign({},e.cache,t||{}))}static async from(e,t,a,...r){return ee.factory(Object.assign({},Z,t,{operation:e,model:a}))}static async args(e,t,a,r,o){const s=a.pop();async function n(){return r?r.context(e,o||{},t,...a):ee.from(e,o||{},t,...a)}let i;return s?s instanceof ee?(i=s,a.push(s)):(a.push(s),i=await n(),a.push(i)):(i=await n(),a.push(i)),{context:i,args:a}}}function te(e,t,a,r,o){const s=o||a.name;e[s]=new Proxy(e[s],{apply:async(e,a,o)=>{let s=t.call(a,...o);s instanceof Promise&&(s=await s);const n=s[s.length-1];if(!(n instanceof ee))throw new g("Missing a context");let i=await e.call(a,...s);return i instanceof Promise&&(i=await i),i=r.call(a,i,n),i instanceof Promise&&(i=await i),i}})}class ae{get class(){if(!this._class)throw new g("No class definition found for this repository");return this._class}get pk(){return this._pk||(this._pk=a.Model.pk(this.class),this._pkProps=t.Metadata.get(this.class,t.Metadata.key(s.ID,this._pk))),this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(e){e&&(this._class=e);const t=this;[this.create,this.read,this.update,this.delete].forEach(e=>{const a=e.name;te(t,t[a+"Prefix"],e,t[a+"Suffix"])})}async createAll(e,...t){return Promise.all(e.map(e=>this.create(e,...t)))}async createPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);return t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),[t,...r.args]}async createSuffix(t,a){return await M(this,a,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER),t}async createAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);return await Promise.all(t.map(async t=>(t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t))),[t,...r.args]}async createAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER))),t}async readAll(e,...t){return await Promise.all(e.map(e=>this.read(e,...t)))}async readSuffix(t,a){return await M(this,a,t,e.OperationKeys.READ,e.OperationKeys.AFTER),t}async readPrefix(t,...a){const r=await ee.args(e.OperationKeys.READ,this.class,a),o=new this.class;return o[this.pk]=t,await M(this,r.context,o,e.OperationKeys.READ,e.OperationKeys.ON),[t,...r.args]}async readAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.READ,this.class,a);return await Promise.all(t.map(async t=>{const a=new this.class;return a[this.pk]=t,M(this,r.context,a,e.OperationKeys.READ,e.OperationKeys.ON)})),[t,...r.args]}async readAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.READ,e.OperationKeys.AFTER))),t}async updateAll(e,...t){return Promise.all(e.map(e=>this.update(e,...t)))}async updateSuffix(t,a){return await M(this,a,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER),t}async updatePrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a),o=t[this.pk];if(!o)throw new g("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);return await M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s),[t,...r.args]}async updateAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a);return await Promise.all(t.map(t=>(t=new this.class(t),M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON),t))),[t,...r.args]}async updateAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER))),t}async deleteAll(e,...t){return Promise.all(e.map(e=>this.delete(e,...t)))}async deleteSuffix(t,a){return await M(this,a,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER),t}async deletePrefix(t,...a){const r=await ee.args(e.OperationKeys.DELETE,this.class,a),o=await this.read(t,...r.args);return await M(this,r.context,o,e.OperationKeys.DELETE,e.OperationKeys.ON),[t,...r.args]}async deleteAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.DELETE,this.class,a),o=await this.readAll(t,...r.args);return await Promise.all(o.map(async t=>M(this,r.context,t,e.OperationKeys.DELETE,e.OperationKeys.ON))),[t,...r.args]}async deleteAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER))),t}merge(e,t){const a=e=>Object.entries(e).reduce((e,[t,a])=>(void 0!==a&&(e[t]=a),e),{});return new this.class(Object.assign({},a(e),a(t)))}toString(){return this.class.name+" Repository"}}const re="##VERSION##",oe="##PACKAGE##";t.Metadata.registerLibrary(oe,re),e.BadRequestError=m,e.BaseError=O,e.BaseRepository=ae,e.BlockOperations=t=>U(e.OperationKeys.REFLECT+e.OperationKeys.BLOCK,(e,t)=>e.includes(t))(t),e.ConflictError=P,e.Context=ee,e.DBKeys=s,e.DBOperations=h,e.DEFAULT_ERROR_MESSAGES=c,e.DEFAULT_TIMESTAMP_FORMAT=i,e.DefaultContextFactory=X,e.DefaultRepositoryFlags=Z,e.DefaultSeparator=n,e.InternalError=g,e.NotFoundError=w,e.Operations=E,e.OperationsRegistry=f,e.PACKAGE_NAME=oe,e.Repository=class extends ae{constructor(e){super(e)}async createPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON);const o=await Promise.resolve(t.hasErrors());if(o)throw new A(o.toString());return[t,...r.args]}async createAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);await Promise.all(t.map(async t=>(t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t)));const o=(await Promise.all(t.map(e=>Promise.resolve(e.hasErrors())))).reduce((e,t,a)=>(t&&(e="string"==typeof e?e+`\n - ${a}: ${t.toString()}`:` - ${a}: ${t.toString()}`),e),void 0);if(o)throw new A(o);return[t,...r.args]}async updatePrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a),o=t[this.pk];if(!o)throw new g("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);t=this.merge(s,t),await M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s);const n=await Promise.resolve(t.hasErrors(s));if(n)throw new A(n.toString());return[t,...r.args]}async updateAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a),o=t.map(e=>{const t=e[this.pk];if(void 0===t)throw new g("No value for the Id is defined under the property "+this.pk);return t}),s=await this.readAll(o,...r.args);t=t.map((e,t)=>this.merge(s[t],e)),await Promise.all(t.map((t,a)=>M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s[a])));const n=(await Promise.all(t.map((e,t)=>Promise.resolve(e.hasErrors(s[t]))))).reduce((e,t,a)=>(t&&(e="string"==typeof e?e+`\n - ${a}: ${t.toString()}`:` - ${a}: ${t.toString()}`),e),void 0);if(n)throw new A(n);return[t,...r.args]}},e.SerializationError=T,e.UpdateValidationKeys=l,e.UpdateValidator=d,e.VERSION=re,e.ValidationError=A,e.after=C,e.afterAny=(e,t,a)=>C(h.ALL,e,t,a),e.afterCreate=(e,t,a)=>C(h.CREATE,e,t,a),e.afterCreateUpdate=(e,t,a)=>C(h.CREATE_UPDATE,e,t,a),e.afterDelete=(e,t,a)=>C(h.DELETE,e,t,a),e.afterRead=(e,t,a)=>C(h.READ,e,t,a),e.afterUpdate=(e,t,a)=>C(h.UPDATE,e,t,a),e.composed=(e,t=n,a=!1,r="",o="",s={priority:55})=>J(e,a,t,"values",r,o,s),e.composedFromCreateUpdate=Q,e.composedFromKeys=(e,t=n,a=!1,r="",o="",s={priority:55})=>J(e,a,t,"keys",r,o,s),e.enforceDBDecorators=M,e.getDbDecorators=R,e.getHandlerArgs=D,e.getHandlersDecorators=v,e.getValidatableUpdateProps=H,e.groupDecorators=S,e.hash=G,e.hashOnCreateUpdate=z,e.id=()=>t.apply(a.required(),V(),(e,a)=>t.propMetadata(t.Metadata.key(s.ID,a),{})(e,a)),e.on=k,e.onAny=(e,t,a)=>k(h.ALL,e,t,a),e.onCreate=x,e.onCreateUpdate=I,e.onDelete=(e,t,a)=>k(h.DELETE,e,t,a),e.onRead=(e,t,a)=>k(h.READ,e,t,a),e.onUpdate=N,e.operation=j,e.prefixMethod=function(e,t,a,r){const o=async function(...e){const r=await Promise.resolve(a.call(this,...e));return Promise.resolve(t.apply(this,r))}.bind(e),s=r||t.name;Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:s}),e[s]=o},e.readonly=V,e.serialize=()=>t.apply(I(F),C(h.ALL,$),a.type([String,Object]),t.metadata(s.SERIALIZE,{})),e.serializeAfterAll=$,e.serializeOnCreateUpdate=F,e.sortDecorators=L,e.storeHandlerMetadata=U,e.suffixMethod=function(e,t,a,r){const o=async function(...e){const r=await Promise.resolve(t.call(this,...e));return a.call(this,...r)}.bind(e),s=r||t.name;Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:s}),e[s]=o},e.timestamp=(r=h.CREATE_UPDATE,o=i)=>{const n=a.Validation.updateKey(s.TIMESTAMP);return t.Decoration.for(n).define({decorator:(r,o)=>{const i=[a.date(o,c.TIMESTAMP.DATE),a.required(c.TIMESTAMP.REQUIRED),t.propMetadata(a.Validation.key(s.TIMESTAMP),{operation:r,format:o}),k(r,_)];return-1!==r.indexOf(e.OperationKeys.UPDATE)?i.push(t.propMetadata(n,{message:c.TIMESTAMP.INVALID})):i.push(V()),t.apply(...i)},args:[r,o]}).apply()},e.timestampHandler=_,e.transient=()=>t.Decoration.for(s.TRANSIENT).define((e,a)=>{t.propMetadata(s.TRANSIENT,!0)(e.constructor),t.propMetadata(t.Metadata.key(s.TRANSIENT,a),{})(e,a)}).apply(),e.validateCompare=q,e.validateDecorator=Y,e.validateDecorators=B,e.version=()=>{const r=s.VERSION;return t.Decoration.for(r).define(a.type(Number),x(W(e.OperationKeys.CREATE)),N(W(e.OperationKeys.UPDATE)),t.propMetadata(r,!0)).apply()},e.versionCreateUpdate=W,e.wrapMethodWithContext=te},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/decorator-validation"),require("tslib"),require("typed-object-accumulator")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/decorator-validation","tslib","typed-object-accumulator"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["db-decorators"]={},e.decafTsDecoration,e.decafTsDecoratorValidation,e.tslib,e.typedObjectAccumulator);
2
2
  //# sourceMappingURL=db-decorators.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-decorators.cjs","sources":["../src/model/constants.ts","../src/validation/constants.ts","../src/validation/validators/ReadOnlyValidator.ts","../src/validation/validators/TimestampValidator.ts","../src/validation/validators/UpdateValidator.ts","../src/operations/constants.ts","../src/validation/validation.ts","../src/operations/OperationsRegistry.ts","../src/operations/Operations.ts","../src/repository/errors.ts","../src/repository/utils.ts","../src/operations/decorators.ts","../src/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/identity/utils.ts","../src/repository/BaseRepository.ts","../src/repository/Repository.ts","../src/validation/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/model/utils.ts","../src/model/overrides.ts","../src/index.ts","../src/identity/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DBKeys","REFLECT","ModelKeys","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","exports","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","name","unshift","Object","values","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","getHandlerArgs","dec","prop","m","props","handlers","async","enforceDBDecorators","repo","context","model","prefix","oldModel","decorators","getDbDecorators","sortedDecorators","sortDecorators","groupDecorators","getHandlersDecorators","data","length","ON","push","apply","extraPrefix","Reflection","getAllPropertyDecorators","keys","reduce","decorator","filter","d","getAllPropertyDecoratorsRecursive","prefixes","accumulator","decs","entries","forEach","val","match","find","TYPE","RegExp","AFTER","accumHandlers","clazz","handlerDef","handlerProp","handlerKey","argsObj","pushOrSquash","mergeDecorators","defaultPriority","DefaultGroupSort","priority","handlerArgs","i","grouped","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","combined","map","sort","a","b","groupPriority","c","onCreateUpdate","groupsort","on","onUpdate","onCreate","op","after","baseOp","dataToAdd","propertyKey","compoundKey","Reflect","getMetadata","mergeData","handle","propMetadata","storeHandlerMetadata","params","metadata","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","DefaultContextFactory","arg","Context","accumulate","assign","timestamp","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","wrapMethodWithContext","obj","before","method","methodName","Proxy","thisArg","argArray","transformedArgs","call","Promise","results","findPrimaryKey","idDecorators","filtered","sf","join","idProp","id","findModelId","returnEmpty","modelId","BaseRepository","_class","pk","_pk","class","_pkProps","pkProps","self","create","read","update","delete","createAll","models","all","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","merge","extract","Repository","errors","resolve","ids","oldModels","readonly","Decoration","for","define","timestampHandler","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","includes","validationPropertyDefinition","getValidationDecorators","listDecorator","ValidationKeys","LIST","validateDecorator","newModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","validationErrors","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","customTypes","flat","t","String","toLowerCase","errs","childValue","el","Model","isModel","then","every","r","allEmpty","promises","resolvedValues","res","validateCompare","exceptions","nestedErrors","propValue","designTypeDec","designType","getPropertyDecorators","some","isArray","splice","propErrors","isConstr","isPropertyModel","instance","error","ModelErrorDefinition","merged","allSettled","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","type","suffix","separator","composed","composedFrom","hashResult","versionCreateUpdate","isTransient","decoratorValidation","previousVersion","exclusions","isAsync","validate","resolvedErrs","operations","BLOCK","required","transient","build","afterName","wrapped","bind","beforeName","format","date","indexOf","attribute","Number"],"mappings":"oDAQa,MAAAA,EAAS,CACpBC,QAAYC,YAAUD,QAAb,eACTE,WAAY,aACZC,MAAO,SACPC,GAAI,KACJC,MAAO,QACPC,OAAQ,SACRC,UAAW,YACXC,SAAU,WACVC,UAAW,YACXC,UAAW,YACXC,KAAM,OACNC,SAAU,WACVC,QAAS,UACTC,SAAU,iBASCC,EAAmB,IAQnBC,EAA2B,wBCrB3BC,EAAyB,CACpCb,GAAI,CACFc,QAAS,qBACTC,SAAU,uBAEZX,SAAU,CACRU,QAAS,0BAEXT,UAAW,CACTU,SAAU,yBACVC,KAAM,sCACNF,QAAS,oCAcAG,EAAuB,CAClCrB,QAAS,wBACTS,UAAWV,EAAOU,UAClBD,SAAUT,EAAOS,UCfNc,EAAAA,kBAAN,cAAgCC,YACrC,WAAAC,GACEC,MAAMR,EAAuBT,SAASU,QACvC,CAUD,SAAAQ,CAAUC,KAAeC,GAExB,CAUM,eAAAC,CACLF,EACAG,EACAC,GAEA,QAAcC,IAAVL,EAEJ,OAAOM,EAAOA,QAACN,EAAOG,QAClBE,EACAE,KAAKC,WAAWJ,GAAWG,KAAKH,QACrC,GAnC2BK,EAAAd,kBAAAe,aAAA,CAD7BC,EAASA,UAACjB,EAAqBb,gDACnBc,qBCAAiB,EAAAA,mBAAN,cAAiChB,YACtC,WAAAC,GACEC,MAAMR,EAAuBR,UAAUS,QACxC,CAUD,SAAAQ,CAAUC,KAAeC,GAExB,CAUM,eAAAC,CACLF,EACAG,EACAC,GAEA,QAAcC,IAAVL,EAAJ,CAEAI,EAAUA,GAAWG,KAAKC,WAAWJ,GAAWG,KAAKH,SAErD,IACEJ,EAAQ,IAAIa,KAAKb,GACjBG,EAAW,IAAIU,KAAKV,EAErB,CAAC,MAAOW,GACP,OAAOV,CACR,CAED,OAAOJ,EAASG,OAAqBE,EAAVD,CAZK,CAajC,GA3C4BK,EAAAG,mBAAAF,aAAA,CAD9BC,EAASA,UAACjB,EAAqBZ,iDACnB8B,sBCCP,MAAgBG,UAAwBnB,EAAAA,UAC5C,WAAAC,CACEO,EAAkBY,EAAAA,uBAAkBC,WACjCC,GAEHpB,MAAMM,KAAYc,EACnB,EC/BH,IAAYC,EA8BAC,ECrBZC,EAAAA,WAAWC,UAAsBC,GACxB7B,EAAqBrB,QAAUkD,EDDvCd,EAAAU,mBAAA,GATWA,EAAAA,kBAAAA,EAAAA,cASX,CAAA,IARC,QAAA,6BACAA,EAAA,OAAA,SACAA,EAAA,KAAA,OACAA,EAAA,OAAA,SACAA,EAAA,OAAA,SACAA,EAAA,GAAA,MACAA,EAAA,MAAA,SACAA,EAAA,MAAA,QA2BDV,EAAAW,2BAAA,GALWA,EAAAA,0BAAAA,EAAAA,sBAKX,CAAA,IAJC,WAAA,YACAA,EAAA,SAAA,UACAA,EAAA,WAAA,YACAA,EAAA,WAAA,YAqBW,MAAAI,EAAiD,CAC5DC,OAAQ,CAACN,EAAaA,cAACM,QACvBC,KAAM,CAACP,EAAaA,cAACO,MACrBC,OAAQ,CAACR,EAAaA,cAACQ,QACvBC,OAAQ,CAACT,EAAaA,cAACS,QACvBC,cAAe,CAACV,EAAaA,cAACM,OAAQN,EAAAA,cAAcQ,QACpDG,YAAa,CAACX,EAAaA,cAACO,KAAMP,EAAAA,cAAcM,QAChDM,IAAK,CACHZ,EAAAA,cAAcM,OACdN,EAAAA,cAAcO,KACdP,EAAAA,cAAcQ,OACdR,EAAAA,cAAcS,eExCLI,EAAb,WAAAnC,GACmBU,KAAK0B,MAMlB,EAuFL,CAvEC,GAAAC,CAOEC,EACAC,EACAC,EACAC,GAGA,IAAIC,EADJD,EAAQA,GAAS,GAEjB,IACEC,EAAyB,iBAAXJ,EAAsBA,EAASA,EAAOtC,YAAY0C,KAChED,EAAME,WACDC,OAAOC,OAAOnC,KAAK0B,MAAMM,GAAMH,GAASC,IAAc,IAG5D,CAAC,MAAOvB,GACP,GACoB,iBAAXqB,GACPA,IAAWM,OAAOE,WAClBF,OAAOG,eAAeT,KAAYM,OAAOE,UAEzC,OAAOL,CACV,CAED,IAAIO,EAAQJ,OAAOG,eAAeT,GAGlC,OAFIU,EAAMhD,YAAY0C,OAASA,IAAMM,EAAQJ,OAAOG,eAAeC,IAE5DtC,KAAK2B,IAAmBW,EAAOT,EAASC,EAAWC,EAC3D,CAgBD,QAAAQ,CAOEC,EACAV,EACAF,EACAC,GAEA,MAAMG,EAAOJ,EAAOtC,YAAY0C,KAC1BS,EAAcC,EAAWC,eAAeH,GAEzCxC,KAAK0B,MAAMM,KAAOhC,KAAK0B,MAAMM,GAAQ,IACrChC,KAAK0B,MAAMM,GAAMH,KAAU7B,KAAK0B,MAAMM,GAAMH,GAAW,CAAA,GACvD7B,KAAK0B,MAAMM,GAAMH,GAASC,KAC7B9B,KAAK0B,MAAMM,GAAMH,GAASC,GAAa,IACrC9B,KAAK0B,MAAMM,GAAMH,GAASC,GAAWW,KACzCzC,KAAK0B,MAAMM,GAAMH,GAASC,GAAWW,GAAeD,EACrD,QC1FUE,EAGX,WAAApD,GAAwB,CAQxB,qBAAOqD,CAAeH,GACpB,OAAIA,EAAQR,KAAaQ,EAAQR,KAK1BY,EAAOA,QAACC,KAAKL,EAAQM,WAC7B,CAQD,UAAO9B,CAAI+B,GACT,OAAOnC,EAAaA,cAAC9C,QAAUiF,CAChC,CAeD,UAAOpB,CAOLqB,EACAnB,EACAC,GAEA,OAAOY,EAAWO,SAAStB,IACzBqB,EACAnB,EACAC,EAEH,CAQO,oBAAOoB,GAEb,OADKR,EAAWO,WAAUP,EAAWO,SAAW,IAAIxB,GAC7CiB,EAAWO,QACnB,CAYD,eAAOV,CACLC,EACAV,EACAF,EACAC,GAEAa,EAAWQ,gBAAgBX,SACzBC,EACAV,EACAF,EACAC,EAEH,EC9GG,MAAgBsB,UAAkBC,MAEtC,WAAA9D,CAAsB0C,EAAcqB,EAAqBC,GACvD,GAAID,aAAeF,EAAW,OAAOE,EAErC9D,MADgB,IAAIyC,MAASqB,aAAeD,MAAQC,EAAIxD,QAAUwD,KAElErD,KAAKsD,KAAOA,EACRD,aAAeD,QAAOpD,KAAKuD,MAAQF,EAAIE,MAC5C,EAWG,MAAOC,UAAwBL,EACnC,WAAA7D,CAAY+D,EAAqBrB,EAAOwB,EAAgBxB,KAAMsB,EAAO,KACnE/D,MAAMyC,EAAMqB,EAAKC,EAClB,EAgBG,MAAOG,UAAwBD,EACnC,WAAAlE,CAAY+D,GACV9D,MAAM8D,EAAKI,EAAgBzB,KAAM,IAClC,EAiBG,MAAO0B,UAAsBP,EACjC,WAAA7D,CAAY+D,EAAqBrB,EAAO0B,EAAc1B,KAAMsB,EAAO,KACjE/D,MAAMyC,EAAMqB,EAAKC,EAClB,EAiBG,MAAOK,UAA2BD,EACtC,WAAApE,CAAY+D,GACV9D,MAAM8D,EAAKM,EAAmB3B,KAAM,IACrC,EAiBG,MAAO4B,UAAsBJ,EACjC,WAAAlE,CAAY+D,GACV9D,MAAM8D,EAAKO,EAAc5B,KAAM,IAChC,EAgBG,MAAO6B,UAAsBL,EACjC,WAAAlE,CAAY+D,GACV9D,MAAM8D,EAAKQ,EAAc7B,KAAM,IAChC,ECjGU,MAAA8B,EAAiB,CAC5BC,EACAC,EACAC,EACAlC,KAEA,MAAMC,EAAOiC,EAAE3E,YAAY0C,KAC3B,IAAKA,EAAM,MAAM,IAAI0B,EAAc,mCACnC3B,EAAQA,GAAS,GAEbgC,EAAIG,MAAMC,SAASnC,IAAS+B,EAAIG,MAAMC,SAASnC,GAAMgC,KACvDjC,EAAQ,IAAKgC,EAAIG,MAAMC,SAASnC,GAAMgC,MAAUjC,IAElD,IAAIO,EAAQJ,OAAOG,eAAe4B,GAClC,OAAI3B,IAAUJ,OAAOE,UAAkBL,GACnCO,EAAMhD,YAAY0C,OAASA,IAAMM,EAAQJ,OAAOG,eAAeC,IAE5DwB,EAAeC,EAAKC,EAAM1B,EAAOP,GAC1C,EAeOqC,eAAeC,EAOpBC,EACAC,EACAC,EACA1C,EACA2C,EACAC,GAEA,MAAMC,EACJC,EAAgBJ,EAAO1C,EAAW2C,GAEpC,IAAKE,EAAY,OAEjB,MAEME,EAAmBC,EADCC,EADAC,EAAsBR,EAAOG,EAAYF,KAInE,IAAK,MAAMV,KAAOc,EAAkB,CAClC,MAAMnF,EAAc,CAClB6E,EACAR,EAAIkB,KAAKC,OAAS,EAAInB,EAAIkB,KAAOlB,EAAIkB,KAAK,GAC1ClB,EAAIC,KAAKkB,OAAS,EAAInB,EAAIC,KAAOD,EAAIC,KAAK,GAC1CQ,GAGF,GAAI1C,IAAclB,EAAAA,cAAcQ,QAAUqD,IAAW7D,EAAAA,cAAcuE,GAAI,CACrE,IAAKT,EACH,MAAM,IAAIhB,EAAc,0CAC1BhE,EAAK0F,KAAKV,EACX,CACD,UACSX,EAAIvB,QAAkD6C,MAC3Df,EACA5E,EAEH,CAAC,MAAOa,GACP,MAAM8C,EAAM,6BAA6BU,EAAIvB,QAAQR,YAAY+B,EAAIC,WAAWQ,EAAMlF,YAAY0C,sBAAsBzB,IACxH,GAAIgE,EAAQ5C,IAAI,uBAAwB,MAAM,IAAI+B,EAAcL,EAEjE,CACF,CACH,UAYgBuB,EACdJ,EACA1C,EACAwD,GAEA,MAAMX,EACJY,aAAWC,yBACThB,EAEA5D,EAAAA,cAAc9C,SAAWwH,GAA4B,KAEzD,GAAKX,EACL,OAAOzC,OAAOuD,KAAKd,GAAYe,OAC7B,CAAC3D,EAAwD4D,KACvD,MAAM5B,EAAMY,EAAWgB,GAAWC,OAAQC,GAAMA,EAAE7E,MAAQc,GAK1D,OAJIiC,GAAOA,EAAImB,SACRnD,IAAOA,EAAQ,CAAA,GACpBA,EAAM4D,GAAa5B,GAEdhC,QAETjC,EAEJ,CAWa,MAAAgG,EAAoC,CAC/CtB,EACAzC,KACGgE,KAEH,MAAMC,EAAcjE,GAAS,GAmEvBkE,EACJV,EAAAA,WAAWC,yBAAyBhB,KAAUuB,GAGhD,GAFIE,GApEoB,CAAUA,IA4DhC/D,OAAOgE,QAAQD,GAAME,QAAQ,EAAEnF,EAAKvB,MAClCuG,EAAYhF,GAAOgF,EAAYhF,IAAQ,GA5DpB,EAACA,KAAgBmB,KACpCA,EAAOgE,QAASC,IACd,IAAIC,EACJ,KACIA,EAAQL,EAAYhF,GAAKsF,KAAM/F,GAAMA,EAAES,MAAQoF,EAAIpF,OACrDqF,EAAMnC,MAAMpC,YAAcsE,EAAIlC,MAAMpC,UAGpC,YADAkE,EAAYhF,GAAKoE,KAAKgB,GAIxB,GAAIA,EAAIpF,MAAQjD,EAAAA,UAAUwI,KAAM,OAEhC,MAAMpC,SAAEA,EAAQrC,UAAEA,GAAcsE,EAAIlC,MAEpC,IACGpC,IACAA,EAAUuE,MACLG,OACF,OAAO5F,gBAAcuE,MAAMvE,gBAAc6F,YAAY7F,EAAAA,cAAcM,UAAUN,EAAAA,cAAcO,QAAQP,EAAaA,cAACQ,UAAUR,EAAAA,cAAcS,aAK7I,YADA2E,EAAYhF,GAAKoE,KAAKgB,GAIxB,MAAMM,EAAgBL,EAAMnC,MAAMC,SAElCjC,OAAOgE,QAAQ/B,GAAUgC,QAAQ,EAAEQ,EAAOC,MAClCD,KAASD,EAKfxE,OAAOgE,QAAQU,GAAsBT,QACnC,EAAEU,EAAarE,MACPqE,KAAeH,EAAcC,GAKnCzE,OAAOgE,QAAQ1D,GAAmB2D,QAChC,EAAEW,EAAYC,MACND,KAAcJ,EAAcC,GAAOE,KACvCH,EAAcC,GAAOE,GAAaC,GAAcC,KAPpDL,EAAcC,GAAOE,GAAerE,IAPxCkE,EAAcC,GAASC,OA8B7BI,CAAahG,KAAQvB,IAEzB,EAIUwH,CAAgBhB,GAEtB/D,OAAOG,eAAemC,KAAWtC,OAAOE,UAAW,OAAO4D,EAG9D,MAAM1D,EAAQJ,OAAOG,eAAemC,GACpC,OAAKlC,EAGEwD,EAAkCxD,EAAO0D,KAAgBD,GAH7CC,CAIrB,EC3NMkB,EAAkB,GAElBC,EAA8B,CAAEC,SAAUF,YAkDhClC,EAOdR,EACAG,EACAF,GAEA,MAAM1C,EAA2B,GACjC,IAAK,MAAMiC,KAAQW,EAAY,CAC7B,MAAMsB,EAA4BtB,EAAWX,GAC7C,IAAK,MAAMD,KAAOkC,EAAM,CACtB,MAAMjF,IAAEA,GAAQ+C,EACVI,EACJzB,EAAWf,IAAmB6C,EAAOR,EAAMS,EAASzD,GACtD,IAAKmD,IAAaA,EAASe,OACzB,MAAM,IAAIxB,EACR,uDAAuDe,EAASzD,oBAAsBgD,KAG1F,MAAMqD,EAAcvD,EAAeC,EAAKC,EAAMQ,GAE9C,IAAK6C,GAAenF,OAAOC,OAAOkF,GAAanC,SAAWf,EAASe,OACjE,MAAM,IAAIxB,EAAc,yCAE1B,IAAK,IAAI4D,EAAI,EAAGA,EAAInD,EAASe,OAAQoC,IAAK,CACxC,MAAMrC,EAAQoC,EAAYlD,EAASmD,GAAGtF,MACnCiD,KACHlD,EAAMqD,KAAK,CACT5C,QAAS2B,EAASmD,GAClBrC,KAAM,CAACA,GACPjB,KAAM,CAACA,IAEV,CACF,CACF,CACD,OAAOjC,CACT,CAUM,SAAUgD,EACdJ,GAEA,MAAM4C,EAAU5C,EAAWe,OACzB,CAAC8B,EAAKzD,KACJ,IAAKA,IAAQA,EAAIkB,OAASlB,EAAIC,KAC5B,MAAM,IAAIN,EAAc,wCAG1B,IAAKK,EAAIkB,KAAK,GAAGwC,MAEf,OADAD,EAAIE,IAAIC,SAAU5D,GACXyD,EAGT,MAAMI,EAAW7D,EAAIkB,KAAK,GAAGwC,MAE7B,GAAKD,EAAIK,IAAID,GAGN,CACL,MAAME,EAAWN,EAAI7F,IAAIiG,GAEzBJ,EAAIE,IAAIE,EAAU,CAChBpF,QAASsF,EAAStF,QAClByC,KAAM,IAAI6C,EAAS7C,QAASlB,EAAIkB,MAChCjB,KAAM,IAAI8D,EAAS9D,QAASD,EAAIC,OAEnC,MATCwD,EAAIE,IAAIE,EAAU,IAAK7D,IAWzB,OAAOyD,GAET,IAAIO,KAGAC,EAASC,MAAMC,KAAKX,EAAQpF,UAiBlC,OAdA6F,EAAO7B,QAASsB,IACd,MAAMU,EAAWV,EAAMxC,KAAKmD,IAAI,CAACvC,EAAGyB,KAAO,CACzCrC,KAAMY,EACN7B,KAAMyD,EAAMzD,KAAKsD,MAGnBa,EAASE,KACP,CAACC,EAAGC,KAAOD,EAAErD,KAAKuD,eAAiB,KAAOD,EAAEtD,KAAKuD,eAAiB,KAGpEf,EAAMxC,KAAOkD,EAASC,IAAKK,GAAMA,EAAExD,MACnCwC,EAAMzD,KAAOmE,EAASC,IAAKK,GAAMA,EAAEzE,QAG9BgE,CACT,CAUM,SAAUlD,EACdH,GASA,OANAA,EAAW0D,KAAK,CAACC,EAAGC,KACAD,EAAErD,KAAK,GAAGmC,UAAYF,IACtBqB,EAAEtD,KAAK,GAAGmC,UAAYF,IAInCvC,CACT,UAYgB+D,EACdlG,EAGAyC,EACA0D,GAEA,OAAOC,EAAG3H,EAAaK,cAAekB,EAASyC,EAAM0D,EACvD,UAWgBE,EACdrG,EACAyC,EACA0D,GAEA,OAAOC,EAAG3H,EAAaG,OAAQoB,EAASyC,EAAM0D,EAChD,UAWgBG,EACdtG,EACAyC,EACA0D,GAEA,OAAOC,EAAG3H,EAAaC,OAAQsB,EAASyC,EAAM0D,EAChD,CAyEgB,SAAAC,EACdG,EAAsB9H,EAAaO,IACnCgB,EACAyC,EACA0D,GAEA,OAAO7G,EAAUlB,EAAAA,cAAcuE,GAAI4D,EAAIvG,EAASyC,EAAM0D,EACxD,CA+HgB,SAAAK,EACdD,EAAsB9H,EAAaO,IACnCgB,EACAyC,EACA0D,GAEA,OAAO7G,EAAUlB,EAAAA,cAAc6F,MAAOsC,EAAIvG,EAASyC,EAAM0D,EAC3D,CA8BgB,SAAA7G,EACdmH,EACAnH,EAA6Bb,EAAaO,IAC1CgB,EACA0G,EACAP,EAAuBxB,GAEvB,MAAO,CAACvF,EAAauH,KACnB,MAAMnH,EAAOJ,EAAOtC,YAAY0C,KAC1B2C,EAAa7C,EAAU4D,OAAO,CAAC3D,EAAcgH,KACjD,MAAMK,EAAcH,EAASF,EAC7B,IAAI9D,EAAOoE,QAAQC,YACjB5G,EAAW1B,IAAIoI,GACfxH,EACAuH,GAEGlE,IACHA,EAAO,CACLnD,UAAWiH,EACX5E,SAAU,CAAE,IAGhB,MAAM2C,EAAapE,EAAWC,eAAeH,GAE7C,IAAI+G,EAAYZ,EAEhB,GAAIO,EAAW,CACb,GAAIhH,OAAOuD,KAAKyD,GAAWtD,OAAQ5E,GAAQA,KAAO2H,GAAWzD,OAAS,EACpE,MAAM,IAAIxB,EACR,mEAGJ6F,EAAY,IAAKZ,KAAcO,EAChC,CAmBD,OAhBGjE,EAAKd,SAASnC,IACdiD,EAAKd,SAASnC,GAAMmH,IACnBrC,KAAc7B,EAAKd,SAASnC,GAAMmH,KAEpClE,EAAKd,SAASnC,GAAQiD,EAAKd,SAASnC,IAAS,GAC7CiD,EAAKd,SAASnC,GAAMmH,GAClBlE,EAAKd,SAASnC,GAAMmH,IAAgB,CAAA,EACtClE,EAAKd,SAASnC,GAAMmH,GAAarC,GAAc,CAC7C7B,KAAMsE,GAGRxH,EAAMqD,KA5ed,EACE2D,EACAvG,IAEO,CAACZ,EAAauH,KACnBzG,EAAWH,SAASC,EAASuG,EAAInH,EAAQuH,IAwenCK,CAAOJ,EAA8B5G,GACrCiH,eAAa/G,EAAW1B,IAAIoI,GAAcnE,KAGvClD,GACN,IACH,OAAOsD,EAAKA,SAAIV,EAATU,CAAqBzD,EAAQuH,GAExC,CAyCgB,SAAAO,EACd1I,EACAwB,GAEA,MAAO,IAAImH,IACFC,EAAAA,SAAS5I,EAAK,CAAEtB,KAAMiK,EAAQnH,WAEzC,CA0Ba,MCpnBAqH,EAA6D,CACxEC,mBAAehK,EACfiK,cAAe,GACfC,4BAA6B,GAC7BC,SAAU,GACVC,gBAAgB,EAChBC,eAAgB,GAChBrI,eAAWhC,EACXsK,qBAAqB,EACrBC,sBAAsB,GCQXC,EAIXC,IAEO,IAAIC,GAAaC,WACtBvI,OAAOwI,OAAO,CAAA,EAAIH,EAAK,CAAEI,UAAW,IAAIrK,cA8D/BkK,EACX,WAAAlL,GAWSU,KAAA0B,MACP,IAAIkJ,EAAAA,kBAXJ1I,OAAO2I,eAAe7K,KAAM,QAAS,CACnCP,MAAO,IAAImL,EAAAA,kBACXE,UAAU,EACVC,YAAY,EACZC,cAAc,GAEjB,QAEMhL,KAAOiL,QAAwBX,CAAsB,CAW5D,UAAAG,CAA6BhL,GAO3B,OANAyC,OAAO2I,eAAe7K,KAAM,QAAS,CACnCP,MAAQO,KAAK0B,MAAiC+I,WAAWhL,GACzDqL,UAAU,EACVC,YAAY,EACZC,cAAc,IAEThL,IACR,CAED,aAAI2K,GACF,OAAQ3K,KAAK0B,MAAciJ,SAC5B,CAOD,GAAAhJ,CAAuBX,GACrB,IACE,OAAQhB,KAAK0B,MAAiCC,IAC5CX,EAEH,CAAC,MAAOT,GACP,MAAM2K,EAAUlL,KAAK0B,MAAcoI,cAGnC,GAAIoB,EAAQ,OAAOA,EAAOvJ,IAAIX,GAC9B,MAAMT,CACP,CACF,CAKD,gBAAO4K,CACL5G,EACA6G,GAEA,OAAOZ,EAAQS,QACb/I,OAAOwI,OAAO,CAAA,EAAKnG,EAAgB7C,MAAO0J,GAAa,CAAE,GAE5D,CAKD,iBAAalD,CAKXpG,EAKAsJ,EACA5G,KAEG9E,GAEH,OAAO8K,EAAQS,QACb/I,OAAOwI,OAAO,CAAE,EAAEb,EAA2CuB,EAAW,CACtEtJ,UAAWA,EACX0C,MAAOA,IAGZ,CAKD,iBAAa9E,CAKXoC,EAKA0C,EACA9E,EACA2L,EACAD,GAEA,MAAME,EAAO5L,EAAK6L,MAElBnH,eAAeoH,IACb,OAAIH,EACKA,EAAW9G,QAAQzC,EAAWsJ,GAAa,CAAA,EAAI5G,KAAU9E,GAC3D8K,EAAQtC,KAAKpG,EAAWsJ,GAAa,CAAA,EAAI5G,KAAU9E,EAC3D,CAED,IAAI+I,EAeJ,OAdI6C,EACEA,aAAgBd,GAClB/B,EAAI6C,EACJ5L,EAAK0F,KAAKkG,KAEV5L,EAAK0F,KAAKkG,GACV7C,QAAW+C,IACX9L,EAAK0F,KAAKqD,KAGZA,QAAW+C,IACX9L,EAAK0F,KAAKqD,IAGL,CAAElE,QAASkE,EAAG/I,KAAMA,EAC5B,ECrJG,SAAU+L,EACdC,EACAC,EACAC,EACA5C,EACA6C,GAEA,MAAM7J,EAAO6J,GAA0BD,EAAO5J,KAC9C0J,EAAI1J,GAAQ,IAAI8J,MAAMJ,EAAI1J,GAAO,CAC/BqD,MAAOjB,MAAOxC,EAAQmK,EAASC,KAC7B,IAAIC,EAAkBN,EAAOO,KAAKH,KAAYC,GAC1CC,aAA2BE,UAC7BF,QAAwBA,GAC1B,MAAM1H,EAAU0H,EAAgBA,EAAgB/G,OAAS,GACzD,KAAMX,aAAmBiG,GACvB,MAAM,IAAI9G,EAAc,qBAC1B,IAAI0I,QAAgBxK,EAAOsK,KAAKH,KAAYE,GAI5C,OAHIG,aAAmBD,UAASC,QAAgBA,GAChDA,EAAUpD,EAAMkD,KAAKH,EAASK,EAAS7H,GACnC6H,aAAmBD,UAASC,QAAgBA,GACzCA,IAGb,CC9EM,SAAUC,EAAgC7H,GAC9C,MAAMG,EAAamB,EACjBtB,OACA1E,EACAjC,EAAOC,QAAUD,EAAOK,IAEpBoO,EAAepK,OAAOgE,QAAQvB,GAAsBe,OACxD,CAAC3D,GAAsCiC,EAAMiC,MAC3C,MAAMsG,EAAYtG,EAA2BL,OAC1CC,GAAMA,EAAE7E,MAAQjD,YAAUwI,MAM7B,OAJIgG,GAAYA,EAASrH,SACvBnD,EAAMiC,GAAQjC,EAAMiC,IAAS,GAC7BjC,EAAMiC,GAAMoB,QAAQmH,IAEfxK,GAET,CAAE,GAGJ,IAAKuK,IAAiBpK,OAAOuD,KAAK6G,GAAcpH,OAC9C,MAAM,IAAIxB,EAAc,wCAC1B,GAAIxB,OAAOuD,KAAK6G,GAAcpH,OAAS,EACrC,MAAM,IAAIxB,EAAc8I,EAAEA,GAACtK,OAAOuD,KAAK6G,GAAcG,KAAK,QAC5D,MAAMC,EAASxK,OAAOuD,KAAK6G,GAAc,GACzC,IAAKI,EAAQ,MAAM,IAAIhJ,EAAc,wCACrC,MAAO,CACLiJ,GAAID,EACJxI,MAAOoI,EAAaI,GAAQ,GAAGxI,MAEnC,UAuBgB0I,EACdpI,EACAqI,GAAc,GAEd,MAAMH,EAASL,EAAe7H,GAAOmI,GAC/BG,EAAUtI,EAAMkI,GACtB,QAAuB,IAAZI,IAA4BD,EACrC,MAAM,IAAInJ,EACR,qDAAqDgJ,GAEzD,OAAOI,CACT,OCYsBC,EAgBpB,SAAI,GACF,IAAK/M,KAAKgN,OACR,MAAM,IAAItJ,EAAc,iDAC1B,OAAO1D,KAAKgN,MACb,CAQD,MAAIC,GACF,IAAKjN,KAAKkN,IAAK,CACb,MAAMP,GAAEA,EAAEzI,MAAEA,GAAUmI,EAAe,IAAIrM,KAAKmN,OAC9CnN,KAAKkN,IAAMP,EACX3M,KAAKoN,SAAWlJ,CACjB,CACD,OAAOlE,KAAKkN,GACb,CAQD,WAAcG,GAKZ,OAJKrN,KAAKoN,UAEGpN,KAAKiN,GAEXjN,KAAKoN,QACb,CAED,WAAA9N,CAAsBqH,GAChBA,IAAO3G,KAAKgN,OAASrG,GAEzB,MAAM2G,EAAOtN,KACb,CAACA,KAAKuN,OAAQvN,KAAKwN,KAAMxN,KAAKyN,OAAQzN,KAAK0N,QAAQvH,QAASlC,IAC1D,MAAMjC,EAAOiC,EAAEjC,KACfyJ,EACE6B,EACCA,EAAatL,EAAO,UACrBiC,EACCqJ,EAAatL,EAAO,YAG1B,CAoBD,eAAM2L,CAAUC,KAAgBlO,GAC9B,OAAOyM,QAAQ0B,IAAID,EAAOxF,IAAKnE,GAAMjE,KAAKuN,OAAOtJ,KAAMvE,IACxD,CAWS,kBAAMoO,CAAatJ,KAAa9E,GACxC,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcM,OACdlB,KAAKmN,MACLzN,GAUF,OARA8E,EAAQ,IAAIxE,KAAKmN,MAAM3I,SACjBH,EACJrE,KACA+N,EAAYxJ,QACZC,EACA5D,EAAAA,cAAcM,OACdN,gBAAcuE,IAET,CAACX,KAAUuJ,EAAYrO,KAC/B,CAUS,kBAAMsO,CAAaxJ,EAAUD,GAQrC,aAPMF,EACJrE,KACAuE,EACAC,EACA5D,EAAAA,cAAcM,OACdN,gBAAc6F,OAETjC,CACR,CAWS,qBAAMyJ,CAAgBL,KAAgBlO,GAC9C,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcM,OACdlB,KAAKmN,MACLzN,GAeF,aAbMyM,QAAQ0B,IACZD,EAAOxF,IAAIhE,MAAOH,IAChBA,EAAI,IAAIjE,KAAKmN,MAAMlJ,SACbI,EACJrE,KACA+N,EAAYxJ,QACZN,EACArD,EAAAA,cAAcM,OACdN,gBAAcuE,IAETlB,KAGJ,CAAC2J,KAAWG,EAAYrO,KAChC,CAUS,qBAAMwO,CAAgBN,EAAarJ,GAY3C,aAXM4H,QAAQ0B,IACZD,EAAOxF,IAAKnE,GACVI,EACErE,KACAuE,EACAN,EACArD,EAAAA,cAAcM,OACdN,EAAAA,cAAc6F,SAIbmH,CACR,CAoBD,aAAMO,CAAQ1I,KAA8B/F,GAC1C,aAAayM,QAAQ0B,IAAIpI,EAAK2C,IAAKuE,GAAO3M,KAAKwN,KAAKb,KAAOjN,IAC5D,CAUS,gBAAM0O,CAAW5J,EAAUD,GAQnC,aAPMF,EACJrE,KACAuE,EACAC,EACA5D,EAAAA,cAAcO,KACdP,gBAAc6F,OAETjC,CACR,CAWS,gBAAM6J,CAAWrN,KAAgBtB,GACzC,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcO,KACdnB,KAAKmN,MACLzN,GAEI8E,EAAW,IAAIxE,KAAKmN,MAS1B,OARA3I,EAAMxE,KAAKiN,IAAMjM,QACXqD,EACJrE,KACA+N,EAAYxJ,QACZC,EACA5D,EAAAA,cAAcO,KACdP,gBAAcuE,IAET,CAACnE,KAAQ+M,EAAYrO,KAC7B,CAWS,mBAAM4O,CAAc7I,KAA8B/F,GAC1D,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcO,KACdnB,KAAKmN,MACLzN,GAeF,aAbMyM,QAAQ0B,IACZpI,EAAK2C,IAAIhE,MAAOmK,IACd,MAAMtK,EAAI,IAAIjE,KAAKmN,MAEnB,OADAlJ,EAAEjE,KAAKiN,IAAMsB,EACNlK,EACLrE,KACA+N,EAAYxJ,QACZN,EACArD,EAAAA,cAAcO,KACdP,gBAAcuE,OAIb,CAACM,KAASsI,EAAYrO,KAC9B,CAUS,mBAAM8O,CAAcZ,EAAarJ,GAYzC,aAXM4H,QAAQ0B,IACZD,EAAOxF,IAAKnE,GACVI,EACErE,KACAuE,EACAN,EACArD,EAAAA,cAAcO,KACdP,EAAAA,cAAc6F,SAIbmH,CACR,CAoBD,eAAMa,CAAUb,KAAgBlO,GAC9B,OAAOyM,QAAQ0B,IAAID,EAAOxF,IAAKnE,GAAMjE,KAAKyN,OAAOxJ,KAAMvE,IACxD,CAUS,kBAAMgP,CAAalK,EAAUD,GAQrC,aAPMF,EACJrE,KACAuE,EACAC,EACA5D,EAAAA,cAAcQ,OACdR,gBAAc6F,OAETjC,CACR,CAWS,kBAAMmK,CAAanK,KAAa9E,GACxC,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcQ,OACdpB,KAAKmN,MACLzN,GAEIiN,EAAKnI,EAAMxE,KAAKiN,IACtB,IAAKN,EACH,MAAM,IAAIjJ,EACR,qDAAqD1D,KAAKiN,IAE9D,MAAMvI,QAAiB1E,KAAKwN,KAAKb,GASjC,aARMtI,EACJrE,KACA+N,EAAYxJ,QACZC,EACA5D,EAAaA,cAACQ,OACdR,EAAAA,cAAcuE,GACdT,GAEK,CAACF,KAAUuJ,EAAYrO,KAC/B,CAWS,qBAAMkP,CAAgBhB,KAAgBlO,GAC9C,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcQ,OACdpB,KAAKmN,MACLzN,GAeF,aAbMyM,QAAQ0B,IACZD,EAAOxF,IAAKnE,IACVA,EAAI,IAAIjE,KAAKmN,MAAMlJ,GACnBI,EACErE,KACA+N,EAAYxJ,QACZN,EACArD,EAAAA,cAAcQ,OACdR,gBAAcuE,IAETlB,KAGJ,CAAC2J,KAAWG,EAAYrO,KAChC,CAUS,qBAAMmP,CAAgBjB,EAAarJ,GAY3C,aAXM4H,QAAQ0B,IACZD,EAAOxF,IAAKnE,GACVI,EACErE,KACAuE,EACAN,EACArD,EAAAA,cAAcQ,OACdR,EAAAA,cAAc6F,SAIbmH,CACR,CAoBD,eAAMkB,CAAUrJ,KAA8B/F,GAC5C,OAAOyM,QAAQ0B,IAAIpI,EAAK2C,IAAKmG,GAAMvO,KAAK0N,OAAOa,KAAM7O,IACtD,CAUS,kBAAMqP,CAAavK,EAAUD,GAQrC,aAPMF,EACJrE,KACAuE,EACAC,EACA5D,EAAAA,cAAcS,OACdT,gBAAc6F,OAETjC,CACR,CAWS,kBAAMwK,CAAahO,KAAatB,GACxC,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcS,OACdrB,KAAKmN,MACLzN,GAEI8E,QAAcxE,KAAKwN,KAAKxM,KAAQ+M,EAAYrO,MAQlD,aAPM2E,EACJrE,KACA+N,EAAYxJ,QACZC,EACA5D,EAAAA,cAAcS,OACdT,gBAAcuE,IAET,CAACnE,KAAQ+M,EAAYrO,KAC7B,CAWS,qBAAMuP,CAAgBxJ,KAA8B/F,GAC5D,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcS,OACdrB,KAAKmN,MACLzN,GAEIkO,QAAe5N,KAAKmO,QAAQ1I,KAASsI,EAAYrO,MAYvD,aAXMyM,QAAQ0B,IACZD,EAAOxF,IAAIhE,MAAOH,GACTI,EACLrE,KACA+N,EAAYxJ,QACZN,EACArD,EAAAA,cAAcS,OACdT,gBAAcuE,MAIb,CAACM,KAASsI,EAAYrO,KAC9B,CAUS,qBAAMwP,CAAgBtB,EAAarJ,GAY3C,aAXM4H,QAAQ0B,IACZD,EAAOxF,IAAKnE,GACVI,EACErE,KACAuE,EACAN,EACArD,EAAAA,cAAcS,OACdT,EAAAA,cAAc6F,SAIbmH,CACR,CAUS,KAAAuB,CAAMzK,EAAaF,GAC3B,MAAM4K,EAAW5K,GACftC,OAAOgE,QAAQ1B,GAAOkB,OAAO,CAAC3D,GAA6Bf,EAAKoF,WAC3C,IAARA,IAAqBrE,EAAMf,GAAOoF,GACtCrE,GACN,CAAE,GAEP,OAAO,IAAI/B,KAAKmN,MAAMjL,OAAOwI,OAAO,CAAA,EAAI0E,EAAQ1K,GAAW0K,EAAQ5K,IACpE,CAOD,QAAA1B,GACE,OAAU9C,KAAKmN,MAAMnL,KAAd,aACR,EC3nBG,MAAgBqN,UAIZtC,EACR,WAAAzN,CAAsBqH,GACpBpH,MAAMoH,EACP,CAYkB,kBAAMmH,CACvBtJ,KACG9E,GAEH,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcM,OACdlB,KAAKmN,MACLzN,GAEF8E,EAAQ,IAAIxE,KAAKmN,MAAM3I,SACjBH,EACJrE,KACA+N,EAAYxJ,QACZC,EACA5D,EAAAA,cAAcM,OACdN,gBAAcuE,IAGhB,MAAMmK,QAAenD,QAAQoD,QAAQ/K,EAAMhF,aAC3C,GAAI8P,EAAQ,MAAM,IAAI7L,EAAgB6L,EAAOxM,YAE7C,MAAO,CAAC0B,KAAUuJ,EAAYrO,KAC/B,CAYkB,qBAAMuO,CACvBL,KACGlO,GAEH,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcM,OACdlB,KAAKmN,MACLzN,SAEIyM,QAAQ0B,IACZD,EAAOxF,IAAIhE,MAAOH,IAChBA,EAAI,IAAIjE,KAAKmN,MAAMlJ,SACbI,EACJrE,KACA+N,EAAYxJ,QACZN,EACArD,EAAAA,cAAcM,OACdN,gBAAcuE,IAETlB,KAIX,MAIMqL,SAJyBnD,QAAQ0B,IACrCD,EAAOxF,IAAKnE,GAAMkI,QAAQoD,QAAQtL,EAAEzE,gBAGNkG,OAC9B,CAAC3D,EAA2BxB,EAAG+G,KACzB/G,IACFwB,EACmB,iBAAVA,EACHA,EAAQ,QAAQuF,MAAM/G,EAAEuC,aACxB,MAAMwE,MAAM/G,EAAEuC,cACff,QAETjC,GAGF,GAAIwP,EAAQ,MAAM,IAAI7L,EAAgB6L,GACtC,MAAO,CAAC1B,KAAWG,EAAYrO,KAChC,CAckB,kBAAMiP,CACvBnK,KACG9E,GAEH,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcQ,OACdpB,KAAKmN,MACLzN,GAEIuN,EAAMzI,EAAcxE,KAAKiN,IAC/B,IAAKA,EACH,MAAM,IAAIvJ,EACR,qDAAqD1D,KAAKiN,IAG9D,MAAMvI,QAAoB1E,KAAKwN,KAAKP,GAEpCzI,EAAQxE,KAAKmP,MAAMzK,EAAUF,SAEvBH,EACJrE,KACA+N,EAAYxJ,QACZC,EACA5D,EAAaA,cAACQ,OACdR,EAAAA,cAAcuE,GACdT,GAGF,MAAM4K,QAAenD,QAAQoD,QAAQ/K,EAAMhF,UAAUkF,IACrD,GAAI4K,EAAQ,MAAM,IAAI7L,EAAgB6L,EAAOxM,YAC7C,MAAO,CAAC0B,KAAUuJ,EAAYrO,KAC/B,CAckB,qBAAMkP,CAAgBhB,KAAgBlO,GACvD,MAAMqO,QAAoBvD,EAAQ9K,KAChCkB,EAAAA,cAAcQ,OACdpB,KAAKmN,MACLzN,GAEI8P,EAAM5B,EAAOxF,IAAKnE,IACtB,MAAM0I,EAAK1I,EAAEjE,KAAKiN,IAClB,QAAkB,IAAPN,EACT,MAAM,IAAIjJ,EACR,qDAAqD1D,KAAKiN,IAE9D,OAAON,IAEH8C,QAAuBzP,KAAKmO,QAAQqB,KAAQzB,EAAYrO,MAC9DkO,EAASA,EAAOxF,IAAI,CAACnE,EAAGqD,IAAMtH,KAAKmP,MAAMM,EAAUnI,GAAIrD,UACjDkI,QAAQ0B,IACZD,EAAOxF,IAAI,CAACnE,EAAGqD,IACbjD,EACErE,KACA+N,EAAYxJ,QACZN,EACArD,gBAAcQ,OACdR,EAAaA,cAACuE,GACdsK,EAAUnI,MAKhB,MAIMgI,SAJyBnD,QAAQ0B,IACrCD,EAAOxF,IAAI,CAACnE,EAAGqD,IAAM6E,QAAQoD,QAAQtL,EAAEzE,UAAUiQ,EAAUnI,QAG7B5B,OAC9B,CAAC3D,EAA2BxB,EAAG+G,KACzB/G,IACFwB,EACmB,iBAAVA,EACHA,EAAQ,QAAQuF,MAAM/G,EAAEuC,aACxB,MAAMwE,MAAM/G,EAAEuC,cACff,QAETjC,GAGF,GAAIwP,EAAQ,MAAM,IAAI7L,EAAgB6L,GACtC,MAAO,CAAC1B,KAAWG,EAAYrO,KAChC,CASD,UAAOsB,CAAIA,GACT,OAAOnD,EAAOC,QAAUkD,CACzB,ECrOG,SAAU0O,EACd7P,EAAkBd,EAAuBT,SAASU,SAElD,MAAMgC,EAAMF,EAAUA,WAACC,UAAUlD,EAAOS,UACxC,OAAOqR,EAAUA,WAACC,IAAI5O,GACnB6O,OACCpG,EAAYA,aAACzI,EAAK,CAChBnB,QAASA,KAGZwF,OACL,CAiBOjB,eAAe0L,EAMXvL,EAAYU,EAASjE,EAAcwD,GAC3CA,EAAcxD,GAAOuD,EAAQoG,SAChC,CAiGOvG,eAAe2L,EAMXxL,EAAYU,EAASjE,EAAcwD,GAC5C,GAAKA,EAAMxD,GACX,IACEwD,EAAMxD,GAAOgP,KAAKC,UAAUzL,EAAMxD,GAEnC,CAAC,MAAOT,GACP,MAAM,IAAIoD,EACR,uBAAuB3C,EAAI8B,gCAAgC0B,EAAMlF,YAAY0C,UAEhF,CACH,CAiBOoC,eAAe8L,EAMX3L,EAAYU,EAASjE,EAAcwD,GAC5C,GAAKA,EAAMxD,IACe,iBAAfwD,EAAMxD,GAEjB,IACEwD,EAAMxD,GAAOgP,KAAKG,MAAM3L,EAAMxD,GAC/B,CAAC,MAAOT,GACP,MAAM,IAAIoD,EACR,yBAAyB3C,EAAI8B,gCAAgC0B,EAAMlF,YAAY0C,SAASzB,IAE3F,CACH,CC7KgB,SAAA6P,EACd5L,EACA6L,GAEA,MAAMC,EAA+D,GACrE,IAAK,MAAMtM,KAAQQ,EACjB,GACEtC,OAAOE,UAAUmO,eAAerE,KAAK1H,EAAOR,KAC3CqM,EAAcG,SAASxM,GACxB,CACA,MAAMyM,EAA+BC,EAAAA,wBACnClM,EACAR,EACA7E,EAAqBrB,SAGjB6S,EAAgBD,EAAuBA,wBAC3ClM,EACAR,GACAW,WAAW2B,KAAK,EAAGtF,SAAUA,IAAQ4P,EAAcA,eAACC,MAElDF,GACFF,EAA6B9L,WAAWS,KAAKuL,GAE/CL,EAAoBlL,KAAKqL,EAC1B,CAGH,OAAOH,CACT,CAEM,SAAUQ,EAIdC,EACArM,EACAV,EACA2B,EACAvB,GAEA,MAAMhE,EAA6BU,EAAUA,WAACa,IAC5CgE,EAAU3E,KAGZ,IAAKZ,EACH,MAAUgD,MAAM,yBAAyBuC,EAAU3E,KAIrD,IAAKZ,EAAUT,gBAAiB,OAAOqR,EAAoBA,0BAAClR,EAAWsE,GAGvE,IAAKA,GAASuB,EAAUzB,MAAME,MAC5B,OAAO4M,EAAoBA,0BAAClR,EAAWsE,GAEzC,MAAM6M,EAAiB/O,OAAOC,OAAOwD,EAAUzB,QAAU,GAOnDgN,EAAa9Q,EAAUT,gBAC1BoR,EAAiB/M,GACjBU,EAAiBV,MACfiN,GAGL,OAAOD,EAAoBA,qBAACE,EAAY9M,EAC1C,CAEM,SAAU+M,GAIdJ,EACArM,EACAV,EACAW,EACAP,GAEA,MAAMgN,EAAmD,CAAA,EAEzD,IAAK,MAAMzL,KAAahB,EAAY,CAElC,IAAKP,GAASuB,EAAUzB,MAAME,MAAO,SAErC,IAAIiN,EAAmBP,EACrBC,EACArM,EACAV,EACA2B,EACAvB,GAQF,GAAIuB,EAAU3E,MAAQ4P,EAAcA,eAACC,QAAUQ,GAAoBjN,GAAQ,CACzE,MAAMkN,EAAgBP,EAAiB/M,GACjCuN,EAAgB7M,EAAiBV,GAEjCwN,EACJF,aAAwBG,IAAM,IAAIH,GAAgBA,EAC9CI,EACJH,aAAwBE,IAAM,IAAIF,GAAgBA,EAEpD,GAAIC,GAAaA,EAAUtM,OAAS,EAAG,CACrC,MAKMyM,EAAe,CAJnBhM,EAAUzB,MAAMiJ,OAChBxH,EAAUzB,MAAMyC,OAChBhB,EAAUzB,MAAM0N,aAEWC,OAAOzJ,IAAK0J,KAEvCA,GADAA,EAAiB,mBAANA,GAAqBA,EAAE9P,KAAa8P,EAANA,KAC1B9P,KAAQ8P,EAAU9P,KAAO8P,GACjCC,IAAUC,eAGbC,EAAOT,EAAUpJ,IAAK8J,IAE1B,MAAMvF,EAAKC,EAAYsF,GAAmB,GAC1C,IAAKvF,EAAI,MAAO,0BAEhB,MAAMjI,EAAWgN,EAAUpL,KACxB6L,GAAYxF,IAAOC,EAAYuF,GAAI,IAGtC,OAAIC,EAAKA,MAACC,QAAQH,GACTA,EAAW1S,UAAUkF,GAGvBiN,EAAanB,gBAAgB0B,QAChCpS,EACA,kCAGN,GAAIsE,EACFiN,EAAmBlF,QAAQ0B,IAAIoE,GAAMK,KAAMlB,GACxBA,EAAOmB,MAAOC,IAAOA,QACpB1S,EAAYsR,OAE3B,CACL,MAAMqB,EAAWR,EAAKM,MAAOC,IAA2BA,GACxDnB,EAAmBY,EAAK/M,OAAS,IAAMuN,EAAWR,OAAOnS,CAC1D,CACF,CACF,CAEGuR,IAAmBD,EAAezL,EAAU3E,KAAOqQ,EACxD,CAED,IAAKjN,EACH,OAAOlC,OAAOuD,KAAK2L,GAAQlM,OAAS,EAAKkM,OAAiBtR,EAE5D,MAAM2F,EAAOvD,OAAOuD,KAAK2L,GACnBsB,EAAWxQ,OAAOC,OAAOiP,GAC/B,OAAOjF,QAAQ0B,IAAI6E,GAAUJ,KAAMK,IACjC,MAAMC,EAA8B,CAAA,EACpC,IAAK,IAAItL,EAAI,EAAGA,EAAIqL,EAAezN,OAAQoC,IAAK,CAC9C,MAAMlB,EAAMuM,EAAerL,QACfxH,IAARsG,IACFwM,EAAInN,EAAK6B,IAAMlB,EAElB,CACD,OAAOlE,OAAOuD,KAAKmN,GAAK1N,OAAS,EAAI0N,OAAM9S,GAE/C,CAiCM,SAAU+S,GACdnO,EACAqM,EACA3M,KACG0O,GAEH,MAAMxC,EACJF,EAA0BW,EAAU+B,GAEhC1B,EAA8B,CAAA,EAE9B2B,EAAoC,CAAA,EAC1C,IAAK,MAAM/O,KAAEA,EAAIW,WAAEA,KAAgB2L,EAAqB,CACtD,MAAMzO,EAAiBmC,EAAP+N,GAChB,IAAIiB,EAAajC,EAAiB/M,GAElC,IAAKW,GAAYO,OAAQ,SAGzB,MAAM+N,EAAgBtO,EAAW2B,KAAMT,GACrC,CAAC9H,EAASA,UAACwI,KAAMqK,EAAcA,eAACrK,MAAMiK,SAAS3K,EAAE7E,MAEnD,IAAKiS,EAAe,SAEpB,MAAMC,EAAaD,EAAc/O,MAAMlC,KAGvC,GAAI,CAACiG,MAAMjG,KAAMyP,IAAIzP,MAAMwO,SAAS0C,GAAa,CAC/C,MAAMvO,WAAEA,GAAeY,aAAW4N,sBAChCvC,EAAAA,eAAe9S,QACfiT,EACAlP,GAGF,IAAK8C,EAAWyO,KAAMvN,GAAMA,EAAE7E,MAAQ4P,iBAAeC,MAAO,CAC1DO,EAAOvP,GAAW,CAChB,CAAC+O,EAAcA,eAACrK,MAAO,0BAA0B1E,iCAEnD,QACD,CAED,GACEmR,KACE/K,MAAMoL,QAAQL,IAAcA,aAAqBvB,KACnD,CACAL,EAAOvP,GAAW,CAChB,CAAC+O,EAAAA,eAAerK,MAAO,aAAoBvC,EAAP+N,wCAEtC,QACD,CAGD,IAAK,IAAIzK,EAAI3C,EAAWO,OAAS,EAAGoC,GAAK,EAAGA,IACtC3C,EAAW2C,GAAGtG,MAAQjD,EAAAA,UAAUwI,MAClC5B,EAAW2O,OAAOhM,EAAG,GAGzB0L,EAAYA,aAAqBvB,IAAM,IAAIuB,GAAaA,CACzD,CAED,MAAMO,EACJpC,GAAmBJ,EAAUrM,EAAU7C,EAAS8C,EAAYP,IAAU,GAIlEoP,EAAWpB,EAAKA,MAACqB,gBAAgB1C,EAAUlP,GAEjD,GAAImR,GAAaQ,EAAU,CACzB,MAAME,EAAkBV,EAEF,iBAAbU,IACNA,EAASlU,WACoB,mBAAvBkU,EAASlU,YAOhBuT,EAAalR,GAAW6R,EAASlU,UAAWkF,EAAiBV,IAEhE,EAIG9B,OAAOuD,KAAK8N,GAAYrO,OAAS,GAAKd,KACxCgN,EAAOvP,GAAW0R,GAGfnP,GACHlC,OAAOgE,QAAQ6M,EAAalR,IAAY,CAAA,GAAIsE,QAAQ,EAAEnF,EAAK2S,WAC3C7T,IAAV6T,IACFvC,EAAO,GAAGvP,KAAWb,KAAS2S,IAIrC,CAGD,IAAKvP,EACH,OACElC,OAAOuD,KAAK2L,GAAQlM,OAAS,EACzB,IAAI0O,EAAAA,qBAAqBxC,QACzBtR,EAIR,MAAM+T,EAAczC,EAEd3L,EAAOvD,OAAOuD,KAAKoO,GACnBnB,EAAWxQ,OAAOC,OAAO0R,GAC/B,OAAO1H,QAAQ2H,WAAWpB,GAAUJ,KAAKlO,MAAOgI,IAC9C,MAAMgF,EAAsB,CAAA,EAE5B,IAAK,MAAO2C,EAAYC,KAAqB9R,OAAOgE,QAAQ6M,GAAe,CACzE,MAAMkB,QAA6BD,EAK/BC,GACF/R,OAAOgE,QAAQ+N,GAAqB9N,QAClC,EAAE+N,EAAYC,WACerU,IAAvBqU,IAEF/C,EADkB,CAAC2C,EAAYG,GAAYzH,KAAK,MAC5B0H,IAI7B,CAED,IAAK,IAAI7M,EAAI,EAAGA,EAAI8E,EAAQlH,OAAQoC,IAAK,CACvC,MAAMtG,EAAMyE,EAAK6B,GACXsL,EAAMxG,EAAQ9E,GAED,cAAfsL,EAAIwB,aAAwCtU,IAAd8S,EAAInT,MACnC2R,EAAepQ,GAAO4R,EAAInT,MACH,aAAfmT,EAAIwB,SACZhD,EAAepQ,GACd4R,EAAIyB,kBAAkBjR,MAClBwP,EAAIyB,OAAOxU,SACJ+S,EAAIyB,QAAU,qBAArBtC,GAET,CAED,OAAO7P,OAAOuD,KAAK2L,GAAQlM,OAAS,EAChC,IAAI0O,EAAAA,qBAAqBxC,QACzBtR,GAER,CCrWM,SAAUwU,GAML/P,EAAYU,EAASjE,EAAcwD,EAAUE,GACtD,QAA0B,IAAfF,EAAMxD,GAAsB,OACvC,MAAM6B,EAAOD,EAAAA,QAAQC,KAAM2B,EAAcxD,IACrC0D,GAAaF,EAAcxD,KAAS6B,IACxC2B,EAAMxD,GAAO6B,EACf,UASgBA,KACd,OAAOwC,QACLqD,EAAe4L,IACf7K,EAAAA,aAAa4F,EAAWrO,IAAInD,EAAOY,MAAO,CAAA,GAE9C,CAuCM,SAAU8V,GAMLhQ,EAAYU,EAASjE,EAAcwD,GAC5C,IACE,MAAM9E,KAAEA,EAAI8U,KAAEA,EAAI/P,OAAEA,EAAMgQ,OAAEA,EAAMC,UAAEA,GAAczP,EAC5C0P,EAAWjV,EAAK0I,IAAKmC,IACzB,KAAMA,KAAO/F,GACX,MAAM,IAAId,EAAc,YAAY6G,+BACtC,GAAa,SAATiK,EAAiB,OAAOjK,EAC5B,QAAmC,IAAvB/F,EAAc+F,GACxB,MAAM,IAAI7G,EACR,YAAYhE,8CAEhB,OAAS8E,EAAc+F,GAAazH,aAGlC2B,GAAQkQ,EAAS1S,QAAQwC,GACzBgQ,GAAQE,EAASvP,KAAKqP,GAEzBjQ,EAAcxD,GAAO2T,EAASlI,KAAKiI,EACrC,CAAC,MAAOnU,GACP,MAAM,IAAImD,EAAc,4BAA4BnD,EACrD,CACH,CAgBA,SAASqU,GACPlV,EACAmV,GAAsB,EACtBH,EAAoB7V,EACpB2V,EAA0B,SAC1B/P,EAAS,GACTgQ,EAAS,GACT9L,EAAuB,CAAEvB,SAAU,KAEnC,MAAMnC,EAA6B,CACjCvF,KAAMA,EACNmV,WAAYA,EACZH,UAAWA,EACXF,KAAMA,EACN/P,OAAQA,EACRgQ,OAAQA,GAGJ9P,EAAa,CACjB+D,EAAe6L,GAA0BtP,EAAM0D,GAC/Cc,EAAYA,aAAC4F,EAAWrO,IAAInD,EAAOa,UAAWuG,IAGhD,OADI4P,GAAYlQ,EAAWS,KAAKvC,MACzBwC,EAAKA,SAAIV,EAClB,CAwFM,SAAUmQ,GAAoBhT,GAClC,MAAO,CAMIyC,EAAYU,EAASjE,EAAcwD,KAC5C,IACE,OAAQ1C,GACN,KAAKlB,EAAaA,cAACM,OAChBsD,EAAcxD,GAAO,EACtB,MACF,KAAKJ,EAAaA,cAACQ,OAChBoD,EAAcxD,KACf,MACF,QACE,MAAM,IAAI0C,EAAc,sBAAsB5B,GAEnD,CAAC,MAAOvB,GACP,MAAM,IAAImD,EAAc,6BAA6BnD,EACtD,CACH,CACF,CCnQM,SAAUwU,GAA6BvQ,GAC3C,SACE6E,QAAQC,YAAY+F,EAAWrO,IAAInD,EAAOW,WAAYgG,EAAMlF,eAC5D+J,QAAQC,YACN+F,EAAWrO,IAAInD,EAAOW,WACtB4T,EAAKA,MAACzQ,IAAI6C,EAAMlF,YAAY0C,OAGlC,CCRKgT,EAAA5C,MAAChQ,UAAU5C,UAAY,SAE1ByV,KACGC,IAECD,GAAqBA,aAA2B7C,EAAAA,QAClD8C,EAAWjT,QAAQgT,GACnBA,OAAkBnV,GAGpB,MAAMsE,EAAQpE,KAAKmV,UACblD,EAAOmD,EAAAA,SAASpV,KAAMoE,KAAU8Q,GAEtC,OAAI9Q,EACK+H,QAAQoD,QAAQ0C,GAAMK,KAAM+C,GAC7BA,IAAiBJ,EACZI,EAEFxC,GAAgBoC,EAAiBjV,KAAMoE,KAAU8Q,IAIxDjD,IAASgD,EAAwBhD,EAG9BY,GAAgBoC,EAAiBjV,KAAMoE,KAAU8Q,EAC1D,yEXklBgCI,GAC9B5L,EACE9I,EAAaA,cAAC9C,QAAU8C,EAAAA,cAAc2U,MACtC,CAACD,EAA8BxT,IACtBwT,EAAW9E,SAAS1O,GAH/B4H,CAKE4L,sWY/mBmB,wDZ0arB9S,EACAyC,EACA0D,IAEOK,EAAM/H,EAAaO,IAAKgB,EAASyC,EAAM0D,kBAzD9CnG,EACAyC,EACA0D,IAEOK,EAAM/H,EAAaC,OAAQsB,EAASyC,EAAM0D,wBA1CjDnG,EAGAyC,EACA0D,IAEOK,EAAM/H,EAAaK,cAAekB,EAASyC,EAAM0D,kBAmExDnG,EACAyC,EACA0D,IAEOK,EAAM/H,EAAaI,OAAQmB,EAASyC,EAAM0D,gBArBjDnG,EACAyC,EACA0D,IAEOK,EAAM/H,EAAaE,KAAMqB,EAASyC,EAAM0D,kBAxC/CnG,EACAyC,EACA0D,IAEOK,EAAM/H,EAAaG,OAAQoB,EAASyC,EAAM0D,cS/K7C,CACJjJ,EACAgV,EAAoB7V,EACpBgE,GAAgB,EAChB4B,EAAS,GACTgQ,EAAS,GACT9L,EAAuB,CAAEvB,SAAU,MAE5BwN,GACLlV,EACAmD,EACA6R,EACA,SACAjQ,EACAgQ,EACA9L,oDAvCE,CACJjJ,EACAgV,EAAoB7V,EACpBgE,GAAgB,EAChB4B,EAAS,GACTgQ,EAAS,GACT9L,EAAuB,CAAEvB,SAAU,MAE5BwN,GAAalV,EAAMmD,EAAM6R,EAAW,OAAQjQ,EAAQgQ,EAAQ9L,kQI9K5DtD,QACLmQ,EAAAA,WACA9F,IACAjG,EAAYA,aAAC4F,EAAWrO,IAAInD,EAAOK,IAAK,CAAA,wCHyC1CsG,IAEA,IAAKuQ,GAAYvQ,GAAQ,MAAO,CAAEA,MAAOA,GACzC,MAAMyB,EAA8BH,EAClCtB,OACA1E,EACAuP,EAAWrO,IAAInD,EAAOW,YAGlB4S,EAASlP,OAAOgE,QAAQD,GAAMP,OAClC,CACE3D,GACCwM,EAAGnI,MAGJ,GADkBA,EAAIE,KAAM6L,GAAkB,KAAXA,EAAGnR,KACvB,CACbe,EAAM0T,UAAY1T,EAAM0T,WAAa,CAAA,EACrC,IACE1T,EAAM0T,UAAUlH,GAAK/J,EAAM+J,EAC5B,CAAC,MAAOhO,GACP,MAAM,IAAIoD,EACR,0CAA0C4K,MAAMhO,IAEnD,CACF,MACCwB,EAAMyC,MAAQzC,EAAMyC,OAAS,CAAA,EAC7BzC,EAAMyC,MAAM+J,GAAM/J,EAA8B+J,GAElD,OAAOxM,GAET,CAAqE,GAGvE,OADAqP,EAAO5M,MAAQ4N,EAAKA,MAACsD,MAAMtE,EAAO5M,MAAOA,EAAMlF,YAAY0C,MACpDoP,CACT,kBV4NE5O,EACAyC,EACA0D,IAEOC,EAAG3H,EAAaO,IAAKgB,EAASyC,EAAM0D,+CAtB3CnG,EACAyC,EACA0D,IAEOC,EAAG3H,EAAaI,OAAQmB,EAASyC,EAAM0D,aAtB9CnG,EACAyC,EACA0D,IAEOC,EAAG3H,EAAaE,KAAMqB,EAASyC,EAAM0D,6CG1QxC,SACJ+C,EACA1C,EACAvE,EACAkR,GAMA,MAAMC,EAJNxR,kBAAqC1E,GACnC,MAAM0M,QAAgBD,QAAQoD,QAAQ9K,EAAOyH,KAAKlM,QAASN,IAC3D,OAAOyM,QAAQoD,QAAQvG,EAAM3D,MAAMrF,KAAMoM,GAC1C,EACuByJ,KAAKnK,GACvB1J,EAAO2T,GAAwB3M,EAAMhH,KAC3CE,OAAO2I,eAAe+K,EAAS,OAAQ,CACrC7K,YAAY,EACZC,cAAc,EACdF,UAAU,EACVrL,MAAOuC,IAET0J,EAAI1J,GAAQ4T,CACd,+BIiNSvQ,QACLqD,EAAeqH,GACf/G,EAAM/H,EAAaO,IAAK0O,GACxBsE,EAAIA,KAAC,CAACzC,OAAO/P,KAAME,OAAOF,OAC1B4H,EAAAA,SAASyF,EAAWrO,IAAInD,EAAOQ,WAAY,CAAE,iHJxM3C,SACJqN,EACAC,EACA8I,EACAqB,GAMA,MAAMF,EAJNxR,kBAAqC1E,GACnC,MAAM0M,QAAgBD,QAAQoD,QAAQ5D,EAAOO,KAAKlM,QAASN,IAC3D,OAAO+U,EAAOvI,KAAKlM,QAASoM,EAC7B,EACuByJ,KAAKnK,GACvB1J,EAAO8T,GAA0BnK,EAAO3J,KAC9CE,OAAO2I,eAAe+K,EAAS,OAAQ,CACrC7K,YAAY,EACZC,cAAc,EACdF,UAAU,EACVrL,MAAOuC,IAET0J,EAAI1J,GAAQ4T,CACd,cIiDM,CACJ9T,EAA6Bb,EAAaK,cAC1CyU,EAAiBjX,KAEjB,MAAMkC,EAAMF,EAAUA,WAACC,UAAUlD,EAAOU,WAqBxC,OAAOoR,EAAUA,WAACC,IAAI5O,GACnB6O,OAAO,CACNlK,UArBJ,CAAY7D,EAA4BiU,KACtC,MAAMpR,EAAoB,CACxBqR,EAAAA,KAAKD,EAAQhX,EAAuBR,UAAUW,MAC9CsW,WAASzW,EAAuBR,UAAUU,UAC1CwK,EAAAA,aAAa3I,EAAAA,WAAWE,IAAInD,EAAOU,WAAY,CAC7CuD,UAAWA,EACXiU,OAAQA,IAEVnN,EAAG9G,EAAWgO,IAShB,OAPiD,IAA7ChO,EAAUmU,QAAQrV,EAAaA,cAACQ,QAClCuD,EAAWS,KACTqE,EAAYA,aAACzI,EAAK,CAChBnB,QAASd,EAAuBR,UAAUS,WAG3C2F,EAAWS,KAAKsK,KACdrK,EAAKA,SAAIV,EACjB,EAIGjF,KAAM,CAACoC,EAAWiU,KAEnB1Q,OACL,wCEgKE,MAAMrE,EAAMqO,EAAWrO,IAAInD,EAAOW,WAClC,OAAOmR,EAAUA,WAACC,IAAI5O,GACnB6O,OAAO,CAAmBrL,EAAY0R,KACrCzM,eAAa4F,EAAWrO,IAAInD,EAAOW,YAAY,EAA/CiL,CAAqDjF,EAAO0R,GAC5DzM,eAAa4F,EAAWrO,IAAInD,EAAOW,YAAY,EAA/CiL,CAAqDjF,EAAMlF,YAC7D,GACC+F,OACL,oFA1BE,MAAMrE,EAAMqO,EAAWrO,IAAInD,EAAOc,SAClC,OAAOgR,EAAUA,WAACC,IAAI5O,GACnB6O,OACC2E,EAAIA,KAAC2B,OAAOnU,MACZ8G,EAASgM,GAAoBlU,EAAAA,cAAcM,SAC3C2H,EAASiM,GAAoBlU,EAAAA,cAAcQ,SAC3CqI,eAAazI,GAAK,IAEnBqE,OACL"}
1
+ {"version":3,"file":"db-decorators.cjs","sources":["../src/model/constants.ts","../src/validation/constants.ts","../src/validation/validators/ReadOnlyValidator.ts","../src/validation/validators/TimestampValidator.ts","../src/validation/validators/UpdateValidator.ts","../src/operations/constants.ts","../src/validation/validation.ts","../src/operations/OperationsRegistry.ts","../src/operations/Operations.ts","../src/repository/errors.ts","../src/repository/utils.ts","../src/operations/decorators.ts","../src/validation/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/overrides/overrides.ts","../src/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/repository/BaseRepository.ts","../src/index.ts","../src/repository/Repository.ts","../src/identity/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DBKeys","REFLECT","ModelKeys","MODEL","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","exports","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","ModelOperations","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","name","unshift","Object","values","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","getHandlerArgs","dec","prop","m","props","handlers","async","enforceDBDecorators","repo","context","model","prefix","oldModel","decorators","getDbDecorators","sortedDecorators","sortDecorators","groupDecorators","getHandlersDecorators","data","length","ON","push","apply","extraPrefix","replace","Metadata","OPERATIONS","keys","reduce","decorator","obj","filter","d","decs","defaultPriority","DefaultGroupSort","priority","handlerArgs","i","grouped","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","forEach","combined","map","sort","a","b","groupPriority","c","onCreateUpdate","groupsort","on","onUpdate","onCreate","op","after","AFTER","baseOp","dataToAdd","propertyKey","compoundKey","readOperation","handlerKey","mergeData","handle","propMetadata","storeHandlerMetadata","params","metadata","readonly","meta","description","Decoration","for","define","innerValidationDecorator","timestampHandler","timestamp","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","call","includes","validationFor","validateDecorator","newModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","decoratorKey","validationErrors","ValidationKeys","LIST","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","class","clazz","customTypes","flat","t","String","toLowerCase","errs","childValue","id","Model","pk","oldListModel","find","el","isModel","Promise","all","then","every","r","allEmpty","promises","resolvedValues","res","val","validateCompare","ValidatableUpdateProps","nestedErrors","propValue","designTypes","designType","getPropDesignTypes","some","TYPE","isArray","propErrors","isConstr","isPropertyModel","instance","Constr","entries","error","ModelErrorDefinition","merged","allSettled","results","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","join","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","type","suffix","separator","composed","arg","composedFrom","hashResult","versionCreateUpdate","isTransient","decoratorValidation","previousVersion","exclusions","isAsync","validate","resolve","resolvedErrs","toTransient","validatableProperties","transientProps","transient","build","keyValue","constr","idProp","bind","decoration","saveOperation","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","DefaultContextFactory","Context","accumulate","assign","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","wrapMethodWithContext","before","method","methodName","Proxy","thisArg","argArray","transformedArgs","BaseRepository","_class","_pk","_pkProps","pkProps","self","create","read","update","delete","createAll","models","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","merge","extract","PACKAGE_NAME","registerLibrary","operations","BLOCK","errors","ids","oldModels","required","afterName","wrapped","beforeName","format","date","indexOf","attribute","Number"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{ModelKeys as t,validator as e,Validator as r,DEFAULT_ERROR_MESSAGES as n,Validation as s,Hashing as a,propMetadata as o,sf as i,Decoration as c,type as u,date as l,required as p,getValidationDecorators as d,ValidationKeys as h,toConditionalPromise as f,Model as E,ModelErrorDefinition as y,validate as m}from"@decaf-ts/decorator-validation";import{__decorate as A,__metadata as g}from"tslib";import{isEqual as T,Reflection as w,apply as P,metadata as R}from"@decaf-ts/reflection";import{metadata as O}from"@decaf-ts/decoration";import{ObjectAccumulator as D}from"typed-object-accumulator";const b={REFLECT:t.REFLECT+"persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},L="_",v="dd/MM/yyyy HH:mm:ss:S",k={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"}},S={REFLECT:"db.update.validation.",TIMESTAMP:b.TIMESTAMP,READONLY:b.READONLY};let I=class extends r{constructor(){super(k.READONLY.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t)return T(t,e)?void 0:this.getMessage(r||this.message)}};I=A([e(S.READONLY),g("design:paramtypes",[])],I);let N=class extends r{constructor(){super(k.TIMESTAMP.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t){r=r||this.getMessage(r||this.message);try{t=new Date(t),e=new Date(e)}catch(t){return r}return t>e?void 0:r}}};N=A([e(S.TIMESTAMP),g("design:paramtypes",[])],N);class x extends r{constructor(t=n.DEFAULT,...e){super(t,...e)}}var j,C;s.updateKey=t=>S.REFLECT+t,(t=>{t.REFLECT="decaf.model.db.operations.",t.CREATE="create",t.READ="read",t.UPDATE="update",t.DELETE="delete",t.ON="on.",t.AFTER="after.",t.BLOCK="block"})(j||(j={})),(t=>{t.CREATE_ALL="createAll",t.READ_ALL="readAll",t.UPDATE_ALL="updateAll",t.DELETE_ALL="deleteAll"})(C||(C={}));const M={CREATE:[j.CREATE],READ:[j.READ],UPDATE:[j.UPDATE],DELETE:[j.DELETE],CREATE_UPDATE:[j.CREATE,j.UPDATE],READ_CREATE:[j.READ,j.CREATE],ALL:[j.CREATE,j.READ,j.UPDATE,j.DELETE]};class ${constructor(){this.cache={}}get(t,e,r,n){let s;n=n||[];try{s="string"==typeof t?t:t.constructor.name,n.unshift(...Object.values(this.cache[s][e][r]||[]))}catch(e){if("string"==typeof t||t===Object.prototype||Object.getPrototypeOf(t)===Object.prototype)return n}let a=Object.getPrototypeOf(t);return a.constructor.name===s&&(a=Object.getPrototypeOf(a)),this.get(a,e,r,n)}register(t,e,r,n){const s=r.constructor.name,a=U.getHandlerName(t);this.cache[s]||(this.cache[s]={}),this.cache[s][n]||(this.cache[s][n]={}),this.cache[s][n][e]||(this.cache[s][n][e]={}),this.cache[s][n][e][a]||(this.cache[s][n][e][a]=t)}}class U{constructor(){}static getHandlerName(t){return t.name?t.name:a.hash(t.toString())}static key(t){return j.REFLECT+t}static get(t,e,r){return U.registry.get(t,e,r)}static getOpRegistry(){return U.registry||(U.registry=new $),U.registry}static register(t,e,r,n){U.getOpRegistry().register(t,e,r,n)}}class F extends Error{constructor(t,e,r){if(e instanceof F)return e;super(`[${t}] ${e instanceof Error?e.message:e}`),this.code=r,e instanceof Error&&(this.stack=e.stack)}}class _ extends F{constructor(t,e=_.name,r=400){super(e,t,r)}}class Y extends _{constructor(t){super(t,Y.name,422)}}class H extends F{constructor(t,e=H.name,r=500){super(e,t,r)}}class V extends H{constructor(t){super(t,V.name,500)}}class z extends _{constructor(t){super(t,z.name,404)}}class K extends _{constructor(t){super(t,K.name,409)}}const Q=(t,e,r,n)=>{const s=r.constructor.name;if(!s)throw new H("Could not determine model class");n=n||{},t.props.handlers[s]&&t.props.handlers[s][e]&&(n={...t.props.handlers[s][e],...n});let a=Object.getPrototypeOf(r);return a===Object.prototype?n:(a.constructor.name===s&&(a=Object.getPrototypeOf(a)),Q(t,e,a,n))};async function q(t,e,r,n,s,a){const o=B(r,n,s);if(!o)return;const i=tt(X(W(r,o,s)));for(const o of i){const i=[e,o.data.length>1?o.data:o.data[0],o.prop.length>1?o.prop:o.prop[0],r];if(n===j.UPDATE&&s===j.ON){if(!a)throw new H("Missing old model for update operation");i.push(a)}try{await o.handler.apply(t,i)}catch(t){const n=`Failed to execute handler ${o.handler.name} for ${o.prop} on ${r.constructor.name} due to error: ${t}`;if(e.get("breakOnHandlerError"))throw new H(n)}}}function B(t,e,r){const n=w.getAllPropertyDecorators(t,j.REFLECT+(r||""));if(n)return Object.keys(n).reduce((t,r)=>{const s=n[r].filter(t=>t.key===e);return s&&s.length&&(t||(t={}),t[r]=s),t},void 0)}const G=(e,r,...n)=>{const s=r||{},a=w.getAllPropertyDecorators(e,...n);if(a&&(e=>{Object.entries(e).forEach(([e,r])=>{s[e]=s[e]||[],((e,...r)=>{r.forEach(r=>{let n;if(!(n=s[e].find(t=>t.key===r.key))||n.props.operation!==r.props.operation)return void s[e].push(r);if(r.key===t.TYPE)return;const{handlers:a,operation:o}=r.props;if(!o||!o.match(RegExp(`^(:?${j.ON}|${j.AFTER})(:?${j.CREATE}|${j.READ}|${j.UPDATE}|${j.DELETE})$`)))return void s[e].push(r);const i=n.props.handlers;Object.entries(a).forEach(([t,e])=>{t in i?Object.entries(e).forEach(([e,r])=>{e in i[t]?Object.entries(r).forEach(([r,n])=>{r in i[t][e]||(i[t][e][r]=n)}):i[t][e]=r}):i[t]=e})})})(e,...r)})})(a),Object.getPrototypeOf(e)===Object.prototype)return s;const o=Object.getPrototypeOf(e);return o?G(o,s,...n):s},J=50,Z={priority:J};function W(t,e,r){const n=[];for(const s in e){const a=e[s];for(const e of a){const{key:a}=e,o=U.get(t,s,r+a);if(!o||!o.length)throw new H(`Could not find registered handler for the operation ${r+a} under property ${s}`);const i=Q(e,s,t);if(!i||Object.values(i).length!==o.length)throw new H("Args and handlers length do not match");for(let t=0;t<o.length;t++){const e=i[o[t].name].data;n.push({handler:o[t],data:[e],prop:[s]})}}}return n}function X(t){const e=t.reduce((t,e)=>{if(!e||!e.data||!e.prop)throw new H("Missing decorator properties or data");if(!e.data[0].group)return t.set(Symbol(),e),t;const r=e.data[0].group;if(t.has(r)){const n=t.get(r);t.set(r,{handler:n.handler,data:[...n.data,...e.data],prop:[...n.prop,...e.prop]})}else t.set(r,{...e});return t},new Map),r=Array.from(e.values());return r.forEach(t=>{const e=t.data.map((e,r)=>({data:e,prop:t.prop[r]}));e.sort((t,e)=>(t.data.groupPriority??50)-(e.data.groupPriority??50)),t.data=e.map(t=>t.data),t.prop=e.map(t=>t.prop)}),r}function tt(t){return t.sort((t,e)=>(t.data[0].priority??J)-(e.data[0].priority??J)),t}function et(t,e,r){return it(M.CREATE_UPDATE,t,e,r)}function rt(t,e,r){return it(M.UPDATE,t,e,r)}function nt(t,e,r){return it(M.CREATE,t,e,r)}function st(t,e,r){return it(M.READ,t,e,r)}function at(t,e,r){return it(M.DELETE,t,e,r)}function ot(t,e,r){return it(M.ALL,t,e,r)}function it(t=M.ALL,e,r,n){return Et(j.ON,t,e,r,n)}function ct(t,e,r){return ft(M.CREATE_UPDATE,t,e,r)}function ut(t,e,r){return ft(M.UPDATE,t,e,r)}function lt(t,e,r){return ft(M.CREATE,t,e,r)}function pt(t,e,r){return ft(M.READ,t,e,r)}function dt(t,e,r){return ft(M.DELETE,t,e,r)}function ht(t,e,r){return ft(M.ALL,t,e,r)}function ft(t=M.ALL,e,r,n){return Et(j.AFTER,t,e,r,n)}function Et(t,e=M.ALL,r,n,s=Z){return(a,i)=>{const c=a.constructor.name,u=e.reduce((e,u)=>{const l=t+u;let p=Reflect.getMetadata(U.key(l),a,i);p||(p={operation:u,handlers:{}});const d=U.getHandlerName(r);let h=s;if(n){if(Object.keys(n).filter(t=>t in s).length>0)throw new H("Unable to merge groupSort into dataToAdd due to overlaping keys");h={...s,...n}}return p.handlers[c]&&p.handlers[c][i]&&d in p.handlers[c][i]||(p.handlers[c]=p.handlers[c]||{},p.handlers[c][i]=p.handlers[c][i]||{},p.handlers[c][i][d]={data:h},e.push(((t,e)=>(r,n)=>{U.register(e,t,r,n)})(l,r),o(U.key(l),p))),e},[]);return P(...u)(a,i)}}function yt(t,e){return(...r)=>O(t,{args:r,handler:e})}const mt=t=>yt(j.REFLECT+j.BLOCK,(t,e)=>t.includes(e))(t),At={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},gt=t=>(new Tt).accumulate(Object.assign({},t,{timestamp:new Date}));class Tt{constructor(){this.cache=new D,Object.defineProperty(this,"cache",{value:new D,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=gt}accumulate(t){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(t),writable:!1,enumerable:!1,configurable:!0}),this}get timestamp(){return this.cache.timestamp}get(t){try{return this.cache.get(t)}catch(e){const r=this.cache.parentContext;if(r)return r.get(t);throw e}}static childFrom(t,e){return Tt.factory(Object.assign({},t.cache,e||{}))}static async from(t,e,r,...n){return Tt.factory(Object.assign({},At,e,{operation:t,model:r}))}static async args(t,e,r,n,s){const a=r.pop();async function o(){return n?n.context(t,s||{},e,...r):Tt.from(t,s||{},e,...r)}let i;return a?a instanceof Tt?(i=a,r.push(a)):(r.push(a),i=await o(),r.push(i)):(i=await o(),r.push(i)),{context:i,args:r}}}function wt(t,e,r,n){const s=async function(...t){const n=await Promise.resolve(r.call(this,...t));return Promise.resolve(e.apply(this,n))}.bind(t),a=n||e.name;Object.defineProperty(s,"name",{enumerable:!0,configurable:!0,writable:!1,value:a}),t[a]=s}function Pt(t,e,r,n){const s=async function(...t){const n=await Promise.resolve(e.call(this,...t));return r.call(this,...n)}.bind(t),a=n||e.name;Object.defineProperty(s,"name",{enumerable:!0,configurable:!0,writable:!1,value:a}),t[a]=s}function Rt(t,e,r,n,s){const a=s||r.name;t[a]=new Proxy(t[a],{apply:async(t,r,s)=>{let a=e.call(r,...s);a instanceof Promise&&(a=await a);const o=a[a.length-1];if(!(o instanceof Tt))throw new H("Missing a context");let i=await t.call(r,...a);return i instanceof Promise&&(i=await i),i=n.call(r,i,o),i instanceof Promise&&(i=await i),i}})}function Ot(e){const r=G(e,void 0,b.REFLECT+b.ID),n=Object.entries(r).reduce((e,[r,n])=>{const s=n.filter(e=>e.key!==t.TYPE);return s&&s.length&&(e[r]=e[r]||[],e[r].push(...s)),e},{});if(!n||!Object.keys(n).length)throw new H("Could not find ID decorated Property");if(Object.keys(n).length>1)throw new H(i(Object.keys(n).join(", ")));const s=Object.keys(n)[0];if(!s)throw new H("Could not find ID decorated Property");return{id:s,props:n[s][0].props}}function Dt(t,e=!1){const r=Ot(t).id,n=t[r];if(void 0===n&&!e)throw new H("No value for the Id is defined under the property "+r);return n}class bt{get class(){if(!this._class)throw new H("No class definition found for this repository");return this._class}get pk(){if(!this._pk){const{id:t,props:e}=Ot(new this.class);this._pk=t,this._pkProps=e}return this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(t){t&&(this._class=t);const e=this;[this.create,this.read,this.update,this.delete].forEach(t=>{const r=t.name;Rt(e,e[r+"Prefix"],t,e[r+"Suffix"])})}async createAll(t,...e){return Promise.all(t.map(t=>this.create(t,...e)))}async createPrefix(t,...e){const r=await Tt.args(j.CREATE,this.class,e);return t=new this.class(t),await q(this,r.context,t,j.CREATE,j.ON),[t,...r.args]}async createSuffix(t,e){return await q(this,e,t,j.CREATE,j.AFTER),t}async createAllPrefix(t,...e){const r=await Tt.args(j.CREATE,this.class,e);return await Promise.all(t.map(async t=>(t=new this.class(t),await q(this,r.context,t,j.CREATE,j.ON),t))),[t,...r.args]}async createAllSuffix(t,e){return await Promise.all(t.map(t=>q(this,e,t,j.CREATE,j.AFTER))),t}async readAll(t,...e){return await Promise.all(t.map(t=>this.read(t,...e)))}async readSuffix(t,e){return await q(this,e,t,j.READ,j.AFTER),t}async readPrefix(t,...e){const r=await Tt.args(j.READ,this.class,e),n=new this.class;return n[this.pk]=t,await q(this,r.context,n,j.READ,j.ON),[t,...r.args]}async readAllPrefix(t,...e){const r=await Tt.args(j.READ,this.class,e);return await Promise.all(t.map(async t=>{const e=new this.class;return e[this.pk]=t,q(this,r.context,e,j.READ,j.ON)})),[t,...r.args]}async readAllSuffix(t,e){return await Promise.all(t.map(t=>q(this,e,t,j.READ,j.AFTER))),t}async updateAll(t,...e){return Promise.all(t.map(t=>this.update(t,...e)))}async updateSuffix(t,e){return await q(this,e,t,j.UPDATE,j.AFTER),t}async updatePrefix(t,...e){const r=await Tt.args(j.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new H("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);return await q(this,r.context,t,j.UPDATE,j.ON,s),[t,...r.args]}async updateAllPrefix(t,...e){const r=await Tt.args(j.UPDATE,this.class,e);return await Promise.all(t.map(t=>(t=new this.class(t),q(this,r.context,t,j.UPDATE,j.ON),t))),[t,...r.args]}async updateAllSuffix(t,e){return await Promise.all(t.map(t=>q(this,e,t,j.UPDATE,j.AFTER))),t}async deleteAll(t,...e){return Promise.all(t.map(t=>this.delete(t,...e)))}async deleteSuffix(t,e){return await q(this,e,t,j.DELETE,j.AFTER),t}async deletePrefix(t,...e){const r=await Tt.args(j.DELETE,this.class,e),n=await this.read(t,...r.args);return await q(this,r.context,n,j.DELETE,j.ON),[t,...r.args]}async deleteAllPrefix(t,...e){const r=await Tt.args(j.DELETE,this.class,e),n=await this.readAll(t,...r.args);return await Promise.all(n.map(async t=>q(this,r.context,t,j.DELETE,j.ON))),[t,...r.args]}async deleteAllSuffix(t,e){return await Promise.all(t.map(t=>q(this,e,t,j.DELETE,j.AFTER))),t}merge(t,e){const r=t=>Object.entries(t).reduce((t,[e,r])=>(void 0!==r&&(t[e]=r),t),{});return new this.class(Object.assign({},r(t),r(e)))}toString(){return this.class.name+" Repository"}}class Lt extends bt{constructor(t){super(t)}async createPrefix(t,...e){const r=await Tt.args(j.CREATE,this.class,e);t=new this.class(t),await q(this,r.context,t,j.CREATE,j.ON);const n=await Promise.resolve(t.hasErrors());if(n)throw new Y(n.toString());return[t,...r.args]}async createAllPrefix(t,...e){const r=await Tt.args(j.CREATE,this.class,e);await Promise.all(t.map(async t=>(t=new this.class(t),await q(this,r.context,t,j.CREATE,j.ON),t)));const n=(await Promise.all(t.map(t=>Promise.resolve(t.hasErrors())))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(n)throw new Y(n);return[t,...r.args]}async updatePrefix(t,...e){const r=await Tt.args(j.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new H("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);t=this.merge(s,t),await q(this,r.context,t,j.UPDATE,j.ON,s);const a=await Promise.resolve(t.hasErrors(s));if(a)throw new Y(a.toString());return[t,...r.args]}async updateAllPrefix(t,...e){const r=await Tt.args(j.UPDATE,this.class,e),n=t.map(t=>{const e=t[this.pk];if(void 0===e)throw new H("No value for the Id is defined under the property "+this.pk);return e}),s=await this.readAll(n,...r.args);t=t.map((t,e)=>this.merge(s[e],t)),await Promise.all(t.map((t,e)=>q(this,r.context,t,j.UPDATE,j.ON,s[e])));const a=(await Promise.all(t.map((t,e)=>Promise.resolve(t.hasErrors(s[e]))))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(a)throw new Y(a);return[t,...r.args]}static key(t){return b.REFLECT+t}}function vt(t=k.READONLY.INVALID){const e=s.updateKey(b.READONLY);return c.for(e).define(o(e,{message:t})).apply()}async function kt(t,e,r,n){n[r]=t.timestamp}function St(t=M.CREATE_UPDATE,e=v){const r=s.updateKey(b.TIMESTAMP);return c.for(r).define({decorator:(t,e)=>{const n=[l(e,k.TIMESTAMP.DATE),p(k.TIMESTAMP.REQUIRED),o(s.key(b.TIMESTAMP),{operation:t,format:e}),it(t,kt)];return-1!==t.indexOf(j.UPDATE)?n.push(o(r,{message:k.TIMESTAMP.INVALID})):n.push(vt()),P(...n)},args:[t,e]}).apply()}async function It(t,e,r,n){if(n[r])try{n[r]=JSON.stringify(n[r])}catch(t){throw new V(`Failed to serialize ${r.toString()} property of model ${n.constructor.name}: e`)}}async function Nt(t,e,r,n){if(n[r]&&"string"==typeof n[r])try{n[r]=JSON.parse(n[r])}catch(t){throw new V(`Failed to deserialize ${r.toString()} property of model ${n.constructor.name}: ${t}`)}}function xt(){return P(et(It),ft(M.ALL,Nt),u([String.name,Object.name]),R(Lt.key(b.SERIALIZE),{}))}function jt(){return P(p(),vt(),o(Lt.key(b.ID),{}))}function Ct(t,e){const r=[];for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&!e.includes(n)){const e=d(t,n,S.REFLECT),s=d(t,n).decorators.find(({key:t})=>t===h.LIST);s&&e.decorators.push(s),r.push(e)}return r}function Mt(t,e,r,n,a){const o=s.get(n.key);if(!o)throw Error("Missing validator for "+n.key);if(!o.updateHasErrors)return f(void 0,a);if(!a&&n.props.async)return f(void 0,a);const i=Object.values(n.props)||{},c=o.updateHasErrors(t[r],e[r],...i);return f(c,a)}function $t(t,e,r,n,s){const a={};for(const o of n){if(!s&&o.props.async)continue;let n=Mt(t,e,r,o,s);if(o.key===h.LIST&&(!n||s)){const a=t[r],i=e[r],c=a instanceof Set?[...a]:a,u=i instanceof Set?[...i]:i;if(c&&c.length>0){const t=[o.props.class||o.props.clazz||o.props.customTypes].flat().map(t=>((t=(t="function"!=typeof t||t.name?t:t()).name?t.name:t)+"").toLowerCase()),e=c.map(e=>{const r=Dt(e,!0);if(!r)return"Failed to find model id";const n=u.find(t=>r===Dt(t,!0));return E.isModel(e)?e.hasErrors(n):t.includes(typeof e)?void 0:"Value has no validatable type"});if(s)n=Promise.all(e).then(t=>t.every(t=>!t)?void 0:t);else{const t=e.every(t=>!t);n=e.length>0&&!t?e:void 0}}}n&&(a[o.key]=n)}if(!s)return Object.keys(a).length>0?a:void 0;const o=Object.keys(a),i=Object.values(a);return Promise.all(i).then(t=>{const e={};for(let r=0;r<t.length;r++){const n=t[r];void 0!==n&&(e[o[r]]=n)}return Object.keys(e).length>0?e:void 0})}function Ut(e,r,n,...s){const a=Ct(r,s),o={},i={};for(const{prop:s,decorators:c}of a){const a=s+"";let u=r[s];if(!c?.length)continue;const l=c.find(e=>[t.TYPE,h.TYPE].includes(e.key));if(!l)continue;const p=l.props.name;if([Array.name,Set.name].includes(p)){const{decorators:e}=w.getPropertyDecorators(h.REFLECT,r,a);if(!e.some(t=>t.key===h.LIST)){o[a]={[h.TYPE]:`Array or Set property '${a}' requires a @list decorator`};continue}if(u&&!(Array.isArray(u)||u instanceof Set)){o[a]={[h.TYPE]:`Property '${s+""}' must be either an array or a Set`};continue}for(let r=e.length-1;r>=0;r--)e[r].key===t.TYPE&&e.splice(r,1);u=u instanceof Set?[...u]:u}const d=$t(r,e,a,c,n)||{},f=E.isPropertyModel(r,a);if(u&&f){const t=u;"object"!=typeof t||!t.hasErrors||"function"!=typeof t.hasErrors||(i[a]=t.hasErrors(e[s]))}(Object.keys(d).length>0||n)&&(o[a]=d),n||Object.entries(i[a]||{}).forEach(([t,e])=>{void 0!==e&&(o[`${a}.${t}`]=e)})}if(!n)return Object.keys(o).length>0?new y(o):void 0;const c=o,u=Object.keys(c),l=Object.values(c);return Promise.allSettled(l).then(async t=>{const e={};for(const[t,r]of Object.entries(i)){const n=await r;n&&Object.entries(n).forEach(([r,n])=>{void 0!==n&&(e[[t,r].join(".")]=n)})}for(let r=0;r<t.length;r++){const n=u[r],s=t[r];"fulfilled"===s.status&&void 0!==s.value?e[n]=s.value:"rejected"===s.status&&(e[n]=s.reason instanceof Error?s.reason.message:(s.reason||"Validation failed")+"")}return Object.keys(e).length>0?new y(e):void 0})}function Ft(t,e,r,n,s){if(void 0===n[r])return;const o=a.hash(n[r]);s&&n[r]===o||(n[r]=o)}function _t(){return P(et(Ft),o(Lt.key(b.HASH),{}))}function Yt(t,e,r,n){try{const{args:t,type:s,prefix:a,suffix:o,separator:i}=e,c=t.map(e=>{if(!(e in n))throw new H(`Property ${e} not found to compose from`);if("keys"===s)return e;if(void 0===n[e])throw new H(`Property ${t} does not contain a value to compose from`);return n[e].toString()});a&&c.unshift(a),o&&c.push(o),n[r]=c.join(i)}catch(t){throw new H("Failed to compose value: "+t)}}function Ht(t,e=!1,r=L,n="values",s="",a="",i={priority:55}){const c={args:t,hashResult:e,separator:r,type:n,prefix:s,suffix:a},u=[et(Yt,c,i),o(Lt.key(b.COMPOSED),c)];return e&&u.push(_t()),P(...u)}function Vt(t,e=L,r=!1,n="",s="",a={priority:55}){return Ht(t,r,e,"keys",n,s,a)}function zt(t,e=L,r=!1,n="",s="",a={priority:55}){return Ht(t,r,e,"values",n,s,a)}function Kt(t){return(e,r,n,s)=>{try{switch(t){case j.CREATE:s[n]=1;break;case j.UPDATE:s[n]++;break;default:throw new H("Invalid operation: "+t)}}catch(t){throw new H("Failed to update version: "+t)}}}function Qt(){const t=Lt.key(b.VERSION);return c.for(t).define(u(Number.name),nt(Kt(j.CREATE)),rt(Kt(j.UPDATE)),o(t,!0)).apply()}function qt(){const t=Lt.key(b.TRANSIENT);return c.for(t).define((t,e)=>{o(Lt.key(b.TRANSIENT),!0)(t,e),o(Lt.key(b.TRANSIENT),!0)(t.constructor)}).apply()}function Bt(t){return!(!Reflect.getMetadata(Lt.key(b.TRANSIENT),t.constructor)&&!Reflect.getMetadata(Lt.key(b.TRANSIENT),E.get(t.constructor.name)))}function Gt(t){if(!Bt(t))return{model:t};const e=G(t,void 0,Lt.key(b.TRANSIENT)),r=Object.entries(e).reduce((e,[r,n])=>{if(n.find(t=>""===t.key)){e.transient=e.transient||{};try{e.transient[r]=t[r]}catch(t){throw new V(`Failed to serialize transient property ${r}: ${t}`)}}else e.model=e.model||{},e.model[r]=t[r];return e},{});return r.model=E.build(r.model,t.constructor.name),r}E.prototype.hasErrors=function(t,...e){!t||t instanceof E||(e.unshift(t),t=void 0);const r=this.isAsync(),n=m(this,r,...e);return r?Promise.resolve(n).then(n=>n||!t?n:Ut(t,this,r,...e)):n||!t?n:Ut(t,this,r,...e)};const Jt="##VERSION##";export{_ as BadRequestError,F as BaseError,bt as BaseRepository,mt as BlockOperations,C as BulkCrudOperationKeys,K as ConflictError,Tt as Context,b as DBKeys,M as DBOperations,k as DEFAULT_ERROR_MESSAGES,v as DEFAULT_TIMESTAMP_FORMAT,gt as DefaultContextFactory,At as DefaultRepositoryFlags,L as DefaultSeparator,H as InternalError,z as NotFoundError,j as OperationKeys,U as Operations,$ as OperationsRegistry,I as ReadOnlyValidator,Lt as Repository,V as SerializationError,N as TimestampValidator,S as UpdateValidationKeys,x as UpdateValidator,Jt as VERSION,Y as ValidationError,ft as after,ht as afterAny,lt as afterCreate,ct as afterCreateUpdate,dt as afterDelete,pt as afterRead,ut as afterUpdate,zt as composed,Yt as composedFromCreateUpdate,Vt as composedFromKeys,q as enforceDBDecorators,Dt as findModelId,Ot as findPrimaryKey,G as getAllPropertyDecoratorsRecursive,B as getDbDecorators,Q as getHandlerArgs,W as getHandlersDecorators,Ct as getValidatableUpdateProps,X as groupDecorators,_t as hash,Ft as hashOnCreateUpdate,jt as id,Bt as isTransient,Gt as modelToTransient,it as on,ot as onAny,nt as onCreate,et as onCreateUpdate,at as onDelete,st as onRead,rt as onUpdate,Et as operation,wt as prefixMethod,vt as readonly,xt as serialize,Nt as serializeAfterAll,It as serializeOnCreateUpdate,tt as sortDecorators,yt as storeHandlerMetadata,Pt as suffixMethod,St as timestamp,kt as timestampHandler,qt as transient,Ut as validateCompare,Mt as validateDecorator,$t as validateDecorators,Qt as version,Kt as versionCreateUpdate,Rt as wrapMethodWithContext};
1
+ import{Metadata as t,propMetadata as e,apply as r,metadata as n,Decoration as s}from"@decaf-ts/decoration";import{ModelKeys as a,validator as o,Validator as i,isEqual as c,DEFAULT_ERROR_MESSAGES as u,Validation as l,Hashing as p,innerValidationDecorator as d,type as h,date as f,required as E,toConditionalPromise as y,ValidationKeys as m,Model as A,ModelErrorDefinition as g,validate as T}from"@decaf-ts/decorator-validation";import{__decorate as w,__metadata as P}from"tslib";import{ObjectAccumulator as O}from"typed-object-accumulator";const R={REFLECT:a.MODEL+".persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},D="_",b="dd/MM/yyyy HH:mm:ss:S",v={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"}},S={REFLECT:"db.update.validation.",TIMESTAMP:R.TIMESTAMP,READONLY:R.READONLY};let L=class extends i{constructor(){super(v.READONLY.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t)return c(t,e)?void 0:this.getMessage(r||this.message)}};L=w([o(S.READONLY),P("design:paramtypes",[])],L);let I=class extends i{constructor(){super(v.TIMESTAMP.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t){r=r||this.getMessage(r||this.message);try{t=new Date(t),e=new Date(e)}catch(t){return r}return t>e?void 0:r}}};I=w([o(S.TIMESTAMP),P("design:paramtypes",[])],I);class N extends i{constructor(t=u.DEFAULT,...e){super(t,...e)}}var k,x,j;l.updateKey=t=>S.REFLECT+t,(t=>{t.REFLECT="decaf.model.db.operations.",t.CREATE="create",t.READ="read",t.UPDATE="update",t.DELETE="delete",t.ON="on.",t.AFTER="after.",t.BLOCK="block"})(k||(k={})),(t=>{t.OPERATIONS="operations",t.RELATIONS="relations"})(x||(x={})),(t=>{t.CREATE_ALL="createAll",t.READ_ALL="readAll",t.UPDATE_ALL="updateAll",t.DELETE_ALL="deleteAll"})(j||(j={}));const C={CREATE:[k.CREATE],READ:[k.READ],UPDATE:[k.UPDATE],DELETE:[k.DELETE],CREATE_UPDATE:[k.CREATE,k.UPDATE],READ_CREATE:[k.READ,k.CREATE],ALL:[k.CREATE,k.READ,k.UPDATE,k.DELETE]};class M{constructor(){this.cache={}}get(t,e,r,n){let s;n=n||[];try{s="string"==typeof t?t:t.constructor.name,n.unshift(...Object.values(this.cache[s][e][r]||[]))}catch(e){if("string"==typeof t||t===Object.prototype||Object.getPrototypeOf(t)===Object.prototype)return n}let a=Object.getPrototypeOf(t);return a.constructor.name===s&&(a=Object.getPrototypeOf(a)),this.get(a,e,r,n)}register(t,e,r,n){const s=r.constructor.name,a=U.getHandlerName(t);this.cache[s]||(this.cache[s]={}),this.cache[s][n]||(this.cache[s][n]={}),this.cache[s][n][e]||(this.cache[s][n][e]={}),this.cache[s][n][e][a]||(this.cache[s][n][e][a]=t)}}class U{constructor(){}static getHandlerName(t){return t.name?t.name:p.hash(t.toString())}static key(t){return k.REFLECT+t}static get(t,e,r){return U.registry.get(t,e,r)}static getOpRegistry(){return U.registry||(U.registry=new M),U.registry}static register(t,e,r,n){U.getOpRegistry().register(t,e,r,n)}}class $ extends Error{constructor(t,e,r){if(e instanceof $)return e;super(`[${t}] ${e instanceof Error?e.message:e}`),this.code=r,e instanceof Error&&(this.stack=e.stack)}}class F extends ${constructor(t,e=F.name,r=400){super(e,t,r)}}class _ extends F{constructor(t){super(t,_.name,422)}}class H extends ${constructor(t,e=H.name,r=500){super(e,t,r)}}class V extends H{constructor(t){super(t,V.name,500)}}class Y extends F{constructor(t){super(t,Y.name,404)}}class z extends F{constructor(t){super(t,z.name,409)}}const K=(t,e,r,n)=>{const s=r.constructor.name;if(!s)throw new H("Could not determine model class");n=n||{},t.props.handlers[s]&&t.props.handlers[s][e]&&(n={...t.props.handlers[s][e],...n});let a=Object.getPrototypeOf(r);return a===Object.prototype?n:(a.constructor.name===s&&(a=Object.getPrototypeOf(a)),K(t,e,a,n))};async function Q(t,e,r,n,s,a){const o=G(r,n,s);if(!o)return;const i=W(Z(J(r,o,s)));for(const o of i){const i=[e,o.data.length>1?o.data:o.data[0],o.prop.length>1?o.prop:o.prop[0],r];if(n===k.UPDATE&&s===k.ON){if(!a)throw new H("Missing old model for update operation");i.push(a)}try{await o.handler.apply(t,i)}catch(t){const n=`Failed to execute handler ${o.handler.name} for ${o.prop} on ${r.constructor.name} due to error: ${t}`;if(e.get("breakOnHandlerError"))throw new H(n)}}}function G(e,r,n){const s=n?.replace(/[.]$/,""),a=t.get(e.constructor,x.OPERATIONS);if(a)return Object.keys(a).reduce((t,e)=>{const n=s?a[e][s]||{}:a[e],o=Object.keys(n).filter(t=>t===r),i=[];for(const t of o)i.push({key:t,props:n[t]});return i&&i.length&&(t||(t={}),t[e]=i),t},void 0)}const q=50,B={priority:q};function J(t,e,r){const n=[];for(const s in e){const a=e[s];for(const e of a){const{key:a}=e,o=U.get(t,s,r+a);if(!o||!o.length)throw new H(`Could not find registered handler for the operation ${r+a} under property ${s}`);const i=K(e,s,t);if(!i||Object.values(i).length!==o.length)throw new H("Args and handlers length do not match");for(let t=0;t<o.length;t++){const e=i[o[t].name].data;n.push({handler:o[t],data:[e],prop:[s]})}}}return n}function Z(t){const e=t.reduce((t,e)=>{if(!e||!e.data||!e.prop)throw new H("Missing decorator properties or data");if(!e.data[0].group)return t.set(Symbol(),e),t;const r=e.data[0].group;if(t.has(r)){const n=t.get(r);t.set(r,{handler:n.handler,data:[...n.data,...e.data],prop:[...n.prop,...e.prop]})}else t.set(r,{...e});return t},new Map),r=Array.from(e.values());return r.forEach(t=>{const e=t.data.map((e,r)=>({data:e,prop:t.prop[r]}));e.sort((t,e)=>(t.data.groupPriority??50)-(e.data.groupPriority??50)),t.data=e.map(t=>t.data),t.prop=e.map(t=>t.prop)}),r}function W(t){return t.sort((t,e)=>(t.data[0].priority??q)-(e.data[0].priority??q)),t}function X(t,e,r){return at(C.CREATE_UPDATE,t,e,r)}function tt(t,e,r){return at(C.UPDATE,t,e,r)}function et(t,e,r){return at(C.CREATE,t,e,r)}function rt(t,e,r){return at(C.READ,t,e,r)}function nt(t,e,r){return at(C.DELETE,t,e,r)}function st(t,e,r){return at(C.ALL,t,e,r)}function at(t=C.ALL,e,r,n){return ht(k.ON,t,e,r,n)}function ot(t,e,r){return dt(C.CREATE_UPDATE,t,e,r)}function it(t,e,r){return dt(C.UPDATE,t,e,r)}function ct(t,e,r){return dt(C.CREATE,t,e,r)}function ut(t,e,r){return dt(C.READ,t,e,r)}function lt(t,e,r){return dt(C.DELETE,t,e,r)}function pt(t,e,r){return dt(C.ALL,t,e,r)}function dt(t=C.ALL,e,r,n){return ht(k.AFTER,t,e,r,n)}function ht(n,s=C.ALL,a,o,i=B){return(c,u)=>{const l=c.constructor.name,p=s.reduce((r,s)=>{const p=n+s;let d=t.readOperation(c.constructor,u,p);d||(d={operation:s,handlers:{}});const h=U.getHandlerName(a);let f=i;if(o){if(Object.keys(o).filter(t=>t in i).length>0)throw new H("Unable to merge groupSort into dataToAdd due to overlaping keys");f={...i,...o}}return d.handlers[l]&&d.handlers[l][u]&&h in d.handlers[l][u]||(d.handlers[l]=d.handlers[l]||{},d.handlers[l][u]=d.handlers[l][u]||{},d.handlers[l][u][h]={data:f},r.push(((t,e)=>(r,n)=>{U.register(e,t,r,n)})(p,a),e(t.key(x.OPERATIONS,u,p),d))),r},[]);return r(...p)(c,u)}}function ft(t,e){return(...r)=>n(t,{args:r,handler:e})}const Et=t=>ft(k.REFLECT+k.BLOCK,(t,e)=>t.includes(e))(t);function yt(t=v.READONLY.INVALID){const e=R.READONLY,r={message:t,description:"defines the attribute as readOnly",async:!1};return s.for(e).define({decorator:d,args:[yt,e,r]}).apply()}async function mt(t,e,r,n){n[r]=t.timestamp}function At(t=C.CREATE_UPDATE,n=b){const a=l.updateKey(R.TIMESTAMP);return s.for(a).define({decorator:(t,n)=>{const s=[f(n,v.TIMESTAMP.DATE),E(v.TIMESTAMP.REQUIRED),e(l.key(R.TIMESTAMP),{operation:t,format:n}),at(t,mt)];return-1!==t.indexOf(k.UPDATE)?s.push(e(a,{message:v.TIMESTAMP.INVALID})):s.push(yt()),r(...s)},args:[t,n]}).apply()}async function gt(t,e,r,n){if(n[r])try{n[r]=JSON.stringify(n[r])}catch(t){throw new V(`Failed to serialize ${r.toString()} property of model ${n.constructor.name}: e`)}}async function Tt(t,e,r,n){if(n[r]&&"string"==typeof n[r])try{n[r]=JSON.parse(n[r])}catch(t){throw new V(`Failed to deserialize ${r.toString()} property of model ${n.constructor.name}: ${t}`)}}function wt(){return r(X(gt),dt(C.ALL,Tt),h([String,Object]),n(R.SERIALIZE,{}))}function Pt(){return r(E(),yt(),(r,n)=>e(t.key(R.ID,n),{})(r,n))}function Ot(e,r){const n=[];for(const s in e){if(!Object.prototype.hasOwnProperty.call(e,s)||r.includes(s))continue;const a=t.validationFor(e.constructor,s)||{};n.push({prop:s,decorators:a})}return n}function Rt(t,e,r,n,s){const a=l.get(n.key);if(!a)throw Error("Missing validator for "+n.key);if(!a.updateHasErrors)return y(void 0,s);if(!s&&n.async)return y(void 0,s);const o=Object.values(n)||{},i=a.updateHasErrors(t[r],e[r],...o);return y(i,s)}function Dt(t,e,r,n,s){const a={};for(const o in n){const i={...n[o],key:o};if(!s&&i.async)continue;let c=Rt(t,e,r,i,s);if(i.key===m.LIST&&(!c||s)){const n=t[r],a=e[r],o=n instanceof Set?[...n]:n,u=a instanceof Set?[...a]:a;if(o?.length){const t=[i.class||i.clazz||i.customTypes].flat().map(t=>((t=(t="function"!=typeof t||t.name?t:t()).name?t.name:t)+"").toLowerCase()),e=o.map(e=>{const r=A.pk(e,!0);if(!r)return"Failed to find model id";const n=u.find(t=>r===A.pk(t,!0));return A.isModel(e)?e.hasErrors(n):t.includes(typeof e)?void 0:"Value has no validatable type"});if(s)c=Promise.all(e).then(t=>t.every(t=>!t)?void 0:t);else{const t=e.every(t=>!t);c=e.length>0&&!t?e:void 0}}}c&&(a[i.key]=c)}if(!s)return Object.keys(a).length>0?a:void 0;const o=Object.keys(a),i=Object.values(a);return Promise.all(i).then(t=>{const e={};for(let r=0;r<t.length;r++){const n=t[r];void 0!==n&&(e[o[r]]=n)}return Object.keys(e).length>0?e:void 0})}function bt(e,r,n,...s){const o=Ot(r,s),i={},c={};for(const{prop:s,decorators:u}of o){const o=s+"",l=r[s],{designTypes:p,designType:d}=t.getPropDesignTypes(r.constructor,s);if(!p)continue;if(p.some(t=>[Array.name,Set.name].includes(t))){if(!u||!Object.keys(u).includes(m.LIST)){i[o]={[m.TYPE]:`Array or Set property '${o}' requires a @list decorator`};continue}if(l&&!(Array.isArray(l)||l instanceof Set)){i[o]={[m.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const h=Dt(r,e,o,u,n)||{},f=A.isPropertyModel(r,o);if(null!=l&&f){const t=l,r=(Array.isArray(d)?d:[d]).map(t=>("function"!=typeof t||t.name||(t=t()),A.get(t.name||t))).find(t=>!!t);r&&t instanceof r?c[o]=t.hasErrors(e[s]):(h[m.TYPE]=r?"Value must be an instance of "+r.name:`Unable to verify type consistency, missing model registry for ${p.toString()} on prop ${o}`,delete h[a.TYPE])}(Object.keys(h).length>0||n)&&(i[o]=h),n||Object.entries(c[o]||{}).forEach(([t,e])=>{void 0!==e&&(i[`${o}.${t}`]=e)})}if(!n)return Object.keys(i).length>0?new g(i):void 0;const u=i,l=Object.keys(u),p=Object.values(u);return Promise.allSettled(p).then(async t=>{const e={};for(const[t,r]of Object.entries(c)){const n=await r;n&&Object.entries(n).forEach(([r,n])=>{void 0!==n&&(e[[t,r].join(".")]=n)})}for(let r=0;r<t.length;r++){const n=l[r],s=t[r];"fulfilled"===s.status&&void 0!==s.value?e[n]=s.value:"rejected"===s.status&&(e[n]=s.reason instanceof Error?s.reason.message:(s.reason||"Validation failed")+"")}return Object.keys(e).length>0?new g(e):void 0})}function vt(t,e,r,n,s){if(void 0===n[r])return;const a=p.hash(n[r]);s&&n[r]===a||(n[r]=a)}function St(){return r(X(vt),e(R.HASH,{}))}function Lt(t,e,r,n){try{const{args:t,type:s,prefix:a,suffix:o,separator:i}=e,c=t.map(e=>{if(!(e in n))throw new H(`Property ${e} not found to compose from`);if("keys"===s)return e;if(void 0===n[e])throw new H(`Property ${t} does not contain a value to compose from`);return n[e].toString()});a&&c.unshift(a),o&&c.push(o),n[r]=c.join(i)}catch(t){throw new H("Failed to compose value: "+t)}}function It(t,n=!1,s=D,a="values",o="",i="",c={priority:55}){const u={args:t,hashResult:n,separator:s,type:a,prefix:o,suffix:i},l=[X(Lt,u,c),e(R.COMPOSED,u)];return n&&l.push(St()),r(...l)}function Nt(t,e=D,r=!1,n="",s="",a={priority:55}){return It(t,r,e,"keys",n,s,a)}function kt(t,e=D,r=!1,n="",s="",a={priority:55}){return It(t,r,e,"values",n,s,a)}function xt(t){return(e,r,n,s)=>{try{switch(t){case k.CREATE:s[n]=1;break;case k.UPDATE:s[n]++;break;default:throw new H("Invalid operation: "+t)}}catch(t){throw new H("Failed to update version: "+t)}}}function jt(){const t=R.VERSION;return s.for(t).define(h(Number),et(xt(k.CREATE)),tt(xt(k.UPDATE)),e(t,!0)).apply()}function Ct(){return s.for(R.TRANSIENT).define((r,n)=>{e(R.TRANSIENT,!0)(r.constructor),e(t.key(R.TRANSIENT,n),{})(r,n)}).apply()}A.prototype.isTransient=function(){return t.isTransient(this)},A.prototype.hasErrors=function(t,...e){!t||t instanceof A||(e.unshift(t),t=void 0);const r=this.isAsync(),n=T(this,r,...e);return r?Promise.resolve(n).then(n=>n||!t?n:bt(t,this,r,...e)):n||!t?n:bt(t,this,r,...e)},A.prototype.toTransient=function(){return A.toTransient(this)},A.toTransient=e=>{if(!t.isTransient(e))return{model:e};const r=t.validatableProperties(e.constructor),n=t.get(e.constructor,R.TRANSIENT),s={model:{},transient:{}};for(const t of r)if(Object.keys(n).includes(t)){s.transient=s.transient||{};try{s.transient[t]=e[t]}catch(e){throw new V(`Failed to serialize transient property ${t}: ${e}`)}}else s.model=s.model||{},s.model[t]=e[t];return s.model=A.build(s.model,e.constructor.name),s},A.pk=((e,r=!1)=>{if(!e)throw Error("No model was provided");const n=e instanceof A?e.constructor:e,s=t.get(n,R.ID);if(!s)throw Error("No Id property defined for model "+(n?.name||"Unknown Model"));const a=Object.keys(s)[0];if(!r)return a;if(e instanceof A)return e[a];throw Error("Cannot get the value of the pk from the constructor")}).bind(A),A.isTransient=(e=>t.isTransient(e)).bind(A),t.saveOperation=((e,r,n,s)=>{r&&t.set(e,t.key(x.OPERATIONS,r,n),s)}).bind(t),t.readOperation=((e,r,n)=>{if(r&&n)return t.get(e,t.key(x.OPERATIONS,r,n))}).bind(t),t.isTransient=(e=>!!t.get("function"!=typeof e?e.constructor:e,R.TRANSIENT)).bind(t);const Mt={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},Ut=t=>(new $t).accumulate(Object.assign({},t,{timestamp:new Date}));class $t{constructor(){this.cache=new O,Object.defineProperty(this,"cache",{value:new O,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=Ut}accumulate(t){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(t),writable:!1,enumerable:!1,configurable:!0}),this}get timestamp(){return this.cache.timestamp}get(t){try{return this.cache.get(t)}catch(e){const r=this.cache.parentContext;if(r)return r.get(t);throw e}}static childFrom(t,e){return $t.factory(Object.assign({},t.cache,e||{}))}static async from(t,e,r,...n){return $t.factory(Object.assign({},Mt,e,{operation:t,model:r}))}static async args(t,e,r,n,s){const a=r.pop();async function o(){return n?n.context(t,s||{},e,...r):$t.from(t,s||{},e,...r)}let i;return a?a instanceof $t?(i=a,r.push(a)):(r.push(a),i=await o(),r.push(i)):(i=await o(),r.push(i)),{context:i,args:r}}}function Ft(t,e,r,n){const s=async function(...t){const n=await Promise.resolve(r.call(this,...t));return Promise.resolve(e.apply(this,n))}.bind(t),a=n||e.name;Object.defineProperty(s,"name",{enumerable:!0,configurable:!0,writable:!1,value:a}),t[a]=s}function _t(t,e,r,n){const s=async function(...t){const n=await Promise.resolve(e.call(this,...t));return r.call(this,...n)}.bind(t),a=n||e.name;Object.defineProperty(s,"name",{enumerable:!0,configurable:!0,writable:!1,value:a}),t[a]=s}function Ht(t,e,r,n,s){const a=s||r.name;t[a]=new Proxy(t[a],{apply:async(t,r,s)=>{let a=e.call(r,...s);a instanceof Promise&&(a=await a);const o=a[a.length-1];if(!(o instanceof $t))throw new H("Missing a context");let i=await t.call(r,...a);return i instanceof Promise&&(i=await i),i=n.call(r,i,o),i instanceof Promise&&(i=await i),i}})}class Vt{get class(){if(!this._class)throw new H("No class definition found for this repository");return this._class}get pk(){return this._pk||(this._pk=A.pk(this.class),this._pkProps=t.get(this.class,t.key(R.ID,this._pk))),this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(t){t&&(this._class=t);const e=this;[this.create,this.read,this.update,this.delete].forEach(t=>{const r=t.name;Ht(e,e[r+"Prefix"],t,e[r+"Suffix"])})}async createAll(t,...e){return Promise.all(t.map(t=>this.create(t,...e)))}async createPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);return t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON),[t,...r.args]}async createSuffix(t,e){return await Q(this,e,t,k.CREATE,k.AFTER),t}async createAllPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);return await Promise.all(t.map(async t=>(t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON),t))),[t,...r.args]}async createAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.CREATE,k.AFTER))),t}async readAll(t,...e){return await Promise.all(t.map(t=>this.read(t,...e)))}async readSuffix(t,e){return await Q(this,e,t,k.READ,k.AFTER),t}async readPrefix(t,...e){const r=await $t.args(k.READ,this.class,e),n=new this.class;return n[this.pk]=t,await Q(this,r.context,n,k.READ,k.ON),[t,...r.args]}async readAllPrefix(t,...e){const r=await $t.args(k.READ,this.class,e);return await Promise.all(t.map(async t=>{const e=new this.class;return e[this.pk]=t,Q(this,r.context,e,k.READ,k.ON)})),[t,...r.args]}async readAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.READ,k.AFTER))),t}async updateAll(t,...e){return Promise.all(t.map(t=>this.update(t,...e)))}async updateSuffix(t,e){return await Q(this,e,t,k.UPDATE,k.AFTER),t}async updatePrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new H("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);return await Q(this,r.context,t,k.UPDATE,k.ON,s),[t,...r.args]}async updateAllPrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e);return await Promise.all(t.map(t=>(t=new this.class(t),Q(this,r.context,t,k.UPDATE,k.ON),t))),[t,...r.args]}async updateAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.UPDATE,k.AFTER))),t}async deleteAll(t,...e){return Promise.all(t.map(t=>this.delete(t,...e)))}async deleteSuffix(t,e){return await Q(this,e,t,k.DELETE,k.AFTER),t}async deletePrefix(t,...e){const r=await $t.args(k.DELETE,this.class,e),n=await this.read(t,...r.args);return await Q(this,r.context,n,k.DELETE,k.ON),[t,...r.args]}async deleteAllPrefix(t,...e){const r=await $t.args(k.DELETE,this.class,e),n=await this.readAll(t,...r.args);return await Promise.all(n.map(async t=>Q(this,r.context,t,k.DELETE,k.ON))),[t,...r.args]}async deleteAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.DELETE,k.AFTER))),t}merge(t,e){const r=t=>Object.entries(t).reduce((t,[e,r])=>(void 0!==r&&(t[e]=r),t),{});return new this.class(Object.assign({},r(t),r(e)))}toString(){return this.class.name+" Repository"}}class Yt extends Vt{constructor(t){super(t)}async createPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON);const n=await Promise.resolve(t.hasErrors());if(n)throw new _(n.toString());return[t,...r.args]}async createAllPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);await Promise.all(t.map(async t=>(t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON),t)));const n=(await Promise.all(t.map(t=>Promise.resolve(t.hasErrors())))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(n)throw new _(n);return[t,...r.args]}async updatePrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new H("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);t=this.merge(s,t),await Q(this,r.context,t,k.UPDATE,k.ON,s);const a=await Promise.resolve(t.hasErrors(s));if(a)throw new _(a.toString());return[t,...r.args]}async updateAllPrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=t.map(t=>{const e=t[this.pk];if(void 0===e)throw new H("No value for the Id is defined under the property "+this.pk);return e}),s=await this.readAll(n,...r.args);t=t.map((t,e)=>this.merge(s[e],t)),await Promise.all(t.map((t,e)=>Q(this,r.context,t,k.UPDATE,k.ON,s[e])));const a=(await Promise.all(t.map((t,e)=>Promise.resolve(t.hasErrors(s[e]))))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(a)throw new _(a);return[t,...r.args]}}const zt="##VERSION##",Kt="##PACKAGE##";t.registerLibrary(Kt,zt);export{F as BadRequestError,$ as BaseError,Vt as BaseRepository,Et as BlockOperations,j as BulkCrudOperationKeys,z as ConflictError,$t as Context,R as DBKeys,C as DBOperations,v as DEFAULT_ERROR_MESSAGES,b as DEFAULT_TIMESTAMP_FORMAT,Ut as DefaultContextFactory,Mt as DefaultRepositoryFlags,D as DefaultSeparator,H as InternalError,x as ModelOperations,Y as NotFoundError,k as OperationKeys,U as Operations,M as OperationsRegistry,Kt as PACKAGE_NAME,L as ReadOnlyValidator,Yt as Repository,V as SerializationError,I as TimestampValidator,S as UpdateValidationKeys,N as UpdateValidator,zt as VERSION,_ as ValidationError,dt as after,pt as afterAny,ct as afterCreate,ot as afterCreateUpdate,lt as afterDelete,ut as afterRead,it as afterUpdate,kt as composed,Lt as composedFromCreateUpdate,Nt as composedFromKeys,Q as enforceDBDecorators,G as getDbDecorators,K as getHandlerArgs,J as getHandlersDecorators,Ot as getValidatableUpdateProps,Z as groupDecorators,St as hash,vt as hashOnCreateUpdate,Pt as id,at as on,st as onAny,et as onCreate,X as onCreateUpdate,nt as onDelete,rt as onRead,tt as onUpdate,ht as operation,Ft as prefixMethod,yt as readonly,wt as serialize,Tt as serializeAfterAll,gt as serializeOnCreateUpdate,W as sortDecorators,ft as storeHandlerMetadata,_t as suffixMethod,At as timestamp,mt as timestampHandler,Ct as transient,bt as validateCompare,Rt as validateDecorator,Dt as validateDecorators,jt as version,xt as versionCreateUpdate,Ht as wrapMethodWithContext};
2
2
  //# sourceMappingURL=db-decorators.js.map