@decaf-ts/db-decorators 0.7.6 → 0.7.8

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.
package/README.md CHANGED
@@ -28,7 +28,7 @@ The db-decorators library provides a comprehensive set of TypeScript decorators
28
28
 
29
29
  Documentation available [here](https://decaf-ts.github.io/db-decorators/)
30
30
 
31
- Minimal size: 7.3 KB kb gzipped
31
+ Minimal size: 7.5 KB kb gzipped
32
32
 
33
33
 
34
34
 
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,a,o,s){"use strict";const n={REFLECT:r.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"},i="_",c="dd/MM/yyyy HH:mm:ss:S",l={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"}},d={REFLECT:"db.update.validation.",TIMESTAMP:n.TIMESTAMP,READONLY:n.READONLY};e.ReadOnlyValidator=class extends r.Validator{constructor(){super(l.READONLY.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,a){if(void 0!==e)return r.isEqual(e,t)?void 0:this.getMessage(a||this.message)}},e.ReadOnlyValidator=a.__decorate([r.validator(d.READONLY),a.__metadata("design:paramtypes",[])],e.ReadOnlyValidator),e.TimestampValidator=class extends r.Validator{constructor(){super(l.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=a.__decorate([r.validator(d.TIMESTAMP),a.__metadata("design:paramtypes",[])],e.TimestampValidator);class p extends r.Validator{constructor(e=r.DEFAULT_ERROR_MESSAGES.DEFAULT,...t){super(e,...t)}}var u,y,f;r.Validation.updateKey=e=>d.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.ModelOperations=void 0,(y=e.ModelOperations||(e.ModelOperations={})).OPERATIONS="operations",y.RELATIONS="relations",e.BulkCrudOperationKeys=void 0,(f=e.BulkCrudOperationKeys||(e.BulkCrudOperationKeys={})).CREATE_ALL="createAll",f.READ_ALL="readAll",f.UPDATE_ALL="updateAll",f.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 E{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=g.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 g{constructor(){}static getHandlerName(e){return e.name?e.name:r.Hashing.hash(e.toString())}static key(t){return e.OperationKeys.REFLECT+t}static get(e,t,r){return g.registry.get(e,t,r)}static getOpRegistry(){return g.registry||(g.registry=new E),g.registry}static register(e,t,r,a){g.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 T extends O{constructor(e,t=T.name,r=500){super(t,e,r)}}class w extends T{constructor(e){super(e,w.name,500)}}class P extends m{constructor(e){super(e,P.name,404)}}class M extends m{constructor(e){super(e,M.name,409)}}const D={priority:50},R=(e,t,r,a)=>{const o=r.constructor.name;if(!o)throw new T("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))};function K(e,t,r){const a=[];for(const o in t){const s=t[o];for(const t of s){const{key:s}=t,n=g.get(e,o,r+s);if(!n||!n.length)throw new T(`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 T("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 b(e){const t=e.reduce((e,t)=>{if(!t||!t.data||!t.prop)throw new T("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 x(e){return e.sort((e,t)=>(e.data[0].priority??50)-(t.data[0].priority??50)),e}function v(e,t,r){return I(h.CREATE_UPDATE,e,t,r)}function S(e,t,r){return I(h.UPDATE,e,t,r)}function L(e,t,r){return I(h.CREATE,e,t,r)}function I(t=h.ALL,r,a,o){return C(e.OperationKeys.ON,t,r,a,o)}function N(t=h.ALL,r,a,o){return C(e.OperationKeys.AFTER,t,r,a,o)}function C(r,a=h.ALL,o,s,n=D){return(i,c)=>{const l=i.constructor.name,d=a.reduce((a,d)=>{const p=r+d;let u=t.Metadata.readOperation(i.constructor,c,p);u||(u={operation:d,handlers:{}});const y=g.getHandlerName(o);let f=n;if(s){if(Object.keys(s).filter(e=>e in n).length>0)throw new T("Unable to merge groupSort into dataToAdd due to overlaping keys");f={...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:f},a.push(((e,t)=>(r,a)=>{g.register(t,e,r,a)})(p,o),t.propMetadata(t.Metadata.key(e.ModelOperations.OPERATIONS,c,p),u))),a},[]);return t.apply(...d)(i,c)}}function k(e,r){return(...a)=>t.metadata(e,{args:a,handler:r})}function U(e=l.READONLY.INVALID){const a=n.READONLY,o={message:e,description:"defines the attribute as readOnly",async:!1};return t.Decoration.for(a).define({decorator:r.innerValidationDecorator,args:[U,a,o]}).apply()}async function j(e,t,r,a){a[r]=e.timestamp}async function V(e,t,r,a){if(a[r])try{a[r]=JSON.stringify(a[r])}catch(e){throw new w(`Failed to serialize ${r.toString()} property of model ${a.constructor.name}: e`)}}async function F(e,t,r,a){if(a[r]&&"string"==typeof a[r])try{a[r]=JSON.parse(a[r])}catch(e){throw new w(`Failed to deserialize ${r.toString()} property of model ${a.constructor.name}: ${e}`)}}function _(e,r){const a=[];for(const o in e){if(!Object.prototype.hasOwnProperty.call(e,o)||r.includes(o))continue;const s=t.Metadata.validationFor(e.constructor,o)||{};a.push({prop:o,decorators:s})}return a}function $(e,t,a,o,s){const n=r.Validation.get(o.key);if(!n)throw Error("Missing validator for "+o.key);if(!n.updateHasErrors)return r.toConditionalPromise(void 0,s);if(!s&&o.async)return r.toConditionalPromise(void 0,s);const i=Object.values(o)||{},c=n.updateHasErrors(e[a],t[a],...i);return r.toConditionalPromise(c,s)}function H(e,t,a,o,s){const n={};for(const i in o){const c={...o[i],key:i};if(!s&&c.async)continue;let l=$(e,t,a,c,s);if(c.key===r.ValidationKeys.LIST&&(!l||s)){const o=e[a],n=t[a],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 a=r.Model.pk(t,!0);if(!a)return"Failed to find model id";const o=d.find(e=>a===r.Model.pk(e,!0));return r.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 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 Y(e,a,o,...s){const n=_(a,s),i={},c={};for(const{prop:s,decorators:l}of n){const n=s+"",d=a[s],{designTypes:p,designType:u}=t.Metadata.getPropDesignTypes(a.constructor,s);if(!p)continue;if(p.some(e=>[Array.name,Set.name].includes(e))){if(!l||!Object.keys(l).includes(r.ValidationKeys.LIST)){i[n]={[r.ValidationKeys.TYPE]:`Array or Set property '${n}' requires a @list decorator`};continue}if(d&&!(Array.isArray(d)||d instanceof Set)){i[n]={[r.ValidationKeys.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const y=H(a,e,n,l,o)||{},f=r.Model.isPropertyModel(a,n);if(null!=d&&f){const t=d,a=(Array.isArray(u)?u:[u]).map(e=>("function"!=typeof e||e.name||(e=e()),r.Model.get(e.name||e))).find(e=>!!e);a&&t instanceof a?c[n]=t.hasErrors(e[s]):(y[r.ValidationKeys.TYPE]=a?"Value must be an instance of "+a.name:`Unable to verify type consistency, missing model registry for ${p.toString()} on prop ${n}`,delete y[r.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 r.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,r]of Object.entries(c)){const a=await r;a&&Object.entries(a).forEach(([r,a])=>{void 0!==a&&(t[[e,r].join(".")]=a)})}for(let r=0;r<e.length;r++){const a=d[r],o=e[r];"fulfilled"===o.status&&void 0!==o.value?t[a]=o.value:"rejected"===o.status&&(t[a]=o.reason instanceof Error?o.reason.message:(o.reason||"Validation failed")+"")}return Object.keys(t).length>0?new r.ModelErrorDefinition(t):void 0})}function B(e,t,a,o,s){if(void 0===o[a])return;const n=r.Hashing.hash(o[a]);s&&o[a]===n||(o[a]=n)}function q(){return t.apply(v(B),t.propMetadata(n.HASH,{}))}function z(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 T(`Property ${t} not found to compose from`);if("keys"===o)return t;if(void 0===a[t])throw new T(`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 T("Failed to compose value: "+e)}}function G(e,r=!1,a=i,o="values",s="",c="",l={priority:55}){return(i,d)=>{const p={args:e,hashResult:r,separator:a,type:o,prefix:s,suffix:c},u=[v(z,p,l),t.propMetadata(t.Metadata.key(n.COMPOSED,d),p)];return r&&u.push(q()),t.apply(...u)(i,d)}}function Q(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 T("Invalid operation: "+t)}}catch(e){throw new T("Failed to update version: "+e)}}}function J(e){return e.reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0)}async function W(t,r,a,o,s,n){const i=Z(a,o,s);if(!i)return;const c=x(b(K(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 T("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 T(t)}}}function Z(r,a,o){const s=o?.replace(/[.]$/,""),n=t.Metadata.get(r.constructor,e.ModelOperations.OPERATIONS);if(n)return Object.keys(n).reduce((e,t)=>{const r=s?n[t][s]||{}:n[t],o=Object.keys(r).filter(e=>e===a),i=[];for(const e of o)i.push({key:e,props:r[e]});return i&&i.length&&(e||(e={}),e[t]=i),e},void 0)}r.Model.prototype.isTransient=function(){return t.Metadata.isTransient(this)},r.Model.prototype.hasErrors=function(e,...t){!e||e instanceof r.Model||(t.unshift(e),e=void 0);const a=this.isAsync(),o=r.validate(this,a,...t);return a?Promise.resolve(o).then(r=>r||!e?r:Y(e,this,a,...t)):o||!e?o:Y(e,this,a,...t)},r.Model.prototype.segregate=function(){return r.Model.segregate(this)},r.Model.segregate=e=>{if(!t.Metadata.isTransient(e))return{model:e};const a=t.Metadata.validatableProperties(e.constructor),o=t.Metadata.get(e.constructor,n.TRANSIENT),s={model:{},transient:{}};for(const t of a)if(Object.keys(o).includes(t)){s.transient=s.transient||{};try{s.transient[t]=e[t]}catch(e){throw new w(`Failed to serialize transient property ${t}: ${e}`)}}else s.model=s.model||{},s.model[t]=e[t];return s.model=r.Model.build(s.model,e.constructor.name),s},r.Model.pk=((e,a=!1)=>{if(!e)throw Error("No model was provided");const o=e instanceof r.Model?e.constructor:e,s=t.Metadata.get(o,n.ID);if(!s)throw Error("No Id property defined for model "+(o?.name||"Unknown Model"));const i=Object.keys(s)[0];if(!a)return i;if(e instanceof r.Model)return e[i];throw Error("Cannot get the value of the pk from the constructor")}).bind(r.Model),r.Model.pkProps=(e=>t.Metadata.get(e,t.Metadata.key(n.ID,r.Model.pk(e)))).bind(r.Model),r.Model.isTransient=(e=>t.Metadata.isTransient(e)).bind(r.Model),r.Model.merge=((e,t,r)=>{const a=e=>Object.entries(e).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});return new(r=r||e.constructor)(Object.assign({},a(e),a(t)))}).bind(r.Model),t.Metadata.saveOperation=((r,a,o,s)=>{a&&t.Metadata.set(r,t.Metadata.key(e.ModelOperations.OPERATIONS,a,o),s)}).bind(t.Metadata),t.Metadata.readOperation=((r,a,o)=>{if(a&&o)return t.Metadata.get(r,t.Metadata.key(e.ModelOperations.OPERATIONS,a,o))}).bind(t.Metadata),t.Metadata.isTransient=(e=>!!t.Metadata.get("function"!=typeof e?e.constructor:e,n.TRANSIENT)).bind(t.Metadata);const X={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0,ignoreValidation:!1,ignoreHandlers:!0},ee=e=>(new te).accumulate(Object.assign({},e,{timestamp:new Date,logger:e.logger||s.Logging.get()}));class te{constructor(){this.cache=new o.ObjectAccumulator,Object.defineProperty(this,"cache",{value:new o.ObjectAccumulator,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=ee}accumulate(e){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(e),writable:!1,enumerable:!1,configurable:!0}),this}get logger(){return this.cache.logger}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 te.factory(Object.assign({},e.cache,t||{}))}static async from(e,t,r,...a){return te.factory(Object.assign({},X,t,{operation:e,model:r,logger:t.logger||s.Logging.get()}))}static async args(e,t,r,a,o){const s=r.pop();async function n(){return a?a.context(e,o||{},t,...r):te.from(e,o||{},t,...r)}let i;return s?s instanceof te?(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 re(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 te))throw new T("Missing a context");let i=e.call(r,...s);return i instanceof Promise&&(i=await i),i=a.call(r,i,n),i instanceof Promise&&(i=await i),i}})}class ae{get class(){if(!this._class)throw new T("No class definition found for this repository");return this._class}get pk(){return r.Model.pk(this.class)}get pkProps(){return r.Model.pkProps(this.class)}constructor(e){e&&(this._class=e);const t=this;[this.create,this.read,this.update,this.delete].forEach(e=>{const r=e.name;re(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 te.args(e.OperationKeys.CREATE,this.class,r);return t=new this.class(t),await W(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),[t,...a.args]}async createSuffix(t,r){return await W(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER),t}async createAllPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r);return await Promise.all(t.map(async t=>(t=new this.class(t),await W(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=>W(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 W(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER),t}async readPrefix(t,...r){const a=await te.args(e.OperationKeys.READ,this.class,r),o=new this.class;return o[this.pk]=t,await W(this,a.context,o,e.OperationKeys.READ,e.OperationKeys.ON),[t,...a.args]}async readAllPrefix(t,...r){const a=await te.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,W(this,a.context,r,e.OperationKeys.READ,e.OperationKeys.ON)})),[t,...a.args]}async readAllSuffix(t,r){return await Promise.all(t.map(t=>W(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 W(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER),t}async updatePrefix(t,...r){const a=await te.args(e.OperationKeys.UPDATE,this.class,r),o=t[this.pk];if(!o)throw new T("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);return await W(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s),[t,...a.args]}async updateAllPrefix(t,...r){const a=await te.args(e.OperationKeys.UPDATE,this.class,r);return await Promise.all(t.map(t=>(t=new this.class(t),W(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=>W(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 W(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER),t}async deletePrefix(t,...r){const a=await te.args(e.OperationKeys.DELETE,this.class,r),o=await this.read(t,...a.args);return await W(this,a.context,o,e.OperationKeys.DELETE,e.OperationKeys.ON),[t,...a.args]}async deleteAllPrefix(t,...r){const a=await te.args(e.OperationKeys.DELETE,this.class,r),o=await this.readAll(t,...a.args);return await Promise.all(o.map(async t=>W(this,a.context,t,e.OperationKeys.DELETE,e.OperationKeys.ON))),[t,...a.args]}async deleteAllSuffix(t,r){return await Promise.all(t.map(t=>W(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER))),t}toString(){return this.class.name+" Repository"}}const oe="##VERSION##",se="##PACKAGE##";t.Metadata.registerLibrary(se,oe),e.BadRequestError=m,e.BaseError=O,e.BaseRepository=ae,e.BlockOperations=t=>k(e.OperationKeys.REFLECT+e.OperationKeys.BLOCK,(e,t)=>e.includes(t))(t),e.ConflictError=M,e.Context=te,e.DBKeys=n,e.DBOperations=h,e.DEFAULT_ERROR_MESSAGES=l,e.DEFAULT_TIMESTAMP_FORMAT=c,e.DefaultContextFactory=ee,e.DefaultRepositoryFlags=X,e.DefaultSeparator=i,e.InternalError=T,e.NotFoundError=P,e.Operations=g,e.OperationsRegistry=E,e.PACKAGE_NAME=se,e.Repository=class extends ae{constructor(e){super(e)}async createPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r);if(t=new this.class(t),!1!==a.context.get("ignoreHandlers")&&await W(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),!a.context.get("ignoreValidation")){const e=await Promise.resolve(t.hasErrors());if(e)throw new A(e.toString())}return[t,...a.args]}async createAllPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r),o=!1!==a.context.get("ignoreHandlers"),s=!a.context.get("ignoreValidation");if(t=await Promise.all(t.map(async t=>{const r=new this.class(t);return o&&await W(this,a.context,r,e.OperationKeys.CREATE,e.OperationKeys.ON),r})),s){const e=J(await Promise.all(t.map(e=>Promise.resolve(e.hasErrors()))));if(e)throw new A(e)}return[t,...a.args]}async updatePrefix(t,...a){const o=await te.args(e.OperationKeys.UPDATE,this.class,a),s=!1!==o.context.get("ignoreHandlers"),n=!o.context.get("ignoreValidation"),i=t[this.pk];if(!i)throw new T("No value for the Id is defined under the property "+this.pk);const c=await this.read(i);if(t=r.Model.merge(c,t,this.class),s&&await W(this,o.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,c),n){const e=await Promise.resolve(t.hasErrors(c));if(e)throw new A(e.toString())}return[t,...o.args]}async updateAllPrefix(t,...a){const o=await te.args(e.OperationKeys.UPDATE,this.class,a),s=!1!==o.context.get("ignoreHandlers"),n=!o.context.get("ignoreValidation"),i=t.map(e=>{const t=e[this.pk];if(void 0===t)throw new T("No value for the Id is defined under the property "+this.pk);return t}),c=await this.readAll(i,...o.args);if(t=t.map((e,t)=>r.Model.merge(c[t],e,this.class)),s&&await Promise.all(t.map((t,r)=>W(this,o.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,c[r]))),n){const e=J(await Promise.all(t.map((e,t)=>Promise.resolve(e.hasErrors(c[t])))));if(e)throw new A(e)}return[t,...o.args]}async readPrefix(e,...t){return super.readPrefix(e,...t)}async readAllPrefix(e,...t){return super.readAllPrefix(e,...t)}async deleteAllPrefix(e,...t){return super.deleteAllPrefix(e,...t)}},e.SerializationError=w,e.UpdateValidationKeys=d,e.UpdateValidator=p,e.VERSION=oe,e.ValidationError=A,e.after=N,e.afterAny=(e,t,r)=>N(h.ALL,e,t,r),e.afterCreate=(e,t,r)=>N(h.CREATE,e,t,r),e.afterCreateUpdate=(e,t,r)=>N(h.CREATE_UPDATE,e,t,r),e.afterDelete=(e,t,r)=>N(h.DELETE,e,t,r),e.afterRead=(e,t,r)=>N(h.READ,e,t,r),e.afterUpdate=(e,t,r)=>N(h.UPDATE,e,t,r),e.composed=(e,t=i,r=!1,a="",o="",s={priority:55})=>G(e,r,t,"values",a,o,s),e.composedFromCreateUpdate=z,e.composedFromKeys=(e,t=i,r=!1,a="",o="",s={priority:55})=>G(e,r,t,"keys",a,o,s),e.enforceDBDecorators=W,e.getDbDecorators=Z,e.getHandlerArgs=R,e.getHandlersDecorators=K,e.getValidatableUpdateProps=_,e.groupDecorators=b,e.hash=q,e.hashOnCreateUpdate=B,e.id=()=>t.apply(r.required(),U(),(e,r)=>t.propMetadata(t.Metadata.key(n.ID,r),{})(e,r)),e.on=I,e.onAny=(e,t,r)=>I(h.ALL,e,t,r),e.onCreate=L,e.onCreateUpdate=v,e.onDelete=(e,t,r)=>I(h.DELETE,e,t,r),e.onRead=(e,t,r)=>I(h.READ,e,t,r),e.onUpdate=S,e.operation=C,e.prefixMethod=(e,t,r,a)=>{const o=a||t.name;e[o]=new Proxy(e[o],{apply:async(e,t,a)=>{let o=r.call(t,...a);return o instanceof Promise&&(o=await o),o=e.call(t,...o),o instanceof Promise&&(o=await o),o}})},e.readonly=U,e.reduceErrorsToPrint=J,e.serialize=()=>t.apply(v(V),N(h.ALL,F),r.type([String,Object]),t.metadata(n.SERIALIZE,{})),e.serializeAfterAll=F,e.serializeOnCreateUpdate=V,e.sortDecorators=x,e.storeHandlerMetadata=k,e.suffixMethod=(e,t,r,a)=>{const o=a||t.name;e[o]=new Proxy(e[o],{apply:async(e,t,a)=>{let o=e.call(t,...a);return o instanceof Promise&&(o=await o),o=r.call(t,...o),o instanceof Promise&&(o=await o),o}})},e.timestamp=(a=h.CREATE_UPDATE,o=c)=>{const s=r.Validation.updateKey(n.TIMESTAMP);return t.Decoration.for(s).define({decorator:(a,o)=>{const i=[r.date(o,l.TIMESTAMP.DATE),r.required(l.TIMESTAMP.REQUIRED),t.propMetadata(r.Validation.key(n.TIMESTAMP),{operation:a,format:o}),I(a,j)];return-1!==a.indexOf(e.OperationKeys.UPDATE)?i.push(t.propMetadata(s,{message:l.TIMESTAMP.INVALID})):i.push(U()),t.apply(...i)},args:[a,o]}).apply()},e.timestampHandler=j,e.transient=()=>t.Decoration.for(n.TRANSIENT).define((e,r)=>{t.propMetadata(n.TRANSIENT,!0)(e.constructor),t.propMetadata(t.Metadata.key(n.TRANSIENT,r),{})(e,r)}).apply(),e.validateCompare=Y,e.validateDecorator=$,e.validateDecorators=H,e.version=()=>{const a=n.VERSION;return t.Decoration.for(a).define(r.type(Number),L(Q(e.OperationKeys.CREATE)),S(Q(e.OperationKeys.UPDATE)),t.propMetadata(a,!0)).apply()},e.versionCreateUpdate=Q,e.wrapMethodWithContext=re},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/decorator-validation"),require("tslib"),require("typed-object-accumulator"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/decorator-validation","tslib","typed-object-accumulator","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["db-decorators"]={},e.decafTsDecoration,e.decafTsDecoratorValidation,e.tslib,e.typedObjectAccumulator,e.decafTsLogging);
1
+ var e,t;e=this,t=function(e,t,r,a,o,s){"use strict";const n={REFLECT:r.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"},i="_",c="dd/MM/yyyy HH:mm:ss:S",l={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"}},d={REFLECT:"db.update.validation.",TIMESTAMP:n.TIMESTAMP,READONLY:n.READONLY};e.ReadOnlyValidator=class extends r.Validator{constructor(){super(l.READONLY.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,a){if(void 0!==e)return r.isEqual(e,t)?void 0:this.getMessage(a||this.message)}},e.ReadOnlyValidator=a.__decorate([r.validator(d.READONLY),a.__metadata("design:paramtypes",[])],e.ReadOnlyValidator),e.TimestampValidator=class extends r.Validator{constructor(){super(l.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=a.__decorate([r.validator(d.TIMESTAMP),a.__metadata("design:paramtypes",[])],e.TimestampValidator);class p extends r.Validator{constructor(e=r.DEFAULT_ERROR_MESSAGES.DEFAULT,...t){super(e,...t)}}var u,f,y;r.Validation.updateKey=e=>d.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.ModelOperations=void 0,(f=e.ModelOperations||(e.ModelOperations={})).OPERATIONS="operations",f.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 E{constructor(){this.cache={}}get(e,t,r,a){a=a||[];const o=this.resolveOwner(e),s=this.resolveTargetName(e,o);if(s){const e=this.selectHandlers(s,t,r,o);e?.length&&a.unshift(...e)}else if("string"==typeof e||e===Object.prototype||Object.getPrototypeOf(e)===Object.prototype)return a;let n=Object.getPrototypeOf(e);return n?(n.constructor&&n.constructor.name===s&&(n=Object.getPrototypeOf(n)),n?this.get(n,t,r,a):a):a}register(e,t,r,a){const o=r.constructor.name,s=g.getHandlerName(e),n=this.resolveFlavour(r.constructor);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][n]||(this.cache[o][a][t][n]={}),this.cache[o][a][t][n][s]||(this.cache[o][a][t][n][s]=e)}resolveOwner(e){if(e&&"string"!=typeof e)return"function"==typeof e?e:e.constructor}resolveTargetName(e,t){return"string"==typeof e?e:t?.name}resolveFlavour(e){if(!e)return t.Decoration.defaultFlavour;try{return t.Metadata.flavourOf(e)}catch{return t.Decoration.defaultFlavour}}selectHandlers(e,r,a,o){const s=this.cache[e]?.[r]?.[a];if(!s)return;const n=s[this.resolveFlavour(o)]||s[t.Decoration.defaultFlavour]||this.firstBucket(s);if(!n)return;const i=Object.values(n);return i.length?i:void 0}firstBucket(e){for(const t of Object.values(e))if(t&&Object.keys(t).length)return t}}class g{constructor(){}static getHandlerName(e){return e.name?e.name:r.Hashing.hash(e.toString())}static key(t){return e.OperationKeys.REFLECT+t}static get(e,t,r){return g.registry.get(e,t,r)}static getOpRegistry(){return g.registry||(g.registry=new E),g.registry}static register(e,t,r,a){g.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 T extends O{constructor(e,t=T.name,r=500){super(t,e,r)}}class w extends T{constructor(e){super(e,w.name,500)}}class P extends m{constructor(e){super(e,P.name,404)}}class M extends m{constructor(e){super(e,M.name,409)}}const D={priority:50},R=(e,t,r,a)=>{const o=r.constructor.name;if(!o)throw new T("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))};function K(e,t,r){const a=[];for(const o in t){const s=t[o];for(const t of s){const{key:s}=t,n=g.get(e,o,r+s);if(!n||!n.length)throw new T(`Could not find registered handler for the operation ${r+s} under property ${o}`);const i=R(t,o,e);if(!i)throw new T("Missing handler arguments for decorators");for(const e of n){const t=i[e.name];if(!t)throw new T("Missing handler arguments for handler "+e.name);const r=t.data;a.push({handler:e,data:[r],prop:[o]})}}}return a}function v(e){const t=e.reduce(((e,t)=>{if(!t||!t.data||!t.prop)throw new T("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 b(e){return e.sort(((e,t)=>(e.data[0].priority??50)-(t.data[0].priority??50))),e}function x(e,t,r){return N(h.CREATE_UPDATE,e,t,r)}function S(e,t,r){return N(h.UPDATE,e,t,r)}function L(e,t,r){return N(h.CREATE,e,t,r)}function N(t=h.ALL,r,a,o){return k(e.OperationKeys.ON,t,r,a,o)}function I(t=h.ALL,r,a,o){return k(e.OperationKeys.AFTER,t,r,a,o)}function k(r,a=h.ALL,o,s,n=D){return(i,c)=>{const l=i.constructor.name,d=a.reduce(((a,d)=>{const p=r+d;let u=t.Metadata.readOperation(i.constructor,c,p);u||(u={operation:d,handlers:{}});const f=g.getHandlerName(o);let y=n;if(s){if(Object.keys(s).filter((e=>e in n)).length>0)throw new T("Unable to merge groupSort into dataToAdd due to overlaping keys");y={...n,...s}}return u.handlers[l]&&u.handlers[l][c]&&f in u.handlers[l][c]||(u.handlers[l]=u.handlers[l]||{},u.handlers[l][c]=u.handlers[l][c]||{},u.handlers[l][c][f]={data:y},a.push(((e,t)=>(r,a)=>{g.register(t,e,r,a)})(p,o),t.propMetadata(t.Metadata.key(e.ModelOperations.OPERATIONS,c,p),u))),a}),[]);return t.apply(...d)(i,c)}}function C(e,r){return(...a)=>t.metadata(e,{args:a,handler:r})}function j(e=l.READONLY.INVALID){const a=n.READONLY,o={message:e,description:"defines the attribute as readOnly",async:!1};return t.Decoration.for(a).define({decorator:r.innerValidationDecorator,args:[j,a,o]}).apply()}async function U(e,t,r,a){a[r]=e.timestamp}async function V(e,t,r,a){if(a[r])try{a[r]=JSON.stringify(a[r])}catch(e){throw new w(`Failed to serialize ${r.toString()} property of model ${a.constructor.name}: e`)}}async function F(e,t,r,a){if(a[r]&&"string"==typeof a[r])try{a[r]=JSON.parse(a[r])}catch(e){throw new w(`Failed to deserialize ${r.toString()} property of model ${a.constructor.name}: ${e}`)}}function _(e,r){const a=[];for(const o in e){if(!Object.prototype.hasOwnProperty.call(e,o)||r.includes(o))continue;const s=t.Metadata.validationFor(e.constructor,o)||{};a.push({prop:o,decorators:s})}return a}function H(e,t,a,o,s){const n=r.Validation.get(o.key);if(!n)throw Error("Missing validator for "+o.key);if(!n.updateHasErrors)return r.toConditionalPromise(void 0,s);if(!s&&o.async)return r.toConditionalPromise(void 0,s);const i=Object.values(o)||{},c=n.updateHasErrors(e[a],t[a],...i);return r.toConditionalPromise(c,s)}function $(e,t,a,o,s){const n={};for(const i in o){const c={...o[i],key:i};if(!s&&c.async)continue;let l=H(e,t,a,c,s);if(c.key===r.ValidationKeys.LIST&&(!l||s)){const o=e[a],n=t[a],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 a=r.Model.pk(t,!0);if(!a)return"Failed to find model id";const o=d.find((e=>a===r.Model.pk(e,!0)));return r.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 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 B(e,a,o,...s){const n=_(a,s),i={},c={};for(const{prop:s,decorators:l}of n){const n=s+"",d=a[s],{designTypes:p,designType:u}=t.Metadata.getPropDesignTypes(a.constructor,s);if(!p)continue;if(p.some((e=>[Array.name,Set.name].includes(e)))){if(!l||!Object.keys(l).includes(r.ValidationKeys.LIST)){i[n]={[r.ValidationKeys.TYPE]:`Array or Set property '${n}' requires a @list decorator`};continue}if(d&&!(Array.isArray(d)||d instanceof Set)){i[n]={[r.ValidationKeys.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const f=$(a,e,n,l,o)||{},y=r.Model.isPropertyModel(a,n);if(null!=d&&y){const t=d,a=(Array.isArray(u)?u:[u]).map((e=>("function"!=typeof e||e.name||(e=e()),r.Model.get(e.name||e)))).find((e=>!!e));a&&t instanceof a?c[n]=t.hasErrors(e[s]):(f[r.ValidationKeys.TYPE]=a?"Value must be an instance of "+a.name:`Unable to verify type consistency, missing model registry for ${p.toString()} on prop ${n}`,delete f[r.ModelKeys.TYPE])}(Object.keys(f).length>0||o)&&(i[n]=f),o||Object.entries(c[n]||{}).forEach((([e,t])=>{void 0!==t&&(i[`${n}.${e}`]=t)}))}if(!o)return Object.keys(i).length>0?new r.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,r]of Object.entries(c)){const a=await r;a&&Object.entries(a).forEach((([r,a])=>{void 0!==a&&(t[[e,r].join(".")]=a)}))}for(let r=0;r<e.length;r++){const a=d[r],o=e[r];"fulfilled"===o.status&&void 0!==o.value?t[a]=o.value:"rejected"===o.status&&(t[a]=o.reason instanceof Error?o.reason.message:(o.reason||"Validation failed")+"")}return Object.keys(t).length>0?new r.ModelErrorDefinition(t):void 0}))}function Y(e,t,a,o,s){if(void 0===o[a])return;const n=r.Hashing.hash(o[a]);s&&o[a]===n||(o[a]=n)}function q(){return t.apply(x(Y),t.propMetadata(n.HASH,{}))}function z(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 T(`Property ${t} not found to compose from`);if("keys"===o)return t;if(void 0===a[t])throw new T(`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 T("Failed to compose value: "+e)}}function G(e,r=!1,a=i,o="values",s="",c="",l={priority:55}){return(i,d)=>{const p={args:e,hashResult:r,separator:a,type:o,prefix:s,suffix:c},u=[x(z,p,l),t.propMetadata(t.Metadata.key(n.COMPOSED,d),p)];return r&&u.push(q()),t.apply(...u)(i,d)}}function Q(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 T("Invalid operation: "+t)}}catch(e){throw new T("Failed to update version: "+e)}}}function J(e){return e.reduce(((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e)),void 0)}async function W(t,r,a,o,s,n){const i=Z(a,o,s);if(!i)return;const c=b(v(K(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 T("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 T(t)}}}function Z(r,a,o){const s=o?.replace(/[.]$/,""),n=t.Metadata.get(r.constructor,e.ModelOperations.OPERATIONS);if(n)return Object.keys(n).reduce(((e,t)=>{const r=s?n[t][s]||{}:n[t],o=Object.keys(r).filter((e=>e===a)),i=[];for(const e of o)i.push({key:e,props:r[e]});return i&&i.length&&(e||(e={}),e[t]=i),e}),void 0)}r.Model.prototype.isTransient=function(){return t.Metadata.isTransient(this)},r.Model.prototype.hasErrors=function(e,...t){!e||e instanceof r.Model||(t.unshift(e),e=void 0);const a=this.isAsync(),o=r.validate(this,a,...t);return a?Promise.resolve(o).then((r=>r||!e?r:B(e,this,a,...t))):o||!e?o:B(e,this,a,...t)},r.Model.prototype.segregate=function(){return r.Model.segregate(this)},r.Model.segregate=e=>{if(!t.Metadata.isTransient(e))return{model:e};const a=t.Metadata.validatableProperties(e.constructor),o=t.Metadata.get(e.constructor,n.TRANSIENT),s={model:{},transient:{}};for(const t of a)if(Object.keys(o).includes(t)){s.transient=s.transient||{};try{s.transient[t]=e[t]}catch(e){throw new w(`Failed to serialize transient property ${t}: ${e}`)}}else s.model=s.model||{},s.model[t]=e[t];return s.model=r.Model.build(s.model,e.constructor.name),s},r.Model.pk=((e,a=!1)=>{if(!e)throw Error("No model was provided");const o=e instanceof r.Model?e.constructor:e,s=t.Metadata.get(o,n.ID);if(!s)throw Error("No Id property defined for model "+(o?.name||"Unknown Model"));const i=Object.keys(s)[0];if(!a)return i;if(e instanceof r.Model)return e[i];throw Error("Cannot get the value of the pk from the constructor")}).bind(r.Model),r.Model.pkProps=(e=>t.Metadata.get(e,t.Metadata.key(n.ID,r.Model.pk(e)))).bind(r.Model),r.Model.isTransient=(e=>t.Metadata.isTransient(e)).bind(r.Model),r.Model.merge=((e,t,r)=>{const a=e=>Object.entries(e).reduce(((e,[t,r])=>(void 0!==r&&(e[t]=r),e)),{});return new(r=r||e.constructor)(Object.assign({},a(e),a(t)))}).bind(r.Model),t.Metadata.saveOperation=((r,a,o,s)=>{a&&t.Metadata.set(r,t.Metadata.key(e.ModelOperations.OPERATIONS,a,o),s)}).bind(t.Metadata),t.Metadata.readOperation=((r,a,o)=>{if(a&&o)return t.Metadata.get(r,t.Metadata.key(e.ModelOperations.OPERATIONS,a,o))}).bind(t.Metadata),t.Metadata.isTransient=(e=>!!t.Metadata.get("function"!=typeof e?e.constructor:e,n.TRANSIENT)).bind(t.Metadata);const X={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0,ignoreValidation:!1,ignoreHandlers:!1},ee=e=>(new te).accumulate(Object.assign({},e,{timestamp:new Date,logger:e.logger||s.Logging.get()}));class te{constructor(){this.cache=new o.ObjectAccumulator,Object.defineProperty(this,"cache",{value:new o.ObjectAccumulator,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=ee}accumulate(e){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(e),writable:!1,enumerable:!1,configurable:!0}),this}get logger(){return this.cache.logger}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 te.factory(Object.assign({},e.cache,t||{}))}static async from(e,t,r,...a){return te.factory(Object.assign({},X,t,{operation:e,model:r,logger:t.logger||s.Logging.get()}))}static async args(e,t,r,a,o){const s=r.pop();async function n(){return a?a.context(e,o||{},t,...r):te.from(e,o||{},t,...r)}let i;return s?s instanceof te?(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 re(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 te))throw new T("Missing a context");let i=e.call(r,...s);return i instanceof Promise&&(i=await i),i=a.call(r,i,n),i instanceof Promise&&(i=await i),i}})}class ae{get class(){if(!this._class)throw new T("No class definition found for this repository");return this._class}get pk(){return r.Model.pk(this.class)}get pkProps(){return r.Model.pkProps(this.class)}constructor(e){e&&(this._class=e);const t=this;[this.create,this.read,this.update,this.delete].forEach((e=>{const r=e.name;re(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 te.args(e.OperationKeys.CREATE,this.class,r);return t=new this.class(t),await W(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),[t,...a.args]}async createSuffix(t,r){return await W(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER),t}async createAllPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r);return await Promise.all(t.map((async t=>(t=new this.class(t),await W(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=>W(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 W(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER),t}async readPrefix(t,...r){const a=await te.args(e.OperationKeys.READ,this.class,r),o=new this.class;return o[this.pk]=t,await W(this,a.context,o,e.OperationKeys.READ,e.OperationKeys.ON),[t,...a.args]}async readAllPrefix(t,...r){const a=await te.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,W(this,a.context,r,e.OperationKeys.READ,e.OperationKeys.ON)}))),[t,...a.args]}async readAllSuffix(t,r){return await Promise.all(t.map((t=>W(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 W(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER),t}async updatePrefix(t,...r){const a=await te.args(e.OperationKeys.UPDATE,this.class,r),o=t[this.pk];if(!o)throw new T("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);return await W(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s),[t,...a.args]}async updateAllPrefix(t,...r){const a=await te.args(e.OperationKeys.UPDATE,this.class,r);return await Promise.all(t.map((t=>(t=new this.class(t),W(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=>W(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 W(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER),t}async deletePrefix(t,...r){const a=await te.args(e.OperationKeys.DELETE,this.class,r),o=await this.read(t,...a.args);return await W(this,a.context,o,e.OperationKeys.DELETE,e.OperationKeys.ON),[t,...a.args]}async deleteAllPrefix(t,...r){const a=await te.args(e.OperationKeys.DELETE,this.class,r),o=await this.readAll(t,...a.args);return await Promise.all(o.map((async t=>W(this,a.context,t,e.OperationKeys.DELETE,e.OperationKeys.ON)))),[t,...a.args]}async deleteAllSuffix(t,r){return await Promise.all(t.map((t=>W(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER)))),t}toString(){return this.class.name+" Repository"}}const oe="##VERSION##",se="##PACKAGE##";t.Metadata.registerLibrary(se,oe),e.BadRequestError=m,e.BaseError=O,e.BaseRepository=ae,e.BlockOperations=t=>C(e.OperationKeys.REFLECT+e.OperationKeys.BLOCK,((e,t)=>e.includes(t)))(t),e.ConflictError=M,e.Context=te,e.DBKeys=n,e.DBOperations=h,e.DEFAULT_ERROR_MESSAGES=l,e.DEFAULT_TIMESTAMP_FORMAT=c,e.DefaultContextFactory=ee,e.DefaultRepositoryFlags=X,e.DefaultSeparator=i,e.InternalError=T,e.NotFoundError=P,e.Operations=g,e.OperationsRegistry=E,e.PACKAGE_NAME=se,e.Repository=class extends ae{constructor(e){super(e)}async createPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r);if(t=new this.class(t),a.context.get("ignoreHandlers")||await W(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),!a.context.get("ignoreValidation")){const e=await Promise.resolve(t.hasErrors());if(e)throw new A(e.toString())}return[t,...a.args]}async createAllPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r),o=a.context.get("ignoreHandlers"),s=a.context.get("ignoreValidation");if(t=await Promise.all(t.map((async t=>{const r=new this.class(t);return o||await W(this,a.context,r,e.OperationKeys.CREATE,e.OperationKeys.ON),r}))),!s){const e=J(await Promise.all(t.map((e=>Promise.resolve(e.hasErrors())))));if(e)throw new A(e)}return[t,...a.args]}async updatePrefix(t,...a){const o=await te.args(e.OperationKeys.UPDATE,this.class,a),s=o.context.get("ignoreHandlers"),n=o.context.get("ignoreValidation"),i=t[this.pk];if(!i)throw new T("No value for the Id is defined under the property "+this.pk);const c=await this.read(i);if(t=r.Model.merge(c,t,this.class),s||await W(this,o.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,c),!n){const e=await Promise.resolve(t.hasErrors(c));if(e)throw new A(e.toString())}return[t,...o.args]}async updateAllPrefix(t,...a){const o=await te.args(e.OperationKeys.UPDATE,this.class,a),s=o.context.get("ignoreHandlers"),n=o.context.get("ignoreValidation"),i=t.map((e=>{const t=e[this.pk];if(void 0===t)throw new T("No value for the Id is defined under the property "+this.pk);return t})),c=await this.readAll(i,...o.args);if(t=t.map(((e,t)=>r.Model.merge(c[t],e,this.class))),s||await Promise.all(t.map(((t,r)=>W(this,o.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,c[r])))),!n){const e=J(await Promise.all(t.map(((e,t)=>Promise.resolve(e.hasErrors(c[t]))))));if(e)throw new A(e)}return[t,...o.args]}async readPrefix(e,...t){return super.readPrefix(e,...t)}async readAllPrefix(e,...t){return super.readAllPrefix(e,...t)}async deleteAllPrefix(e,...t){return super.deleteAllPrefix(e,...t)}},e.SerializationError=w,e.UpdateValidationKeys=d,e.UpdateValidator=p,e.VERSION=oe,e.ValidationError=A,e.after=I,e.afterAny=(e,t,r)=>I(h.ALL,e,t,r),e.afterCreate=(e,t,r)=>I(h.CREATE,e,t,r),e.afterCreateUpdate=(e,t,r)=>I(h.CREATE_UPDATE,e,t,r),e.afterDelete=(e,t,r)=>I(h.DELETE,e,t,r),e.afterRead=(e,t,r)=>I(h.READ,e,t,r),e.afterUpdate=(e,t,r)=>I(h.UPDATE,e,t,r),e.composed=(e,t=i,r=!1,a="",o="",s={priority:55})=>G(e,r,t,"values",a,o,s),e.composedFromCreateUpdate=z,e.composedFromKeys=(e,t=i,r=!1,a="",o="",s={priority:55})=>G(e,r,t,"keys",a,o,s),e.enforceDBDecorators=W,e.getDbDecorators=Z,e.getHandlerArgs=R,e.getHandlersDecorators=K,e.getValidatableUpdateProps=_,e.groupDecorators=v,e.hash=q,e.hashOnCreateUpdate=Y,e.id=()=>t.apply(r.required(),j(),((e,r)=>t.propMetadata(t.Metadata.key(n.ID,r),{})(e,r))),e.on=N,e.onAny=(e,t,r)=>N(h.ALL,e,t,r),e.onCreate=L,e.onCreateUpdate=x,e.onDelete=(e,t,r)=>N(h.DELETE,e,t,r),e.onRead=(e,t,r)=>N(h.READ,e,t,r),e.onUpdate=S,e.operation=k,e.prefixMethod=(e,t,r,a)=>{const o=a||t.name;e[o]=new Proxy(e[o],{apply:async(e,t,a)=>{let o=r.call(t,...a);return o instanceof Promise&&(o=await o),o=e.call(t,...o),o instanceof Promise&&(o=await o),o}})},e.readonly=j,e.reduceErrorsToPrint=J,e.serialize=()=>t.apply(x(V),I(h.ALL,F),r.type([String,Object]),t.metadata(n.SERIALIZE,{})),e.serializeAfterAll=F,e.serializeOnCreateUpdate=V,e.sortDecorators=b,e.storeHandlerMetadata=C,e.suffixMethod=(e,t,r,a)=>{const o=a||t.name;e[o]=new Proxy(e[o],{apply:async(e,t,a)=>{let o=e.call(t,...a);return o instanceof Promise&&(o=await o),o=r.call(t,...o),o instanceof Promise&&(o=await o),o}})},e.timestamp=(a=h.CREATE_UPDATE,o=c)=>{const s=n.TIMESTAMP,i=r.Validation.updateKey(n.TIMESTAMP);return t.Decoration.for(s).define({decorator:(a,o)=>{const s=[r.date(o,l.TIMESTAMP.DATE),r.required(l.TIMESTAMP.REQUIRED),t.propMetadata(r.Validation.key(n.TIMESTAMP),{operation:a,format:o}),N(a,U)];return-1!==a.indexOf(e.OperationKeys.UPDATE)?s.push(t.propMetadata(i,{message:l.TIMESTAMP.INVALID})):s.push(j()),t.apply(...s)},args:[a,o]}).apply()},e.timestampHandler=U,e.transient=()=>t.Decoration.for(n.TRANSIENT).define(((e,r)=>{t.propMetadata(n.TRANSIENT,!0)(e.constructor),t.propMetadata(t.Metadata.key(n.TRANSIENT,r),{})(e,r)})).apply(),e.validateCompare=B,e.validateDecorator=H,e.validateDecorators=$,e.version=()=>{const a=n.VERSION;return t.Decoration.for(a).define(r.type(Number),L(Q(e.OperationKeys.CREATE)),S(Q(e.OperationKeys.UPDATE)),t.propMetadata(a,!0)).apply()},e.versionCreateUpdate=Q,e.wrapMethodWithContext=re},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/decorator-validation"),require("tslib"),require("typed-object-accumulator"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/decorator-validation","tslib","typed-object-accumulator","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["db-decorators"]={},e.decafTsDecoration,e.decafTsDecoratorValidation,e.tslib,e.typedObjectAccumulator,e.decafTsLogging);
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/operations/decorators.ts","../src/validation/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/repository/utils.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","DefaultGroupSort","priority","getHandlerArgs","dec","prop","m","props","handlers","getHandlersDecorators","model","decorators","prefix","decs","length","handlerArgs","i","data","push","groupDecorators","grouped","reduce","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","forEach","combined","map","d","sort","a","b","groupPriority","c","sortDecorators","onCreateUpdate","groupsort","on","onUpdate","onCreate","op","ON","after","AFTER","baseOp","dataToAdd","propertyKey","compoundKey","Metadata","readOperation","handlerKey","mergeData","keys","filter","handle","propMetadata","OPERATIONS","apply","storeHandlerMetadata","params","metadata","readonly","meta","description","async","Decoration","for","define","decorator","innerValidationDecorator","timestampHandler","context","timestamp","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","call","includes","validationFor","validateDecorator","newModel","oldModel","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","property","versionCreateUpdate","reduceErrorsToPrint","errors","enforceDBDecorators","repo","getDbDecorators","sortedDecorators","extraPrefix","replace","obj","isTransient","decoratorValidation","previousVersion","exclusions","isAsync","validate","resolve","resolvedErrs","segregate","validatableProperties","transientProps","transient","build","keyValue","constr","idProp","bind","pkProps","merge","extract","assign","decoration","saveOperation","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","ignoreValidation","ignoreHandlers","DefaultContextFactory","Context","accumulate","logger","Logging","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","wrapMethodWithContext","before","method","methodName","Proxy","thisArg","argArray","transformedArgs","BaseRepository","_class","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","PACKAGE_NAME","registerLibrary","operations","BLOCK","shouldRunHandlers","shouldValidate","ids","oldModels","required","afterName","beforeName","format","date","indexOf","attribute","Number"],"mappings":"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"}
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/operations/decorators.ts","../src/validation/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/repository/utils.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","owner","resolveOwner","name","resolveTargetName","handlers","selectHandlers","length","unshift","Object","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","flavour","resolveFlavour","Decoration","defaultFlavour","Metadata","flavourOf","byOperation","bucket","firstBucket","values","keys","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","DefaultGroupSort","priority","getHandlerArgs","dec","prop","m","props","getHandlersDecorators","model","decorators","prefix","decs","handlerArgs","argsEntry","data","push","groupDecorators","grouped","reduce","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","forEach","combined","map","d","i","sort","a","b","groupPriority","c","sortDecorators","onCreateUpdate","groupsort","on","onUpdate","onCreate","op","ON","after","AFTER","baseOp","dataToAdd","propertyKey","compoundKey","readOperation","handlerKey","mergeData","filter","handle","propMetadata","OPERATIONS","apply","storeHandlerMetadata","params","metadata","readonly","meta","description","async","for","define","decorator","innerValidationDecorator","timestampHandler","context","timestamp","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","call","includes","validationFor","validateDecorator","newModel","oldModel","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","property","versionCreateUpdate","reduceErrorsToPrint","errors","enforceDBDecorators","repo","getDbDecorators","sortedDecorators","extraPrefix","replace","obj","isTransient","decoratorValidation","previousVersion","exclusions","isAsync","validate","resolve","resolvedErrs","segregate","validatableProperties","transientProps","transient","build","keyValue","constr","idProp","bind","pkProps","merge","extract","assign","decoration","saveOperation","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","ignoreValidation","ignoreHandlers","DefaultContextFactory","Context","accumulate","logger","Logging","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","wrapMethodWithContext","before","method","methodName","Proxy","thisArg","argArray","transformedArgs","BaseRepository","_class","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","PACKAGE_NAME","registerLibrary","operations","BLOCK","ignoreValidate","ids","oldModels","required","afterName","beforeName","format","decorationKey","updateValidationKey","date","indexOf","attribute","Number"],"mappings":"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"}
@@ -1,2 +1,2 @@
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 l,Validation as u,Hashing as d,innerValidationDecorator as f,type as p,date as h,required as E,toConditionalPromise as g,ValidationKeys as y,Model as m,ModelErrorDefinition as A,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";import{Logging as R}from"@decaf-ts/logging";const D={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"},x="_",b="dd/MM/yyyy HH:mm:ss:S",S={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:D.TIMESTAMP,READONLY:D.READONLY};let v=class extends i{constructor(){super(S.READONLY.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t)return c(t,e)?void 0:this.getMessage(r||this.message)}};v=w([o(L.READONLY),P("design:paramtypes",[])],v);let I=class extends i{constructor(){super(S.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(L.TIMESTAMP),P("design:paramtypes",[])],I);class N extends i{constructor(t=l.DEFAULT,...e){super(t,...e)}}var k,C,j;u.updateKey=t=>L.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"})(C||(C={})),(t=>{t.CREATE_ALL="createAll",t.READ_ALL="readAll",t.UPDATE_ALL="updateAll",t.DELETE_ALL="deleteAll"})(j||(j={}));const M={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 U{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=$.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 ${constructor(){}static getHandlerName(t){return t.name?t.name:d.hash(t.toString())}static key(t){return k.REFLECT+t}static get(t,e,r){return $.registry.get(t,e,r)}static getOpRegistry(){return $.registry||($.registry=new U),$.registry}static register(t,e,r,n){$.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 H extends F{constructor(t,e=H.name,r=400){super(e,t,r)}}class V extends H{constructor(t){super(t,V.name,422)}}class _ extends F{constructor(t,e=_.name,r=500){super(e,t,r)}}class Y extends _{constructor(t){super(t,Y.name,500)}}class z extends H{constructor(t){super(t,z.name,404)}}class K extends H{constructor(t){super(t,K.name,409)}}const Q={priority:50},G=(t,e,r,n)=>{const s=r.constructor.name;if(!s)throw new _("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)),G(t,e,a,n))};function q(t,e,r){const n=[];for(const s in e){const a=e[s];for(const e of a){const{key:a}=e,o=$.get(t,s,r+a);if(!o||!o.length)throw new _(`Could not find registered handler for the operation ${r+a} under property ${s}`);const i=G(e,s,t);if(!i||Object.values(i).length!==o.length)throw new _("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 B(t){const e=t.reduce((t,e)=>{if(!e||!e.data||!e.prop)throw new _("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 J(t){return t.sort((t,e)=>(t.data[0].priority??50)-(e.data[0].priority??50)),t}function Z(t,e,r){return nt(M.CREATE_UPDATE,t,e,r)}function W(t,e,r){return nt(M.UPDATE,t,e,r)}function X(t,e,r){return nt(M.CREATE,t,e,r)}function tt(t,e,r){return nt(M.READ,t,e,r)}function et(t,e,r){return nt(M.DELETE,t,e,r)}function rt(t,e,r){return nt(M.ALL,t,e,r)}function nt(t=M.ALL,e,r,n){return dt(k.ON,t,e,r,n)}function st(t,e,r){return ut(M.CREATE_UPDATE,t,e,r)}function at(t,e,r){return ut(M.UPDATE,t,e,r)}function ot(t,e,r){return ut(M.CREATE,t,e,r)}function it(t,e,r){return ut(M.READ,t,e,r)}function ct(t,e,r){return ut(M.DELETE,t,e,r)}function lt(t,e,r){return ut(M.ALL,t,e,r)}function ut(t=M.ALL,e,r,n){return dt(k.AFTER,t,e,r,n)}function dt(n,s=M.ALL,a,o,i=Q){return(c,l)=>{const u=c.constructor.name,d=s.reduce((r,s)=>{const d=n+s;let f=t.readOperation(c.constructor,l,d);f||(f={operation:s,handlers:{}});const p=$.getHandlerName(a);let h=i;if(o){if(Object.keys(o).filter(t=>t in i).length>0)throw new _("Unable to merge groupSort into dataToAdd due to overlaping keys");h={...i,...o}}return f.handlers[u]&&f.handlers[u][l]&&p in f.handlers[u][l]||(f.handlers[u]=f.handlers[u]||{},f.handlers[u][l]=f.handlers[u][l]||{},f.handlers[u][l][p]={data:h},r.push(((t,e)=>(r,n)=>{$.register(e,t,r,n)})(d,a),e(t.key(C.OPERATIONS,l,d),f))),r},[]);return r(...d)(c,l)}}function ft(t,e){return(...r)=>n(t,{args:r,handler:e})}const pt=t=>ft(k.REFLECT+k.BLOCK,(t,e)=>t.includes(e))(t);function ht(t=S.READONLY.INVALID){const e=D.READONLY,r={message:t,description:"defines the attribute as readOnly",async:!1};return s.for(e).define({decorator:f,args:[ht,e,r]}).apply()}async function Et(t,e,r,n){n[r]=t.timestamp}function gt(t=M.CREATE_UPDATE,n=b){const a=u.updateKey(D.TIMESTAMP);return s.for(a).define({decorator:(t,n)=>{const s=[h(n,S.TIMESTAMP.DATE),E(S.TIMESTAMP.REQUIRED),e(u.key(D.TIMESTAMP),{operation:t,format:n}),nt(t,Et)];return-1!==t.indexOf(k.UPDATE)?s.push(e(a,{message:S.TIMESTAMP.INVALID})):s.push(ht()),r(...s)},args:[t,n]}).apply()}async function yt(t,e,r,n){if(n[r])try{n[r]=JSON.stringify(n[r])}catch(t){throw new Y(`Failed to serialize ${r.toString()} property of model ${n.constructor.name}: e`)}}async function mt(t,e,r,n){if(n[r]&&"string"==typeof n[r])try{n[r]=JSON.parse(n[r])}catch(t){throw new Y(`Failed to deserialize ${r.toString()} property of model ${n.constructor.name}: ${t}`)}}function At(){return r(Z(yt),ut(M.ALL,mt),p([String,Object]),n(D.SERIALIZE,{}))}function Tt(){return r(E(),ht(),(r,n)=>e(t.key(D.ID,n),{})(r,n))}function wt(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 Pt(t,e,r,n,s){const a=u.get(n.key);if(!a)throw Error("Missing validator for "+n.key);if(!a.updateHasErrors)return g(void 0,s);if(!s&&n.async)return g(void 0,s);const o=Object.values(n)||{},i=a.updateHasErrors(t[r],e[r],...o);return g(i,s)}function Ot(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=Pt(t,e,r,i,s);if(i.key===y.LIST&&(!c||s)){const n=t[r],a=e[r],o=n instanceof Set?[...n]:n,l=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=m.pk(e,!0);if(!r)return"Failed to find model id";const n=l.find(t=>r===m.pk(t,!0));return m.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 Rt(e,r,n,...s){const o=wt(r,s),i={},c={};for(const{prop:s,decorators:l}of o){const o=s+"",u=r[s],{designTypes:d,designType:f}=t.getPropDesignTypes(r.constructor,s);if(!d)continue;if(d.some(t=>[Array.name,Set.name].includes(t))){if(!l||!Object.keys(l).includes(y.LIST)){i[o]={[y.TYPE]:`Array or Set property '${o}' requires a @list decorator`};continue}if(u&&!(Array.isArray(u)||u instanceof Set)){i[o]={[y.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const p=Ot(r,e,o,l,n)||{},h=m.isPropertyModel(r,o);if(null!=u&&h){const t=u,r=(Array.isArray(f)?f:[f]).map(t=>("function"!=typeof t||t.name||(t=t()),m.get(t.name||t))).find(t=>!!t);r&&t instanceof r?c[o]=t.hasErrors(e[s]):(p[y.TYPE]=r?"Value must be an instance of "+r.name:`Unable to verify type consistency, missing model registry for ${d.toString()} on prop ${o}`,delete p[a.TYPE])}(Object.keys(p).length>0||n)&&(i[o]=p),n||Object.entries(c[o]||{}).forEach(([t,e])=>{void 0!==e&&(i[`${o}.${t}`]=e)})}if(!n)return Object.keys(i).length>0?new A(i):void 0;const l=i,u=Object.keys(l),d=Object.values(l);return Promise.allSettled(d).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=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 A(e):void 0})}function Dt(t,e,r,n,s){if(void 0===n[r])return;const a=d.hash(n[r]);s&&n[r]===a||(n[r]=a)}function xt(){return r(Z(Dt),e(D.HASH,{}))}function bt(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 _(`Property ${e} not found to compose from`);if("keys"===s)return e;if(void 0===n[e])throw new _(`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 _("Failed to compose value: "+t)}}function St(n,s=!1,a=x,o="values",i="",c="",l={priority:55}){return(u,d)=>{const f={args:n,hashResult:s,separator:a,type:o,prefix:i,suffix:c},p=[Z(bt,f,l),e(t.key(D.COMPOSED,d),f)];return s&&p.push(xt()),r(...p)(u,d)}}function Lt(t,e=x,r=!1,n="",s="",a={priority:55}){return St(t,r,e,"keys",n,s,a)}function vt(t,e=x,r=!1,n="",s="",a={priority:55}){return St(t,r,e,"values",n,s,a)}function It(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 _("Invalid operation: "+t)}}catch(t){throw new _("Failed to update version: "+t)}}}function Nt(){const t=D.VERSION;return s.for(t).define(p(Number),X(It(k.CREATE)),W(It(k.UPDATE)),e(t,!0)).apply()}function kt(){return s.for(D.TRANSIENT).define((r,n)=>{e(D.TRANSIENT,!0)(r.constructor),e(t.key(D.TRANSIENT,n),{})(r,n)}).apply()}function Ct(t){return t.reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0)}async function jt(t,e,r,n,s,a){const o=Mt(r,n,s);if(!o)return;const i=J(B(q(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 _("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 _(n)}}}function Mt(e,r,n){const s=n?.replace(/[.]$/,""),a=t.get(e.constructor,C.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)}m.prototype.isTransient=function(){return t.isTransient(this)},m.prototype.hasErrors=function(t,...e){!t||t instanceof m||(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:Rt(t,this,r,...e)):n||!t?n:Rt(t,this,r,...e)},m.prototype.segregate=function(){return m.segregate(this)},m.segregate=e=>{if(!t.isTransient(e))return{model:e};const r=t.validatableProperties(e.constructor),n=t.get(e.constructor,D.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 Y(`Failed to serialize transient property ${t}: ${e}`)}}else s.model=s.model||{},s.model[t]=e[t];return s.model=m.build(s.model,e.constructor.name),s},m.pk=((e,r=!1)=>{if(!e)throw Error("No model was provided");const n=e instanceof m?e.constructor:e,s=t.get(n,D.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 m)return e[a];throw Error("Cannot get the value of the pk from the constructor")}).bind(m),m.pkProps=(e=>t.get(e,t.key(D.ID,m.pk(e)))).bind(m),m.isTransient=(e=>t.isTransient(e)).bind(m),m.merge=((t,e,r)=>{const n=t=>Object.entries(t).reduce((t,[e,r])=>(void 0!==r&&(t[e]=r),t),{});return new(r=r||t.constructor)(Object.assign({},n(t),n(e)))}).bind(m),t.saveOperation=((e,r,n,s)=>{r&&t.set(e,t.key(C.OPERATIONS,r,n),s)}).bind(t),t.readOperation=((e,r,n)=>{if(r&&n)return t.get(e,t.key(C.OPERATIONS,r,n))}).bind(t),t.isTransient=(e=>!!t.get("function"!=typeof e?e.constructor:e,D.TRANSIENT)).bind(t);const Ut={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0,ignoreValidation:!1,ignoreHandlers:!0},$t=t=>(new Ft).accumulate(Object.assign({},t,{timestamp:new Date,logger:t.logger||R.get()}));class Ft{constructor(){this.cache=new O,Object.defineProperty(this,"cache",{value:new O,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=$t}accumulate(t){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(t),writable:!1,enumerable:!1,configurable:!0}),this}get logger(){return this.cache.logger}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 Ft.factory(Object.assign({},t.cache,e||{}))}static async from(t,e,r,...n){return Ft.factory(Object.assign({},Ut,e,{operation:t,model:r,logger:e.logger||R.get()}))}static async args(t,e,r,n,s){const a=r.pop();async function o(){return n?n.context(t,s||{},e,...r):Ft.from(t,s||{},e,...r)}let i;return a?a instanceof Ft?(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 Ht(t,e,r,n){const s=n||e.name;t[s]=new Proxy(t[s],{apply:async(t,e,n)=>{let s=r.call(e,...n);return s instanceof Promise&&(s=await s),s=t.call(e,...s),s instanceof Promise&&(s=await s),s}})}function Vt(t,e,r,n){const s=n||e.name;t[s]=new Proxy(t[s],{apply:async(t,e,n)=>{let s=t.call(e,...n);return s instanceof Promise&&(s=await s),s=r.call(e,...s),s instanceof Promise&&(s=await s),s}})}function _t(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 Ft))throw new _("Missing a context");let i=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 Yt{get class(){if(!this._class)throw new _("No class definition found for this repository");return this._class}get pk(){return m.pk(this.class)}get pkProps(){return m.pkProps(this.class)}constructor(t){t&&(this._class=t);const e=this;[this.create,this.read,this.update,this.delete].forEach(t=>{const r=t.name;_t(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 Ft.args(k.CREATE,this.class,e);return t=new this.class(t),await jt(this,r.context,t,k.CREATE,k.ON),[t,...r.args]}async createSuffix(t,e){return await jt(this,e,t,k.CREATE,k.AFTER),t}async createAllPrefix(t,...e){const r=await Ft.args(k.CREATE,this.class,e);return await Promise.all(t.map(async t=>(t=new this.class(t),await jt(this,r.context,t,k.CREATE,k.ON),t))),[t,...r.args]}async createAllSuffix(t,e){return await Promise.all(t.map(t=>jt(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 jt(this,e,t,k.READ,k.AFTER),t}async readPrefix(t,...e){const r=await Ft.args(k.READ,this.class,e),n=new this.class;return n[this.pk]=t,await jt(this,r.context,n,k.READ,k.ON),[t,...r.args]}async readAllPrefix(t,...e){const r=await Ft.args(k.READ,this.class,e);return await Promise.all(t.map(async t=>{const e=new this.class;return e[this.pk]=t,jt(this,r.context,e,k.READ,k.ON)})),[t,...r.args]}async readAllSuffix(t,e){return await Promise.all(t.map(t=>jt(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 jt(this,e,t,k.UPDATE,k.AFTER),t}async updatePrefix(t,...e){const r=await Ft.args(k.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new _("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);return await jt(this,r.context,t,k.UPDATE,k.ON,s),[t,...r.args]}async updateAllPrefix(t,...e){const r=await Ft.args(k.UPDATE,this.class,e);return await Promise.all(t.map(t=>(t=new this.class(t),jt(this,r.context,t,k.UPDATE,k.ON),t))),[t,...r.args]}async updateAllSuffix(t,e){return await Promise.all(t.map(t=>jt(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 jt(this,e,t,k.DELETE,k.AFTER),t}async deletePrefix(t,...e){const r=await Ft.args(k.DELETE,this.class,e),n=await this.read(t,...r.args);return await jt(this,r.context,n,k.DELETE,k.ON),[t,...r.args]}async deleteAllPrefix(t,...e){const r=await Ft.args(k.DELETE,this.class,e),n=await this.readAll(t,...r.args);return await Promise.all(n.map(async t=>jt(this,r.context,t,k.DELETE,k.ON))),[t,...r.args]}async deleteAllSuffix(t,e){return await Promise.all(t.map(t=>jt(this,e,t,k.DELETE,k.AFTER))),t}toString(){return this.class.name+" Repository"}}class zt extends Yt{constructor(t){super(t)}async createPrefix(t,...e){const r=await Ft.args(k.CREATE,this.class,e);if(t=new this.class(t),!1!==r.context.get("ignoreHandlers")&&await jt(this,r.context,t,k.CREATE,k.ON),!r.context.get("ignoreValidation")){const e=await Promise.resolve(t.hasErrors());if(e)throw new V(e.toString())}return[t,...r.args]}async createAllPrefix(t,...e){const r=await Ft.args(k.CREATE,this.class,e),n=!1!==r.context.get("ignoreHandlers"),s=!r.context.get("ignoreValidation");if(t=await Promise.all(t.map(async t=>{const e=new this.class(t);return n&&await jt(this,r.context,e,k.CREATE,k.ON),e})),s){const e=Ct(await Promise.all(t.map(t=>Promise.resolve(t.hasErrors()))));if(e)throw new V(e)}return[t,...r.args]}async updatePrefix(t,...e){const r=await Ft.args(k.UPDATE,this.class,e),n=!1!==r.context.get("ignoreHandlers"),s=!r.context.get("ignoreValidation"),a=t[this.pk];if(!a)throw new _("No value for the Id is defined under the property "+this.pk);const o=await this.read(a);if(t=m.merge(o,t,this.class),n&&await jt(this,r.context,t,k.UPDATE,k.ON,o),s){const e=await Promise.resolve(t.hasErrors(o));if(e)throw new V(e.toString())}return[t,...r.args]}async updateAllPrefix(t,...e){const r=await Ft.args(k.UPDATE,this.class,e),n=!1!==r.context.get("ignoreHandlers"),s=!r.context.get("ignoreValidation"),a=t.map(t=>{const e=t[this.pk];if(void 0===e)throw new _("No value for the Id is defined under the property "+this.pk);return e}),o=await this.readAll(a,...r.args);if(t=t.map((t,e)=>m.merge(o[e],t,this.class)),n&&await Promise.all(t.map((t,e)=>jt(this,r.context,t,k.UPDATE,k.ON,o[e]))),s){const e=Ct(await Promise.all(t.map((t,e)=>Promise.resolve(t.hasErrors(o[e])))));if(e)throw new V(e)}return[t,...r.args]}async readPrefix(t,...e){return super.readPrefix(t,...e)}async readAllPrefix(t,...e){return super.readAllPrefix(t,...e)}async deleteAllPrefix(t,...e){return super.deleteAllPrefix(t,...e)}}const Kt="##VERSION##",Qt="##PACKAGE##";t.registerLibrary(Qt,Kt);export{H as BadRequestError,F as BaseError,Yt as BaseRepository,pt as BlockOperations,j as BulkCrudOperationKeys,K as ConflictError,Ft as Context,D as DBKeys,M as DBOperations,S as DEFAULT_ERROR_MESSAGES,b as DEFAULT_TIMESTAMP_FORMAT,$t as DefaultContextFactory,Ut as DefaultRepositoryFlags,x as DefaultSeparator,_ as InternalError,C as ModelOperations,z as NotFoundError,k as OperationKeys,$ as Operations,U as OperationsRegistry,Qt as PACKAGE_NAME,v as ReadOnlyValidator,zt as Repository,Y as SerializationError,I as TimestampValidator,L as UpdateValidationKeys,N as UpdateValidator,Kt as VERSION,V as ValidationError,ut as after,lt as afterAny,ot as afterCreate,st as afterCreateUpdate,ct as afterDelete,it as afterRead,at as afterUpdate,vt as composed,bt as composedFromCreateUpdate,Lt as composedFromKeys,jt as enforceDBDecorators,Mt as getDbDecorators,G as getHandlerArgs,q as getHandlersDecorators,wt as getValidatableUpdateProps,B as groupDecorators,xt as hash,Dt as hashOnCreateUpdate,Tt as id,nt as on,rt as onAny,X as onCreate,Z as onCreateUpdate,et as onDelete,tt as onRead,W as onUpdate,dt as operation,Ht as prefixMethod,ht as readonly,Ct as reduceErrorsToPrint,At as serialize,mt as serializeAfterAll,yt as serializeOnCreateUpdate,J as sortDecorators,ft as storeHandlerMetadata,Vt as suffixMethod,gt as timestamp,Et as timestampHandler,kt as transient,Rt as validateCompare,Pt as validateDecorator,Ot as validateDecorators,Nt as version,It as versionCreateUpdate,_t as wrapMethodWithContext};
1
+ import{Decoration as t,Metadata as e,propMetadata as r,apply as n,metadata as s}from"@decaf-ts/decoration";import{ModelKeys as a,validator as o,Validator as i,isEqual as c,DEFAULT_ERROR_MESSAGES as l,Validation as u,Hashing as f,innerValidationDecorator as d,type as p,date as h,required as E,toConditionalPromise as g,ValidationKeys as y,Model as m,ModelErrorDefinition as A,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";import{Logging as R}from"@decaf-ts/logging";const D={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"},v="_",b="dd/MM/yyyy HH:mm:ss:S",x={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:D.TIMESTAMP,READONLY:D.READONLY};let L=class extends i{constructor(){super(x.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 N=class extends i{constructor(){super(x.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=w([o(S.TIMESTAMP),P("design:paramtypes",[])],N);class I extends i{constructor(t=l.DEFAULT,...e){super(t,...e)}}var k,C,j;u.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"})(C||(C={})),(t=>{t.CREATE_ALL="createAll",t.READ_ALL="readAll",t.UPDATE_ALL="updateAll",t.DELETE_ALL="deleteAll"})(j||(j={}));const M={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 U{constructor(){this.cache={}}get(t,e,r,n){n=n||[];const s=this.resolveOwner(t),a=this.resolveTargetName(t,s);if(a){const t=this.selectHandlers(a,e,r,s);t?.length&&n.unshift(...t)}else if("string"==typeof t||t===Object.prototype||Object.getPrototypeOf(t)===Object.prototype)return n;let o=Object.getPrototypeOf(t);return o?(o.constructor&&o.constructor.name===a&&(o=Object.getPrototypeOf(o)),o?this.get(o,e,r,n):n):n}register(t,e,r,n){const s=r.constructor.name,a=F.getHandlerName(t),o=this.resolveFlavour(r.constructor);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][o]||(this.cache[s][n][e][o]={}),this.cache[s][n][e][o][a]||(this.cache[s][n][e][o][a]=t)}resolveOwner(t){if(t&&"string"!=typeof t)return"function"==typeof t?t:t.constructor}resolveTargetName(t,e){return"string"==typeof t?t:e?.name}resolveFlavour(r){if(!r)return t.defaultFlavour;try{return e.flavourOf(r)}catch{return t.defaultFlavour}}selectHandlers(e,r,n,s){const a=this.cache[e]?.[r]?.[n];if(!a)return;const o=a[this.resolveFlavour(s)]||a[t.defaultFlavour]||this.firstBucket(a);if(!o)return;const i=Object.values(o);return i.length?i:void 0}firstBucket(t){for(const e of Object.values(t))if(e&&Object.keys(e).length)return e}}class F{constructor(){}static getHandlerName(t){return t.name?t.name:f.hash(t.toString())}static key(t){return k.REFLECT+t}static get(t,e,r){return F.registry.get(t,e,r)}static getOpRegistry(){return F.registry||(F.registry=new U),F.registry}static register(t,e,r,n){F.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 H extends ${constructor(t,e=H.name,r=400){super(e,t,r)}}class V extends H{constructor(t){super(t,V.name,422)}}class _ extends ${constructor(t,e=_.name,r=500){super(e,t,r)}}class Y extends _{constructor(t){super(t,Y.name,500)}}class z extends H{constructor(t){super(t,z.name,404)}}class K extends H{constructor(t){super(t,K.name,409)}}const B={priority:50},Q=(t,e,r,n)=>{const s=r.constructor.name;if(!s)throw new _("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))};function G(t,e,r){const n=[];for(const s in e){const a=e[s];for(const e of a){const{key:a}=e,o=F.get(t,s,r+a);if(!o||!o.length)throw new _(`Could not find registered handler for the operation ${r+a} under property ${s}`);const i=Q(e,s,t);if(!i)throw new _("Missing handler arguments for decorators");for(const t of o){const e=i[t.name];if(!e)throw new _("Missing handler arguments for handler "+t.name);const r=e.data;n.push({handler:t,data:[r],prop:[s]})}}}return n}function q(t){const e=t.reduce(((t,e)=>{if(!e||!e.data||!e.prop)throw new _("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 J(t){return t.sort(((t,e)=>(t.data[0].priority??50)-(e.data[0].priority??50))),t}function Z(t,e,r){return nt(M.CREATE_UPDATE,t,e,r)}function W(t,e,r){return nt(M.UPDATE,t,e,r)}function X(t,e,r){return nt(M.CREATE,t,e,r)}function tt(t,e,r){return nt(M.READ,t,e,r)}function et(t,e,r){return nt(M.DELETE,t,e,r)}function rt(t,e,r){return nt(M.ALL,t,e,r)}function nt(t=M.ALL,e,r,n){return ft(k.ON,t,e,r,n)}function st(t,e,r){return ut(M.CREATE_UPDATE,t,e,r)}function at(t,e,r){return ut(M.UPDATE,t,e,r)}function ot(t,e,r){return ut(M.CREATE,t,e,r)}function it(t,e,r){return ut(M.READ,t,e,r)}function ct(t,e,r){return ut(M.DELETE,t,e,r)}function lt(t,e,r){return ut(M.ALL,t,e,r)}function ut(t=M.ALL,e,r,n){return ft(k.AFTER,t,e,r,n)}function ft(t,s=M.ALL,a,o,i=B){return(c,l)=>{const u=c.constructor.name,f=s.reduce(((n,s)=>{const f=t+s;let d=e.readOperation(c.constructor,l,f);d||(d={operation:s,handlers:{}});const p=F.getHandlerName(a);let h=i;if(o){if(Object.keys(o).filter((t=>t in i)).length>0)throw new _("Unable to merge groupSort into dataToAdd due to overlaping keys");h={...i,...o}}return d.handlers[u]&&d.handlers[u][l]&&p in d.handlers[u][l]||(d.handlers[u]=d.handlers[u]||{},d.handlers[u][l]=d.handlers[u][l]||{},d.handlers[u][l][p]={data:h},n.push(((t,e)=>(r,n)=>{F.register(e,t,r,n)})(f,a),r(e.key(C.OPERATIONS,l,f),d))),n}),[]);return n(...f)(c,l)}}function dt(t,e){return(...r)=>s(t,{args:r,handler:e})}const pt=t=>dt(k.REFLECT+k.BLOCK,((t,e)=>t.includes(e)))(t);function ht(e=x.READONLY.INVALID){const r=D.READONLY,n={message:e,description:"defines the attribute as readOnly",async:!1};return t.for(r).define({decorator:d,args:[ht,r,n]}).apply()}async function Et(t,e,r,n){n[r]=t.timestamp}function gt(e=M.CREATE_UPDATE,s=b){const a=D.TIMESTAMP,o=u.updateKey(D.TIMESTAMP);return t.for(a).define({decorator:(t,e)=>{const s=[h(e,x.TIMESTAMP.DATE),E(x.TIMESTAMP.REQUIRED),r(u.key(D.TIMESTAMP),{operation:t,format:e}),nt(t,Et)];return-1!==t.indexOf(k.UPDATE)?s.push(r(o,{message:x.TIMESTAMP.INVALID})):s.push(ht()),n(...s)},args:[e,s]}).apply()}async function yt(t,e,r,n){if(n[r])try{n[r]=JSON.stringify(n[r])}catch(t){throw new Y(`Failed to serialize ${r.toString()} property of model ${n.constructor.name}: e`)}}async function mt(t,e,r,n){if(n[r]&&"string"==typeof n[r])try{n[r]=JSON.parse(n[r])}catch(t){throw new Y(`Failed to deserialize ${r.toString()} property of model ${n.constructor.name}: ${t}`)}}function At(){return n(Z(yt),ut(M.ALL,mt),p([String,Object]),s(D.SERIALIZE,{}))}function Tt(){return n(E(),ht(),((t,n)=>r(e.key(D.ID,n),{})(t,n)))}function wt(t,r){const n=[];for(const s in t){if(!Object.prototype.hasOwnProperty.call(t,s)||r.includes(s))continue;const a=e.validationFor(t.constructor,s)||{};n.push({prop:s,decorators:a})}return n}function Pt(t,e,r,n,s){const a=u.get(n.key);if(!a)throw Error("Missing validator for "+n.key);if(!a.updateHasErrors)return g(void 0,s);if(!s&&n.async)return g(void 0,s);const o=Object.values(n)||{},i=a.updateHasErrors(t[r],e[r],...o);return g(i,s)}function Ot(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=Pt(t,e,r,i,s);if(i.key===y.LIST&&(!c||s)){const n=t[r],a=e[r],o=n instanceof Set?[...n]:n,l=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=m.pk(e,!0);if(!r)return"Failed to find model id";const n=l.find((t=>r===m.pk(t,!0)));return m.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 Rt(t,r,n,...s){const o=wt(r,s),i={},c={};for(const{prop:s,decorators:l}of o){const o=s+"",u=r[s],{designTypes:f,designType:d}=e.getPropDesignTypes(r.constructor,s);if(!f)continue;if(f.some((t=>[Array.name,Set.name].includes(t)))){if(!l||!Object.keys(l).includes(y.LIST)){i[o]={[y.TYPE]:`Array or Set property '${o}' requires a @list decorator`};continue}if(u&&!(Array.isArray(u)||u instanceof Set)){i[o]={[y.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const p=Ot(r,t,o,l,n)||{},h=m.isPropertyModel(r,o);if(null!=u&&h){const e=u,r=(Array.isArray(d)?d:[d]).map((t=>("function"!=typeof t||t.name||(t=t()),m.get(t.name||t)))).find((t=>!!t));r&&e instanceof r?c[o]=e.hasErrors(t[s]):(p[y.TYPE]=r?"Value must be an instance of "+r.name:`Unable to verify type consistency, missing model registry for ${f.toString()} on prop ${o}`,delete p[a.TYPE])}(Object.keys(p).length>0||n)&&(i[o]=p),n||Object.entries(c[o]||{}).forEach((([t,e])=>{void 0!==e&&(i[`${o}.${t}`]=e)}))}if(!n)return Object.keys(i).length>0?new A(i):void 0;const l=i,u=Object.keys(l),f=Object.values(l);return Promise.allSettled(f).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=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 A(e):void 0}))}function Dt(t,e,r,n,s){if(void 0===n[r])return;const a=f.hash(n[r]);s&&n[r]===a||(n[r]=a)}function vt(){return n(Z(Dt),r(D.HASH,{}))}function bt(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 _(`Property ${e} not found to compose from`);if("keys"===s)return e;if(void 0===n[e])throw new _(`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 _("Failed to compose value: "+t)}}function xt(t,s=!1,a=v,o="values",i="",c="",l={priority:55}){return(u,f)=>{const d={args:t,hashResult:s,separator:a,type:o,prefix:i,suffix:c},p=[Z(bt,d,l),r(e.key(D.COMPOSED,f),d)];return s&&p.push(vt()),n(...p)(u,f)}}function St(t,e=v,r=!1,n="",s="",a={priority:55}){return xt(t,r,e,"keys",n,s,a)}function Lt(t,e=v,r=!1,n="",s="",a={priority:55}){return xt(t,r,e,"values",n,s,a)}function Nt(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 _("Invalid operation: "+t)}}catch(t){throw new _("Failed to update version: "+t)}}}function It(){const e=D.VERSION;return t.for(e).define(p(Number),X(Nt(k.CREATE)),W(Nt(k.UPDATE)),r(e,!0)).apply()}function kt(){return t.for(D.TRANSIENT).define(((t,n)=>{r(D.TRANSIENT,!0)(t.constructor),r(e.key(D.TRANSIENT,n),{})(t,n)})).apply()}function Ct(t){return t.reduce(((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t)),void 0)}async function jt(t,e,r,n,s,a){const o=Mt(r,n,s);if(!o)return;const i=J(q(G(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 _("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 _(n)}}}function Mt(t,r,n){const s=n?.replace(/[.]$/,""),a=e.get(t.constructor,C.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)}m.prototype.isTransient=function(){return e.isTransient(this)},m.prototype.hasErrors=function(t,...e){!t||t instanceof m||(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:Rt(t,this,r,...e))):n||!t?n:Rt(t,this,r,...e)},m.prototype.segregate=function(){return m.segregate(this)},m.segregate=t=>{if(!e.isTransient(t))return{model:t};const r=e.validatableProperties(t.constructor),n=e.get(t.constructor,D.TRANSIENT),s={model:{},transient:{}};for(const e of r)if(Object.keys(n).includes(e)){s.transient=s.transient||{};try{s.transient[e]=t[e]}catch(t){throw new Y(`Failed to serialize transient property ${e}: ${t}`)}}else s.model=s.model||{},s.model[e]=t[e];return s.model=m.build(s.model,t.constructor.name),s},m.pk=((t,r=!1)=>{if(!t)throw Error("No model was provided");const n=t instanceof m?t.constructor:t,s=e.get(n,D.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(t instanceof m)return t[a];throw Error("Cannot get the value of the pk from the constructor")}).bind(m),m.pkProps=(t=>e.get(t,e.key(D.ID,m.pk(t)))).bind(m),m.isTransient=(t=>e.isTransient(t)).bind(m),m.merge=((t,e,r)=>{const n=t=>Object.entries(t).reduce(((t,[e,r])=>(void 0!==r&&(t[e]=r),t)),{});return new(r=r||t.constructor)(Object.assign({},n(t),n(e)))}).bind(m),e.saveOperation=((t,r,n,s)=>{r&&e.set(t,e.key(C.OPERATIONS,r,n),s)}).bind(e),e.readOperation=((t,r,n)=>{if(r&&n)return e.get(t,e.key(C.OPERATIONS,r,n))}).bind(e),e.isTransient=(t=>!!e.get("function"!=typeof t?t.constructor:t,D.TRANSIENT)).bind(e);const Ut={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0,ignoreValidation:!1,ignoreHandlers:!1},Ft=t=>(new $t).accumulate(Object.assign({},t,{timestamp:new Date,logger:t.logger||R.get()}));class $t{constructor(){this.cache=new O,Object.defineProperty(this,"cache",{value:new O,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=Ft}accumulate(t){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(t),writable:!1,enumerable:!1,configurable:!0}),this}get logger(){return this.cache.logger}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({},Ut,e,{operation:t,model:r,logger:e.logger||R.get()}))}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 Ht(t,e,r,n){const s=n||e.name;t[s]=new Proxy(t[s],{apply:async(t,e,n)=>{let s=r.call(e,...n);return s instanceof Promise&&(s=await s),s=t.call(e,...s),s instanceof Promise&&(s=await s),s}})}function Vt(t,e,r,n){const s=n||e.name;t[s]=new Proxy(t[s],{apply:async(t,e,n)=>{let s=t.call(e,...n);return s instanceof Promise&&(s=await s),s=r.call(e,...s),s instanceof Promise&&(s=await s),s}})}function _t(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 _("Missing a context");let i=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 Yt{get class(){if(!this._class)throw new _("No class definition found for this repository");return this._class}get pk(){return m.pk(this.class)}get pkProps(){return m.pkProps(this.class)}constructor(t){t&&(this._class=t);const e=this;[this.create,this.read,this.update,this.delete].forEach((t=>{const r=t.name;_t(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 jt(this,r.context,t,k.CREATE,k.ON),[t,...r.args]}async createSuffix(t,e){return await jt(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 jt(this,r.context,t,k.CREATE,k.ON),t)))),[t,...r.args]}async createAllSuffix(t,e){return await Promise.all(t.map((t=>jt(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 jt(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 jt(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,jt(this,r.context,e,k.READ,k.ON)}))),[t,...r.args]}async readAllSuffix(t,e){return await Promise.all(t.map((t=>jt(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 jt(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 _("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);return await jt(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),jt(this,r.context,t,k.UPDATE,k.ON),t)))),[t,...r.args]}async updateAllSuffix(t,e){return await Promise.all(t.map((t=>jt(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 jt(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 jt(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=>jt(this,r.context,t,k.DELETE,k.ON)))),[t,...r.args]}async deleteAllSuffix(t,e){return await Promise.all(t.map((t=>jt(this,e,t,k.DELETE,k.AFTER)))),t}toString(){return this.class.name+" Repository"}}class zt extends Yt{constructor(t){super(t)}async createPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);if(t=new this.class(t),r.context.get("ignoreHandlers")||await jt(this,r.context,t,k.CREATE,k.ON),!r.context.get("ignoreValidation")){const e=await Promise.resolve(t.hasErrors());if(e)throw new V(e.toString())}return[t,...r.args]}async createAllPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e),n=r.context.get("ignoreHandlers"),s=r.context.get("ignoreValidation");if(t=await Promise.all(t.map((async t=>{const e=new this.class(t);return n||await jt(this,r.context,e,k.CREATE,k.ON),e}))),!s){const e=Ct(await Promise.all(t.map((t=>Promise.resolve(t.hasErrors())))));if(e)throw new V(e)}return[t,...r.args]}async updatePrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=r.context.get("ignoreHandlers"),s=r.context.get("ignoreValidation"),a=t[this.pk];if(!a)throw new _("No value for the Id is defined under the property "+this.pk);const o=await this.read(a);if(t=m.merge(o,t,this.class),n||await jt(this,r.context,t,k.UPDATE,k.ON,o),!s){const e=await Promise.resolve(t.hasErrors(o));if(e)throw new V(e.toString())}return[t,...r.args]}async updateAllPrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=r.context.get("ignoreHandlers"),s=r.context.get("ignoreValidation"),a=t.map((t=>{const e=t[this.pk];if(void 0===e)throw new _("No value for the Id is defined under the property "+this.pk);return e})),o=await this.readAll(a,...r.args);if(t=t.map(((t,e)=>m.merge(o[e],t,this.class))),n||await Promise.all(t.map(((t,e)=>jt(this,r.context,t,k.UPDATE,k.ON,o[e])))),!s){const e=Ct(await Promise.all(t.map(((t,e)=>Promise.resolve(t.hasErrors(o[e]))))));if(e)throw new V(e)}return[t,...r.args]}async readPrefix(t,...e){return super.readPrefix(t,...e)}async readAllPrefix(t,...e){return super.readAllPrefix(t,...e)}async deleteAllPrefix(t,...e){return super.deleteAllPrefix(t,...e)}}const Kt="##VERSION##",Bt="##PACKAGE##";e.registerLibrary(Bt,Kt);export{H as BadRequestError,$ as BaseError,Yt as BaseRepository,pt as BlockOperations,j as BulkCrudOperationKeys,K as ConflictError,$t as Context,D as DBKeys,M as DBOperations,x as DEFAULT_ERROR_MESSAGES,b as DEFAULT_TIMESTAMP_FORMAT,Ft as DefaultContextFactory,Ut as DefaultRepositoryFlags,v as DefaultSeparator,_ as InternalError,C as ModelOperations,z as NotFoundError,k as OperationKeys,F as Operations,U as OperationsRegistry,Bt as PACKAGE_NAME,L as ReadOnlyValidator,zt as Repository,Y as SerializationError,N as TimestampValidator,S as UpdateValidationKeys,I as UpdateValidator,Kt as VERSION,V as ValidationError,ut as after,lt as afterAny,ot as afterCreate,st as afterCreateUpdate,ct as afterDelete,it as afterRead,at as afterUpdate,Lt as composed,bt as composedFromCreateUpdate,St as composedFromKeys,jt as enforceDBDecorators,Mt as getDbDecorators,Q as getHandlerArgs,G as getHandlersDecorators,wt as getValidatableUpdateProps,q as groupDecorators,vt as hash,Dt as hashOnCreateUpdate,Tt as id,nt as on,rt as onAny,X as onCreate,Z as onCreateUpdate,et as onDelete,tt as onRead,W as onUpdate,ft as operation,Ht as prefixMethod,ht as readonly,Ct as reduceErrorsToPrint,At as serialize,mt as serializeAfterAll,yt as serializeOnCreateUpdate,J as sortDecorators,dt as storeHandlerMetadata,Vt as suffixMethod,gt as timestamp,Et as timestampHandler,kt as transient,Rt as validateCompare,Pt as validateDecorator,Ot as validateDecorators,It as version,Nt as versionCreateUpdate,_t as wrapMethodWithContext};
2
2
  //# sourceMappingURL=db-decorators.js.map