@decaf-ts/db-decorators 0.7.1 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,a,r,o){"use strict";const s={REFLECT:a.ModelKeys.MODEL+".persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},n="_",i="dd/MM/yyyy HH:mm:ss:S",c={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},l={REFLECT:"db.update.validation.",TIMESTAMP:s.TIMESTAMP,READONLY:s.READONLY};e.ReadOnlyValidator=class extends a.Validator{constructor(){super(c.READONLY.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,r){if(void 0!==e)return a.isEqual(e,t)?void 0:this.getMessage(r||this.message)}},e.ReadOnlyValidator=r.__decorate([a.validator(l.READONLY),r.__metadata("design:paramtypes",[])],e.ReadOnlyValidator),e.TimestampValidator=class extends a.Validator{constructor(){super(c.TIMESTAMP.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,a){if(void 0!==e){a=a||this.getMessage(a||this.message);try{e=new Date(e),t=new Date(t)}catch(e){return a}return e>t?void 0:a}}},e.TimestampValidator=r.__decorate([a.validator(l.TIMESTAMP),r.__metadata("design:paramtypes",[])],e.TimestampValidator);class d extends a.Validator{constructor(e=a.DEFAULT_ERROR_MESSAGES.DEFAULT,...t){super(e,...t)}}var p,u,y;a.Validation.updateKey=e=>l.REFLECT+e,e.OperationKeys=void 0,(p=e.OperationKeys||(e.OperationKeys={})).REFLECT="decaf.model.db.operations.",p.CREATE="create",p.READ="read",p.UPDATE="update",p.DELETE="delete",p.ON="on.",p.AFTER="after.",p.BLOCK="block",e.ModelOperations=void 0,(u=e.ModelOperations||(e.ModelOperations={})).OPERATIONS="operations",u.RELATIONS="relations",e.BulkCrudOperationKeys=void 0,(y=e.BulkCrudOperationKeys||(e.BulkCrudOperationKeys={})).CREATE_ALL="createAll",y.READ_ALL="readAll",y.UPDATE_ALL="updateAll",y.DELETE_ALL="deleteAll";const h={CREATE:[e.OperationKeys.CREATE],READ:[e.OperationKeys.READ],UPDATE:[e.OperationKeys.UPDATE],DELETE:[e.OperationKeys.DELETE],CREATE_UPDATE:[e.OperationKeys.CREATE,e.OperationKeys.UPDATE],READ_CREATE:[e.OperationKeys.READ,e.OperationKeys.CREATE],ALL:[e.OperationKeys.CREATE,e.OperationKeys.READ,e.OperationKeys.UPDATE,e.OperationKeys.DELETE]};class f{constructor(){this.cache={}}get(e,t,a,r){let o;r=r||[];try{o="string"==typeof e?e:e.constructor.name,r.unshift(...Object.values(this.cache[o][t][a]||[]))}catch(t){if("string"==typeof e||e===Object.prototype||Object.getPrototypeOf(e)===Object.prototype)return r}let s=Object.getPrototypeOf(e);return s.constructor.name===o&&(s=Object.getPrototypeOf(s)),this.get(s,t,a,r)}register(e,t,a,r){const o=a.constructor.name,s=E.getHandlerName(e);this.cache[o]||(this.cache[o]={}),this.cache[o][r]||(this.cache[o][r]={}),this.cache[o][r][t]||(this.cache[o][r][t]={}),this.cache[o][r][t][s]||(this.cache[o][r][t][s]=e)}}class E{constructor(){}static getHandlerName(e){return e.name?e.name:a.Hashing.hash(e.toString())}static key(t){return e.OperationKeys.REFLECT+t}static get(e,t,a){return E.registry.get(e,t,a)}static getOpRegistry(){return E.registry||(E.registry=new f),E.registry}static register(e,t,a,r){E.getOpRegistry().register(e,t,a,r)}}class O extends Error{constructor(e,t,a){if(t instanceof O)return t;super(`[${e}] ${t instanceof Error?t.message:t}`),this.code=a,t instanceof Error&&(this.stack=t.stack)}}class m extends O{constructor(e,t=m.name,a=400){super(t,e,a)}}class A extends m{constructor(e){super(e,A.name,422)}}class g extends O{constructor(e,t=g.name,a=500){super(t,e,a)}}class T extends g{constructor(e){super(e,T.name,500)}}class w extends m{constructor(e){super(e,w.name,404)}}class P extends m{constructor(e){super(e,P.name,409)}}const D=(e,t,a,r)=>{const o=a.constructor.name;if(!o)throw new g("Could not determine model class");r=r||{},e.props.handlers[o]&&e.props.handlers[o][t]&&(r={...e.props.handlers[o][t],...r});let s=Object.getPrototypeOf(a);return s===Object.prototype?r:(s.constructor.name===o&&(s=Object.getPrototypeOf(s)),D(e,t,s,r))};async function M(t,a,r,o,s,n){const i=R(r,o,s);if(!i)return;const c=L(S(v(r,i,s)));for(const i of c){const c=[a,i.data.length>1?i.data:i.data[0],i.prop.length>1?i.prop:i.prop[0],r];if(o===e.OperationKeys.UPDATE&&s===e.OperationKeys.ON){if(!n)throw new g("Missing old model for update operation");c.push(n)}try{await i.handler.apply(t,c)}catch(e){const t=`Failed to execute handler ${i.handler.name} for ${i.prop} on ${r.constructor.name} due to error: ${e}`;if(a.get("breakOnHandlerError"))throw new g(t)}}}function R(a,r,o){const s=o?.replace(/[.]$/,""),n=t.Metadata.get(a.constructor,e.ModelOperations.OPERATIONS);if(n)return Object.keys(n).reduce((e,t)=>{const a=s?n[t][s]||{}:n[t],o=Object.keys(a).filter(e=>e===r),i=[];for(const e of o)i.push({key:e,props:a[e]});return i&&i.length&&(e||(e={}),e[t]=i),e},void 0)}const K=50,b={priority:K};function v(e,t,a){const r=[];for(const o in t){const s=t[o];for(const t of s){const{key:s}=t,n=E.get(e,o,a+s);if(!n||!n.length)throw new g(`Could not find registered handler for the operation ${a+s} under property ${o}`);const i=D(t,o,e);if(!i||Object.values(i).length!==n.length)throw new g("Args and handlers length do not match");for(let e=0;e<n.length;e++){const t=i[n[e].name].data;r.push({handler:n[e],data:[t],prop:[o]})}}}return r}function S(e){const t=e.reduce((e,t)=>{if(!t||!t.data||!t.prop)throw new g("Missing decorator properties or data");if(!t.data[0].group)return e.set(Symbol(),t),e;const a=t.data[0].group;if(e.has(a)){const r=e.get(a);e.set(a,{handler:r.handler,data:[...r.data,...t.data],prop:[...r.prop,...t.prop]})}else e.set(a,{...t});return e},new Map),a=Array.from(t.values());return a.forEach(e=>{const t=e.data.map((t,a)=>({data:t,prop:e.prop[a]}));t.sort((e,t)=>(e.data.groupPriority??50)-(t.data.groupPriority??50)),e.data=t.map(e=>e.data),e.prop=t.map(e=>e.prop)}),a}function L(e){return e.sort((e,t)=>(e.data[0].priority??K)-(t.data[0].priority??K)),e}function I(e,t,a){return k(h.CREATE_UPDATE,e,t,a)}function N(e,t,a){return k(h.UPDATE,e,t,a)}function x(e,t,a){return k(h.CREATE,e,t,a)}function k(t=h.ALL,a,r,o){return j(e.OperationKeys.ON,t,a,r,o)}function C(t=h.ALL,a,r,o){return j(e.OperationKeys.AFTER,t,a,r,o)}function j(a,r=h.ALL,o,s,n=b){return(i,c)=>{const l=i.constructor.name,d=r.reduce((r,d)=>{const p=a+d;let u=t.Metadata.readOperation(i.constructor,c,p);u||(u={operation:d,handlers:{}});const y=E.getHandlerName(o);let h=n;if(s){if(Object.keys(s).filter(e=>e in n).length>0)throw new g("Unable to merge groupSort into dataToAdd due to overlaping keys");h={...n,...s}}return u.handlers[l]&&u.handlers[l][c]&&y in u.handlers[l][c]||(u.handlers[l]=u.handlers[l]||{},u.handlers[l][c]=u.handlers[l][c]||{},u.handlers[l][c][y]={data:h},r.push(((e,t)=>(a,r)=>{E.register(t,e,a,r)})(p,o),t.propMetadata(t.Metadata.key(e.ModelOperations.OPERATIONS,c,p),u))),r},[]);return t.apply(...d)(i,c)}}function U(e,a){return(...r)=>t.metadata(e,{args:r,handler:a})}function V(e=c.READONLY.INVALID){const r=s.READONLY,o={message:e,description:"defines the attribute as readOnly",async:!1};return t.Decoration.for(r).define({decorator:a.innerValidationDecorator,args:[V,r,o]}).apply()}async function _(e,t,a,r){r[a]=e.timestamp}async function F(e,t,a,r){if(r[a])try{r[a]=JSON.stringify(r[a])}catch(e){throw new T(`Failed to serialize ${a.toString()} property of model ${r.constructor.name}: e`)}}async function $(e,t,a,r){if(r[a]&&"string"==typeof r[a])try{r[a]=JSON.parse(r[a])}catch(e){throw new T(`Failed to deserialize ${a.toString()} property of model ${r.constructor.name}: ${e}`)}}function H(e,a){const r=[];for(const o in e){if(!Object.prototype.hasOwnProperty.call(e,o)||a.includes(o))continue;const s=t.Metadata.validationFor(e.constructor,o)||{};r.push({prop:o,decorators:s})}return r}function Y(e,t,r,o,s){const n=a.Validation.get(o.key);if(!n)throw Error("Missing validator for "+o.key);if(!n.updateHasErrors)return a.toConditionalPromise(void 0,s);if(!s&&o.async)return a.toConditionalPromise(void 0,s);const i=Object.values(o)||{},c=n.updateHasErrors(e[r],t[r],...i);return a.toConditionalPromise(c,s)}function B(e,t,r,o,s){const n={};for(const i in o){const c={...o[i],key:i};if(!s&&c.async)continue;let l=Y(e,t,r,c,s);if(c.key===a.ValidationKeys.LIST&&(!l||s)){const o=e[r],n=t[r],i=o instanceof Set?[...o]:o,d=n instanceof Set?[...n]:n;if(i?.length){const e=[c.class||c.clazz||c.customTypes].flat().map(e=>((e=(e="function"!=typeof e||e.name?e:e()).name?e.name:e)+"").toLowerCase()),t=i.map(t=>{const r=a.Model.pk(t,!0);if(!r)return"Failed to find model id";const o=d.find(e=>r===a.Model.pk(e,!0));return a.Model.isModel(t)?t.hasErrors(o):e.includes(typeof t)?void 0:"Value has no validatable type"});if(s)l=Promise.all(t).then(e=>e.every(e=>!e)?void 0:e);else{const e=t.every(e=>!e);l=t.length>0&&!e?t:void 0}}}l&&(n[c.key]=l)}if(!s)return Object.keys(n).length>0?n:void 0;const i=Object.keys(n),c=Object.values(n);return Promise.all(c).then(e=>{const t={};for(let a=0;a<e.length;a++){const r=e[a];void 0!==r&&(t[i[a]]=r)}return Object.keys(t).length>0?t:void 0})}function q(e,r,o,...s){const n=H(r,s),i={},c={};for(const{prop:s,decorators:l}of n){const n=s+"",d=r[s],{designTypes:p,designType:u}=t.Metadata.getPropDesignTypes(r.constructor,s);if(!p)continue;if(p.some(e=>[Array.name,Set.name].includes(e))){if(!l||!Object.keys(l).includes(a.ValidationKeys.LIST)){i[n]={[a.ValidationKeys.TYPE]:`Array or Set property '${n}' requires a @list decorator`};continue}if(d&&!(Array.isArray(d)||d instanceof Set)){i[n]={[a.ValidationKeys.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const y=B(r,e,n,l,o)||{},h=a.Model.isPropertyModel(r,n);if(null!=d&&h){const t=d,r=(Array.isArray(u)?u:[u]).map(e=>("function"!=typeof e||e.name||(e=e()),a.Model.get(e.name||e))).find(e=>!!e);r&&t instanceof r?c[n]=t.hasErrors(e[s]):(y[a.ValidationKeys.TYPE]=r?"Value must be an instance of "+r.name:`Unable to verify type consistency, missing model registry for ${p.toString()} on prop ${n}`,delete y[a.ModelKeys.TYPE])}(Object.keys(y).length>0||o)&&(i[n]=y),o||Object.entries(c[n]||{}).forEach(([e,t])=>{void 0!==t&&(i[`${n}.${e}`]=t)})}if(!o)return Object.keys(i).length>0?new a.ModelErrorDefinition(i):void 0;const l=i,d=Object.keys(l),p=Object.values(l);return Promise.allSettled(p).then(async e=>{const t={};for(const[e,a]of Object.entries(c)){const r=await a;r&&Object.entries(r).forEach(([a,r])=>{void 0!==r&&(t[[e,a].join(".")]=r)})}for(let a=0;a<e.length;a++){const r=d[a],o=e[a];"fulfilled"===o.status&&void 0!==o.value?t[r]=o.value:"rejected"===o.status&&(t[r]=o.reason instanceof Error?o.reason.message:(o.reason||"Validation failed")+"")}return Object.keys(t).length>0?new a.ModelErrorDefinition(t):void 0})}function z(e,t,r,o,s){if(void 0===o[r])return;const n=a.Hashing.hash(o[r]);s&&o[r]===n||(o[r]=n)}function G(){return t.apply(I(z),t.propMetadata(s.HASH,{}))}function Q(e,t,a,r){try{const{args:e,type:o,prefix:s,suffix:n,separator:i}=t,c=e.map(t=>{if(!(t in r))throw new g(`Property ${t} not found to compose from`);if("keys"===o)return t;if(void 0===r[t])throw new g(`Property ${e} does not contain a value to compose from`);return r[t].toString()});s&&c.unshift(s),n&&c.push(n),r[a]=c.join(i)}catch(e){throw new g("Failed to compose value: "+e)}}function J(e,a=!1,r=n,o="values",i="",c="",l={priority:55}){const d={args:e,hashResult:a,separator:r,type:o,prefix:i,suffix:c},p=[I(Q,d,l),t.propMetadata(s.COMPOSED,d)];return a&&p.push(G()),t.apply(...p)}function W(t){return(a,r,o,s)=>{try{switch(t){case e.OperationKeys.CREATE:s[o]=1;break;case e.OperationKeys.UPDATE:s[o]++;break;default:throw new g("Invalid operation: "+t)}}catch(e){throw new g("Failed to update version: "+e)}}}a.Model.prototype.isTransient=function(){return t.Metadata.isTransient(this)},a.Model.prototype.hasErrors=function(e,...t){!e||e instanceof a.Model||(t.unshift(e),e=void 0);const r=this.isAsync(),o=a.validate(this,r,...t);return r?Promise.resolve(o).then(a=>a||!e?a:q(e,this,r,...t)):o||!e?o:q(e,this,r,...t)},a.Model.prototype.toTransient=function(){return a.Model.toTransient(this)},a.Model.toTransient=e=>{if(!t.Metadata.isTransient(e))return{model:e};const r=t.Metadata.validatableProperties(e.constructor),o=t.Metadata.get(e.constructor,s.TRANSIENT),n={model:{},transient:{}};for(const t of r)if(Object.keys(o).includes(t)){n.transient=n.transient||{};try{n.transient[t]=e[t]}catch(e){throw new T(`Failed to serialize transient property ${t}: ${e}`)}}else n.model=n.model||{},n.model[t]=e[t];return n.model=a.Model.build(n.model,e.constructor.name),n},a.Model.pk=((e,r=!1)=>{if(!e)throw Error("No model was provided");const o=e instanceof a.Model?e.constructor:e,n=t.Metadata.get(o,s.ID);if(!n)throw Error("No Id property defined for model "+(o?.name||"Unknown Model"));const i=Object.keys(n)[0];if(!r)return i;if(e instanceof a.Model)return e[i];throw Error("Cannot get the value of the pk from the constructor")}).bind(a.Model),a.Model.isTransient=(e=>t.Metadata.isTransient(e)).bind(a.Model),t.Metadata.saveOperation=((a,r,o,s)=>{r&&t.Metadata.set(a,t.Metadata.key(e.ModelOperations.OPERATIONS,r,o),s)}).bind(t.Metadata),t.Metadata.readOperation=((a,r,o)=>{if(r&&o)return t.Metadata.get(a,t.Metadata.key(e.ModelOperations.OPERATIONS,r,o))}).bind(t.Metadata),t.Metadata.isTransient=(e=>!!t.Metadata.get("function"!=typeof e?e.constructor:e,s.TRANSIENT)).bind(t.Metadata);const Z={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},X=e=>(new ee).accumulate(Object.assign({},e,{timestamp:new Date}));class ee{constructor(){this.cache=new o.ObjectAccumulator,Object.defineProperty(this,"cache",{value:new o.ObjectAccumulator,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=X}accumulate(e){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(e),writable:!1,enumerable:!1,configurable:!0}),this}get timestamp(){return this.cache.timestamp}get(e){try{return this.cache.get(e)}catch(t){const a=this.cache.parentContext;if(a)return a.get(e);throw t}}static childFrom(e,t){return ee.factory(Object.assign({},e.cache,t||{}))}static async from(e,t,a,...r){return ee.factory(Object.assign({},Z,t,{operation:e,model:a}))}static async args(e,t,a,r,o){const s=a.pop();async function n(){return r?r.context(e,o||{},t,...a):ee.from(e,o||{},t,...a)}let i;return s?s instanceof ee?(i=s,a.push(s)):(a.push(s),i=await n(),a.push(i)):(i=await n(),a.push(i)),{context:i,args:a}}}function te(e,t,a,r,o){const s=o||a.name;e[s]=new Proxy(e[s],{apply:async(e,a,o)=>{let s=t.call(a,...o);s instanceof Promise&&(s=await s);const n=s[s.length-1];if(!(n instanceof ee))throw new g("Missing a context");let i=await e.call(a,...s);return i instanceof Promise&&(i=await i),i=r.call(a,i,n),i instanceof Promise&&(i=await i),i}})}class ae{get class(){if(!this._class)throw new g("No class definition found for this repository");return this._class}get pk(){return this._pk||(this._pk=a.Model.pk(this.class),this._pkProps=t.Metadata.get(this.class,t.Metadata.key(s.ID,this._pk))),this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(e){e&&(this._class=e);const t=this;[this.create,this.read,this.update,this.delete].forEach(e=>{const a=e.name;te(t,t[a+"Prefix"],e,t[a+"Suffix"])})}async createAll(e,...t){return Promise.all(e.map(e=>this.create(e,...t)))}async createPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);return t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),[t,...r.args]}async createSuffix(t,a){return await M(this,a,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER),t}async createAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);return await Promise.all(t.map(async t=>(t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t))),[t,...r.args]}async createAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER))),t}async readAll(e,...t){return await Promise.all(e.map(e=>this.read(e,...t)))}async readSuffix(t,a){return await M(this,a,t,e.OperationKeys.READ,e.OperationKeys.AFTER),t}async readPrefix(t,...a){const r=await ee.args(e.OperationKeys.READ,this.class,a),o=new this.class;return o[this.pk]=t,await M(this,r.context,o,e.OperationKeys.READ,e.OperationKeys.ON),[t,...r.args]}async readAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.READ,this.class,a);return await Promise.all(t.map(async t=>{const a=new this.class;return a[this.pk]=t,M(this,r.context,a,e.OperationKeys.READ,e.OperationKeys.ON)})),[t,...r.args]}async readAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.READ,e.OperationKeys.AFTER))),t}async updateAll(e,...t){return Promise.all(e.map(e=>this.update(e,...t)))}async updateSuffix(t,a){return await M(this,a,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER),t}async updatePrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a),o=t[this.pk];if(!o)throw new g("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);return await M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s),[t,...r.args]}async updateAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a);return await Promise.all(t.map(t=>(t=new this.class(t),M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON),t))),[t,...r.args]}async updateAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER))),t}async deleteAll(e,...t){return Promise.all(e.map(e=>this.delete(e,...t)))}async deleteSuffix(t,a){return await M(this,a,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER),t}async deletePrefix(t,...a){const r=await ee.args(e.OperationKeys.DELETE,this.class,a),o=await this.read(t,...r.args);return await M(this,r.context,o,e.OperationKeys.DELETE,e.OperationKeys.ON),[t,...r.args]}async deleteAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.DELETE,this.class,a),o=await this.readAll(t,...r.args);return await Promise.all(o.map(async t=>M(this,r.context,t,e.OperationKeys.DELETE,e.OperationKeys.ON))),[t,...r.args]}async deleteAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER))),t}merge(e,t){const a=e=>Object.entries(e).reduce((e,[t,a])=>(void 0!==a&&(e[t]=a),e),{});return new this.class(Object.assign({},a(e),a(t)))}toString(){return this.class.name+" Repository"}}const re="##VERSION##",oe="##PACKAGE##";t.Metadata.registerLibrary(oe,re),e.BadRequestError=m,e.BaseError=O,e.BaseRepository=ae,e.BlockOperations=t=>U(e.OperationKeys.REFLECT+e.OperationKeys.BLOCK,(e,t)=>e.includes(t))(t),e.ConflictError=P,e.Context=ee,e.DBKeys=s,e.DBOperations=h,e.DEFAULT_ERROR_MESSAGES=c,e.DEFAULT_TIMESTAMP_FORMAT=i,e.DefaultContextFactory=X,e.DefaultRepositoryFlags=Z,e.DefaultSeparator=n,e.InternalError=g,e.NotFoundError=w,e.Operations=E,e.OperationsRegistry=f,e.PACKAGE_NAME=oe,e.Repository=class extends ae{constructor(e){super(e)}async createPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON);const o=await Promise.resolve(t.hasErrors());if(o)throw new A(o.toString());return[t,...r.args]}async createAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);await Promise.all(t.map(async t=>(t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t)));const o=(await Promise.all(t.map(e=>Promise.resolve(e.hasErrors())))).reduce((e,t,a)=>(t&&(e="string"==typeof e?e+`\n - ${a}: ${t.toString()}`:` - ${a}: ${t.toString()}`),e),void 0);if(o)throw new A(o);return[t,...r.args]}async updatePrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a),o=t[this.pk];if(!o)throw new g("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);t=this.merge(s,t),await M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s);const n=await Promise.resolve(t.hasErrors(s));if(n)throw new A(n.toString());return[t,...r.args]}async updateAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a),o=t.map(e=>{const t=e[this.pk];if(void 0===t)throw new g("No value for the Id is defined under the property "+this.pk);return t}),s=await this.readAll(o,...r.args);t=t.map((e,t)=>this.merge(s[t],e)),await Promise.all(t.map((t,a)=>M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s[a])));const n=(await Promise.all(t.map((e,t)=>Promise.resolve(e.hasErrors(s[t]))))).reduce((e,t,a)=>(t&&(e="string"==typeof e?e+`\n - ${a}: ${t.toString()}`:` - ${a}: ${t.toString()}`),e),void 0);if(n)throw new A(n);return[t,...r.args]}},e.SerializationError=T,e.UpdateValidationKeys=l,e.UpdateValidator=d,e.VERSION=re,e.ValidationError=A,e.after=C,e.afterAny=(e,t,a)=>C(h.ALL,e,t,a),e.afterCreate=(e,t,a)=>C(h.CREATE,e,t,a),e.afterCreateUpdate=(e,t,a)=>C(h.CREATE_UPDATE,e,t,a),e.afterDelete=(e,t,a)=>C(h.DELETE,e,t,a),e.afterRead=(e,t,a)=>C(h.READ,e,t,a),e.afterUpdate=(e,t,a)=>C(h.UPDATE,e,t,a),e.composed=(e,t=n,a=!1,r="",o="",s={priority:55})=>J(e,a,t,"values",r,o,s),e.composedFromCreateUpdate=Q,e.composedFromKeys=(e,t=n,a=!1,r="",o="",s={priority:55})=>J(e,a,t,"keys",r,o,s),e.enforceDBDecorators=M,e.getDbDecorators=R,e.getHandlerArgs=D,e.getHandlersDecorators=v,e.getValidatableUpdateProps=H,e.groupDecorators=S,e.hash=G,e.hashOnCreateUpdate=z,e.id=()=>t.apply(a.required(),V(),(e,a)=>t.propMetadata(t.Metadata.key(s.ID,a),{})(e,a)),e.on=k,e.onAny=(e,t,a)=>k(h.ALL,e,t,a),e.onCreate=x,e.onCreateUpdate=I,e.onDelete=(e,t,a)=>k(h.DELETE,e,t,a),e.onRead=(e,t,a)=>k(h.READ,e,t,a),e.onUpdate=N,e.operation=j,e.prefixMethod=function(e,t,a,r){const o=async function(...e){const r=await Promise.resolve(a.call(this,...e));return Promise.resolve(t.apply(this,r))}.bind(e),s=r||t.name;Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:s}),e[s]=o},e.readonly=V,e.serialize=()=>t.apply(I(F),C(h.ALL,$),a.type([String,Object]),t.metadata(s.SERIALIZE,{})),e.serializeAfterAll=$,e.serializeOnCreateUpdate=F,e.sortDecorators=L,e.storeHandlerMetadata=U,e.suffixMethod=function(e,t,a,r){const o=async function(...e){const r=await Promise.resolve(t.call(this,...e));return a.call(this,...r)}.bind(e),s=r||t.name;Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:s}),e[s]=o},e.timestamp=(r=h.CREATE_UPDATE,o=i)=>{const n=a.Validation.updateKey(s.TIMESTAMP);return t.Decoration.for(n).define({decorator:(r,o)=>{const i=[a.date(o,c.TIMESTAMP.DATE),a.required(c.TIMESTAMP.REQUIRED),t.propMetadata(a.Validation.key(s.TIMESTAMP),{operation:r,format:o}),k(r,_)];return-1!==r.indexOf(e.OperationKeys.UPDATE)?i.push(t.propMetadata(n,{message:c.TIMESTAMP.INVALID})):i.push(V()),t.apply(...i)},args:[r,o]}).apply()},e.timestampHandler=_,e.transient=()=>t.Decoration.for(s.TRANSIENT).define((e,a)=>{t.propMetadata(s.TRANSIENT,!0)(e.constructor),t.propMetadata(t.Metadata.key(s.TRANSIENT,a),{})(e,a)}).apply(),e.validateCompare=q,e.validateDecorator=Y,e.validateDecorators=B,e.version=()=>{const r=s.VERSION;return t.Decoration.for(r).define(a.type(Number),x(W(e.OperationKeys.CREATE)),N(W(e.OperationKeys.UPDATE)),t.propMetadata(r,!0)).apply()},e.versionCreateUpdate=W,e.wrapMethodWithContext=te},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/decorator-validation"),require("tslib"),require("typed-object-accumulator")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/decorator-validation","tslib","typed-object-accumulator"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["db-decorators"]={},e.decafTsDecoration,e.decafTsDecoratorValidation,e.tslib,e.typedObjectAccumulator);
1
+ var e,t;e=this,t=function(e,t,a,r,o){"use strict";const s={REFLECT:a.ModelKeys.MODEL+".persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},n="_",i="dd/MM/yyyy HH:mm:ss:S",c={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},l={REFLECT:"db.update.validation.",TIMESTAMP:s.TIMESTAMP,READONLY:s.READONLY};e.ReadOnlyValidator=class extends a.Validator{constructor(){super(c.READONLY.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,r){if(void 0!==e)return a.isEqual(e,t)?void 0:this.getMessage(r||this.message)}},e.ReadOnlyValidator=r.__decorate([a.validator(l.READONLY),r.__metadata("design:paramtypes",[])],e.ReadOnlyValidator),e.TimestampValidator=class extends a.Validator{constructor(){super(c.TIMESTAMP.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,a){if(void 0!==e){a=a||this.getMessage(a||this.message);try{e=new Date(e),t=new Date(t)}catch(e){return a}return e>t?void 0:a}}},e.TimestampValidator=r.__decorate([a.validator(l.TIMESTAMP),r.__metadata("design:paramtypes",[])],e.TimestampValidator);class d extends a.Validator{constructor(e=a.DEFAULT_ERROR_MESSAGES.DEFAULT,...t){super(e,...t)}}var p,u,y;a.Validation.updateKey=e=>l.REFLECT+e,e.OperationKeys=void 0,(p=e.OperationKeys||(e.OperationKeys={})).REFLECT="decaf.model.db.operations.",p.CREATE="create",p.READ="read",p.UPDATE="update",p.DELETE="delete",p.ON="on.",p.AFTER="after.",p.BLOCK="block",e.ModelOperations=void 0,(u=e.ModelOperations||(e.ModelOperations={})).OPERATIONS="operations",u.RELATIONS="relations",e.BulkCrudOperationKeys=void 0,(y=e.BulkCrudOperationKeys||(e.BulkCrudOperationKeys={})).CREATE_ALL="createAll",y.READ_ALL="readAll",y.UPDATE_ALL="updateAll",y.DELETE_ALL="deleteAll";const h={CREATE:[e.OperationKeys.CREATE],READ:[e.OperationKeys.READ],UPDATE:[e.OperationKeys.UPDATE],DELETE:[e.OperationKeys.DELETE],CREATE_UPDATE:[e.OperationKeys.CREATE,e.OperationKeys.UPDATE],READ_CREATE:[e.OperationKeys.READ,e.OperationKeys.CREATE],ALL:[e.OperationKeys.CREATE,e.OperationKeys.READ,e.OperationKeys.UPDATE,e.OperationKeys.DELETE]};class f{constructor(){this.cache={}}get(e,t,a,r){let o;r=r||[];try{o="string"==typeof e?e:e.constructor.name,r.unshift(...Object.values(this.cache[o][t][a]||[]))}catch(t){if("string"==typeof e||e===Object.prototype||Object.getPrototypeOf(e)===Object.prototype)return r}let s=Object.getPrototypeOf(e);return s.constructor.name===o&&(s=Object.getPrototypeOf(s)),this.get(s,t,a,r)}register(e,t,a,r){const o=a.constructor.name,s=E.getHandlerName(e);this.cache[o]||(this.cache[o]={}),this.cache[o][r]||(this.cache[o][r]={}),this.cache[o][r][t]||(this.cache[o][r][t]={}),this.cache[o][r][t][s]||(this.cache[o][r][t][s]=e)}}class E{constructor(){}static getHandlerName(e){return e.name?e.name:a.Hashing.hash(e.toString())}static key(t){return e.OperationKeys.REFLECT+t}static get(e,t,a){return E.registry.get(e,t,a)}static getOpRegistry(){return E.registry||(E.registry=new f),E.registry}static register(e,t,a,r){E.getOpRegistry().register(e,t,a,r)}}class O extends Error{constructor(e,t,a){if(t instanceof O)return t;super(`[${e}] ${t instanceof Error?t.message:t}`),this.code=a,t instanceof Error&&(this.stack=t.stack)}}class m extends O{constructor(e,t=m.name,a=400){super(t,e,a)}}class A extends m{constructor(e){super(e,A.name,422)}}class g extends O{constructor(e,t=g.name,a=500){super(t,e,a)}}class T extends g{constructor(e){super(e,T.name,500)}}class w extends m{constructor(e){super(e,w.name,404)}}class P extends m{constructor(e){super(e,P.name,409)}}const D=(e,t,a,r)=>{const o=a.constructor.name;if(!o)throw new g("Could not determine model class");r=r||{},e.props.handlers[o]&&e.props.handlers[o][t]&&(r={...e.props.handlers[o][t],...r});let s=Object.getPrototypeOf(a);return s===Object.prototype?r:(s.constructor.name===o&&(s=Object.getPrototypeOf(s)),D(e,t,s,r))};async function M(t,a,r,o,s,n){const i=R(r,o,s);if(!i)return;const c=L(S(v(r,i,s)));for(const i of c){const c=[a,i.data.length>1?i.data:i.data[0],i.prop.length>1?i.prop:i.prop[0],r];if(o===e.OperationKeys.UPDATE&&s===e.OperationKeys.ON){if(!n)throw new g("Missing old model for update operation");c.push(n)}try{await i.handler.apply(t,c)}catch(e){const t=`Failed to execute handler ${i.handler.name} for ${i.prop} on ${r.constructor.name} due to error: ${e}`;if(a.get("breakOnHandlerError"))throw new g(t)}}}function R(a,r,o){const s=o?.replace(/[.]$/,""),n=t.Metadata.get(a.constructor,e.ModelOperations.OPERATIONS);if(n)return Object.keys(n).reduce((e,t)=>{const a=s?n[t][s]||{}:n[t],o=Object.keys(a).filter(e=>e===r),i=[];for(const e of o)i.push({key:e,props:a[e]});return i&&i.length&&(e||(e={}),e[t]=i),e},void 0)}const K=50,b={priority:K};function v(e,t,a){const r=[];for(const o in t){const s=t[o];for(const t of s){const{key:s}=t,n=E.get(e,o,a+s);if(!n||!n.length)throw new g(`Could not find registered handler for the operation ${a+s} under property ${o}`);const i=D(t,o,e);if(!i||Object.values(i).length!==n.length)throw new g("Args and handlers length do not match");for(let e=0;e<n.length;e++){const t=i[n[e].name].data;r.push({handler:n[e],data:[t],prop:[o]})}}}return r}function S(e){const t=e.reduce((e,t)=>{if(!t||!t.data||!t.prop)throw new g("Missing decorator properties or data");if(!t.data[0].group)return e.set(Symbol(),t),e;const a=t.data[0].group;if(e.has(a)){const r=e.get(a);e.set(a,{handler:r.handler,data:[...r.data,...t.data],prop:[...r.prop,...t.prop]})}else e.set(a,{...t});return e},new Map),a=Array.from(t.values());return a.forEach(e=>{const t=e.data.map((t,a)=>({data:t,prop:e.prop[a]}));t.sort((e,t)=>(e.data.groupPriority??50)-(t.data.groupPriority??50)),e.data=t.map(e=>e.data),e.prop=t.map(e=>e.prop)}),a}function L(e){return e.sort((e,t)=>(e.data[0].priority??K)-(t.data[0].priority??K)),e}function x(e,t,a){return k(h.CREATE_UPDATE,e,t,a)}function I(e,t,a){return k(h.UPDATE,e,t,a)}function N(e,t,a){return k(h.CREATE,e,t,a)}function k(t=h.ALL,a,r,o){return U(e.OperationKeys.ON,t,a,r,o)}function C(t=h.ALL,a,r,o){return U(e.OperationKeys.AFTER,t,a,r,o)}function U(a,r=h.ALL,o,s,n=b){return(i,c)=>{const l=i.constructor.name,d=r.reduce((r,d)=>{const p=a+d;let u=t.Metadata.readOperation(i.constructor,c,p);u||(u={operation:d,handlers:{}});const y=E.getHandlerName(o);let h=n;if(s){if(Object.keys(s).filter(e=>e in n).length>0)throw new g("Unable to merge groupSort into dataToAdd due to overlaping keys");h={...n,...s}}return u.handlers[l]&&u.handlers[l][c]&&y in u.handlers[l][c]||(u.handlers[l]=u.handlers[l]||{},u.handlers[l][c]=u.handlers[l][c]||{},u.handlers[l][c][y]={data:h},r.push(((e,t)=>(a,r)=>{E.register(t,e,a,r)})(p,o),t.propMetadata(t.Metadata.key(e.ModelOperations.OPERATIONS,c,p),u))),r},[]);return t.apply(...d)(i,c)}}function j(e,a){return(...r)=>t.metadata(e,{args:r,handler:a})}function V(e=c.READONLY.INVALID){const r=s.READONLY,o={message:e,description:"defines the attribute as readOnly",async:!1};return t.Decoration.for(r).define({decorator:a.innerValidationDecorator,args:[V,r,o]}).apply()}async function _(e,t,a,r){r[a]=e.timestamp}async function F(e,t,a,r){if(r[a])try{r[a]=JSON.stringify(r[a])}catch(e){throw new T(`Failed to serialize ${a.toString()} property of model ${r.constructor.name}: e`)}}async function $(e,t,a,r){if(r[a]&&"string"==typeof r[a])try{r[a]=JSON.parse(r[a])}catch(e){throw new T(`Failed to deserialize ${a.toString()} property of model ${r.constructor.name}: ${e}`)}}function H(e,a){const r=[];for(const o in e){if(!Object.prototype.hasOwnProperty.call(e,o)||a.includes(o))continue;const s=t.Metadata.validationFor(e.constructor,o)||{};r.push({prop:o,decorators:s})}return r}function Y(e,t,r,o,s){const n=a.Validation.get(o.key);if(!n)throw Error("Missing validator for "+o.key);if(!n.updateHasErrors)return a.toConditionalPromise(void 0,s);if(!s&&o.async)return a.toConditionalPromise(void 0,s);const i=Object.values(o)||{},c=n.updateHasErrors(e[r],t[r],...i);return a.toConditionalPromise(c,s)}function B(e,t,r,o,s){const n={};for(const i in o){const c={...o[i],key:i};if(!s&&c.async)continue;let l=Y(e,t,r,c,s);if(c.key===a.ValidationKeys.LIST&&(!l||s)){const o=e[r],n=t[r],i=o instanceof Set?[...o]:o,d=n instanceof Set?[...n]:n;if(i?.length){const e=[c.class||c.clazz||c.customTypes].flat().map(e=>((e=(e="function"!=typeof e||e.name?e:e()).name?e.name:e)+"").toLowerCase()),t=i.map(t=>{const r=a.Model.pk(t,!0);if(!r)return"Failed to find model id";const o=d.find(e=>r===a.Model.pk(e,!0));return a.Model.isModel(t)?t.hasErrors(o):e.includes(typeof t)?void 0:"Value has no validatable type"});if(s)l=Promise.all(t).then(e=>e.every(e=>!e)?void 0:e);else{const e=t.every(e=>!e);l=t.length>0&&!e?t:void 0}}}l&&(n[c.key]=l)}if(!s)return Object.keys(n).length>0?n:void 0;const i=Object.keys(n),c=Object.values(n);return Promise.all(c).then(e=>{const t={};for(let a=0;a<e.length;a++){const r=e[a];void 0!==r&&(t[i[a]]=r)}return Object.keys(t).length>0?t:void 0})}function q(e,r,o,...s){const n=H(r,s),i={},c={};for(const{prop:s,decorators:l}of n){const n=s+"",d=r[s],{designTypes:p,designType:u}=t.Metadata.getPropDesignTypes(r.constructor,s);if(!p)continue;if(p.some(e=>[Array.name,Set.name].includes(e))){if(!l||!Object.keys(l).includes(a.ValidationKeys.LIST)){i[n]={[a.ValidationKeys.TYPE]:`Array or Set property '${n}' requires a @list decorator`};continue}if(d&&!(Array.isArray(d)||d instanceof Set)){i[n]={[a.ValidationKeys.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const y=B(r,e,n,l,o)||{},h=a.Model.isPropertyModel(r,n);if(null!=d&&h){const t=d,r=(Array.isArray(u)?u:[u]).map(e=>("function"!=typeof e||e.name||(e=e()),a.Model.get(e.name||e))).find(e=>!!e);r&&t instanceof r?c[n]=t.hasErrors(e[s]):(y[a.ValidationKeys.TYPE]=r?"Value must be an instance of "+r.name:`Unable to verify type consistency, missing model registry for ${p.toString()} on prop ${n}`,delete y[a.ModelKeys.TYPE])}(Object.keys(y).length>0||o)&&(i[n]=y),o||Object.entries(c[n]||{}).forEach(([e,t])=>{void 0!==t&&(i[`${n}.${e}`]=t)})}if(!o)return Object.keys(i).length>0?new a.ModelErrorDefinition(i):void 0;const l=i,d=Object.keys(l),p=Object.values(l);return Promise.allSettled(p).then(async e=>{const t={};for(const[e,a]of Object.entries(c)){const r=await a;r&&Object.entries(r).forEach(([a,r])=>{void 0!==r&&(t[[e,a].join(".")]=r)})}for(let a=0;a<e.length;a++){const r=d[a],o=e[a];"fulfilled"===o.status&&void 0!==o.value?t[r]=o.value:"rejected"===o.status&&(t[r]=o.reason instanceof Error?o.reason.message:(o.reason||"Validation failed")+"")}return Object.keys(t).length>0?new a.ModelErrorDefinition(t):void 0})}function z(e,t,r,o,s){if(void 0===o[r])return;const n=a.Hashing.hash(o[r]);s&&o[r]===n||(o[r]=n)}function G(){return t.apply(x(z),t.propMetadata(s.HASH,{}))}function Q(e,t,a,r){try{const{args:e,type:o,prefix:s,suffix:n,separator:i}=t,c=e.map(t=>{if(!(t in r))throw new g(`Property ${t} not found to compose from`);if("keys"===o)return t;if(void 0===r[t])throw new g(`Property ${e} does not contain a value to compose from`);return r[t].toString()});s&&c.unshift(s),n&&c.push(n),r[a]=c.join(i)}catch(e){throw new g("Failed to compose value: "+e)}}function J(e,a=!1,r=n,o="values",i="",c="",l={priority:55}){const d={args:e,hashResult:a,separator:r,type:o,prefix:i,suffix:c},p=[x(Q,d,l),t.propMetadata(s.COMPOSED,d)];return a&&p.push(G()),t.apply(...p)}function W(t){return(a,r,o,s)=>{try{switch(t){case e.OperationKeys.CREATE:s[o]=1;break;case e.OperationKeys.UPDATE:s[o]++;break;default:throw new g("Invalid operation: "+t)}}catch(e){throw new g("Failed to update version: "+e)}}}a.Model.prototype.isTransient=function(){return t.Metadata.isTransient(this)},a.Model.prototype.hasErrors=function(e,...t){!e||e instanceof a.Model||(t.unshift(e),e=void 0);const r=this.isAsync(),o=a.validate(this,r,...t);return r?Promise.resolve(o).then(a=>a||!e?a:q(e,this,r,...t)):o||!e?o:q(e,this,r,...t)},a.Model.prototype.segregate=function(){return a.Model.segregate(this)},a.Model.segregate=e=>{if(!t.Metadata.isTransient(e))return{model:e};const r=t.Metadata.validatableProperties(e.constructor),o=t.Metadata.get(e.constructor,s.TRANSIENT),n={model:{},transient:{}};for(const t of r)if(Object.keys(o).includes(t)){n.transient=n.transient||{};try{n.transient[t]=e[t]}catch(e){throw new T(`Failed to serialize transient property ${t}: ${e}`)}}else n.model=n.model||{},n.model[t]=e[t];return n.model=a.Model.build(n.model,e.constructor.name),n},a.Model.pk=((e,r=!1)=>{if(!e)throw Error("No model was provided");const o=e instanceof a.Model?e.constructor:e,n=t.Metadata.get(o,s.ID);if(!n)throw Error("No Id property defined for model "+(o?.name||"Unknown Model"));const i=Object.keys(n)[0];if(!r)return i;if(e instanceof a.Model)return e[i];throw Error("Cannot get the value of the pk from the constructor")}).bind(a.Model),a.Model.isTransient=(e=>t.Metadata.isTransient(e)).bind(a.Model),t.Metadata.saveOperation=((a,r,o,s)=>{r&&t.Metadata.set(a,t.Metadata.key(e.ModelOperations.OPERATIONS,r,o),s)}).bind(t.Metadata),t.Metadata.readOperation=((a,r,o)=>{if(r&&o)return t.Metadata.get(a,t.Metadata.key(e.ModelOperations.OPERATIONS,r,o))}).bind(t.Metadata),t.Metadata.isTransient=(e=>!!t.Metadata.get("function"!=typeof e?e.constructor:e,s.TRANSIENT)).bind(t.Metadata);const Z={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},X=e=>(new ee).accumulate(Object.assign({},e,{timestamp:new Date}));class ee{constructor(){this.cache=new o.ObjectAccumulator,Object.defineProperty(this,"cache",{value:new o.ObjectAccumulator,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=X}accumulate(e){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(e),writable:!1,enumerable:!1,configurable:!0}),this}get timestamp(){return this.cache.timestamp}get(e){try{return this.cache.get(e)}catch(t){const a=this.cache.parentContext;if(a)return a.get(e);throw t}}static childFrom(e,t){return ee.factory(Object.assign({},e.cache,t||{}))}static async from(e,t,a,...r){return ee.factory(Object.assign({},Z,t,{operation:e,model:a}))}static async args(e,t,a,r,o){const s=a.pop();async function n(){return r?r.context(e,o||{},t,...a):ee.from(e,o||{},t,...a)}let i;return s?s instanceof ee?(i=s,a.push(s)):(a.push(s),i=await n(),a.push(i)):(i=await n(),a.push(i)),{context:i,args:a}}}function te(e,t,a,r,o){const s=o||a.name;e[s]=new Proxy(e[s],{apply:async(e,a,o)=>{let s=t.call(a,...o);s instanceof Promise&&(s=await s);const n=s[s.length-1];if(!(n instanceof ee))throw new g("Missing a context");let i=e.call(a,...s);return i instanceof Promise&&(i=await i),i=r.call(a,i,n),i instanceof Promise&&(i=await i),i}})}class ae{get class(){if(!this._class)throw new g("No class definition found for this repository");return this._class}get pk(){return this._pk||(this._pk=a.Model.pk(this.class),this._pkProps=t.Metadata.get(this.class,t.Metadata.key(s.ID,this._pk))),this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(e){e&&(this._class=e);const t=this;[this.create,this.read,this.update,this.delete].forEach(e=>{const a=e.name;te(t,t[a+"Prefix"],e,t[a+"Suffix"])})}async createAll(e,...t){return Promise.all(e.map(e=>this.create(e,...t)))}async createPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);return t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),[t,...r.args]}async createSuffix(t,a){return await M(this,a,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER),t}async createAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);return await Promise.all(t.map(async t=>(t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t))),[t,...r.args]}async createAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER))),t}async readAll(e,...t){return await Promise.all(e.map(e=>this.read(e,...t)))}async readSuffix(t,a){return await M(this,a,t,e.OperationKeys.READ,e.OperationKeys.AFTER),t}async readPrefix(t,...a){const r=await ee.args(e.OperationKeys.READ,this.class,a),o=new this.class;return o[this.pk]=t,await M(this,r.context,o,e.OperationKeys.READ,e.OperationKeys.ON),[t,...r.args]}async readAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.READ,this.class,a);return await Promise.all(t.map(async t=>{const a=new this.class;return a[this.pk]=t,M(this,r.context,a,e.OperationKeys.READ,e.OperationKeys.ON)})),[t,...r.args]}async readAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.READ,e.OperationKeys.AFTER))),t}async updateAll(e,...t){return Promise.all(e.map(e=>this.update(e,...t)))}async updateSuffix(t,a){return await M(this,a,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER),t}async updatePrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a),o=t[this.pk];if(!o)throw new g("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);return await M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s),[t,...r.args]}async updateAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a);return await Promise.all(t.map(t=>(t=new this.class(t),M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON),t))),[t,...r.args]}async updateAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER))),t}async deleteAll(e,...t){return Promise.all(e.map(e=>this.delete(e,...t)))}async deleteSuffix(t,a){return await M(this,a,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER),t}async deletePrefix(t,...a){const r=await ee.args(e.OperationKeys.DELETE,this.class,a),o=await this.read(t,...r.args);return await M(this,r.context,o,e.OperationKeys.DELETE,e.OperationKeys.ON),[t,...r.args]}async deleteAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.DELETE,this.class,a),o=await this.readAll(t,...r.args);return await Promise.all(o.map(async t=>M(this,r.context,t,e.OperationKeys.DELETE,e.OperationKeys.ON))),[t,...r.args]}async deleteAllSuffix(t,a){return await Promise.all(t.map(t=>M(this,a,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER))),t}merge(e,t){const a=e=>Object.entries(e).reduce((e,[t,a])=>(void 0!==a&&(e[t]=a),e),{});return new this.class(Object.assign({},a(e),a(t)))}toString(){return this.class.name+" Repository"}}const re="##VERSION##",oe="##PACKAGE##";t.Metadata.registerLibrary(oe,re),e.BadRequestError=m,e.BaseError=O,e.BaseRepository=ae,e.BlockOperations=t=>j(e.OperationKeys.REFLECT+e.OperationKeys.BLOCK,(e,t)=>e.includes(t))(t),e.ConflictError=P,e.Context=ee,e.DBKeys=s,e.DBOperations=h,e.DEFAULT_ERROR_MESSAGES=c,e.DEFAULT_TIMESTAMP_FORMAT=i,e.DefaultContextFactory=X,e.DefaultRepositoryFlags=Z,e.DefaultSeparator=n,e.InternalError=g,e.NotFoundError=w,e.Operations=E,e.OperationsRegistry=f,e.PACKAGE_NAME=oe,e.Repository=class extends ae{constructor(e){super(e)}async createPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON);const o=await Promise.resolve(t.hasErrors());if(o)throw new A(o.toString());return[t,...r.args]}async createAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.CREATE,this.class,a);await Promise.all(t.map(async t=>(t=new this.class(t),await M(this,r.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t)));const o=(await Promise.all(t.map(e=>Promise.resolve(e.hasErrors())))).reduce((e,t,a)=>(t&&(e="string"==typeof e?e+`\n - ${a}: ${t.toString()}`:` - ${a}: ${t.toString()}`),e),void 0);if(o)throw new A(o);return[t,...r.args]}async updatePrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a),o=t[this.pk];if(!o)throw new g("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);t=this.merge(s,t),await M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s);const n=await Promise.resolve(t.hasErrors(s));if(n)throw new A(n.toString());return[t,...r.args]}async updateAllPrefix(t,...a){const r=await ee.args(e.OperationKeys.UPDATE,this.class,a),o=t.map(e=>{const t=e[this.pk];if(void 0===t)throw new g("No value for the Id is defined under the property "+this.pk);return t}),s=await this.readAll(o,...r.args);t=t.map((e,t)=>this.merge(s[t],e)),await Promise.all(t.map((t,a)=>M(this,r.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s[a])));const n=(await Promise.all(t.map((e,t)=>Promise.resolve(e.hasErrors(s[t]))))).reduce((e,t,a)=>(t&&(e="string"==typeof e?e+`\n - ${a}: ${t.toString()}`:` - ${a}: ${t.toString()}`),e),void 0);if(n)throw new A(n);return[t,...r.args]}},e.SerializationError=T,e.UpdateValidationKeys=l,e.UpdateValidator=d,e.VERSION=re,e.ValidationError=A,e.after=C,e.afterAny=(e,t,a)=>C(h.ALL,e,t,a),e.afterCreate=(e,t,a)=>C(h.CREATE,e,t,a),e.afterCreateUpdate=(e,t,a)=>C(h.CREATE_UPDATE,e,t,a),e.afterDelete=(e,t,a)=>C(h.DELETE,e,t,a),e.afterRead=(e,t,a)=>C(h.READ,e,t,a),e.afterUpdate=(e,t,a)=>C(h.UPDATE,e,t,a),e.composed=(e,t=n,a=!1,r="",o="",s={priority:55})=>J(e,a,t,"values",r,o,s),e.composedFromCreateUpdate=Q,e.composedFromKeys=(e,t=n,a=!1,r="",o="",s={priority:55})=>J(e,a,t,"keys",r,o,s),e.enforceDBDecorators=M,e.getDbDecorators=R,e.getHandlerArgs=D,e.getHandlersDecorators=v,e.getValidatableUpdateProps=H,e.groupDecorators=S,e.hash=G,e.hashOnCreateUpdate=z,e.id=()=>t.apply(a.required(),V(),(e,a)=>t.propMetadata(t.Metadata.key(s.ID,a),{})(e,a)),e.on=k,e.onAny=(e,t,a)=>k(h.ALL,e,t,a),e.onCreate=N,e.onCreateUpdate=x,e.onDelete=(e,t,a)=>k(h.DELETE,e,t,a),e.onRead=(e,t,a)=>k(h.READ,e,t,a),e.onUpdate=I,e.operation=U,e.prefixMethod=(e,t,a,r)=>{const o=r||t.name;e[o]=new Proxy(e[o],{apply:async(e,t,r)=>{let o=a.call(t,...r);return o instanceof Promise&&(o=await o),o=e.call(t,...o),o instanceof Promise&&(o=await o),o}})},e.readonly=V,e.serialize=()=>t.apply(x(F),C(h.ALL,$),a.type([String,Object]),t.metadata(s.SERIALIZE,{})),e.serializeAfterAll=$,e.serializeOnCreateUpdate=F,e.sortDecorators=L,e.storeHandlerMetadata=j,e.suffixMethod=(e,t,a,r)=>{const o=r||t.name;e[o]=new Proxy(e[o],{apply:async(e,t,r)=>{let o=e.call(t,...r);return o instanceof Promise&&(o=await o),o=a.call(t,...o),o instanceof Promise&&(o=await o),o}})},e.timestamp=(r=h.CREATE_UPDATE,o=i)=>{const n=a.Validation.updateKey(s.TIMESTAMP);return t.Decoration.for(n).define({decorator:(r,o)=>{const i=[a.date(o,c.TIMESTAMP.DATE),a.required(c.TIMESTAMP.REQUIRED),t.propMetadata(a.Validation.key(s.TIMESTAMP),{operation:r,format:o}),k(r,_)];return-1!==r.indexOf(e.OperationKeys.UPDATE)?i.push(t.propMetadata(n,{message:c.TIMESTAMP.INVALID})):i.push(V()),t.apply(...i)},args:[r,o]}).apply()},e.timestampHandler=_,e.transient=()=>t.Decoration.for(s.TRANSIENT).define((e,a)=>{t.propMetadata(s.TRANSIENT,!0)(e.constructor),t.propMetadata(t.Metadata.key(s.TRANSIENT,a),{})(e,a)}).apply(),e.validateCompare=q,e.validateDecorator=Y,e.validateDecorators=B,e.version=()=>{const r=s.VERSION;return t.Decoration.for(r).define(a.type(Number),N(W(e.OperationKeys.CREATE)),I(W(e.OperationKeys.UPDATE)),t.propMetadata(r,!0)).apply()},e.versionCreateUpdate=W,e.wrapMethodWithContext=te},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/decorator-validation"),require("tslib"),require("typed-object-accumulator")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/decorator-validation","tslib","typed-object-accumulator"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["db-decorators"]={},e.decafTsDecoration,e.decafTsDecoratorValidation,e.tslib,e.typedObjectAccumulator);
2
2
  //# sourceMappingURL=db-decorators.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-decorators.cjs","sources":["../src/model/constants.ts","../src/validation/constants.ts","../src/validation/validators/ReadOnlyValidator.ts","../src/validation/validators/TimestampValidator.ts","../src/validation/validators/UpdateValidator.ts","../src/operations/constants.ts","../src/validation/validation.ts","../src/operations/OperationsRegistry.ts","../src/operations/Operations.ts","../src/repository/errors.ts","../src/repository/utils.ts","../src/operations/decorators.ts","../src/validation/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/overrides/overrides.ts","../src/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/repository/BaseRepository.ts","../src/index.ts","../src/repository/Repository.ts","../src/identity/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DBKeys","REFLECT","ModelKeys","MODEL","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","exports","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","ModelOperations","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","name","unshift","Object","values","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","getHandlerArgs","dec","prop","m","props","handlers","async","enforceDBDecorators","repo","context","model","prefix","oldModel","decorators","getDbDecorators","sortedDecorators","sortDecorators","groupDecorators","getHandlersDecorators","data","length","ON","push","apply","extraPrefix","replace","Metadata","OPERATIONS","keys","reduce","decorator","obj","filter","d","decs","defaultPriority","DefaultGroupSort","priority","handlerArgs","i","grouped","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","forEach","combined","map","sort","a","b","groupPriority","c","onCreateUpdate","groupsort","on","onUpdate","onCreate","op","after","AFTER","baseOp","dataToAdd","propertyKey","compoundKey","readOperation","handlerKey","mergeData","handle","propMetadata","storeHandlerMetadata","params","metadata","readonly","meta","description","Decoration","for","define","innerValidationDecorator","timestampHandler","timestamp","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","call","includes","validationFor","validateDecorator","newModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","decoratorKey","validationErrors","ValidationKeys","LIST","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","class","clazz","customTypes","flat","t","String","toLowerCase","errs","childValue","id","Model","pk","oldListModel","find","el","isModel","Promise","all","then","every","r","allEmpty","promises","resolvedValues","res","val","validateCompare","ValidatableUpdateProps","nestedErrors","propValue","designTypes","designType","getPropDesignTypes","some","TYPE","isArray","propErrors","isConstr","isPropertyModel","instance","Constr","entries","error","ModelErrorDefinition","merged","allSettled","results","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","join","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","type","suffix","separator","composed","arg","composedFrom","hashResult","versionCreateUpdate","isTransient","decoratorValidation","previousVersion","exclusions","isAsync","validate","resolve","resolvedErrs","toTransient","validatableProperties","transientProps","transient","build","keyValue","constr","idProp","bind","decoration","saveOperation","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","DefaultContextFactory","Context","accumulate","assign","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","wrapMethodWithContext","before","method","methodName","Proxy","thisArg","argArray","transformedArgs","BaseRepository","_class","_pk","_pkProps","pkProps","self","create","read","update","delete","createAll","models","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","merge","extract","PACKAGE_NAME","registerLibrary","operations","BLOCK","errors","ids","oldModels","required","afterName","wrapped","beforeName","format","date","indexOf","attribute","Number"],"mappings":"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"}
1
+ {"version":3,"file":"db-decorators.cjs","sources":["../src/model/constants.ts","../src/validation/constants.ts","../src/validation/validators/ReadOnlyValidator.ts","../src/validation/validators/TimestampValidator.ts","../src/validation/validators/UpdateValidator.ts","../src/operations/constants.ts","../src/validation/validation.ts","../src/operations/OperationsRegistry.ts","../src/operations/Operations.ts","../src/repository/errors.ts","../src/repository/utils.ts","../src/operations/decorators.ts","../src/validation/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/overrides/overrides.ts","../src/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/repository/BaseRepository.ts","../src/index.ts","../src/repository/Repository.ts","../src/identity/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DBKeys","REFLECT","ModelKeys","MODEL","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","exports","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","ModelOperations","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","name","unshift","Object","values","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","getHandlerArgs","dec","prop","m","props","handlers","async","enforceDBDecorators","repo","context","model","prefix","oldModel","decorators","getDbDecorators","sortedDecorators","sortDecorators","groupDecorators","getHandlersDecorators","data","length","ON","push","apply","extraPrefix","replace","Metadata","OPERATIONS","keys","reduce","decorator","obj","filter","d","decs","defaultPriority","DefaultGroupSort","priority","handlerArgs","i","grouped","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","forEach","combined","map","sort","a","b","groupPriority","c","onCreateUpdate","groupsort","on","onUpdate","onCreate","op","after","AFTER","baseOp","dataToAdd","propertyKey","compoundKey","readOperation","handlerKey","mergeData","handle","propMetadata","storeHandlerMetadata","params","metadata","readonly","meta","description","Decoration","for","define","innerValidationDecorator","timestampHandler","timestamp","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","call","includes","validationFor","validateDecorator","newModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","decoratorKey","validationErrors","ValidationKeys","LIST","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","class","clazz","customTypes","flat","t","String","toLowerCase","errs","childValue","id","Model","pk","oldListModel","find","el","isModel","Promise","all","then","every","r","allEmpty","promises","resolvedValues","res","val","validateCompare","ValidatableUpdateProps","nestedErrors","propValue","designTypes","designType","getPropDesignTypes","some","TYPE","isArray","propErrors","isConstr","isPropertyModel","instance","Constr","entries","error","ModelErrorDefinition","merged","allSettled","results","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","join","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","type","suffix","separator","composed","arg","composedFrom","hashResult","versionCreateUpdate","isTransient","decoratorValidation","previousVersion","exclusions","isAsync","validate","resolve","resolvedErrs","segregate","validatableProperties","transientProps","transient","build","keyValue","constr","idProp","bind","decoration","saveOperation","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","DefaultContextFactory","Context","accumulate","assign","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","wrapMethodWithContext","before","method","methodName","Proxy","thisArg","argArray","transformedArgs","BaseRepository","_class","_pk","_pkProps","pkProps","self","create","read","update","delete","createAll","models","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","merge","extract","PACKAGE_NAME","registerLibrary","operations","BLOCK","errors","ids","oldModels","required","afterName","beforeName","format","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 u,Validation as l,Hashing as p,innerValidationDecorator as d,type as h,date as f,required as E,toConditionalPromise as y,ValidationKeys as m,Model as A,ModelErrorDefinition as g,validate as T}from"@decaf-ts/decorator-validation";import{__decorate as w,__metadata as P}from"tslib";import{ObjectAccumulator as O}from"typed-object-accumulator";const R={REFLECT:a.MODEL+".persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},D="_",b="dd/MM/yyyy HH:mm:ss:S",v={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},S={REFLECT:"db.update.validation.",TIMESTAMP:R.TIMESTAMP,READONLY:R.READONLY};let L=class extends i{constructor(){super(v.READONLY.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t)return c(t,e)?void 0:this.getMessage(r||this.message)}};L=w([o(S.READONLY),P("design:paramtypes",[])],L);let I=class extends i{constructor(){super(v.TIMESTAMP.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t){r=r||this.getMessage(r||this.message);try{t=new Date(t),e=new Date(e)}catch(t){return r}return t>e?void 0:r}}};I=w([o(S.TIMESTAMP),P("design:paramtypes",[])],I);class N extends i{constructor(t=u.DEFAULT,...e){super(t,...e)}}var k,x,j;l.updateKey=t=>S.REFLECT+t,(t=>{t.REFLECT="decaf.model.db.operations.",t.CREATE="create",t.READ="read",t.UPDATE="update",t.DELETE="delete",t.ON="on.",t.AFTER="after.",t.BLOCK="block"})(k||(k={})),(t=>{t.OPERATIONS="operations",t.RELATIONS="relations"})(x||(x={})),(t=>{t.CREATE_ALL="createAll",t.READ_ALL="readAll",t.UPDATE_ALL="updateAll",t.DELETE_ALL="deleteAll"})(j||(j={}));const C={CREATE:[k.CREATE],READ:[k.READ],UPDATE:[k.UPDATE],DELETE:[k.DELETE],CREATE_UPDATE:[k.CREATE,k.UPDATE],READ_CREATE:[k.READ,k.CREATE],ALL:[k.CREATE,k.READ,k.UPDATE,k.DELETE]};class M{constructor(){this.cache={}}get(t,e,r,n){let s;n=n||[];try{s="string"==typeof t?t:t.constructor.name,n.unshift(...Object.values(this.cache[s][e][r]||[]))}catch(e){if("string"==typeof t||t===Object.prototype||Object.getPrototypeOf(t)===Object.prototype)return n}let a=Object.getPrototypeOf(t);return a.constructor.name===s&&(a=Object.getPrototypeOf(a)),this.get(a,e,r,n)}register(t,e,r,n){const s=r.constructor.name,a=U.getHandlerName(t);this.cache[s]||(this.cache[s]={}),this.cache[s][n]||(this.cache[s][n]={}),this.cache[s][n][e]||(this.cache[s][n][e]={}),this.cache[s][n][e][a]||(this.cache[s][n][e][a]=t)}}class U{constructor(){}static getHandlerName(t){return t.name?t.name:p.hash(t.toString())}static key(t){return k.REFLECT+t}static get(t,e,r){return U.registry.get(t,e,r)}static getOpRegistry(){return U.registry||(U.registry=new M),U.registry}static register(t,e,r,n){U.getOpRegistry().register(t,e,r,n)}}class $ extends Error{constructor(t,e,r){if(e instanceof $)return e;super(`[${t}] ${e instanceof Error?e.message:e}`),this.code=r,e instanceof Error&&(this.stack=e.stack)}}class F extends ${constructor(t,e=F.name,r=400){super(e,t,r)}}class _ extends F{constructor(t){super(t,_.name,422)}}class H extends ${constructor(t,e=H.name,r=500){super(e,t,r)}}class V extends H{constructor(t){super(t,V.name,500)}}class Y extends F{constructor(t){super(t,Y.name,404)}}class z extends F{constructor(t){super(t,z.name,409)}}const K=(t,e,r,n)=>{const s=r.constructor.name;if(!s)throw new H("Could not determine model class");n=n||{},t.props.handlers[s]&&t.props.handlers[s][e]&&(n={...t.props.handlers[s][e],...n});let a=Object.getPrototypeOf(r);return a===Object.prototype?n:(a.constructor.name===s&&(a=Object.getPrototypeOf(a)),K(t,e,a,n))};async function Q(t,e,r,n,s,a){const o=G(r,n,s);if(!o)return;const i=W(Z(J(r,o,s)));for(const o of i){const i=[e,o.data.length>1?o.data:o.data[0],o.prop.length>1?o.prop:o.prop[0],r];if(n===k.UPDATE&&s===k.ON){if(!a)throw new H("Missing old model for update operation");i.push(a)}try{await o.handler.apply(t,i)}catch(t){const n=`Failed to execute handler ${o.handler.name} for ${o.prop} on ${r.constructor.name} due to error: ${t}`;if(e.get("breakOnHandlerError"))throw new H(n)}}}function G(e,r,n){const s=n?.replace(/[.]$/,""),a=t.get(e.constructor,x.OPERATIONS);if(a)return Object.keys(a).reduce((t,e)=>{const n=s?a[e][s]||{}:a[e],o=Object.keys(n).filter(t=>t===r),i=[];for(const t of o)i.push({key:t,props:n[t]});return i&&i.length&&(t||(t={}),t[e]=i),t},void 0)}const q=50,B={priority:q};function J(t,e,r){const n=[];for(const s in e){const a=e[s];for(const e of a){const{key:a}=e,o=U.get(t,s,r+a);if(!o||!o.length)throw new H(`Could not find registered handler for the operation ${r+a} under property ${s}`);const i=K(e,s,t);if(!i||Object.values(i).length!==o.length)throw new H("Args and handlers length do not match");for(let t=0;t<o.length;t++){const e=i[o[t].name].data;n.push({handler:o[t],data:[e],prop:[s]})}}}return n}function Z(t){const e=t.reduce((t,e)=>{if(!e||!e.data||!e.prop)throw new H("Missing decorator properties or data");if(!e.data[0].group)return t.set(Symbol(),e),t;const r=e.data[0].group;if(t.has(r)){const n=t.get(r);t.set(r,{handler:n.handler,data:[...n.data,...e.data],prop:[...n.prop,...e.prop]})}else t.set(r,{...e});return t},new Map),r=Array.from(e.values());return r.forEach(t=>{const e=t.data.map((e,r)=>({data:e,prop:t.prop[r]}));e.sort((t,e)=>(t.data.groupPriority??50)-(e.data.groupPriority??50)),t.data=e.map(t=>t.data),t.prop=e.map(t=>t.prop)}),r}function W(t){return t.sort((t,e)=>(t.data[0].priority??q)-(e.data[0].priority??q)),t}function X(t,e,r){return at(C.CREATE_UPDATE,t,e,r)}function tt(t,e,r){return at(C.UPDATE,t,e,r)}function et(t,e,r){return at(C.CREATE,t,e,r)}function rt(t,e,r){return at(C.READ,t,e,r)}function nt(t,e,r){return at(C.DELETE,t,e,r)}function st(t,e,r){return at(C.ALL,t,e,r)}function at(t=C.ALL,e,r,n){return ht(k.ON,t,e,r,n)}function ot(t,e,r){return dt(C.CREATE_UPDATE,t,e,r)}function it(t,e,r){return dt(C.UPDATE,t,e,r)}function ct(t,e,r){return dt(C.CREATE,t,e,r)}function ut(t,e,r){return dt(C.READ,t,e,r)}function lt(t,e,r){return dt(C.DELETE,t,e,r)}function pt(t,e,r){return dt(C.ALL,t,e,r)}function dt(t=C.ALL,e,r,n){return ht(k.AFTER,t,e,r,n)}function ht(n,s=C.ALL,a,o,i=B){return(c,u)=>{const l=c.constructor.name,p=s.reduce((r,s)=>{const p=n+s;let d=t.readOperation(c.constructor,u,p);d||(d={operation:s,handlers:{}});const h=U.getHandlerName(a);let f=i;if(o){if(Object.keys(o).filter(t=>t in i).length>0)throw new H("Unable to merge groupSort into dataToAdd due to overlaping keys");f={...i,...o}}return d.handlers[l]&&d.handlers[l][u]&&h in d.handlers[l][u]||(d.handlers[l]=d.handlers[l]||{},d.handlers[l][u]=d.handlers[l][u]||{},d.handlers[l][u][h]={data:f},r.push(((t,e)=>(r,n)=>{U.register(e,t,r,n)})(p,a),e(t.key(x.OPERATIONS,u,p),d))),r},[]);return r(...p)(c,u)}}function ft(t,e){return(...r)=>n(t,{args:r,handler:e})}const Et=t=>ft(k.REFLECT+k.BLOCK,(t,e)=>t.includes(e))(t);function yt(t=v.READONLY.INVALID){const e=R.READONLY,r={message:t,description:"defines the attribute as readOnly",async:!1};return s.for(e).define({decorator:d,args:[yt,e,r]}).apply()}async function mt(t,e,r,n){n[r]=t.timestamp}function At(t=C.CREATE_UPDATE,n=b){const a=l.updateKey(R.TIMESTAMP);return s.for(a).define({decorator:(t,n)=>{const s=[f(n,v.TIMESTAMP.DATE),E(v.TIMESTAMP.REQUIRED),e(l.key(R.TIMESTAMP),{operation:t,format:n}),at(t,mt)];return-1!==t.indexOf(k.UPDATE)?s.push(e(a,{message:v.TIMESTAMP.INVALID})):s.push(yt()),r(...s)},args:[t,n]}).apply()}async function gt(t,e,r,n){if(n[r])try{n[r]=JSON.stringify(n[r])}catch(t){throw new V(`Failed to serialize ${r.toString()} property of model ${n.constructor.name}: e`)}}async function Tt(t,e,r,n){if(n[r]&&"string"==typeof n[r])try{n[r]=JSON.parse(n[r])}catch(t){throw new V(`Failed to deserialize ${r.toString()} property of model ${n.constructor.name}: ${t}`)}}function wt(){return r(X(gt),dt(C.ALL,Tt),h([String,Object]),n(R.SERIALIZE,{}))}function Pt(){return r(E(),yt(),(r,n)=>e(t.key(R.ID,n),{})(r,n))}function Ot(e,r){const n=[];for(const s in e){if(!Object.prototype.hasOwnProperty.call(e,s)||r.includes(s))continue;const a=t.validationFor(e.constructor,s)||{};n.push({prop:s,decorators:a})}return n}function Rt(t,e,r,n,s){const a=l.get(n.key);if(!a)throw Error("Missing validator for "+n.key);if(!a.updateHasErrors)return y(void 0,s);if(!s&&n.async)return y(void 0,s);const o=Object.values(n)||{},i=a.updateHasErrors(t[r],e[r],...o);return y(i,s)}function Dt(t,e,r,n,s){const a={};for(const o in n){const i={...n[o],key:o};if(!s&&i.async)continue;let c=Rt(t,e,r,i,s);if(i.key===m.LIST&&(!c||s)){const n=t[r],a=e[r],o=n instanceof Set?[...n]:n,u=a instanceof Set?[...a]:a;if(o?.length){const t=[i.class||i.clazz||i.customTypes].flat().map(t=>((t=(t="function"!=typeof t||t.name?t:t()).name?t.name:t)+"").toLowerCase()),e=o.map(e=>{const r=A.pk(e,!0);if(!r)return"Failed to find model id";const n=u.find(t=>r===A.pk(t,!0));return A.isModel(e)?e.hasErrors(n):t.includes(typeof e)?void 0:"Value has no validatable type"});if(s)c=Promise.all(e).then(t=>t.every(t=>!t)?void 0:t);else{const t=e.every(t=>!t);c=e.length>0&&!t?e:void 0}}}c&&(a[i.key]=c)}if(!s)return Object.keys(a).length>0?a:void 0;const o=Object.keys(a),i=Object.values(a);return Promise.all(i).then(t=>{const e={};for(let r=0;r<t.length;r++){const n=t[r];void 0!==n&&(e[o[r]]=n)}return Object.keys(e).length>0?e:void 0})}function bt(e,r,n,...s){const o=Ot(r,s),i={},c={};for(const{prop:s,decorators:u}of o){const o=s+"",l=r[s],{designTypes:p,designType:d}=t.getPropDesignTypes(r.constructor,s);if(!p)continue;if(p.some(t=>[Array.name,Set.name].includes(t))){if(!u||!Object.keys(u).includes(m.LIST)){i[o]={[m.TYPE]:`Array or Set property '${o}' requires a @list decorator`};continue}if(l&&!(Array.isArray(l)||l instanceof Set)){i[o]={[m.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const h=Dt(r,e,o,u,n)||{},f=A.isPropertyModel(r,o);if(null!=l&&f){const t=l,r=(Array.isArray(d)?d:[d]).map(t=>("function"!=typeof t||t.name||(t=t()),A.get(t.name||t))).find(t=>!!t);r&&t instanceof r?c[o]=t.hasErrors(e[s]):(h[m.TYPE]=r?"Value must be an instance of "+r.name:`Unable to verify type consistency, missing model registry for ${p.toString()} on prop ${o}`,delete h[a.TYPE])}(Object.keys(h).length>0||n)&&(i[o]=h),n||Object.entries(c[o]||{}).forEach(([t,e])=>{void 0!==e&&(i[`${o}.${t}`]=e)})}if(!n)return Object.keys(i).length>0?new g(i):void 0;const u=i,l=Object.keys(u),p=Object.values(u);return Promise.allSettled(p).then(async t=>{const e={};for(const[t,r]of Object.entries(c)){const n=await r;n&&Object.entries(n).forEach(([r,n])=>{void 0!==n&&(e[[t,r].join(".")]=n)})}for(let r=0;r<t.length;r++){const n=l[r],s=t[r];"fulfilled"===s.status&&void 0!==s.value?e[n]=s.value:"rejected"===s.status&&(e[n]=s.reason instanceof Error?s.reason.message:(s.reason||"Validation failed")+"")}return Object.keys(e).length>0?new g(e):void 0})}function vt(t,e,r,n,s){if(void 0===n[r])return;const a=p.hash(n[r]);s&&n[r]===a||(n[r]=a)}function St(){return r(X(vt),e(R.HASH,{}))}function Lt(t,e,r,n){try{const{args:t,type:s,prefix:a,suffix:o,separator:i}=e,c=t.map(e=>{if(!(e in n))throw new H(`Property ${e} not found to compose from`);if("keys"===s)return e;if(void 0===n[e])throw new H(`Property ${t} does not contain a value to compose from`);return n[e].toString()});a&&c.unshift(a),o&&c.push(o),n[r]=c.join(i)}catch(t){throw new H("Failed to compose value: "+t)}}function It(t,n=!1,s=D,a="values",o="",i="",c={priority:55}){const u={args:t,hashResult:n,separator:s,type:a,prefix:o,suffix:i},l=[X(Lt,u,c),e(R.COMPOSED,u)];return n&&l.push(St()),r(...l)}function Nt(t,e=D,r=!1,n="",s="",a={priority:55}){return It(t,r,e,"keys",n,s,a)}function kt(t,e=D,r=!1,n="",s="",a={priority:55}){return It(t,r,e,"values",n,s,a)}function xt(t){return(e,r,n,s)=>{try{switch(t){case k.CREATE:s[n]=1;break;case k.UPDATE:s[n]++;break;default:throw new H("Invalid operation: "+t)}}catch(t){throw new H("Failed to update version: "+t)}}}function jt(){const t=R.VERSION;return s.for(t).define(h(Number),et(xt(k.CREATE)),tt(xt(k.UPDATE)),e(t,!0)).apply()}function Ct(){return s.for(R.TRANSIENT).define((r,n)=>{e(R.TRANSIENT,!0)(r.constructor),e(t.key(R.TRANSIENT,n),{})(r,n)}).apply()}A.prototype.isTransient=function(){return t.isTransient(this)},A.prototype.hasErrors=function(t,...e){!t||t instanceof A||(e.unshift(t),t=void 0);const r=this.isAsync(),n=T(this,r,...e);return r?Promise.resolve(n).then(n=>n||!t?n:bt(t,this,r,...e)):n||!t?n:bt(t,this,r,...e)},A.prototype.toTransient=function(){return A.toTransient(this)},A.toTransient=e=>{if(!t.isTransient(e))return{model:e};const r=t.validatableProperties(e.constructor),n=t.get(e.constructor,R.TRANSIENT),s={model:{},transient:{}};for(const t of r)if(Object.keys(n).includes(t)){s.transient=s.transient||{};try{s.transient[t]=e[t]}catch(e){throw new V(`Failed to serialize transient property ${t}: ${e}`)}}else s.model=s.model||{},s.model[t]=e[t];return s.model=A.build(s.model,e.constructor.name),s},A.pk=((e,r=!1)=>{if(!e)throw Error("No model was provided");const n=e instanceof A?e.constructor:e,s=t.get(n,R.ID);if(!s)throw Error("No Id property defined for model "+(n?.name||"Unknown Model"));const a=Object.keys(s)[0];if(!r)return a;if(e instanceof A)return e[a];throw Error("Cannot get the value of the pk from the constructor")}).bind(A),A.isTransient=(e=>t.isTransient(e)).bind(A),t.saveOperation=((e,r,n,s)=>{r&&t.set(e,t.key(x.OPERATIONS,r,n),s)}).bind(t),t.readOperation=((e,r,n)=>{if(r&&n)return t.get(e,t.key(x.OPERATIONS,r,n))}).bind(t),t.isTransient=(e=>!!t.get("function"!=typeof e?e.constructor:e,R.TRANSIENT)).bind(t);const Mt={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},Ut=t=>(new $t).accumulate(Object.assign({},t,{timestamp:new Date}));class $t{constructor(){this.cache=new O,Object.defineProperty(this,"cache",{value:new O,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=Ut}accumulate(t){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(t),writable:!1,enumerable:!1,configurable:!0}),this}get timestamp(){return this.cache.timestamp}get(t){try{return this.cache.get(t)}catch(e){const r=this.cache.parentContext;if(r)return r.get(t);throw e}}static childFrom(t,e){return $t.factory(Object.assign({},t.cache,e||{}))}static async from(t,e,r,...n){return $t.factory(Object.assign({},Mt,e,{operation:t,model:r}))}static async args(t,e,r,n,s){const a=r.pop();async function o(){return n?n.context(t,s||{},e,...r):$t.from(t,s||{},e,...r)}let i;return a?a instanceof $t?(i=a,r.push(a)):(r.push(a),i=await o(),r.push(i)):(i=await o(),r.push(i)),{context:i,args:r}}}function Ft(t,e,r,n){const s=async function(...t){const n=await Promise.resolve(r.call(this,...t));return Promise.resolve(e.apply(this,n))}.bind(t),a=n||e.name;Object.defineProperty(s,"name",{enumerable:!0,configurable:!0,writable:!1,value:a}),t[a]=s}function _t(t,e,r,n){const s=async function(...t){const n=await Promise.resolve(e.call(this,...t));return r.call(this,...n)}.bind(t),a=n||e.name;Object.defineProperty(s,"name",{enumerable:!0,configurable:!0,writable:!1,value:a}),t[a]=s}function Ht(t,e,r,n,s){const a=s||r.name;t[a]=new Proxy(t[a],{apply:async(t,r,s)=>{let a=e.call(r,...s);a instanceof Promise&&(a=await a);const o=a[a.length-1];if(!(o instanceof $t))throw new H("Missing a context");let i=await t.call(r,...a);return i instanceof Promise&&(i=await i),i=n.call(r,i,o),i instanceof Promise&&(i=await i),i}})}class Vt{get class(){if(!this._class)throw new H("No class definition found for this repository");return this._class}get pk(){return this._pk||(this._pk=A.pk(this.class),this._pkProps=t.get(this.class,t.key(R.ID,this._pk))),this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(t){t&&(this._class=t);const e=this;[this.create,this.read,this.update,this.delete].forEach(t=>{const r=t.name;Ht(e,e[r+"Prefix"],t,e[r+"Suffix"])})}async createAll(t,...e){return Promise.all(t.map(t=>this.create(t,...e)))}async createPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);return t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON),[t,...r.args]}async createSuffix(t,e){return await Q(this,e,t,k.CREATE,k.AFTER),t}async createAllPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);return await Promise.all(t.map(async t=>(t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON),t))),[t,...r.args]}async createAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.CREATE,k.AFTER))),t}async readAll(t,...e){return await Promise.all(t.map(t=>this.read(t,...e)))}async readSuffix(t,e){return await Q(this,e,t,k.READ,k.AFTER),t}async readPrefix(t,...e){const r=await $t.args(k.READ,this.class,e),n=new this.class;return n[this.pk]=t,await Q(this,r.context,n,k.READ,k.ON),[t,...r.args]}async readAllPrefix(t,...e){const r=await $t.args(k.READ,this.class,e);return await Promise.all(t.map(async t=>{const e=new this.class;return e[this.pk]=t,Q(this,r.context,e,k.READ,k.ON)})),[t,...r.args]}async readAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.READ,k.AFTER))),t}async updateAll(t,...e){return Promise.all(t.map(t=>this.update(t,...e)))}async updateSuffix(t,e){return await Q(this,e,t,k.UPDATE,k.AFTER),t}async updatePrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new H("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);return await Q(this,r.context,t,k.UPDATE,k.ON,s),[t,...r.args]}async updateAllPrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e);return await Promise.all(t.map(t=>(t=new this.class(t),Q(this,r.context,t,k.UPDATE,k.ON),t))),[t,...r.args]}async updateAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.UPDATE,k.AFTER))),t}async deleteAll(t,...e){return Promise.all(t.map(t=>this.delete(t,...e)))}async deleteSuffix(t,e){return await Q(this,e,t,k.DELETE,k.AFTER),t}async deletePrefix(t,...e){const r=await $t.args(k.DELETE,this.class,e),n=await this.read(t,...r.args);return await Q(this,r.context,n,k.DELETE,k.ON),[t,...r.args]}async deleteAllPrefix(t,...e){const r=await $t.args(k.DELETE,this.class,e),n=await this.readAll(t,...r.args);return await Promise.all(n.map(async t=>Q(this,r.context,t,k.DELETE,k.ON))),[t,...r.args]}async deleteAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.DELETE,k.AFTER))),t}merge(t,e){const r=t=>Object.entries(t).reduce((t,[e,r])=>(void 0!==r&&(t[e]=r),t),{});return new this.class(Object.assign({},r(t),r(e)))}toString(){return this.class.name+" Repository"}}class Yt extends Vt{constructor(t){super(t)}async createPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON);const n=await Promise.resolve(t.hasErrors());if(n)throw new _(n.toString());return[t,...r.args]}async createAllPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);await Promise.all(t.map(async t=>(t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON),t)));const n=(await Promise.all(t.map(t=>Promise.resolve(t.hasErrors())))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(n)throw new _(n);return[t,...r.args]}async updatePrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new H("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);t=this.merge(s,t),await Q(this,r.context,t,k.UPDATE,k.ON,s);const a=await Promise.resolve(t.hasErrors(s));if(a)throw new _(a.toString());return[t,...r.args]}async updateAllPrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=t.map(t=>{const e=t[this.pk];if(void 0===e)throw new H("No value for the Id is defined under the property "+this.pk);return e}),s=await this.readAll(n,...r.args);t=t.map((t,e)=>this.merge(s[e],t)),await Promise.all(t.map((t,e)=>Q(this,r.context,t,k.UPDATE,k.ON,s[e])));const a=(await Promise.all(t.map((t,e)=>Promise.resolve(t.hasErrors(s[e]))))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(a)throw new _(a);return[t,...r.args]}}const zt="##VERSION##",Kt="##PACKAGE##";t.registerLibrary(Kt,zt);export{F as BadRequestError,$ as BaseError,Vt as BaseRepository,Et as BlockOperations,j as BulkCrudOperationKeys,z as ConflictError,$t as Context,R as DBKeys,C as DBOperations,v as DEFAULT_ERROR_MESSAGES,b as DEFAULT_TIMESTAMP_FORMAT,Ut as DefaultContextFactory,Mt as DefaultRepositoryFlags,D as DefaultSeparator,H as InternalError,x as ModelOperations,Y as NotFoundError,k as OperationKeys,U as Operations,M as OperationsRegistry,Kt as PACKAGE_NAME,L as ReadOnlyValidator,Yt as Repository,V as SerializationError,I as TimestampValidator,S as UpdateValidationKeys,N as UpdateValidator,zt as VERSION,_ as ValidationError,dt as after,pt as afterAny,ct as afterCreate,ot as afterCreateUpdate,lt as afterDelete,ut as afterRead,it as afterUpdate,kt as composed,Lt as composedFromCreateUpdate,Nt as composedFromKeys,Q as enforceDBDecorators,G as getDbDecorators,K as getHandlerArgs,J as getHandlersDecorators,Ot as getValidatableUpdateProps,Z as groupDecorators,St as hash,vt as hashOnCreateUpdate,Pt as id,at as on,st as onAny,et as onCreate,X as onCreateUpdate,nt as onDelete,rt as onRead,tt as onUpdate,ht as operation,Ft as prefixMethod,yt as readonly,wt as serialize,Tt as serializeAfterAll,gt as serializeOnCreateUpdate,W as sortDecorators,ft as storeHandlerMetadata,_t as suffixMethod,At as timestamp,mt as timestampHandler,Ct as transient,bt as validateCompare,Rt as validateDecorator,Dt as validateDecorators,jt as version,xt as versionCreateUpdate,Ht as wrapMethodWithContext};
1
+ import{Metadata as t,propMetadata as e,apply as r,metadata as s,Decoration as n}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 p,innerValidationDecorator as d,type as h,date as f,required as E,toConditionalPromise as y,ValidationKeys as m,Model as A,ModelErrorDefinition as g,validate as T}from"@decaf-ts/decorator-validation";import{__decorate as w,__metadata as P}from"tslib";import{ObjectAccumulator as O}from"typed-object-accumulator";const R={REFLECT:a.MODEL+".persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},D="_",S="dd/MM/yyyy HH:mm:ss:S",b={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:R.TIMESTAMP,READONLY:R.READONLY};let v=class extends i{constructor(){super(b.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(b.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,x,C;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"})(x||(x={})),(t=>{t.CREATE_ALL="createAll",t.READ_ALL="readAll",t.UPDATE_ALL="updateAll",t.DELETE_ALL="deleteAll"})(C||(C={}));const j={CREATE:[k.CREATE],READ:[k.READ],UPDATE:[k.UPDATE],DELETE:[k.DELETE],CREATE_UPDATE:[k.CREATE,k.UPDATE],READ_CREATE:[k.READ,k.CREATE],ALL:[k.CREATE,k.READ,k.UPDATE,k.DELETE]};class M{constructor(){this.cache={}}get(t,e,r,s){let n;s=s||[];try{n="string"==typeof t?t:t.constructor.name,s.unshift(...Object.values(this.cache[n][e][r]||[]))}catch(e){if("string"==typeof t||t===Object.prototype||Object.getPrototypeOf(t)===Object.prototype)return s}let a=Object.getPrototypeOf(t);return a.constructor.name===n&&(a=Object.getPrototypeOf(a)),this.get(a,e,r,s)}register(t,e,r,s){const n=r.constructor.name,a=U.getHandlerName(t);this.cache[n]||(this.cache[n]={}),this.cache[n][s]||(this.cache[n][s]={}),this.cache[n][s][e]||(this.cache[n][s][e]={}),this.cache[n][s][e][a]||(this.cache[n][s][e][a]=t)}}class U{constructor(){}static getHandlerName(t){return t.name?t.name:p.hash(t.toString())}static key(t){return k.REFLECT+t}static get(t,e,r){return U.registry.get(t,e,r)}static getOpRegistry(){return U.registry||(U.registry=new M),U.registry}static register(t,e,r,s){U.getOpRegistry().register(t,e,r,s)}}class $ extends Error{constructor(t,e,r){if(e instanceof $)return e;super(`[${t}] ${e instanceof Error?e.message:e}`),this.code=r,e instanceof Error&&(this.stack=e.stack)}}class F extends ${constructor(t,e=F.name,r=400){super(e,t,r)}}class _ extends F{constructor(t){super(t,_.name,422)}}class H extends ${constructor(t,e=H.name,r=500){super(e,t,r)}}class V extends H{constructor(t){super(t,V.name,500)}}class Y extends F{constructor(t){super(t,Y.name,404)}}class z extends F{constructor(t){super(t,z.name,409)}}const K=(t,e,r,s)=>{const n=r.constructor.name;if(!n)throw new H("Could not determine model class");s=s||{},t.props.handlers[n]&&t.props.handlers[n][e]&&(s={...t.props.handlers[n][e],...s});let a=Object.getPrototypeOf(r);return a===Object.prototype?s:(a.constructor.name===n&&(a=Object.getPrototypeOf(a)),K(t,e,a,s))};async function Q(t,e,r,s,n,a){const o=G(r,s,n);if(!o)return;const i=W(Z(J(r,o,n)));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(s===k.UPDATE&&n===k.ON){if(!a)throw new H("Missing old model for update operation");i.push(a)}try{await o.handler.apply(t,i)}catch(t){const s=`Failed to execute handler ${o.handler.name} for ${o.prop} on ${r.constructor.name} due to error: ${t}`;if(e.get("breakOnHandlerError"))throw new H(s)}}}function G(e,r,s){const n=s?.replace(/[.]$/,""),a=t.get(e.constructor,x.OPERATIONS);if(a)return Object.keys(a).reduce((t,e)=>{const s=n?a[e][n]||{}:a[e],o=Object.keys(s).filter(t=>t===r),i=[];for(const t of o)i.push({key:t,props:s[t]});return i&&i.length&&(t||(t={}),t[e]=i),t},void 0)}const q=50,B={priority:q};function J(t,e,r){const s=[];for(const n in e){const a=e[n];for(const e of a){const{key:a}=e,o=U.get(t,n,r+a);if(!o||!o.length)throw new H(`Could not find registered handler for the operation ${r+a} under property ${n}`);const i=K(e,n,t);if(!i||Object.values(i).length!==o.length)throw new H("Args and handlers length do not match");for(let t=0;t<o.length;t++){const e=i[o[t].name].data;s.push({handler:o[t],data:[e],prop:[n]})}}}return s}function Z(t){const e=t.reduce((t,e)=>{if(!e||!e.data||!e.prop)throw new H("Missing decorator properties or data");if(!e.data[0].group)return t.set(Symbol(),e),t;const r=e.data[0].group;if(t.has(r)){const s=t.get(r);t.set(r,{handler:s.handler,data:[...s.data,...e.data],prop:[...s.prop,...e.prop]})}else t.set(r,{...e});return t},new Map),r=Array.from(e.values());return r.forEach(t=>{const e=t.data.map((e,r)=>({data:e,prop:t.prop[r]}));e.sort((t,e)=>(t.data.groupPriority??50)-(e.data.groupPriority??50)),t.data=e.map(t=>t.data),t.prop=e.map(t=>t.prop)}),r}function W(t){return t.sort((t,e)=>(t.data[0].priority??q)-(e.data[0].priority??q)),t}function X(t,e,r){return at(j.CREATE_UPDATE,t,e,r)}function tt(t,e,r){return at(j.UPDATE,t,e,r)}function et(t,e,r){return at(j.CREATE,t,e,r)}function rt(t,e,r){return at(j.READ,t,e,r)}function st(t,e,r){return at(j.DELETE,t,e,r)}function nt(t,e,r){return at(j.ALL,t,e,r)}function at(t=j.ALL,e,r,s){return ht(k.ON,t,e,r,s)}function ot(t,e,r){return dt(j.CREATE_UPDATE,t,e,r)}function it(t,e,r){return dt(j.UPDATE,t,e,r)}function ct(t,e,r){return dt(j.CREATE,t,e,r)}function lt(t,e,r){return dt(j.READ,t,e,r)}function ut(t,e,r){return dt(j.DELETE,t,e,r)}function pt(t,e,r){return dt(j.ALL,t,e,r)}function dt(t=j.ALL,e,r,s){return ht(k.AFTER,t,e,r,s)}function ht(s,n=j.ALL,a,o,i=B){return(c,l)=>{const u=c.constructor.name,p=n.reduce((r,n)=>{const p=s+n;let d=t.readOperation(c.constructor,l,p);d||(d={operation:n,handlers:{}});const h=U.getHandlerName(a);let f=i;if(o){if(Object.keys(o).filter(t=>t in i).length>0)throw new H("Unable to merge groupSort into dataToAdd due to overlaping keys");f={...i,...o}}return d.handlers[u]&&d.handlers[u][l]&&h in d.handlers[u][l]||(d.handlers[u]=d.handlers[u]||{},d.handlers[u][l]=d.handlers[u][l]||{},d.handlers[u][l][h]={data:f},r.push(((t,e)=>(r,s)=>{U.register(e,t,r,s)})(p,a),e(t.key(x.OPERATIONS,l,p),d))),r},[]);return r(...p)(c,l)}}function ft(t,e){return(...r)=>s(t,{args:r,handler:e})}const Et=t=>ft(k.REFLECT+k.BLOCK,(t,e)=>t.includes(e))(t);function yt(t=b.READONLY.INVALID){const e=R.READONLY,r={message:t,description:"defines the attribute as readOnly",async:!1};return n.for(e).define({decorator:d,args:[yt,e,r]}).apply()}async function mt(t,e,r,s){s[r]=t.timestamp}function At(t=j.CREATE_UPDATE,s=S){const a=u.updateKey(R.TIMESTAMP);return n.for(a).define({decorator:(t,s)=>{const n=[f(s,b.TIMESTAMP.DATE),E(b.TIMESTAMP.REQUIRED),e(u.key(R.TIMESTAMP),{operation:t,format:s}),at(t,mt)];return-1!==t.indexOf(k.UPDATE)?n.push(e(a,{message:b.TIMESTAMP.INVALID})):n.push(yt()),r(...n)},args:[t,s]}).apply()}async function gt(t,e,r,s){if(s[r])try{s[r]=JSON.stringify(s[r])}catch(t){throw new V(`Failed to serialize ${r.toString()} property of model ${s.constructor.name}: e`)}}async function Tt(t,e,r,s){if(s[r]&&"string"==typeof s[r])try{s[r]=JSON.parse(s[r])}catch(t){throw new V(`Failed to deserialize ${r.toString()} property of model ${s.constructor.name}: ${t}`)}}function wt(){return r(X(gt),dt(j.ALL,Tt),h([String,Object]),s(R.SERIALIZE,{}))}function Pt(){return r(E(),yt(),(r,s)=>e(t.key(R.ID,s),{})(r,s))}function Ot(e,r){const s=[];for(const n in e){if(!Object.prototype.hasOwnProperty.call(e,n)||r.includes(n))continue;const a=t.validationFor(e.constructor,n)||{};s.push({prop:n,decorators:a})}return s}function Rt(t,e,r,s,n){const a=u.get(s.key);if(!a)throw Error("Missing validator for "+s.key);if(!a.updateHasErrors)return y(void 0,n);if(!n&&s.async)return y(void 0,n);const o=Object.values(s)||{},i=a.updateHasErrors(t[r],e[r],...o);return y(i,n)}function Dt(t,e,r,s,n){const a={};for(const o in s){const i={...s[o],key:o};if(!n&&i.async)continue;let c=Rt(t,e,r,i,n);if(i.key===m.LIST&&(!c||n)){const s=t[r],a=e[r],o=s instanceof Set?[...s]:s,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=A.pk(e,!0);if(!r)return"Failed to find model id";const s=l.find(t=>r===A.pk(t,!0));return A.isModel(e)?e.hasErrors(s):t.includes(typeof e)?void 0:"Value has no validatable type"});if(n)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(!n)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 s=t[r];void 0!==s&&(e[o[r]]=s)}return Object.keys(e).length>0?e:void 0})}function St(e,r,s,...n){const o=Ot(r,n),i={},c={};for(const{prop:n,decorators:l}of o){const o=n+"",u=r[n],{designTypes:p,designType:d}=t.getPropDesignTypes(r.constructor,n);if(!p)continue;if(p.some(t=>[Array.name,Set.name].includes(t))){if(!l||!Object.keys(l).includes(m.LIST)){i[o]={[m.TYPE]:`Array or Set property '${o}' requires a @list decorator`};continue}if(u&&!(Array.isArray(u)||u instanceof Set)){i[o]={[m.TYPE]:`Property '${n+""}' must be either an Array or a Set`};continue}}const h=Dt(r,e,o,l,s)||{},f=A.isPropertyModel(r,o);if(null!=u&&f){const t=u,r=(Array.isArray(d)?d:[d]).map(t=>("function"!=typeof t||t.name||(t=t()),A.get(t.name||t))).find(t=>!!t);r&&t instanceof r?c[o]=t.hasErrors(e[n]):(h[m.TYPE]=r?"Value must be an instance of "+r.name:`Unable to verify type consistency, missing model registry for ${p.toString()} on prop ${o}`,delete h[a.TYPE])}(Object.keys(h).length>0||s)&&(i[o]=h),s||Object.entries(c[o]||{}).forEach(([t,e])=>{void 0!==e&&(i[`${o}.${t}`]=e)})}if(!s)return Object.keys(i).length>0?new g(i):void 0;const l=i,u=Object.keys(l),p=Object.values(l);return Promise.allSettled(p).then(async t=>{const e={};for(const[t,r]of Object.entries(c)){const s=await r;s&&Object.entries(s).forEach(([r,s])=>{void 0!==s&&(e[[t,r].join(".")]=s)})}for(let r=0;r<t.length;r++){const s=u[r],n=t[r];"fulfilled"===n.status&&void 0!==n.value?e[s]=n.value:"rejected"===n.status&&(e[s]=n.reason instanceof Error?n.reason.message:(n.reason||"Validation failed")+"")}return Object.keys(e).length>0?new g(e):void 0})}function bt(t,e,r,s,n){if(void 0===s[r])return;const a=p.hash(s[r]);n&&s[r]===a||(s[r]=a)}function Lt(){return r(X(bt),e(R.HASH,{}))}function vt(t,e,r,s){try{const{args:t,type:n,prefix:a,suffix:o,separator:i}=e,c=t.map(e=>{if(!(e in s))throw new H(`Property ${e} not found to compose from`);if("keys"===n)return e;if(void 0===s[e])throw new H(`Property ${t} does not contain a value to compose from`);return s[e].toString()});a&&c.unshift(a),o&&c.push(o),s[r]=c.join(i)}catch(t){throw new H("Failed to compose value: "+t)}}function It(t,s=!1,n=D,a="values",o="",i="",c={priority:55}){const l={args:t,hashResult:s,separator:n,type:a,prefix:o,suffix:i},u=[X(vt,l,c),e(R.COMPOSED,l)];return s&&u.push(Lt()),r(...u)}function Nt(t,e=D,r=!1,s="",n="",a={priority:55}){return It(t,r,e,"keys",s,n,a)}function kt(t,e=D,r=!1,s="",n="",a={priority:55}){return It(t,r,e,"values",s,n,a)}function xt(t){return(e,r,s,n)=>{try{switch(t){case k.CREATE:n[s]=1;break;case k.UPDATE:n[s]++;break;default:throw new H("Invalid operation: "+t)}}catch(t){throw new H("Failed to update version: "+t)}}}function Ct(){const t=R.VERSION;return n.for(t).define(h(Number),et(xt(k.CREATE)),tt(xt(k.UPDATE)),e(t,!0)).apply()}function jt(){return n.for(R.TRANSIENT).define((r,s)=>{e(R.TRANSIENT,!0)(r.constructor),e(t.key(R.TRANSIENT,s),{})(r,s)}).apply()}A.prototype.isTransient=function(){return t.isTransient(this)},A.prototype.hasErrors=function(t,...e){!t||t instanceof A||(e.unshift(t),t=void 0);const r=this.isAsync(),s=T(this,r,...e);return r?Promise.resolve(s).then(s=>s||!t?s:St(t,this,r,...e)):s||!t?s:St(t,this,r,...e)},A.prototype.segregate=function(){return A.segregate(this)},A.segregate=e=>{if(!t.isTransient(e))return{model:e};const r=t.validatableProperties(e.constructor),s=t.get(e.constructor,R.TRANSIENT),n={model:{},transient:{}};for(const t of r)if(Object.keys(s).includes(t)){n.transient=n.transient||{};try{n.transient[t]=e[t]}catch(e){throw new V(`Failed to serialize transient property ${t}: ${e}`)}}else n.model=n.model||{},n.model[t]=e[t];return n.model=A.build(n.model,e.constructor.name),n},A.pk=((e,r=!1)=>{if(!e)throw Error("No model was provided");const s=e instanceof A?e.constructor:e,n=t.get(s,R.ID);if(!n)throw Error("No Id property defined for model "+(s?.name||"Unknown Model"));const a=Object.keys(n)[0];if(!r)return a;if(e instanceof A)return e[a];throw Error("Cannot get the value of the pk from the constructor")}).bind(A),A.isTransient=(e=>t.isTransient(e)).bind(A),t.saveOperation=((e,r,s,n)=>{r&&t.set(e,t.key(x.OPERATIONS,r,s),n)}).bind(t),t.readOperation=((e,r,s)=>{if(r&&s)return t.get(e,t.key(x.OPERATIONS,r,s))}).bind(t),t.isTransient=(e=>!!t.get("function"!=typeof e?e.constructor:e,R.TRANSIENT)).bind(t);const Mt={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},Ut=t=>(new $t).accumulate(Object.assign({},t,{timestamp:new Date}));class $t{constructor(){this.cache=new O,Object.defineProperty(this,"cache",{value:new O,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=Ut}accumulate(t){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(t),writable:!1,enumerable:!1,configurable:!0}),this}get timestamp(){return this.cache.timestamp}get(t){try{return this.cache.get(t)}catch(e){const r=this.cache.parentContext;if(r)return r.get(t);throw e}}static childFrom(t,e){return $t.factory(Object.assign({},t.cache,e||{}))}static async from(t,e,r,...s){return $t.factory(Object.assign({},Mt,e,{operation:t,model:r}))}static async args(t,e,r,s,n){const a=r.pop();async function o(){return s?s.context(t,n||{},e,...r):$t.from(t,n||{},e,...r)}let i;return a?a instanceof $t?(i=a,r.push(a)):(r.push(a),i=await o(),r.push(i)):(i=await o(),r.push(i)),{context:i,args:r}}}function Ft(t,e,r,s){const n=s||e.name;t[n]=new Proxy(t[n],{apply:async(t,e,s)=>{let n=r.call(e,...s);return n instanceof Promise&&(n=await n),n=t.call(e,...n),n instanceof Promise&&(n=await n),n}})}function _t(t,e,r,s){const n=s||e.name;t[n]=new Proxy(t[n],{apply:async(t,e,s)=>{let n=t.call(e,...s);return n instanceof Promise&&(n=await n),n=r.call(e,...n),n instanceof Promise&&(n=await n),n}})}function Ht(t,e,r,s,n){const a=n||r.name;t[a]=new Proxy(t[a],{apply:async(t,r,n)=>{let a=e.call(r,...n);a instanceof Promise&&(a=await a);const o=a[a.length-1];if(!(o instanceof $t))throw new H("Missing a context");let i=t.call(r,...a);return i instanceof Promise&&(i=await i),i=s.call(r,i,o),i instanceof Promise&&(i=await i),i}})}class Vt{get class(){if(!this._class)throw new H("No class definition found for this repository");return this._class}get pk(){return this._pk||(this._pk=A.pk(this.class),this._pkProps=t.get(this.class,t.key(R.ID,this._pk))),this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(t){t&&(this._class=t);const e=this;[this.create,this.read,this.update,this.delete].forEach(t=>{const r=t.name;Ht(e,e[r+"Prefix"],t,e[r+"Suffix"])})}async createAll(t,...e){return Promise.all(t.map(t=>this.create(t,...e)))}async createPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);return t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON),[t,...r.args]}async createSuffix(t,e){return await Q(this,e,t,k.CREATE,k.AFTER),t}async createAllPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);return await Promise.all(t.map(async t=>(t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON),t))),[t,...r.args]}async createAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.CREATE,k.AFTER))),t}async readAll(t,...e){return await Promise.all(t.map(t=>this.read(t,...e)))}async readSuffix(t,e){return await Q(this,e,t,k.READ,k.AFTER),t}async readPrefix(t,...e){const r=await $t.args(k.READ,this.class,e),s=new this.class;return s[this.pk]=t,await Q(this,r.context,s,k.READ,k.ON),[t,...r.args]}async readAllPrefix(t,...e){const r=await $t.args(k.READ,this.class,e);return await Promise.all(t.map(async t=>{const e=new this.class;return e[this.pk]=t,Q(this,r.context,e,k.READ,k.ON)})),[t,...r.args]}async readAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.READ,k.AFTER))),t}async updateAll(t,...e){return Promise.all(t.map(t=>this.update(t,...e)))}async updateSuffix(t,e){return await Q(this,e,t,k.UPDATE,k.AFTER),t}async updatePrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),s=t[this.pk];if(!s)throw new H("No value for the Id is defined under the property "+this.pk);const n=await this.read(s);return await Q(this,r.context,t,k.UPDATE,k.ON,n),[t,...r.args]}async updateAllPrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e);return await Promise.all(t.map(t=>(t=new this.class(t),Q(this,r.context,t,k.UPDATE,k.ON),t))),[t,...r.args]}async updateAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.UPDATE,k.AFTER))),t}async deleteAll(t,...e){return Promise.all(t.map(t=>this.delete(t,...e)))}async deleteSuffix(t,e){return await Q(this,e,t,k.DELETE,k.AFTER),t}async deletePrefix(t,...e){const r=await $t.args(k.DELETE,this.class,e),s=await this.read(t,...r.args);return await Q(this,r.context,s,k.DELETE,k.ON),[t,...r.args]}async deleteAllPrefix(t,...e){const r=await $t.args(k.DELETE,this.class,e),s=await this.readAll(t,...r.args);return await Promise.all(s.map(async t=>Q(this,r.context,t,k.DELETE,k.ON))),[t,...r.args]}async deleteAllSuffix(t,e){return await Promise.all(t.map(t=>Q(this,e,t,k.DELETE,k.AFTER))),t}merge(t,e){const r=t=>Object.entries(t).reduce((t,[e,r])=>(void 0!==r&&(t[e]=r),t),{});return new this.class(Object.assign({},r(t),r(e)))}toString(){return this.class.name+" Repository"}}class Yt extends Vt{constructor(t){super(t)}async createPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON);const s=await Promise.resolve(t.hasErrors());if(s)throw new _(s.toString());return[t,...r.args]}async createAllPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);await Promise.all(t.map(async t=>(t=new this.class(t),await Q(this,r.context,t,k.CREATE,k.ON),t)));const s=(await Promise.all(t.map(t=>Promise.resolve(t.hasErrors())))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(s)throw new _(s);return[t,...r.args]}async updatePrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),s=t[this.pk];if(!s)throw new H("No value for the Id is defined under the property "+this.pk);const n=await this.read(s);t=this.merge(n,t),await Q(this,r.context,t,k.UPDATE,k.ON,n);const a=await Promise.resolve(t.hasErrors(n));if(a)throw new _(a.toString());return[t,...r.args]}async updateAllPrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),s=t.map(t=>{const e=t[this.pk];if(void 0===e)throw new H("No value for the Id is defined under the property "+this.pk);return e}),n=await this.readAll(s,...r.args);t=t.map((t,e)=>this.merge(n[e],t)),await Promise.all(t.map((t,e)=>Q(this,r.context,t,k.UPDATE,k.ON,n[e])));const a=(await Promise.all(t.map((t,e)=>Promise.resolve(t.hasErrors(n[e]))))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(a)throw new _(a);return[t,...r.args]}}const zt="##VERSION##",Kt="##PACKAGE##";t.registerLibrary(Kt,zt);export{F as BadRequestError,$ as BaseError,Vt as BaseRepository,Et as BlockOperations,C as BulkCrudOperationKeys,z as ConflictError,$t as Context,R as DBKeys,j as DBOperations,b as DEFAULT_ERROR_MESSAGES,S as DEFAULT_TIMESTAMP_FORMAT,Ut as DefaultContextFactory,Mt as DefaultRepositoryFlags,D as DefaultSeparator,H as InternalError,x as ModelOperations,Y as NotFoundError,k as OperationKeys,U as Operations,M as OperationsRegistry,Kt as PACKAGE_NAME,v as ReadOnlyValidator,Yt as Repository,V as SerializationError,I as TimestampValidator,L as UpdateValidationKeys,N as UpdateValidator,zt as VERSION,_ as ValidationError,dt as after,pt as afterAny,ct as afterCreate,ot as afterCreateUpdate,ut as afterDelete,lt as afterRead,it as afterUpdate,kt as composed,vt as composedFromCreateUpdate,Nt as composedFromKeys,Q as enforceDBDecorators,G as getDbDecorators,K as getHandlerArgs,J as getHandlersDecorators,Ot as getValidatableUpdateProps,Z as groupDecorators,Lt as hash,bt as hashOnCreateUpdate,Pt as id,at as on,nt as onAny,et as onCreate,X as onCreateUpdate,st as onDelete,rt as onRead,tt as onUpdate,ht as operation,Ft as prefixMethod,yt as readonly,wt as serialize,Tt as serializeAfterAll,gt as serializeOnCreateUpdate,W as sortDecorators,ft as storeHandlerMetadata,_t as suffixMethod,At as timestamp,mt as timestampHandler,jt as transient,St as validateCompare,Rt as validateDecorator,Dt as validateDecorators,Ct as version,xt as versionCreateUpdate,Ht as wrapMethodWithContext};
2
2
  //# sourceMappingURL=db-decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-decorators.js","sources":["../src/model/constants.ts","../src/validation/constants.ts","../src/validation/validators/ReadOnlyValidator.ts","../src/validation/validators/TimestampValidator.ts","../src/validation/validators/UpdateValidator.ts","../src/operations/constants.ts","../src/validation/validation.ts","../src/operations/OperationsRegistry.ts","../src/operations/Operations.ts","../src/repository/errors.ts","../src/repository/utils.ts","../src/operations/decorators.ts","../src/validation/decorators.ts","../src/identity/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/overrides/overrides.ts","../src/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/repository/BaseRepository.ts","../src/repository/Repository.ts","../src/index.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","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","ModelOperations","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","name","unshift","Object","values","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","getHandlerArgs","dec","prop","m","props","handlers","async","enforceDBDecorators","repo","context","model","prefix","oldModel","decorators","getDbDecorators","sortedDecorators","sortDecorators","groupDecorators","getHandlersDecorators","data","length","ON","push","apply","extraPrefix","replace","Metadata","OPERATIONS","keys","reduce","decorator","obj","filter","d","decs","defaultPriority","DefaultGroupSort","priority","handlerArgs","i","grouped","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","forEach","combined","map","sort","a","b","groupPriority","c","onCreateUpdate","groupsort","on","onUpdate","onCreate","onRead","onDelete","onAny","op","afterCreateUpdate","after","afterUpdate","afterCreate","afterRead","afterDelete","afterAny","AFTER","baseOp","dataToAdd","propertyKey","compoundKey","readOperation","handlerKey","mergeData","handle","propMetadata","storeHandlerMetadata","params","metadata","BlockOperations","operations","BLOCK","includes","readonly","meta","description","Decoration","for","define","innerValidationDecorator","timestampHandler","timestamp","format","date","required","indexOf","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","serialize","type","String","id","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","call","validationFor","validateDecorator","newModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","decoratorKey","validationErrors","ValidationKeys","LIST","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","class","clazz","customTypes","flat","t","toLowerCase","errs","childValue","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","suffix","separator","composed","arg","composedFrom","hashResult","composedFromKeys","versionCreateUpdate","version","Number","transient","attribute","isTransient","previousVersion","exclusions","isAsync","validate","resolve","resolvedErrs","toTransient","validatableProperties","transientProps","build","keyValue","constr","idProp","bind","saveOperation","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","DefaultContextFactory","Context","accumulate","assign","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","prefixMethod","afterName","wrapped","suffixMethod","before","beforeName","wrapMethodWithContext","method","methodName","Proxy","thisArg","argArray","transformedArgs","BaseRepository","_class","_pk","_pkProps","pkProps","self","create","read","update","delete","createAll","models","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","merge","extract","Repository","errors","ids","oldModels","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
1
+ {"version":3,"file":"db-decorators.js","sources":["../src/model/constants.ts","../src/validation/constants.ts","../src/validation/validators/ReadOnlyValidator.ts","../src/validation/validators/TimestampValidator.ts","../src/validation/validators/UpdateValidator.ts","../src/operations/constants.ts","../src/validation/validation.ts","../src/operations/OperationsRegistry.ts","../src/operations/Operations.ts","../src/repository/errors.ts","../src/repository/utils.ts","../src/operations/decorators.ts","../src/validation/decorators.ts","../src/identity/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/overrides/overrides.ts","../src/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/repository/BaseRepository.ts","../src/repository/Repository.ts","../src/index.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","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","ModelOperations","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","name","unshift","Object","values","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","getHandlerArgs","dec","prop","m","props","handlers","async","enforceDBDecorators","repo","context","model","prefix","oldModel","decorators","getDbDecorators","sortedDecorators","sortDecorators","groupDecorators","getHandlersDecorators","data","length","ON","push","apply","extraPrefix","replace","Metadata","OPERATIONS","keys","reduce","decorator","obj","filter","d","decs","defaultPriority","DefaultGroupSort","priority","handlerArgs","i","grouped","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","forEach","combined","map","sort","a","b","groupPriority","c","onCreateUpdate","groupsort","on","onUpdate","onCreate","onRead","onDelete","onAny","op","afterCreateUpdate","after","afterUpdate","afterCreate","afterRead","afterDelete","afterAny","AFTER","baseOp","dataToAdd","propertyKey","compoundKey","readOperation","handlerKey","mergeData","handle","propMetadata","storeHandlerMetadata","params","metadata","BlockOperations","operations","BLOCK","includes","readonly","meta","description","Decoration","for","define","innerValidationDecorator","timestampHandler","timestamp","format","date","required","indexOf","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","serialize","type","String","id","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","call","validationFor","validateDecorator","newModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","decoratorKey","validationErrors","ValidationKeys","LIST","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","class","clazz","customTypes","flat","t","toLowerCase","errs","childValue","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","suffix","separator","composed","arg","composedFrom","hashResult","composedFromKeys","versionCreateUpdate","version","Number","transient","attribute","isTransient","previousVersion","exclusions","isAsync","validate","resolve","resolvedErrs","segregate","validatableProperties","transientProps","build","keyValue","constr","idProp","bind","saveOperation","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","DefaultContextFactory","Context","accumulate","assign","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","prefixMethod","afterName","Proxy","thisArg","argArray","suffixMethod","before","beforeName","wrapMethodWithContext","method","methodName","transformedArgs","BaseRepository","_class","_pk","_pkProps","pkProps","self","create","read","update","delete","createAll","models","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","merge","extract","Repository","errors","ids","oldModels","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
@@ -16,5 +16,5 @@ export * from "./validation";
16
16
  * @const VERSION
17
17
  * @memberOf module:db-decorators
18
18
  */
19
- export declare const VERSION = "0.7.0";
19
+ export declare const VERSION = "0.7.3";
20
20
  export declare const PACKAGE_NAME = "@decaf-ts/db-decorators";
package/lib/esm/index.js CHANGED
@@ -17,7 +17,7 @@ export * from "./validation/index.js";
17
17
  * @const VERSION
18
18
  * @memberOf module:db-decorators
19
19
  */
20
- export const VERSION = "0.7.0";
20
+ export const VERSION = "0.7.3";
21
21
  export const PACKAGE_NAME = "@decaf-ts/db-decorators";
22
22
  Metadata.registerLibrary(PACKAGE_NAME, VERSION);
23
23
  //# sourceMappingURL=index.js.map
@@ -1,12 +1,11 @@
1
- import "@decaf-ts/decorator-validation";
2
1
  import { Constructor } from "@decaf-ts/decoration";
3
- import { Model as MM } from "@decaf-ts/decorator-validation";
2
+ import "@decaf-ts/decorator-validation";
4
3
  declare module "@decaf-ts/decorator-validation" {
5
4
  interface Model {
6
5
  isTransient(): boolean;
7
- toTransient<M extends MM>(this: M): {
6
+ segregate<M extends Model>(this: M): {
8
7
  model: M;
9
- transient?: Record<string, any>;
8
+ transient?: Record<keyof M, M[keyof M]>;
10
9
  };
11
10
  }
12
11
  namespace Model {
@@ -35,8 +34,7 @@ declare module "@decaf-ts/decorator-validation" {
35
34
  * @return {Object} Object containing the model without transient properties and a separate transient object
36
35
  * @property {M} model - The model with transient properties removed
37
36
  * @property {Record<string, any>} [transient] - Object containing the transient properties
38
- * @function modelToTransient
39
- * @memberOf module:db-decorators
37
+ * @function segregate
40
38
  * @mermaid
41
39
  * sequenceDiagram
42
40
  * participant Caller
@@ -57,9 +55,9 @@ declare module "@decaf-ts/decorator-validation" {
57
55
  * modelToTransient-->>Caller: {model, transient}
58
56
  * end
59
57
  */
60
- function toTransient<M extends Model>(model: M): {
58
+ function segregate<M extends Model>(model: M): {
61
59
  model: M;
62
- transient?: Record<string, any>;
60
+ transient?: Record<keyof M, M[keyof M]>;
63
61
  };
64
62
  }
65
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../src/overrides/Model.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC"}
1
+ {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../src/overrides/Model.ts"],"names":[],"mappings":"AACA,OAAO,gCAAgC,CAAC"}
@@ -37,10 +37,10 @@ Model.prototype.hasErrors = function (previousVersion, ...exclusions) {
37
37
  // @ts-expect-error Overriding Model prototype method with dynamic conditional return type.
38
38
  return validateCompare(previousVersion, this, async, ...exclusions);
39
39
  };
40
- Model.prototype.toTransient = function toTransient() {
41
- return Model.toTransient(this);
40
+ Model.prototype.segregate = function segregate() {
41
+ return Model.segregate(this);
42
42
  };
43
- Model.toTransient = function toTransient(model) {
43
+ Model.segregate = function segregate(model) {
44
44
  if (!Metadata.isTransient(model))
45
45
  return { model: model };
46
46
  const decoratedProperties = Metadata.validatableProperties(model.constructor);
@@ -1 +1 @@
1
- {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../../src/overrides/overrides.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../../src/overrides/overrides.ts"],"names":[],"mappings":"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"}
@@ -12,19 +12,18 @@ import { InternalError } from "./errors.js";
12
12
  * @memberOf module:db-decorators
13
13
  */
14
14
  export function prefixMethod(obj, after, prefix, afterName) {
15
- async function wrapper(...args) {
16
- const results = await Promise.resolve(prefix.call(this, ...args));
17
- return Promise.resolve(after.apply(this, results));
18
- }
19
- const wrapped = wrapper.bind(obj);
20
15
  const name = afterName ? afterName : after.name;
21
- Object.defineProperty(wrapped, "name", {
22
- enumerable: true,
23
- configurable: true,
24
- writable: false,
25
- value: name,
16
+ obj[name] = new Proxy(obj[name], {
17
+ apply: async (target, thisArg, argArray) => {
18
+ let results = prefix.call(thisArg, ...argArray);
19
+ if (results instanceof Promise)
20
+ results = await results;
21
+ results = target.call(thisArg, ...results);
22
+ if (results instanceof Promise)
23
+ results = await results;
24
+ return results;
25
+ },
26
26
  });
27
- obj[name] = wrapped;
28
27
  }
29
28
  /**
30
29
  * @summary Util method to change a method of an object suffixing it with another
@@ -38,19 +37,18 @@ export function prefixMethod(obj, after, prefix, afterName) {
38
37
  * @memberOf module:db-decorators.Repository
39
38
  */
40
39
  export function suffixMethod(obj, before, suffix, beforeName) {
41
- async function wrapper(...args) {
42
- const results = await Promise.resolve(before.call(this, ...args));
43
- return suffix.call(this, ...results);
44
- }
45
- const wrapped = wrapper.bind(obj);
46
40
  const name = beforeName ? beforeName : before.name;
47
- Object.defineProperty(wrapped, "name", {
48
- enumerable: true,
49
- configurable: true,
50
- writable: false,
51
- value: name,
41
+ obj[name] = new Proxy(obj[name], {
42
+ apply: async (target, thisArg, argArray) => {
43
+ let results = target.call(thisArg, ...argArray);
44
+ if (results instanceof Promise)
45
+ results = await results;
46
+ results = suffix.call(thisArg, ...results);
47
+ if (results instanceof Promise)
48
+ results = await results;
49
+ return results;
50
+ },
52
51
  });
53
- obj[name] = wrapped;
54
52
  }
55
53
  /**
56
54
  * @summary Util method to wrap a method of an object with additional logic
@@ -75,7 +73,7 @@ export function wrapMethodWithContext(obj, before, method, after, methodName) {
75
73
  const context = transformedArgs[transformedArgs.length - 1];
76
74
  if (!(context instanceof Context))
77
75
  throw new InternalError("Missing a context");
78
- let results = await target.call(thisArg, ...transformedArgs);
76
+ let results = target.call(thisArg, ...transformedArgs);
79
77
  if (results instanceof Promise)
80
78
  results = await results;
81
79
  results = after.call(thisArg, results, context);
@@ -1 +1 @@
1
- {"version":3,"file":"wrappers.js","sourceRoot":"","sources":["../../../src/repository/wrappers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrappers.js","sourceRoot":"","sources":["../../../src/repository/wrappers.ts"],"names":[],"mappings":"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"}
package/lib/index.cjs CHANGED
@@ -34,7 +34,7 @@ __exportStar(require("./validation/index.cjs"), exports);
34
34
  * @const VERSION
35
35
  * @memberOf module:db-decorators
36
36
  */
37
- exports.VERSION = "0.7.0";
37
+ exports.VERSION = "0.7.3";
38
38
  exports.PACKAGE_NAME = "@decaf-ts/db-decorators";
39
39
  decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
40
40
  //# sourceMappingURL=index.js.map
package/lib/index.d.ts CHANGED
@@ -16,5 +16,5 @@ export * from "./validation";
16
16
  * @const VERSION
17
17
  * @memberOf module:db-decorators
18
18
  */
19
- export declare const VERSION = "0.7.0";
19
+ export declare const VERSION = "0.7.3";
20
20
  export declare const PACKAGE_NAME = "@decaf-ts/db-decorators";
@@ -1,12 +1,11 @@
1
- import "@decaf-ts/decorator-validation";
2
1
  import { Constructor } from "@decaf-ts/decoration";
3
- import { Model as MM } from "@decaf-ts/decorator-validation";
2
+ import "@decaf-ts/decorator-validation";
4
3
  declare module "@decaf-ts/decorator-validation" {
5
4
  interface Model {
6
5
  isTransient(): boolean;
7
- toTransient<M extends MM>(this: M): {
6
+ segregate<M extends Model>(this: M): {
8
7
  model: M;
9
- transient?: Record<string, any>;
8
+ transient?: Record<keyof M, M[keyof M]>;
10
9
  };
11
10
  }
12
11
  namespace Model {
@@ -35,8 +34,7 @@ declare module "@decaf-ts/decorator-validation" {
35
34
  * @return {Object} Object containing the model without transient properties and a separate transient object
36
35
  * @property {M} model - The model with transient properties removed
37
36
  * @property {Record<string, any>} [transient] - Object containing the transient properties
38
- * @function modelToTransient
39
- * @memberOf module:db-decorators
37
+ * @function segregate
40
38
  * @mermaid
41
39
  * sequenceDiagram
42
40
  * participant Caller
@@ -57,9 +55,9 @@ declare module "@decaf-ts/decorator-validation" {
57
55
  * modelToTransient-->>Caller: {model, transient}
58
56
  * end
59
57
  */
60
- function toTransient<M extends Model>(model: M): {
58
+ function segregate<M extends Model>(model: M): {
61
59
  model: M;
62
- transient?: Record<string, any>;
60
+ transient?: Record<keyof M, M[keyof M]>;
63
61
  };
64
62
  }
65
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../src/overrides/Model.ts"],"names":[],"mappings":";;AAAA,0CAAwC"}
1
+ {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../src/overrides/Model.ts"],"names":[],"mappings":";;AACA,0CAAwC"}
@@ -39,10 +39,10 @@ decorator_validation_1.Model.prototype.hasErrors = function (previousVersion, ..
39
39
  // @ts-expect-error Overriding Model prototype method with dynamic conditional return type.
40
40
  return (0, validation_1.validateCompare)(previousVersion, this, async, ...exclusions);
41
41
  };
42
- decorator_validation_1.Model.prototype.toTransient = function toTransient() {
43
- return decorator_validation_1.Model.toTransient(this);
42
+ decorator_validation_1.Model.prototype.segregate = function segregate() {
43
+ return decorator_validation_1.Model.segregate(this);
44
44
  };
45
- decorator_validation_1.Model.toTransient = function toTransient(model) {
45
+ decorator_validation_1.Model.segregate = function segregate(model) {
46
46
  if (!decoration_1.Metadata.isTransient(model))
47
47
  return { model: model };
48
48
  const decoratedProperties = decoration_1.Metadata.validatableProperties(model.constructor);
@@ -1 +1 @@
1
- {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/overrides/overrides.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/overrides/overrides.ts"],"names":[],"mappings":"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"}
@@ -17,19 +17,18 @@ const errors_1 = require("./errors.cjs");
17
17
  * @memberOf module:db-decorators
18
18
  */
19
19
  function prefixMethod(obj, after, prefix, afterName) {
20
- async function wrapper(...args) {
21
- const results = await Promise.resolve(prefix.call(this, ...args));
22
- return Promise.resolve(after.apply(this, results));
23
- }
24
- const wrapped = wrapper.bind(obj);
25
20
  const name = afterName ? afterName : after.name;
26
- Object.defineProperty(wrapped, "name", {
27
- enumerable: true,
28
- configurable: true,
29
- writable: false,
30
- value: name,
21
+ obj[name] = new Proxy(obj[name], {
22
+ apply: async (target, thisArg, argArray) => {
23
+ let results = prefix.call(thisArg, ...argArray);
24
+ if (results instanceof Promise)
25
+ results = await results;
26
+ results = target.call(thisArg, ...results);
27
+ if (results instanceof Promise)
28
+ results = await results;
29
+ return results;
30
+ },
31
31
  });
32
- obj[name] = wrapped;
33
32
  }
34
33
  /**
35
34
  * @summary Util method to change a method of an object suffixing it with another
@@ -43,19 +42,18 @@ function prefixMethod(obj, after, prefix, afterName) {
43
42
  * @memberOf module:db-decorators.Repository
44
43
  */
45
44
  function suffixMethod(obj, before, suffix, beforeName) {
46
- async function wrapper(...args) {
47
- const results = await Promise.resolve(before.call(this, ...args));
48
- return suffix.call(this, ...results);
49
- }
50
- const wrapped = wrapper.bind(obj);
51
45
  const name = beforeName ? beforeName : before.name;
52
- Object.defineProperty(wrapped, "name", {
53
- enumerable: true,
54
- configurable: true,
55
- writable: false,
56
- value: name,
46
+ obj[name] = new Proxy(obj[name], {
47
+ apply: async (target, thisArg, argArray) => {
48
+ let results = target.call(thisArg, ...argArray);
49
+ if (results instanceof Promise)
50
+ results = await results;
51
+ results = suffix.call(thisArg, ...results);
52
+ if (results instanceof Promise)
53
+ results = await results;
54
+ return results;
55
+ },
57
56
  });
58
- obj[name] = wrapped;
59
57
  }
60
58
  /**
61
59
  * @summary Util method to wrap a method of an object with additional logic
@@ -80,7 +78,7 @@ function wrapMethodWithContext(obj, before, method, after, methodName) {
80
78
  const context = transformedArgs[transformedArgs.length - 1];
81
79
  if (!(context instanceof Context_1.Context))
82
80
  throw new errors_1.InternalError("Missing a context");
83
- let results = await target.call(thisArg, ...transformedArgs);
81
+ let results = target.call(thisArg, ...transformedArgs);
84
82
  if (results instanceof Promise)
85
83
  results = await results;
86
84
  results = after.call(thisArg, results, context);
@@ -1 +1 @@
1
- {"version":3,"file":"wrappers.js","sourceRoot":"","sources":["../../src/repository/wrappers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrappers.js","sourceRoot":"","sources":["../../src/repository/wrappers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decaf-ts/db-decorators",
3
- "version": "0.7.1",
3
+ "version": "0.7.3",
4
4
  "description": "Agnostic database decorators and repository",
5
5
  "type": "module",
6
6
  "exports": {