@decaf-ts/db-decorators 0.6.12 → 0.6.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -27,7 +27,7 @@ The db-decorators library provides a comprehensive set of TypeScript decorators
27
27
 
28
28
  Documentation available [here](https://decaf-ts.github.io/db-decorators/)
29
29
 
30
- Minimal size: 7.1 KB kb gzipped
30
+ Minimal size: ##PACKAGE_SIZE## kb gzipped
31
31
 
32
32
 
33
33
 
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,a,o){"use strict";const s={REFLECT:t.ModelKeys.REFLECT+"persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},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"}},p={REFLECT:"db.update.validation.",TIMESTAMP:s.TIMESTAMP,READONLY:s.READONLY};e.ReadOnlyValidator=class extends t.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([t.validator(p.READONLY),r.__metadata("design:paramtypes",[])],e.ReadOnlyValidator),e.TimestampValidator=class extends t.Validator{constructor(){super(c.TIMESTAMP.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,r){if(void 0!==e){r=r||this.getMessage(r||this.message);try{e=new Date(e),t=new Date(t)}catch(e){return r}return e>t?void 0:r}}},e.TimestampValidator=r.__decorate([t.validator(p.TIMESTAMP),r.__metadata("design:paramtypes",[])],e.TimestampValidator);class l extends t.Validator{constructor(e=t.DEFAULT_ERROR_MESSAGES.DEFAULT,...r){super(e,...r)}}var d,u;t.Validation.updateKey=e=>p.REFLECT+e,e.OperationKeys=void 0,(d=e.OperationKeys||(e.OperationKeys={})).REFLECT="decaf.model.db.operations.",d.CREATE="create",d.READ="read",d.UPDATE="update",d.DELETE="delete",d.ON="on.",d.AFTER="after.",e.BulkCrudOperationKeys=void 0,(u=e.BulkCrudOperationKeys||(e.BulkCrudOperationKeys={})).CREATE_ALL="createAll",u.READ_ALL="readAll",u.UPDATE_ALL="updateAll",u.DELETE_ALL="deleteAll";const y={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,r,a){let o;a=a||[];try{o="string"==typeof e?e:e.constructor.name,a.unshift(...Object.values(this.cache[o][t][r]||[]))}catch(t){if("string"==typeof e||e===Object.prototype||Object.getPrototypeOf(e)===Object.prototype)return a}let s=Object.getPrototypeOf(e);return s.constructor.name===o&&(s=Object.getPrototypeOf(s)),this.get(s,t,r,a)}register(e,t,r,a){const o=r.constructor.name,s=h.getHandlerName(e);this.cache[o]||(this.cache[o]={}),this.cache[o][a]||(this.cache[o][a]={}),this.cache[o][a][t]||(this.cache[o][a][t]={}),this.cache[o][a][t][s]||(this.cache[o][a][t][s]=e)}}class h{constructor(){}static getHandlerName(e){return e.name?e.name:t.Hashing.hash(e.toString())}static key(t){return e.OperationKeys.REFLECT+t}static get(e,t,r){return h.registry.get(e,t,r)}static getOpRegistry(){return h.registry||(h.registry=new f),h.registry}static register(e,t,r,a){h.getOpRegistry().register(e,t,r,a)}}class E extends Error{constructor(e,t,r){if(t instanceof E)return t;super(`[${e}] ${t instanceof Error?t.message:t}`),this.code=r,t instanceof Error&&(this.stack=t.stack)}}class O extends E{constructor(e,t=O.name,r=400){super(t,e,r)}}class m extends O{constructor(e){super(e,m.name,422)}}class A extends E{constructor(e,t=A.name,r=500){super(t,e,r)}}class g extends A{constructor(e){super(e,g.name,500)}}class T extends O{constructor(e){super(e,T.name,404)}}class w extends O{constructor(e){super(e,w.name,409)}}const P=(e,t,r,a)=>{const o=r.constructor.name;if(!o)throw new A("Could not determine model class");a=a||{},e.props.handlers[o]&&e.props.handlers[o][t]&&(a={...e.props.handlers[o][t],...a});let s=Object.getPrototypeOf(r);return s===Object.prototype?a:(s.constructor.name===o&&(s=Object.getPrototypeOf(s)),P(e,t,s,a))};async function R(t,r,a,o,s,n){const i=D(a,o,s);if(!i)return;const c=k(L(S(a,i,s)));for(const i of c){const c=[r,i.data.length>1?i.data:i.data[0],i.prop.length>1?i.prop:i.prop[0],a];if(o===e.OperationKeys.UPDATE&&s===e.OperationKeys.ON){if(!n)throw new A("Missing old model for update operation");c.push(n)}try{await i.handler.apply(t,c)}catch(e){const t=`Failed to execute handler ${i.handler.name} for ${i.prop} on ${a.constructor.name} due to error: ${e}`;if(r.get("breakOnHandlerError"))throw new A(t)}}}function D(t,r,o){const s=a.Reflection.getAllPropertyDecorators(t,e.OperationKeys.REFLECT+(o||""));if(s)return Object.keys(s).reduce((e,t)=>{const a=s[t].filter(e=>e.key===r);return a&&a.length&&(e||(e={}),e[t]=a),e},void 0)}const K=(r,o,...s)=>{const n=o||{},i=a.Reflection.getAllPropertyDecorators(r,...s);if(i&&(r=>{Object.entries(r).forEach(([r,a])=>{n[r]=n[r]||[],((r,...a)=>{a.forEach(a=>{let o;if(!(o=n[r].find(e=>e.key===a.key))||o.props.operation!==a.props.operation)return void n[r].push(a);if(a.key===t.ModelKeys.TYPE)return;const{handlers:s,operation:i}=a.props;if(!i||!i.match(RegExp(`^(:?${e.OperationKeys.ON}|${e.OperationKeys.AFTER})(:?${e.OperationKeys.CREATE}|${e.OperationKeys.READ}|${e.OperationKeys.UPDATE}|${e.OperationKeys.DELETE})$`)))return void n[r].push(a);const c=o.props.handlers;Object.entries(s).forEach(([e,t])=>{e in c?Object.entries(t).forEach(([t,r])=>{t in c[e]?Object.entries(r).forEach(([r,a])=>{r in c[e][t]||(c[e][t][r]=a)}):c[e][t]=r}):c[e]=t})})})(r,...a)})})(i),Object.getPrototypeOf(r)===Object.prototype)return n;const c=Object.getPrototypeOf(r);return c?K(c,n,...s):n},b=50,v={priority:b};function S(e,t,r){const a=[];for(const o in t){const s=t[o];for(const t of s){const{key:s}=t,n=h.get(e,o,r+s);if(!n||!n.length)throw new A(`Could not find registered handler for the operation ${r+s} under property ${o}`);const i=P(t,o,e);if(!i||Object.values(i).length!==n.length)throw new A("Args and handlers length do not match");for(let e=0;e<n.length;e++){const t=i[n[e].name].data;a.push({handler:n[e],data:[t],prop:[o]})}}}return a}function L(e){const t=e.reduce((e,t)=>{if(!t||!t.data||!t.prop)throw new A("Missing decorator properties or data");if(!t.data[0].group)return e.set(Symbol(),t),e;const r=t.data[0].group;if(e.has(r)){const a=e.get(r);e.set(r,{handler:a.handler,data:[...a.data,...t.data],prop:[...a.prop,...t.prop]})}else e.set(r,{...t});return e},new Map),r=Array.from(t.values());return r.forEach(e=>{const t=e.data.map((t,r)=>({data:t,prop:e.prop[r]}));t.sort((e,t)=>(e.data.groupPriority??50)-(t.data.groupPriority??50)),e.data=t.map(e=>e.data),e.prop=t.map(e=>e.prop)}),r}function k(e){return e.sort((e,t)=>(e.data[0].priority??b)-(t.data[0].priority??b)),e}function M(e,t,r){return I(y.CREATE_UPDATE,e,t,r)}function x(e,t,r){return I(y.UPDATE,e,t,r)}function C(e,t,r){return I(y.CREATE,e,t,r)}function I(t=y.ALL,r,a,o){return j(e.OperationKeys.ON,t,r,a,o)}function N(t=y.ALL,r,a,o){return j(e.OperationKeys.AFTER,t,r,a,o)}function j(e,r=y.ALL,o,s,n=v){return(i,c)=>{const p=i.constructor.name,l=r.reduce((r,a)=>{const l=e+a;let d=Reflect.getMetadata(h.key(l),i,c);d||(d={operation:a,handlers:{}});const u=h.getHandlerName(o);let y=n;if(s){if(Object.keys(s).filter(e=>e in n).length>0)throw new A("Unable to merge groupSort into dataToAdd due to overlaping keys");y={...n,...s}}return d.handlers[p]&&d.handlers[p][c]&&u in d.handlers[p][c]||(d.handlers[p]=d.handlers[p]||{},d.handlers[p][c]=d.handlers[p][c]||{},d.handlers[p][c][u]={data:y},r.push(((e,t)=>(r,a)=>{h.register(t,e,r,a)})(l,o),t.propMetadata(h.key(l),d))),r},[]);return a.apply(...l)(i,c)}}const U={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},V=e=>(new F).accumulate(Object.assign({},e,{timestamp:new Date}));class F{constructor(){this.cache=new o.ObjectAccumulator,Object.defineProperty(this,"cache",{value:new o.ObjectAccumulator,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=V}accumulate(e){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(e),writable:!1,enumerable:!1,configurable:!0}),this}get timestamp(){return this.cache.timestamp}get(e){try{return this.cache.get(e)}catch(t){const r=this.cache.parentContext;if(r)return r.get(e);throw t}}static childFrom(e,t){return F.factory(Object.assign({},e.cache,t||{}))}static async from(e,t,r,...a){return F.factory(Object.assign({},U,t,{operation:e,model:r}))}static async args(e,t,r,a,o){const s=r.pop();async function n(){return a?a.context(e,o||{},t,...r):F.from(e,o||{},t,...r)}let i;return s?s instanceof F?(i=s,r.push(s)):(r.push(s),i=await n(),r.push(i)):(i=await n(),r.push(i)),{context:i,args:r}}}function $(e,t,r,a,o){const s=o||r.name;e[s]=new Proxy(e[s],{apply:async(e,r,o)=>{let s=t.call(r,...o);s instanceof Promise&&(s=await s);const n=s[s.length-1];if(!(n instanceof F))throw new A("Missing a context");let i=await e.call(r,...s);return i instanceof Promise&&(i=await i),i=a.call(r,i,n),i instanceof Promise&&(i=await i),i}})}function _(e){const r=K(e,void 0,s.REFLECT+s.ID),a=Object.entries(r).reduce((e,[r,a])=>{const o=a.filter(e=>e.key!==t.ModelKeys.TYPE);return o&&o.length&&(e[r]=e[r]||[],e[r].push(...o)),e},{});if(!a||!Object.keys(a).length)throw new A("Could not find ID decorated Property");if(Object.keys(a).length>1)throw new A(t.sf(Object.keys(a).join(", ")));const o=Object.keys(a)[0];if(!o)throw new A("Could not find ID decorated Property");return{id:o,props:a[o][0].props}}function H(e,t=!1){const r=_(e).id,a=e[r];if(void 0===a&&!t)throw new A("No value for the Id is defined under the property "+r);return a}class Y{get class(){if(!this._class)throw new A("No class definition found for this repository");return this._class}get pk(){if(!this._pk){const{id:e,props:t}=_(new this.class);this._pk=e,this._pkProps=t}return this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(e){e&&(this._class=e);const t=this;[this.create,this.read,this.update,this.delete].forEach(e=>{const r=e.name;$(t,t[r+"Prefix"],e,t[r+"Suffix"])})}async createAll(e,...t){return Promise.all(e.map(e=>this.create(e,...t)))}async createPrefix(t,...r){const a=await F.args(e.OperationKeys.CREATE,this.class,r);return t=new this.class(t),await R(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),[t,...a.args]}async createSuffix(t,r){return await R(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER),t}async createAllPrefix(t,...r){const a=await F.args(e.OperationKeys.CREATE,this.class,r);return await Promise.all(t.map(async t=>(t=new this.class(t),await R(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t))),[t,...a.args]}async createAllSuffix(t,r){return await Promise.all(t.map(t=>R(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER))),t}async readAll(e,...t){return await Promise.all(e.map(e=>this.read(e,...t)))}async readSuffix(t,r){return await R(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER),t}async readPrefix(t,...r){const a=await F.args(e.OperationKeys.READ,this.class,r),o=new this.class;return o[this.pk]=t,await R(this,a.context,o,e.OperationKeys.READ,e.OperationKeys.ON),[t,...a.args]}async readAllPrefix(t,...r){const a=await F.args(e.OperationKeys.READ,this.class,r);return await Promise.all(t.map(async t=>{const r=new this.class;return r[this.pk]=t,R(this,a.context,r,e.OperationKeys.READ,e.OperationKeys.ON)})),[t,...a.args]}async readAllSuffix(t,r){return await Promise.all(t.map(t=>R(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER))),t}async updateAll(e,...t){return Promise.all(e.map(e=>this.update(e,...t)))}async updateSuffix(t,r){return await R(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER),t}async updatePrefix(t,...r){const a=await F.args(e.OperationKeys.UPDATE,this.class,r),o=t[this.pk];if(!o)throw new A("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);return await R(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s),[t,...a.args]}async updateAllPrefix(t,...r){const a=await F.args(e.OperationKeys.UPDATE,this.class,r);return await Promise.all(t.map(t=>(t=new this.class(t),R(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON),t))),[t,...a.args]}async updateAllSuffix(t,r){return await Promise.all(t.map(t=>R(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER))),t}async deleteAll(e,...t){return Promise.all(e.map(e=>this.delete(e,...t)))}async deleteSuffix(t,r){return await R(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER),t}async deletePrefix(t,...r){const a=await F.args(e.OperationKeys.DELETE,this.class,r),o=await this.read(t,...a.args);return await R(this,a.context,o,e.OperationKeys.DELETE,e.OperationKeys.ON),[t,...a.args]}async deleteAllPrefix(t,...r){const a=await F.args(e.OperationKeys.DELETE,this.class,r),o=await this.readAll(t,...a.args);return await Promise.all(o.map(async t=>R(this,a.context,t,e.OperationKeys.DELETE,e.OperationKeys.ON))),[t,...a.args]}async deleteAllSuffix(t,r){return await Promise.all(t.map(t=>R(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER))),t}merge(e,t){const r=e=>Object.entries(e).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});return new this.class(Object.assign({},r(e),r(t)))}toString(){return this.class.name+" Repository"}}class q extends Y{constructor(e){super(e)}async createPrefix(t,...r){const a=await F.args(e.OperationKeys.CREATE,this.class,r);t=new this.class(t),await R(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON);const o=await Promise.resolve(t.hasErrors());if(o)throw new m(o.toString());return[t,...a.args]}async createAllPrefix(t,...r){const a=await F.args(e.OperationKeys.CREATE,this.class,r);await Promise.all(t.map(async t=>(t=new this.class(t),await R(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t)));const o=(await Promise.all(t.map(e=>Promise.resolve(e.hasErrors())))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(o)throw new m(o);return[t,...a.args]}async updatePrefix(t,...r){const a=await F.args(e.OperationKeys.UPDATE,this.class,r),o=t[this.pk];if(!o)throw new A("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);t=this.merge(s,t),await R(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s);const n=await Promise.resolve(t.hasErrors(s));if(n)throw new m(n.toString());return[t,...a.args]}async updateAllPrefix(t,...r){const a=await F.args(e.OperationKeys.UPDATE,this.class,r),o=t.map(e=>{const t=e[this.pk];if(void 0===t)throw new A("No value for the Id is defined under the property "+this.pk);return t}),s=await this.readAll(o,...a.args);t=t.map((e,t)=>this.merge(s[t],e)),await Promise.all(t.map((t,r)=>R(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s[r])));const n=(await Promise.all(t.map((e,t)=>Promise.resolve(e.hasErrors(s[t]))))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(n)throw new m(n);return[t,...a.args]}static key(e){return s.REFLECT+e}}function z(e=c.READONLY.INVALID){const r=t.Validation.updateKey(s.READONLY);return t.Decoration.for(r).define(t.propMetadata(r,{message:e})).apply()}async function B(e,t,r,a){a[r]=e.timestamp}async function Q(e,t,r,a){if(a[r])try{a[r]=JSON.stringify(a[r])}catch(e){throw new g(`Failed to serialize ${r.toString()} property of model ${a.constructor.name}: e`)}}async function G(e,t,r,a){if(a[r]&&"string"==typeof a[r])try{a[r]=JSON.parse(a[r])}catch(e){throw new g(`Failed to deserialize ${r.toString()} property of model ${a.constructor.name}: ${e}`)}}function J(e,r){const a=[];for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&!r.includes(o)){const r=t.getValidationDecorators(e,o,p.REFLECT),s=t.getValidationDecorators(e,o).decorators.find(({key:e})=>e===t.ValidationKeys.LIST);s&&r.decorators.push(s),a.push(r)}return a}function W(e,r,a,o,s){const n=t.Validation.get(o.key);if(!n)throw Error("Missing validator for "+o.key);if(!n.updateHasErrors)return t.toConditionalPromise(void 0,s);if(!s&&o.props.async)return t.toConditionalPromise(void 0,s);const i=Object.values(o.props)||{},c=n.updateHasErrors(e[a],r[a],...i);return t.toConditionalPromise(c,s)}function Z(e,r,a,o,s){const n={};for(const i of o){if(!s&&i.props.async)continue;let o=W(e,r,a,i,s);if(i.key===t.ValidationKeys.LIST&&(!o||s)){const n=e[a],c=r[a],p=n instanceof Set?[...n]:n,l=c instanceof Set?[...c]:c;if(p&&p.length>0){const e=[i.props.class||i.props.clazz||i.props.customTypes].flat().map(e=>((e=(e="function"!=typeof e||e.name?e:e()).name?e.name:e)+"").toLowerCase()),r=p.map(r=>{const a=H(r,!0);if(!a)return"Failed to find model id";const o=l.find(e=>a===H(e,!0));return t.Model.isModel(r)?r.hasErrors(o):e.includes(typeof r)?void 0:"Value has no validatable type"});if(s)o=Promise.all(r).then(e=>e.every(e=>!e)?void 0:e);else{const e=r.every(e=>!e);o=r.length>0&&!e?r:void 0}}}o&&(n[i.key]=o)}if(!s)return Object.keys(n).length>0?n:void 0;const i=Object.keys(n),c=Object.values(n);return Promise.all(c).then(e=>{const t={};for(let r=0;r<e.length;r++){const a=e[r];void 0!==a&&(t[i[r]]=a)}return Object.keys(t).length>0?t:void 0})}function X(e,r,o,...s){const n=J(r,s),i={},c={};for(const{prop:s,decorators:p}of n){const n=s+"";let l=r[s];if(!p?.length)continue;const d=p.find(e=>[t.ModelKeys.TYPE,t.ValidationKeys.TYPE].includes(e.key));if(!d)continue;const u=d.props.name;if([Array.name,Set.name].includes(u)){const{decorators:e}=a.Reflection.getPropertyDecorators(t.ValidationKeys.REFLECT,r,n);if(!e.some(e=>e.key===t.ValidationKeys.LIST)){i[n]={[t.ValidationKeys.TYPE]:`Array or Set property '${n}' requires a @list decorator`};continue}if(l&&!(Array.isArray(l)||l instanceof Set)){i[n]={[t.ValidationKeys.TYPE]:`Property '${s+""}' must be either an array or a Set`};continue}for(let r=e.length-1;r>=0;r--)e[r].key===t.ModelKeys.TYPE&&e.splice(r,1);l=l instanceof Set?[...l]:l}const y=Z(r,e,n,p,o)||{},f=t.Model.isPropertyModel(r,n);if(l&&f){const t=l;"object"!=typeof t||!t.hasErrors||"function"!=typeof t.hasErrors||(c[n]=t.hasErrors(e[s]))}(Object.keys(y).length>0||o)&&(i[n]=y),o||Object.entries(c[n]||{}).forEach(([e,t])=>{void 0!==t&&(i[`${n}.${e}`]=t)})}if(!o)return Object.keys(i).length>0?new t.ModelErrorDefinition(i):void 0;const p=i,l=Object.keys(p),d=Object.values(p);return Promise.allSettled(d).then(async e=>{const r={};for(const[e,t]of Object.entries(c)){const a=await t;a&&Object.entries(a).forEach(([t,a])=>{void 0!==a&&(r[[e,t].join(".")]=a)})}for(let t=0;t<e.length;t++){const a=l[t],o=e[t];"fulfilled"===o.status&&void 0!==o.value?r[a]=o.value:"rejected"===o.status&&(r[a]=o.reason instanceof Error?o.reason.message:(o.reason||"Validation failed")+"")}return Object.keys(r).length>0?new t.ModelErrorDefinition(r):void 0})}function ee(e,r,a,o,s){if(void 0===o[a])return;const n=t.Hashing.hash(o[a]);s&&o[a]===n||(o[a]=n)}function te(){return a.apply(M(ee),t.propMetadata(q.key(s.HASH),{}))}function re(e,t,r,a){try{const{args:e,type:o,prefix:s,suffix:n,separator:i}=t,c=e.map(t=>{if(!(t in a))throw new A(`Property ${t} not found to compose from`);if("keys"===o)return t;if(void 0===a[t])throw new A(`Property ${e} does not contain a value to compose from`);return a[t].toString()});s&&c.unshift(s),n&&c.push(n),a[r]=c.join(i)}catch(e){throw new A("Failed to compose value: "+e)}}function ae(e,r=!1,o=n,i="values",c="",p="",l={priority:55}){const d={args:e,hashResult:r,separator:o,type:i,prefix:c,suffix:p},u=[M(re,d,l),t.propMetadata(q.key(s.COMPOSED),d)];return r&&u.push(te()),a.apply(...u)}function oe(t){return(r,a,o,s)=>{try{switch(t){case e.OperationKeys.CREATE:s[o]=1;break;case e.OperationKeys.UPDATE:s[o]++;break;default:throw new A("Invalid operation: "+t)}}catch(e){throw new A("Failed to update version: "+e)}}}function se(e){return!(!Reflect.getMetadata(q.key(s.TRANSIENT),e.constructor)&&!Reflect.getMetadata(q.key(s.TRANSIENT),t.Model.get(e.constructor.name)))}t.Model.prototype.hasErrors=function(e,...r){!e||e instanceof t.Model||(r.unshift(e),e=void 0);const a=this.isAsync(),o=t.validate(this,a,...r);return a?Promise.resolve(o).then(t=>t||!e?t:X(e,this,a,...r)):o||!e?o:X(e,this,a,...r)},e.BadRequestError=O,e.BaseError=E,e.BaseRepository=Y,e.ConflictError=w,e.Context=F,e.DBKeys=s,e.DBOperations=y,e.DEFAULT_ERROR_MESSAGES=c,e.DEFAULT_TIMESTAMP_FORMAT=i,e.DefaultContextFactory=V,e.DefaultRepositoryFlags=U,e.DefaultSeparator=n,e.InternalError=A,e.NotFoundError=T,e.Operations=h,e.OperationsRegistry=f,e.Repository=q,e.SerializationError=g,e.UpdateValidationKeys=p,e.UpdateValidator=l,e.VERSION="##VERSION##",e.ValidationError=m,e.after=N,e.afterAny=(e,t,r)=>N(y.ALL,e,t,r),e.afterCreate=(e,t,r)=>N(y.CREATE,e,t,r),e.afterCreateUpdate=(e,t,r)=>N(y.CREATE_UPDATE,e,t,r),e.afterDelete=(e,t,r)=>N(y.DELETE,e,t,r),e.afterRead=(e,t,r)=>N(y.READ,e,t,r),e.afterUpdate=(e,t,r)=>N(y.UPDATE,e,t,r),e.composed=(e,t=n,r=!1,a="",o="",s={priority:55})=>ae(e,r,t,"values",a,o,s),e.composedFromCreateUpdate=re,e.composedFromKeys=(e,t=n,r=!1,a="",o="",s={priority:55})=>ae(e,r,t,"keys",a,o,s),e.enforceDBDecorators=R,e.findModelId=H,e.findPrimaryKey=_,e.getAllPropertyDecoratorsRecursive=K,e.getDbDecorators=D,e.getHandlerArgs=P,e.getHandlersDecorators=S,e.getValidatableUpdateProps=J,e.groupDecorators=L,e.hash=te,e.hashOnCreateUpdate=ee,e.id=()=>a.apply(t.required(),z(),t.propMetadata(q.key(s.ID),{})),e.isTransient=se,e.modelToTransient=e=>{if(!se(e))return{model:e};const r=K(e,void 0,q.key(s.TRANSIENT)),a=Object.entries(r).reduce((t,[r,a])=>{if(a.find(e=>""===e.key)){t.transient=t.transient||{};try{t.transient[r]=e[r]}catch(e){throw new g(`Failed to serialize transient property ${r}: ${e}`)}}else t.model=t.model||{},t.model[r]=e[r];return t},{});return a.model=t.Model.build(a.model,e.constructor.name),a},e.on=I,e.onAny=(e,t,r)=>I(y.ALL,e,t,r),e.onCreate=C,e.onCreateUpdate=M,e.onDelete=(e,t,r)=>I(y.DELETE,e,t,r),e.onRead=(e,t,r)=>I(y.READ,e,t,r),e.onUpdate=x,e.operation=j,e.prefixMethod=function(e,t,r,a){const o=async function(...e){const a=await Promise.resolve(r.call(this,...e));return Promise.resolve(t.apply(this,a))}.bind(e),s=a||t.name;Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:s}),e[s]=o},e.readonly=z,e.serialize=()=>a.apply(M(Q),N(y.ALL,G),t.type([String.name,Object.name]),a.metadata(q.key(s.SERIALIZE),{})),e.serializeAfterAll=G,e.serializeOnCreateUpdate=Q,e.sortDecorators=k,e.suffixMethod=function(e,t,r,a){const o=async function(...e){const a=await Promise.resolve(t.call(this,...e));return r.call(this,...a)}.bind(e),s=a||t.name;Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:s}),e[s]=o},e.timestamp=(r=y.CREATE_UPDATE,o=i)=>{const n=t.Validation.updateKey(s.TIMESTAMP);return t.Decoration.for(n).define({decorator:(r,o)=>{const i=[t.date(o,c.TIMESTAMP.DATE),t.required(c.TIMESTAMP.REQUIRED),t.propMetadata(t.Validation.key(s.TIMESTAMP),{operation:r,format:o}),I(r,B)];return-1!==r.indexOf(e.OperationKeys.UPDATE)?i.push(t.propMetadata(n,{message:c.TIMESTAMP.INVALID})):i.push(z()),a.apply(...i)},args:[r,o]}).apply()},e.timestampHandler=B,e.transient=()=>{const e=q.key(s.TRANSIENT);return t.Decoration.for(e).define((e,r)=>{t.propMetadata(q.key(s.TRANSIENT),!0)(e,r),t.propMetadata(q.key(s.TRANSIENT),!0)(e.constructor)}).apply()},e.validateCompare=X,e.validateDecorator=W,e.validateDecorators=Z,e.version=()=>{const r=q.key(s.VERSION);return t.Decoration.for(r).define(t.type(Number.name),C(oe(e.OperationKeys.CREATE)),x(oe(e.OperationKeys.UPDATE)),t.propMetadata(r,!0)).apply()},e.versionCreateUpdate=oe,e.wrapMethodWithContext=$},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decorator-validation"),require("tslib"),require("@decaf-ts/reflection"),require("typed-object-accumulator")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decorator-validation","tslib","@decaf-ts/reflection","typed-object-accumulator"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["db-decorators"]={},e.decafTsDecoratorValidation,e.tslib,e.decafTsReflection,e.typedObjectAccumulator);
1
+ var e,t;e=this,t=function(e,t,r,a,o,s){"use strict";const n={REFLECT:t.ModelKeys.REFLECT+"persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},i="_",c="dd/MM/yyyy HH:mm:ss:S",p={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},l={REFLECT:"db.update.validation.",TIMESTAMP:n.TIMESTAMP,READONLY:n.READONLY};e.ReadOnlyValidator=class extends t.Validator{constructor(){super(p.READONLY.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,r){if(void 0!==e)return a.isEqual(e,t)?void 0:this.getMessage(r||this.message)}},e.ReadOnlyValidator=r.__decorate([t.validator(l.READONLY),r.__metadata("design:paramtypes",[])],e.ReadOnlyValidator),e.TimestampValidator=class extends t.Validator{constructor(){super(p.TIMESTAMP.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,r){if(void 0!==e){r=r||this.getMessage(r||this.message);try{e=new Date(e),t=new Date(t)}catch(e){return r}return e>t?void 0:r}}},e.TimestampValidator=r.__decorate([t.validator(l.TIMESTAMP),r.__metadata("design:paramtypes",[])],e.TimestampValidator);class d extends t.Validator{constructor(e=t.DEFAULT_ERROR_MESSAGES.DEFAULT,...r){super(e,...r)}}var u,y;t.Validation.updateKey=e=>l.REFLECT+e,e.OperationKeys=void 0,(u=e.OperationKeys||(e.OperationKeys={})).REFLECT="decaf.model.db.operations.",u.CREATE="create",u.READ="read",u.UPDATE="update",u.DELETE="delete",u.ON="on.",u.AFTER="after.",u.BLOCK="block",e.BulkCrudOperationKeys=void 0,(y=e.BulkCrudOperationKeys||(e.BulkCrudOperationKeys={})).CREATE_ALL="createAll",y.READ_ALL="readAll",y.UPDATE_ALL="updateAll",y.DELETE_ALL="deleteAll";const f={CREATE:[e.OperationKeys.CREATE],READ:[e.OperationKeys.READ],UPDATE:[e.OperationKeys.UPDATE],DELETE:[e.OperationKeys.DELETE],CREATE_UPDATE:[e.OperationKeys.CREATE,e.OperationKeys.UPDATE],READ_CREATE:[e.OperationKeys.READ,e.OperationKeys.CREATE],ALL:[e.OperationKeys.CREATE,e.OperationKeys.READ,e.OperationKeys.UPDATE,e.OperationKeys.DELETE]};class h{constructor(){this.cache={}}get(e,t,r,a){let o;a=a||[];try{o="string"==typeof e?e:e.constructor.name,a.unshift(...Object.values(this.cache[o][t][r]||[]))}catch(t){if("string"==typeof e||e===Object.prototype||Object.getPrototypeOf(e)===Object.prototype)return a}let s=Object.getPrototypeOf(e);return s.constructor.name===o&&(s=Object.getPrototypeOf(s)),this.get(s,t,r,a)}register(e,t,r,a){const o=r.constructor.name,s=E.getHandlerName(e);this.cache[o]||(this.cache[o]={}),this.cache[o][a]||(this.cache[o][a]={}),this.cache[o][a][t]||(this.cache[o][a][t]={}),this.cache[o][a][t][s]||(this.cache[o][a][t][s]=e)}}class E{constructor(){}static getHandlerName(e){return e.name?e.name:t.Hashing.hash(e.toString())}static key(t){return e.OperationKeys.REFLECT+t}static get(e,t,r){return E.registry.get(e,t,r)}static getOpRegistry(){return E.registry||(E.registry=new h),E.registry}static register(e,t,r,a){E.getOpRegistry().register(e,t,r,a)}}class O extends Error{constructor(e,t,r){if(t instanceof O)return t;super(`[${e}] ${t instanceof Error?t.message:t}`),this.code=r,t instanceof Error&&(this.stack=t.stack)}}class m extends O{constructor(e,t=m.name,r=400){super(t,e,r)}}class A extends m{constructor(e){super(e,A.name,422)}}class g extends O{constructor(e,t=g.name,r=500){super(t,e,r)}}class T extends g{constructor(e){super(e,T.name,500)}}class w extends m{constructor(e){super(e,w.name,404)}}class P extends m{constructor(e){super(e,P.name,409)}}const R=(e,t,r,a)=>{const o=r.constructor.name;if(!o)throw new g("Could not determine model class");a=a||{},e.props.handlers[o]&&e.props.handlers[o][t]&&(a={...e.props.handlers[o][t],...a});let s=Object.getPrototypeOf(r);return s===Object.prototype?a:(s.constructor.name===o&&(s=Object.getPrototypeOf(s)),R(e,t,s,a))};async function D(t,r,a,o,s,n){const i=K(a,o,s);if(!i)return;const c=M(k(S(a,i,s)));for(const i of c){const c=[r,i.data.length>1?i.data:i.data[0],i.prop.length>1?i.prop:i.prop[0],a];if(o===e.OperationKeys.UPDATE&&s===e.OperationKeys.ON){if(!n)throw new g("Missing old model for update operation");c.push(n)}try{await i.handler.apply(t,c)}catch(e){const t=`Failed to execute handler ${i.handler.name} for ${i.prop} on ${a.constructor.name} due to error: ${e}`;if(r.get("breakOnHandlerError"))throw new g(t)}}}function K(t,r,o){const s=a.Reflection.getAllPropertyDecorators(t,e.OperationKeys.REFLECT+(o||""));if(s)return Object.keys(s).reduce((e,t)=>{const a=s[t].filter(e=>e.key===r);return a&&a.length&&(e||(e={}),e[t]=a),e},void 0)}const b=(r,o,...s)=>{const n=o||{},i=a.Reflection.getAllPropertyDecorators(r,...s);if(i&&(r=>{Object.entries(r).forEach(([r,a])=>{n[r]=n[r]||[],((r,...a)=>{a.forEach(a=>{let o;if(!(o=n[r].find(e=>e.key===a.key))||o.props.operation!==a.props.operation)return void n[r].push(a);if(a.key===t.ModelKeys.TYPE)return;const{handlers:s,operation:i}=a.props;if(!i||!i.match(RegExp(`^(:?${e.OperationKeys.ON}|${e.OperationKeys.AFTER})(:?${e.OperationKeys.CREATE}|${e.OperationKeys.READ}|${e.OperationKeys.UPDATE}|${e.OperationKeys.DELETE})$`)))return void n[r].push(a);const c=o.props.handlers;Object.entries(s).forEach(([e,t])=>{e in c?Object.entries(t).forEach(([t,r])=>{t in c[e]?Object.entries(r).forEach(([r,a])=>{r in c[e][t]||(c[e][t][r]=a)}):c[e][t]=r}):c[e]=t})})})(r,...a)})})(i),Object.getPrototypeOf(r)===Object.prototype)return n;const c=Object.getPrototypeOf(r);return c?b(c,n,...s):n},v=50,L={priority:v};function S(e,t,r){const a=[];for(const o in t){const s=t[o];for(const t of s){const{key:s}=t,n=E.get(e,o,r+s);if(!n||!n.length)throw new g(`Could not find registered handler for the operation ${r+s} under property ${o}`);const i=R(t,o,e);if(!i||Object.values(i).length!==n.length)throw new g("Args and handlers length do not match");for(let e=0;e<n.length;e++){const t=i[n[e].name].data;a.push({handler:n[e],data:[t],prop:[o]})}}}return a}function k(e){const t=e.reduce((e,t)=>{if(!t||!t.data||!t.prop)throw new g("Missing decorator properties or data");if(!t.data[0].group)return e.set(Symbol(),t),e;const r=t.data[0].group;if(e.has(r)){const a=e.get(r);e.set(r,{handler:a.handler,data:[...a.data,...t.data],prop:[...a.prop,...t.prop]})}else e.set(r,{...t});return e},new Map),r=Array.from(t.values());return r.forEach(e=>{const t=e.data.map((t,r)=>({data:t,prop:e.prop[r]}));t.sort((e,t)=>(e.data.groupPriority??50)-(t.data.groupPriority??50)),e.data=t.map(e=>e.data),e.prop=t.map(e=>e.prop)}),r}function M(e){return e.sort((e,t)=>(e.data[0].priority??v)-(t.data[0].priority??v)),e}function C(e,t,r){return N(f.CREATE_UPDATE,e,t,r)}function x(e,t,r){return N(f.UPDATE,e,t,r)}function I(e,t,r){return N(f.CREATE,e,t,r)}function N(t=f.ALL,r,a,o){return U(e.OperationKeys.ON,t,r,a,o)}function j(t=f.ALL,r,a,o){return U(e.OperationKeys.AFTER,t,r,a,o)}function U(e,r=f.ALL,o,s,n=L){return(i,c)=>{const p=i.constructor.name,l=r.reduce((r,a)=>{const l=e+a;let d=Reflect.getMetadata(E.key(l),i,c);d||(d={operation:a,handlers:{}});const u=E.getHandlerName(o);let y=n;if(s){if(Object.keys(s).filter(e=>e in n).length>0)throw new g("Unable to merge groupSort into dataToAdd due to overlaping keys");y={...n,...s}}return d.handlers[p]&&d.handlers[p][c]&&u in d.handlers[p][c]||(d.handlers[p]=d.handlers[p]||{},d.handlers[p][c]=d.handlers[p][c]||{},d.handlers[p][c][u]={data:y},r.push(((e,t)=>(r,a)=>{E.register(t,e,r,a)})(l,o),t.propMetadata(E.key(l),d))),r},[]);return a.apply(...l)(i,c)}}function V(e,t){return(...r)=>o.metadata(e,{args:r,handler:t})}const F={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},$=e=>(new _).accumulate(Object.assign({},e,{timestamp:new Date}));class _{constructor(){this.cache=new s.ObjectAccumulator,Object.defineProperty(this,"cache",{value:new s.ObjectAccumulator,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=$}accumulate(e){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(e),writable:!1,enumerable:!1,configurable:!0}),this}get timestamp(){return this.cache.timestamp}get(e){try{return this.cache.get(e)}catch(t){const r=this.cache.parentContext;if(r)return r.get(e);throw t}}static childFrom(e,t){return _.factory(Object.assign({},e.cache,t||{}))}static async from(e,t,r,...a){return _.factory(Object.assign({},F,t,{operation:e,model:r}))}static async args(e,t,r,a,o){const s=r.pop();async function n(){return a?a.context(e,o||{},t,...r):_.from(e,o||{},t,...r)}let i;return s?s instanceof _?(i=s,r.push(s)):(r.push(s),i=await n(),r.push(i)):(i=await n(),r.push(i)),{context:i,args:r}}}function H(e,t,r,a,o){const s=o||r.name;e[s]=new Proxy(e[s],{apply:async(e,r,o)=>{let s=t.call(r,...o);s instanceof Promise&&(s=await s);const n=s[s.length-1];if(!(n instanceof _))throw new g("Missing a context");let i=await e.call(r,...s);return i instanceof Promise&&(i=await i),i=a.call(r,i,n),i instanceof Promise&&(i=await i),i}})}function Y(e){const r=b(e,void 0,n.REFLECT+n.ID),a=Object.entries(r).reduce((e,[r,a])=>{const o=a.filter(e=>e.key!==t.ModelKeys.TYPE);return o&&o.length&&(e[r]=e[r]||[],e[r].push(...o)),e},{});if(!a||!Object.keys(a).length)throw new g("Could not find ID decorated Property");if(Object.keys(a).length>1)throw new g(t.sf(Object.keys(a).join(", ")));const o=Object.keys(a)[0];if(!o)throw new g("Could not find ID decorated Property");return{id:o,props:a[o][0].props}}function B(e,t=!1){const r=Y(e).id,a=e[r];if(void 0===a&&!t)throw new g("No value for the Id is defined under the property "+r);return a}class q{get class(){if(!this._class)throw new g("No class definition found for this repository");return this._class}get pk(){if(!this._pk){const{id:e,props:t}=Y(new this.class);this._pk=e,this._pkProps=t}return this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(e){e&&(this._class=e);const t=this;[this.create,this.read,this.update,this.delete].forEach(e=>{const r=e.name;H(t,t[r+"Prefix"],e,t[r+"Suffix"])})}async createAll(e,...t){return Promise.all(e.map(e=>this.create(e,...t)))}async createPrefix(t,...r){const a=await _.args(e.OperationKeys.CREATE,this.class,r);return t=new this.class(t),await D(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),[t,...a.args]}async createSuffix(t,r){return await D(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER),t}async createAllPrefix(t,...r){const a=await _.args(e.OperationKeys.CREATE,this.class,r);return await Promise.all(t.map(async t=>(t=new this.class(t),await D(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t))),[t,...a.args]}async createAllSuffix(t,r){return await Promise.all(t.map(t=>D(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER))),t}async readAll(e,...t){return await Promise.all(e.map(e=>this.read(e,...t)))}async readSuffix(t,r){return await D(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER),t}async readPrefix(t,...r){const a=await _.args(e.OperationKeys.READ,this.class,r),o=new this.class;return o[this.pk]=t,await D(this,a.context,o,e.OperationKeys.READ,e.OperationKeys.ON),[t,...a.args]}async readAllPrefix(t,...r){const a=await _.args(e.OperationKeys.READ,this.class,r);return await Promise.all(t.map(async t=>{const r=new this.class;return r[this.pk]=t,D(this,a.context,r,e.OperationKeys.READ,e.OperationKeys.ON)})),[t,...a.args]}async readAllSuffix(t,r){return await Promise.all(t.map(t=>D(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER))),t}async updateAll(e,...t){return Promise.all(e.map(e=>this.update(e,...t)))}async updateSuffix(t,r){return await D(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER),t}async updatePrefix(t,...r){const a=await _.args(e.OperationKeys.UPDATE,this.class,r),o=t[this.pk];if(!o)throw new g("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);return await D(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s),[t,...a.args]}async updateAllPrefix(t,...r){const a=await _.args(e.OperationKeys.UPDATE,this.class,r);return await Promise.all(t.map(t=>(t=new this.class(t),D(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON),t))),[t,...a.args]}async updateAllSuffix(t,r){return await Promise.all(t.map(t=>D(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER))),t}async deleteAll(e,...t){return Promise.all(e.map(e=>this.delete(e,...t)))}async deleteSuffix(t,r){return await D(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER),t}async deletePrefix(t,...r){const a=await _.args(e.OperationKeys.DELETE,this.class,r),o=await this.read(t,...a.args);return await D(this,a.context,o,e.OperationKeys.DELETE,e.OperationKeys.ON),[t,...a.args]}async deleteAllPrefix(t,...r){const a=await _.args(e.OperationKeys.DELETE,this.class,r),o=await this.readAll(t,...a.args);return await Promise.all(o.map(async t=>D(this,a.context,t,e.OperationKeys.DELETE,e.OperationKeys.ON))),[t,...a.args]}async deleteAllSuffix(t,r){return await Promise.all(t.map(t=>D(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER))),t}merge(e,t){const r=e=>Object.entries(e).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});return new this.class(Object.assign({},r(e),r(t)))}toString(){return this.class.name+" Repository"}}class z extends q{constructor(e){super(e)}async createPrefix(t,...r){const a=await _.args(e.OperationKeys.CREATE,this.class,r);t=new this.class(t),await D(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON);const o=await Promise.resolve(t.hasErrors());if(o)throw new A(o.toString());return[t,...a.args]}async createAllPrefix(t,...r){const a=await _.args(e.OperationKeys.CREATE,this.class,r);await Promise.all(t.map(async t=>(t=new this.class(t),await D(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t)));const o=(await Promise.all(t.map(e=>Promise.resolve(e.hasErrors())))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(o)throw new A(o);return[t,...a.args]}async updatePrefix(t,...r){const a=await _.args(e.OperationKeys.UPDATE,this.class,r),o=t[this.pk];if(!o)throw new g("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);t=this.merge(s,t),await D(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s);const n=await Promise.resolve(t.hasErrors(s));if(n)throw new A(n.toString());return[t,...a.args]}async updateAllPrefix(t,...r){const a=await _.args(e.OperationKeys.UPDATE,this.class,r),o=t.map(e=>{const t=e[this.pk];if(void 0===t)throw new g("No value for the Id is defined under the property "+this.pk);return t}),s=await this.readAll(o,...a.args);t=t.map((e,t)=>this.merge(s[t],e)),await Promise.all(t.map((t,r)=>D(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s[r])));const n=(await Promise.all(t.map((e,t)=>Promise.resolve(e.hasErrors(s[t]))))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(n)throw new A(n);return[t,...a.args]}static key(e){return n.REFLECT+e}}function Q(e=p.READONLY.INVALID){const r=t.Validation.updateKey(n.READONLY);return t.Decoration.for(r).define(t.propMetadata(r,{message:e})).apply()}async function G(e,t,r,a){a[r]=e.timestamp}async function J(e,t,r,a){if(a[r])try{a[r]=JSON.stringify(a[r])}catch(e){throw new T(`Failed to serialize ${r.toString()} property of model ${a.constructor.name}: e`)}}async function W(e,t,r,a){if(a[r]&&"string"==typeof a[r])try{a[r]=JSON.parse(a[r])}catch(e){throw new T(`Failed to deserialize ${r.toString()} property of model ${a.constructor.name}: ${e}`)}}function Z(e,r){const a=[];for(const o in e)if(Object.prototype.hasOwnProperty.call(e,o)&&!r.includes(o)){const r=t.getValidationDecorators(e,o,l.REFLECT),s=t.getValidationDecorators(e,o).decorators.find(({key:e})=>e===t.ValidationKeys.LIST);s&&r.decorators.push(s),a.push(r)}return a}function X(e,r,a,o,s){const n=t.Validation.get(o.key);if(!n)throw Error("Missing validator for "+o.key);if(!n.updateHasErrors)return t.toConditionalPromise(void 0,s);if(!s&&o.props.async)return t.toConditionalPromise(void 0,s);const i=Object.values(o.props)||{},c=n.updateHasErrors(e[a],r[a],...i);return t.toConditionalPromise(c,s)}function ee(e,r,a,o,s){const n={};for(const i of o){if(!s&&i.props.async)continue;let o=X(e,r,a,i,s);if(i.key===t.ValidationKeys.LIST&&(!o||s)){const n=e[a],c=r[a],p=n instanceof Set?[...n]:n,l=c instanceof Set?[...c]:c;if(p&&p.length>0){const e=[i.props.class||i.props.clazz||i.props.customTypes].flat().map(e=>((e=(e="function"!=typeof e||e.name?e:e()).name?e.name:e)+"").toLowerCase()),r=p.map(r=>{const a=B(r,!0);if(!a)return"Failed to find model id";const o=l.find(e=>a===B(e,!0));return t.Model.isModel(r)?r.hasErrors(o):e.includes(typeof r)?void 0:"Value has no validatable type"});if(s)o=Promise.all(r).then(e=>e.every(e=>!e)?void 0:e);else{const e=r.every(e=>!e);o=r.length>0&&!e?r:void 0}}}o&&(n[i.key]=o)}if(!s)return Object.keys(n).length>0?n:void 0;const i=Object.keys(n),c=Object.values(n);return Promise.all(c).then(e=>{const t={};for(let r=0;r<e.length;r++){const a=e[r];void 0!==a&&(t[i[r]]=a)}return Object.keys(t).length>0?t:void 0})}function te(e,r,o,...s){const n=Z(r,s),i={},c={};for(const{prop:s,decorators:p}of n){const n=s+"";let l=r[s];if(!p?.length)continue;const d=p.find(e=>[t.ModelKeys.TYPE,t.ValidationKeys.TYPE].includes(e.key));if(!d)continue;const u=d.props.name;if([Array.name,Set.name].includes(u)){const{decorators:e}=a.Reflection.getPropertyDecorators(t.ValidationKeys.REFLECT,r,n);if(!e.some(e=>e.key===t.ValidationKeys.LIST)){i[n]={[t.ValidationKeys.TYPE]:`Array or Set property '${n}' requires a @list decorator`};continue}if(l&&!(Array.isArray(l)||l instanceof Set)){i[n]={[t.ValidationKeys.TYPE]:`Property '${s+""}' must be either an array or a Set`};continue}for(let r=e.length-1;r>=0;r--)e[r].key===t.ModelKeys.TYPE&&e.splice(r,1);l=l instanceof Set?[...l]:l}const y=ee(r,e,n,p,o)||{},f=t.Model.isPropertyModel(r,n);if(l&&f){const t=l;"object"!=typeof t||!t.hasErrors||"function"!=typeof t.hasErrors||(c[n]=t.hasErrors(e[s]))}(Object.keys(y).length>0||o)&&(i[n]=y),o||Object.entries(c[n]||{}).forEach(([e,t])=>{void 0!==t&&(i[`${n}.${e}`]=t)})}if(!o)return Object.keys(i).length>0?new t.ModelErrorDefinition(i):void 0;const p=i,l=Object.keys(p),d=Object.values(p);return Promise.allSettled(d).then(async e=>{const r={};for(const[e,t]of Object.entries(c)){const a=await t;a&&Object.entries(a).forEach(([t,a])=>{void 0!==a&&(r[[e,t].join(".")]=a)})}for(let t=0;t<e.length;t++){const a=l[t],o=e[t];"fulfilled"===o.status&&void 0!==o.value?r[a]=o.value:"rejected"===o.status&&(r[a]=o.reason instanceof Error?o.reason.message:(o.reason||"Validation failed")+"")}return Object.keys(r).length>0?new t.ModelErrorDefinition(r):void 0})}function re(e,r,a,o,s){if(void 0===o[a])return;const n=t.Hashing.hash(o[a]);s&&o[a]===n||(o[a]=n)}function ae(){return a.apply(C(re),t.propMetadata(z.key(n.HASH),{}))}function oe(e,t,r,a){try{const{args:e,type:o,prefix:s,suffix:n,separator:i}=t,c=e.map(t=>{if(!(t in a))throw new g(`Property ${t} not found to compose from`);if("keys"===o)return t;if(void 0===a[t])throw new g(`Property ${e} does not contain a value to compose from`);return a[t].toString()});s&&c.unshift(s),n&&c.push(n),a[r]=c.join(i)}catch(e){throw new g("Failed to compose value: "+e)}}function se(e,r=!1,o=i,s="values",c="",p="",l={priority:55}){const d={args:e,hashResult:r,separator:o,type:s,prefix:c,suffix:p},u=[C(oe,d,l),t.propMetadata(z.key(n.COMPOSED),d)];return r&&u.push(ae()),a.apply(...u)}function ne(t){return(r,a,o,s)=>{try{switch(t){case e.OperationKeys.CREATE:s[o]=1;break;case e.OperationKeys.UPDATE:s[o]++;break;default:throw new g("Invalid operation: "+t)}}catch(e){throw new g("Failed to update version: "+e)}}}function ie(e){return!(!Reflect.getMetadata(z.key(n.TRANSIENT),e.constructor)&&!Reflect.getMetadata(z.key(n.TRANSIENT),t.Model.get(e.constructor.name)))}t.Model.prototype.hasErrors=function(e,...r){!e||e instanceof t.Model||(r.unshift(e),e=void 0);const a=this.isAsync(),o=t.validate(this,a,...r);return a?Promise.resolve(o).then(t=>t||!e?t:te(e,this,a,...r)):o||!e?o:te(e,this,a,...r)},e.BadRequestError=m,e.BaseError=O,e.BaseRepository=q,e.BlockOperations=t=>V(e.OperationKeys.REFLECT+e.OperationKeys.BLOCK,(e,t)=>e.includes(t))(t),e.ConflictError=P,e.Context=_,e.DBKeys=n,e.DBOperations=f,e.DEFAULT_ERROR_MESSAGES=p,e.DEFAULT_TIMESTAMP_FORMAT=c,e.DefaultContextFactory=$,e.DefaultRepositoryFlags=F,e.DefaultSeparator=i,e.InternalError=g,e.NotFoundError=w,e.Operations=E,e.OperationsRegistry=h,e.Repository=z,e.SerializationError=T,e.UpdateValidationKeys=l,e.UpdateValidator=d,e.VERSION="##VERSION##",e.ValidationError=A,e.after=j,e.afterAny=(e,t,r)=>j(f.ALL,e,t,r),e.afterCreate=(e,t,r)=>j(f.CREATE,e,t,r),e.afterCreateUpdate=(e,t,r)=>j(f.CREATE_UPDATE,e,t,r),e.afterDelete=(e,t,r)=>j(f.DELETE,e,t,r),e.afterRead=(e,t,r)=>j(f.READ,e,t,r),e.afterUpdate=(e,t,r)=>j(f.UPDATE,e,t,r),e.composed=(e,t=i,r=!1,a="",o="",s={priority:55})=>se(e,r,t,"values",a,o,s),e.composedFromCreateUpdate=oe,e.composedFromKeys=(e,t=i,r=!1,a="",o="",s={priority:55})=>se(e,r,t,"keys",a,o,s),e.enforceDBDecorators=D,e.findModelId=B,e.findPrimaryKey=Y,e.getAllPropertyDecoratorsRecursive=b,e.getDbDecorators=K,e.getHandlerArgs=R,e.getHandlersDecorators=S,e.getValidatableUpdateProps=Z,e.groupDecorators=k,e.hash=ae,e.hashOnCreateUpdate=re,e.id=()=>a.apply(t.required(),Q(),t.propMetadata(z.key(n.ID),{})),e.isTransient=ie,e.modelToTransient=e=>{if(!ie(e))return{model:e};const r=b(e,void 0,z.key(n.TRANSIENT)),a=Object.entries(r).reduce((t,[r,a])=>{if(a.find(e=>""===e.key)){t.transient=t.transient||{};try{t.transient[r]=e[r]}catch(e){throw new T(`Failed to serialize transient property ${r}: ${e}`)}}else t.model=t.model||{},t.model[r]=e[r];return t},{});return a.model=t.Model.build(a.model,e.constructor.name),a},e.on=N,e.onAny=(e,t,r)=>N(f.ALL,e,t,r),e.onCreate=I,e.onCreateUpdate=C,e.onDelete=(e,t,r)=>N(f.DELETE,e,t,r),e.onRead=(e,t,r)=>N(f.READ,e,t,r),e.onUpdate=x,e.operation=U,e.prefixMethod=function(e,t,r,a){const o=async function(...e){const a=await Promise.resolve(r.call(this,...e));return Promise.resolve(t.apply(this,a))}.bind(e),s=a||t.name;Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:s}),e[s]=o},e.readonly=Q,e.serialize=()=>a.apply(C(J),j(f.ALL,W),t.type([String.name,Object.name]),a.metadata(z.key(n.SERIALIZE),{})),e.serializeAfterAll=W,e.serializeOnCreateUpdate=J,e.sortDecorators=M,e.storeHandlerMetadata=V,e.suffixMethod=function(e,t,r,a){const o=async function(...e){const a=await Promise.resolve(t.call(this,...e));return r.call(this,...a)}.bind(e),s=a||t.name;Object.defineProperty(o,"name",{enumerable:!0,configurable:!0,writable:!1,value:s}),e[s]=o},e.timestamp=(r=f.CREATE_UPDATE,o=c)=>{const s=t.Validation.updateKey(n.TIMESTAMP);return t.Decoration.for(s).define({decorator:(r,o)=>{const i=[t.date(o,p.TIMESTAMP.DATE),t.required(p.TIMESTAMP.REQUIRED),t.propMetadata(t.Validation.key(n.TIMESTAMP),{operation:r,format:o}),N(r,G)];return-1!==r.indexOf(e.OperationKeys.UPDATE)?i.push(t.propMetadata(s,{message:p.TIMESTAMP.INVALID})):i.push(Q()),a.apply(...i)},args:[r,o]}).apply()},e.timestampHandler=G,e.transient=()=>{const e=z.key(n.TRANSIENT);return t.Decoration.for(e).define((e,r)=>{t.propMetadata(z.key(n.TRANSIENT),!0)(e,r),t.propMetadata(z.key(n.TRANSIENT),!0)(e.constructor)}).apply()},e.validateCompare=te,e.validateDecorator=X,e.validateDecorators=ee,e.version=()=>{const r=z.key(n.VERSION);return t.Decoration.for(r).define(t.type(Number.name),I(ne(e.OperationKeys.CREATE)),x(ne(e.OperationKeys.UPDATE)),t.propMetadata(r,!0)).apply()},e.versionCreateUpdate=ne,e.wrapMethodWithContext=H},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decorator-validation"),require("tslib"),require("@decaf-ts/reflection"),require("@decaf-ts/decoration"),require("typed-object-accumulator")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decorator-validation","tslib","@decaf-ts/reflection","@decaf-ts/decoration","typed-object-accumulator"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["db-decorators"]={},e.decafTsDecoratorValidation,e.tslib,e.decafTsReflection,e.decafTsDecoration,e.typedObjectAccumulator);
2
2
  //# sourceMappingURL=db-decorators.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-decorators.cjs","sources":["../src/model/constants.ts","../src/validation/constants.ts","../src/validation/validators/ReadOnlyValidator.ts","../src/validation/validators/TimestampValidator.ts","../src/validation/validators/UpdateValidator.ts","../src/operations/constants.ts","../src/validation/validation.ts","../src/operations/OperationsRegistry.ts","../src/operations/Operations.ts","../src/repository/errors.ts","../src/repository/utils.ts","../src/operations/decorators.ts","../src/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/identity/utils.ts","../src/repository/BaseRepository.ts","../src/repository/Repository.ts","../src/validation/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/model/utils.ts","../src/model/overrides.ts","../src/index.ts","../src/identity/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DBKeys","REFLECT","ModelKeys","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","exports","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","name","unshift","Object","values","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","getHandlerArgs","dec","prop","m","props","handlers","async","enforceDBDecorators","repo","context","model","prefix","oldModel","decorators","getDbDecorators","sortedDecorators","sortDecorators","groupDecorators","getHandlersDecorators","data","length","ON","push","apply","extraPrefix","Reflection","getAllPropertyDecorators","keys","reduce","decorator","filter","d","getAllPropertyDecoratorsRecursive","prefixes","accumulator","decs","entries","forEach","val","match","find","TYPE","RegExp","AFTER","accumHandlers","clazz","handlerDef","handlerProp","handlerKey","argsObj","pushOrSquash","mergeDecorators","defaultPriority","DefaultGroupSort","priority","handlerArgs","i","grouped","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","combined","map","sort","a","b","groupPriority","c","onCreateUpdate","groupsort","on","onUpdate","onCreate","op","after","baseOp","dataToAdd","propertyKey","compoundKey","Reflect","getMetadata","mergeData","handle","propMetadata","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","DefaultContextFactory","arg","Context","accumulate","assign","timestamp","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","wrapMethodWithContext","obj","before","method","methodName","Proxy","thisArg","argArray","transformedArgs","call","Promise","results","findPrimaryKey","idDecorators","filtered","sf","join","idProp","id","findModelId","returnEmpty","modelId","BaseRepository","_class","pk","_pk","class","_pkProps","pkProps","self","create","read","update","delete","createAll","models","all","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","merge","extract","Repository","errors","resolve","ids","oldModels","readonly","Decoration","for","define","timestampHandler","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","includes","validationPropertyDefinition","getValidationDecorators","listDecorator","ValidationKeys","LIST","validateDecorator","newModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","validationErrors","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","customTypes","flat","t","String","toLowerCase","errs","childValue","el","Model","isModel","then","every","r","allEmpty","promises","resolvedValues","res","validateCompare","exceptions","nestedErrors","propValue","designTypeDec","designType","getPropertyDecorators","some","isArray","splice","propErrors","isConstr","isPropertyModel","instance","error","ModelErrorDefinition","merged","allSettled","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","type","suffix","separator","composed","composedFrom","hashResult","versionCreateUpdate","isTransient","decoratorValidation","previousVersion","exclusions","isAsync","validate","resolvedErrs","required","transient","build","afterName","wrapped","bind","metadata","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/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/identity/utils.ts","../src/repository/BaseRepository.ts","../src/repository/Repository.ts","../src/validation/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/model/utils.ts","../src/model/overrides.ts","../src/index.ts","../src/identity/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DBKeys","REFLECT","ModelKeys","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","exports","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","name","unshift","Object","values","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","getHandlerArgs","dec","prop","m","props","handlers","async","enforceDBDecorators","repo","context","model","prefix","oldModel","decorators","getDbDecorators","sortedDecorators","sortDecorators","groupDecorators","getHandlersDecorators","data","length","ON","push","apply","extraPrefix","Reflection","getAllPropertyDecorators","keys","reduce","decorator","filter","d","getAllPropertyDecoratorsRecursive","prefixes","accumulator","decs","entries","forEach","val","match","find","TYPE","RegExp","AFTER","accumHandlers","clazz","handlerDef","handlerProp","handlerKey","argsObj","pushOrSquash","mergeDecorators","defaultPriority","DefaultGroupSort","priority","handlerArgs","i","grouped","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","combined","map","sort","a","b","groupPriority","c","onCreateUpdate","groupsort","on","onUpdate","onCreate","op","after","baseOp","dataToAdd","propertyKey","compoundKey","Reflect","getMetadata","mergeData","handle","propMetadata","storeHandlerMetadata","params","metadata","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","DefaultContextFactory","arg","Context","accumulate","assign","timestamp","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","wrapMethodWithContext","obj","before","method","methodName","Proxy","thisArg","argArray","transformedArgs","call","Promise","results","findPrimaryKey","idDecorators","filtered","sf","join","idProp","id","findModelId","returnEmpty","modelId","BaseRepository","_class","pk","_pk","class","_pkProps","pkProps","self","create","read","update","delete","createAll","models","all","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","merge","extract","Repository","errors","resolve","ids","oldModels","readonly","Decoration","for","define","timestampHandler","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","includes","validationPropertyDefinition","getValidationDecorators","listDecorator","ValidationKeys","LIST","validateDecorator","newModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","validationErrors","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","customTypes","flat","t","String","toLowerCase","errs","childValue","el","Model","isModel","then","every","r","allEmpty","promises","resolvedValues","res","validateCompare","exceptions","nestedErrors","propValue","designTypeDec","designType","getPropertyDecorators","some","isArray","splice","propErrors","isConstr","isPropertyModel","instance","error","ModelErrorDefinition","merged","allSettled","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","type","suffix","separator","composed","composedFrom","hashResult","versionCreateUpdate","isTransient","decoratorValidation","previousVersion","exclusions","isAsync","validate","resolvedErrs","operations","BLOCK","required","transient","build","afterName","wrapped","bind","beforeName","format","date","indexOf","attribute","Number"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{ModelKeys as t,validator as e,Validator as r,DEFAULT_ERROR_MESSAGES as n,Validation as s,Hashing as a,propMetadata as o,sf as i,Decoration as c,type as u,date as l,required as p,getValidationDecorators as h,ValidationKeys as d,toConditionalPromise as f,Model as E,ModelErrorDefinition as y,validate as m}from"@decaf-ts/decorator-validation";import{__decorate as A,__metadata as g}from"tslib";import{isEqual as T,Reflection as w,apply as P,metadata as R}from"@decaf-ts/reflection";import{ObjectAccumulator as O}from"typed-object-accumulator";const D={REFLECT:t.REFLECT+"persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},b="_",v="dd/MM/yyyy HH:mm:ss:S",L={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},k={REFLECT:"db.update.validation.",TIMESTAMP:D.TIMESTAMP,READONLY:D.READONLY};let S=class extends r{constructor(){super(L.READONLY.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t)return T(t,e)?void 0:this.getMessage(r||this.message)}};S=A([e(k.READONLY),g("design:paramtypes",[])],S);let I=class extends r{constructor(){super(L.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=A([e(k.TIMESTAMP),g("design:paramtypes",[])],I);class N extends r{constructor(t=n.DEFAULT,...e){super(t,...e)}}var x,j;s.updateKey=t=>k.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."})(x||(x={})),(t=>{t.CREATE_ALL="createAll",t.READ_ALL="readAll",t.UPDATE_ALL="updateAll",t.DELETE_ALL="deleteAll"})(j||(j={}));const C={CREATE:[x.CREATE],READ:[x.READ],UPDATE:[x.UPDATE],DELETE:[x.DELETE],CREATE_UPDATE:[x.CREATE,x.UPDATE],READ_CREATE:[x.READ,x.CREATE],ALL:[x.CREATE,x.READ,x.UPDATE,x.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=$.getHandlerName(t);this.cache[s]||(this.cache[s]={}),this.cache[s][n]||(this.cache[s][n]={}),this.cache[s][n][e]||(this.cache[s][n][e]={}),this.cache[s][n][e][a]||(this.cache[s][n][e][a]=t)}}class ${constructor(){}static getHandlerName(t){return t.name?t.name:a.hash(t.toString())}static key(t){return x.REFLECT+t}static get(t,e,r){return $.registry.get(t,e,r)}static getOpRegistry(){return $.registry||($.registry=new M),$.registry}static register(t,e,r,n){$.getOpRegistry().register(t,e,r,n)}}class U extends Error{constructor(t,e,r){if(e instanceof U)return e;super(`[${t}] ${e instanceof Error?e.message:e}`),this.code=r,e instanceof Error&&(this.stack=e.stack)}}class F extends U{constructor(t,e=F.name,r=400){super(e,t,r)}}class _ extends F{constructor(t){super(t,_.name,422)}}class Y extends U{constructor(t,e=Y.name,r=500){super(e,t,r)}}class H extends Y{constructor(t){super(t,H.name,500)}}class V extends F{constructor(t){super(t,V.name,404)}}class z extends F{constructor(t){super(t,z.name,409)}}const Q=(t,e,r,n)=>{const s=r.constructor.name;if(!s)throw new Y("Could not determine model class");n=n||{},t.props.handlers[s]&&t.props.handlers[s][e]&&(n={...t.props.handlers[s][e],...n});let a=Object.getPrototypeOf(r);return a===Object.prototype?n:(a.constructor.name===s&&(a=Object.getPrototypeOf(a)),Q(t,e,a,n))};async function K(t,e,r,n,s,a){const o=q(r,n,s);if(!o)return;const i=B(X(W(r,o,s)));for(const o of i){const i=[e,o.data.length>1?o.data:o.data[0],o.prop.length>1?o.prop:o.prop[0],r];if(n===x.UPDATE&&s===x.ON){if(!a)throw new Y("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 Y(n)}}}function q(t,e,r){const n=w.getAllPropertyDecorators(t,x.REFLECT+(r||""));if(n)return Object.keys(n).reduce((t,r)=>{const s=n[r].filter(t=>t.key===e);return s&&s.length&&(t||(t={}),t[r]=s),t},void 0)}const G=(e,r,...n)=>{const s=r||{},a=w.getAllPropertyDecorators(e,...n);if(a&&(e=>{Object.entries(e).forEach(([e,r])=>{s[e]=s[e]||[],((e,...r)=>{r.forEach(r=>{let n;if(!(n=s[e].find(t=>t.key===r.key))||n.props.operation!==r.props.operation)return void s[e].push(r);if(r.key===t.TYPE)return;const{handlers:a,operation:o}=r.props;if(!o||!o.match(RegExp(`^(:?${x.ON}|${x.AFTER})(:?${x.CREATE}|${x.READ}|${x.UPDATE}|${x.DELETE})$`)))return void s[e].push(r);const i=n.props.handlers;Object.entries(a).forEach(([t,e])=>{t in i?Object.entries(e).forEach(([e,r])=>{e in i[t]?Object.entries(r).forEach(([r,n])=>{r in i[t][e]||(i[t][e][r]=n)}):i[t][e]=r}):i[t]=e})})})(e,...r)})})(a),Object.getPrototypeOf(e)===Object.prototype)return s;const o=Object.getPrototypeOf(e);return o?G(o,s,...n):s},J=50,Z={priority:J};function W(t,e,r){const n=[];for(const s in e){const a=e[s];for(const e of a){const{key:a}=e,o=$.get(t,s,r+a);if(!o||!o.length)throw new Y(`Could not find registered handler for the operation ${r+a} under property ${s}`);const i=Q(e,s,t);if(!i||Object.values(i).length!==o.length)throw new Y("Args and handlers length do not match");for(let t=0;t<o.length;t++){const e=i[o[t].name].data;n.push({handler:o[t],data:[e],prop:[s]})}}}return n}function X(t){const e=t.reduce((t,e)=>{if(!e||!e.data||!e.prop)throw new Y("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 B(t){return t.sort((t,e)=>(t.data[0].priority??J)-(e.data[0].priority??J)),t}function tt(t,e,r){return ot(C.CREATE_UPDATE,t,e,r)}function et(t,e,r){return ot(C.UPDATE,t,e,r)}function rt(t,e,r){return ot(C.CREATE,t,e,r)}function nt(t,e,r){return ot(C.READ,t,e,r)}function st(t,e,r){return ot(C.DELETE,t,e,r)}function at(t,e,r){return ot(C.ALL,t,e,r)}function ot(t=C.ALL,e,r,n){return ft(x.ON,t,e,r,n)}function it(t,e,r){return dt(C.CREATE_UPDATE,t,e,r)}function ct(t,e,r){return dt(C.UPDATE,t,e,r)}function ut(t,e,r){return dt(C.CREATE,t,e,r)}function lt(t,e,r){return dt(C.READ,t,e,r)}function pt(t,e,r){return dt(C.DELETE,t,e,r)}function ht(t,e,r){return dt(C.ALL,t,e,r)}function dt(t=C.ALL,e,r,n){return ft(x.AFTER,t,e,r,n)}function ft(t,e=C.ALL,r,n,s=Z){return(a,i)=>{const c=a.constructor.name,u=e.reduce((e,u)=>{const l=t+u;let p=Reflect.getMetadata($.key(l),a,i);p||(p={operation:u,handlers:{}});const h=$.getHandlerName(r);let d=s;if(n){if(Object.keys(n).filter(t=>t in s).length>0)throw new Y("Unable to merge groupSort into dataToAdd due to overlaping keys");d={...s,...n}}return p.handlers[c]&&p.handlers[c][i]&&h in p.handlers[c][i]||(p.handlers[c]=p.handlers[c]||{},p.handlers[c][i]=p.handlers[c][i]||{},p.handlers[c][i][h]={data:d},e.push(((t,e)=>(r,n)=>{$.register(e,t,r,n)})(l,r),o($.key(l),p))),e},[]);return P(...u)(a,i)}}const Et={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},yt=t=>(new mt).accumulate(Object.assign({},t,{timestamp:new Date}));class mt{constructor(){this.cache=new O,Object.defineProperty(this,"cache",{value:new O,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=yt}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 mt.factory(Object.assign({},t.cache,e||{}))}static async from(t,e,r,...n){return mt.factory(Object.assign({},Et,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):mt.from(t,s||{},e,...r)}let i;return a?a instanceof mt?(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 At(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 gt(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 Tt(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 mt))throw new Y("Missing a context");let i=await t.call(r,...a);return i instanceof Promise&&(i=await i),i=n.call(r,i,o),i instanceof Promise&&(i=await i),i}})}function wt(e){const r=G(e,void 0,D.REFLECT+D.ID),n=Object.entries(r).reduce((e,[r,n])=>{const s=n.filter(e=>e.key!==t.TYPE);return s&&s.length&&(e[r]=e[r]||[],e[r].push(...s)),e},{});if(!n||!Object.keys(n).length)throw new Y("Could not find ID decorated Property");if(Object.keys(n).length>1)throw new Y(i(Object.keys(n).join(", ")));const s=Object.keys(n)[0];if(!s)throw new Y("Could not find ID decorated Property");return{id:s,props:n[s][0].props}}function Pt(t,e=!1){const r=wt(t).id,n=t[r];if(void 0===n&&!e)throw new Y("No value for the Id is defined under the property "+r);return n}class Rt{get class(){if(!this._class)throw new Y("No class definition found for this repository");return this._class}get pk(){if(!this._pk){const{id:t,props:e}=wt(new this.class);this._pk=t,this._pkProps=e}return this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(t){t&&(this._class=t);const e=this;[this.create,this.read,this.update,this.delete].forEach(t=>{const r=t.name;Tt(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 mt.args(x.CREATE,this.class,e);return t=new this.class(t),await K(this,r.context,t,x.CREATE,x.ON),[t,...r.args]}async createSuffix(t,e){return await K(this,e,t,x.CREATE,x.AFTER),t}async createAllPrefix(t,...e){const r=await mt.args(x.CREATE,this.class,e);return await Promise.all(t.map(async t=>(t=new this.class(t),await K(this,r.context,t,x.CREATE,x.ON),t))),[t,...r.args]}async createAllSuffix(t,e){return await Promise.all(t.map(t=>K(this,e,t,x.CREATE,x.AFTER))),t}async readAll(t,...e){return await Promise.all(t.map(t=>this.read(t,...e)))}async readSuffix(t,e){return await K(this,e,t,x.READ,x.AFTER),t}async readPrefix(t,...e){const r=await mt.args(x.READ,this.class,e),n=new this.class;return n[this.pk]=t,await K(this,r.context,n,x.READ,x.ON),[t,...r.args]}async readAllPrefix(t,...e){const r=await mt.args(x.READ,this.class,e);return await Promise.all(t.map(async t=>{const e=new this.class;return e[this.pk]=t,K(this,r.context,e,x.READ,x.ON)})),[t,...r.args]}async readAllSuffix(t,e){return await Promise.all(t.map(t=>K(this,e,t,x.READ,x.AFTER))),t}async updateAll(t,...e){return Promise.all(t.map(t=>this.update(t,...e)))}async updateSuffix(t,e){return await K(this,e,t,x.UPDATE,x.AFTER),t}async updatePrefix(t,...e){const r=await mt.args(x.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new Y("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);return await K(this,r.context,t,x.UPDATE,x.ON,s),[t,...r.args]}async updateAllPrefix(t,...e){const r=await mt.args(x.UPDATE,this.class,e);return await Promise.all(t.map(t=>(t=new this.class(t),K(this,r.context,t,x.UPDATE,x.ON),t))),[t,...r.args]}async updateAllSuffix(t,e){return await Promise.all(t.map(t=>K(this,e,t,x.UPDATE,x.AFTER))),t}async deleteAll(t,...e){return Promise.all(t.map(t=>this.delete(t,...e)))}async deleteSuffix(t,e){return await K(this,e,t,x.DELETE,x.AFTER),t}async deletePrefix(t,...e){const r=await mt.args(x.DELETE,this.class,e),n=await this.read(t,...r.args);return await K(this,r.context,n,x.DELETE,x.ON),[t,...r.args]}async deleteAllPrefix(t,...e){const r=await mt.args(x.DELETE,this.class,e),n=await this.readAll(t,...r.args);return await Promise.all(n.map(async t=>K(this,r.context,t,x.DELETE,x.ON))),[t,...r.args]}async deleteAllSuffix(t,e){return await Promise.all(t.map(t=>K(this,e,t,x.DELETE,x.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 Ot extends Rt{constructor(t){super(t)}async createPrefix(t,...e){const r=await mt.args(x.CREATE,this.class,e);t=new this.class(t),await K(this,r.context,t,x.CREATE,x.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 mt.args(x.CREATE,this.class,e);await Promise.all(t.map(async t=>(t=new this.class(t),await K(this,r.context,t,x.CREATE,x.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 mt.args(x.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new Y("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);t=this.merge(s,t),await K(this,r.context,t,x.UPDATE,x.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 mt.args(x.UPDATE,this.class,e),n=t.map(t=>{const e=t[this.pk];if(void 0===e)throw new Y("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)=>K(this,r.context,t,x.UPDATE,x.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]}static key(t){return D.REFLECT+t}}function Dt(t=L.READONLY.INVALID){const e=s.updateKey(D.READONLY);return c.for(e).define(o(e,{message:t})).apply()}async function bt(t,e,r,n){n[r]=t.timestamp}function vt(t=C.CREATE_UPDATE,e=v){const r=s.updateKey(D.TIMESTAMP);return c.for(r).define({decorator:(t,e)=>{const n=[l(e,L.TIMESTAMP.DATE),p(L.TIMESTAMP.REQUIRED),o(s.key(D.TIMESTAMP),{operation:t,format:e}),ot(t,bt)];return-1!==t.indexOf(x.UPDATE)?n.push(o(r,{message:L.TIMESTAMP.INVALID})):n.push(Dt()),P(...n)},args:[t,e]}).apply()}async function Lt(t,e,r,n){if(n[r])try{n[r]=JSON.stringify(n[r])}catch(t){throw new H(`Failed to serialize ${r.toString()} property of model ${n.constructor.name}: e`)}}async function kt(t,e,r,n){if(n[r]&&"string"==typeof n[r])try{n[r]=JSON.parse(n[r])}catch(t){throw new H(`Failed to deserialize ${r.toString()} property of model ${n.constructor.name}: ${t}`)}}function St(){return P(tt(Lt),dt(C.ALL,kt),u([String.name,Object.name]),R(Ot.key(D.SERIALIZE),{}))}function It(){return P(p(),Dt(),o(Ot.key(D.ID),{}))}function Nt(t,e){const r=[];for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&!e.includes(n)){const e=h(t,n,k.REFLECT),s=h(t,n).decorators.find(({key:t})=>t===d.LIST);s&&e.decorators.push(s),r.push(e)}return r}function xt(t,e,r,n,a){const o=s.get(n.key);if(!o)throw Error("Missing validator for "+n.key);if(!o.updateHasErrors)return f(void 0,a);if(!a&&n.props.async)return f(void 0,a);const i=Object.values(n.props)||{},c=o.updateHasErrors(t[r],e[r],...i);return f(c,a)}function jt(t,e,r,n,s){const a={};for(const o of n){if(!s&&o.props.async)continue;let n=xt(t,e,r,o,s);if(o.key===d.LIST&&(!n||s)){const a=t[r],i=e[r],c=a instanceof Set?[...a]:a,u=i instanceof Set?[...i]:i;if(c&&c.length>0){const t=[o.props.class||o.props.clazz||o.props.customTypes].flat().map(t=>((t=(t="function"!=typeof t||t.name?t:t()).name?t.name:t)+"").toLowerCase()),e=c.map(e=>{const r=Pt(e,!0);if(!r)return"Failed to find model id";const n=u.find(t=>r===Pt(t,!0));return E.isModel(e)?e.hasErrors(n):t.includes(typeof e)?void 0:"Value has no validatable type"});if(s)n=Promise.all(e).then(t=>t.every(t=>!t)?void 0:t);else{const t=e.every(t=>!t);n=e.length>0&&!t?e:void 0}}}n&&(a[o.key]=n)}if(!s)return Object.keys(a).length>0?a:void 0;const o=Object.keys(a),i=Object.values(a);return Promise.all(i).then(t=>{const e={};for(let r=0;r<t.length;r++){const n=t[r];void 0!==n&&(e[o[r]]=n)}return Object.keys(e).length>0?e:void 0})}function Ct(e,r,n,...s){const a=Nt(r,s),o={},i={};for(const{prop:s,decorators:c}of a){const a=s+"";let u=r[s];if(!c?.length)continue;const l=c.find(e=>[t.TYPE,d.TYPE].includes(e.key));if(!l)continue;const p=l.props.name;if([Array.name,Set.name].includes(p)){const{decorators:e}=w.getPropertyDecorators(d.REFLECT,r,a);if(!e.some(t=>t.key===d.LIST)){o[a]={[d.TYPE]:`Array or Set property '${a}' requires a @list decorator`};continue}if(u&&!(Array.isArray(u)||u instanceof Set)){o[a]={[d.TYPE]:`Property '${s+""}' must be either an array or a Set`};continue}for(let r=e.length-1;r>=0;r--)e[r].key===t.TYPE&&e.splice(r,1);u=u instanceof Set?[...u]:u}const h=jt(r,e,a,c,n)||{},f=E.isPropertyModel(r,a);if(u&&f){const t=u;"object"!=typeof t||!t.hasErrors||"function"!=typeof t.hasErrors||(i[a]=t.hasErrors(e[s]))}(Object.keys(h).length>0||n)&&(o[a]=h),n||Object.entries(i[a]||{}).forEach(([t,e])=>{void 0!==e&&(o[`${a}.${t}`]=e)})}if(!n)return Object.keys(o).length>0?new y(o):void 0;const c=o,u=Object.keys(c),l=Object.values(c);return Promise.allSettled(l).then(async t=>{const e={};for(const[t,r]of Object.entries(i)){const n=await r;n&&Object.entries(n).forEach(([r,n])=>{void 0!==n&&(e[[t,r].join(".")]=n)})}for(let r=0;r<t.length;r++){const n=u[r],s=t[r];"fulfilled"===s.status&&void 0!==s.value?e[n]=s.value:"rejected"===s.status&&(e[n]=s.reason instanceof Error?s.reason.message:(s.reason||"Validation failed")+"")}return Object.keys(e).length>0?new y(e):void 0})}function Mt(t,e,r,n,s){if(void 0===n[r])return;const o=a.hash(n[r]);s&&n[r]===o||(n[r]=o)}function $t(){return P(tt(Mt),o(Ot.key(D.HASH),{}))}function Ut(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 Y(`Property ${e} not found to compose from`);if("keys"===s)return e;if(void 0===n[e])throw new Y(`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 Y("Failed to compose value: "+t)}}function Ft(t,e=!1,r=b,n="values",s="",a="",i={priority:55}){const c={args:t,hashResult:e,separator:r,type:n,prefix:s,suffix:a},u=[tt(Ut,c,i),o(Ot.key(D.COMPOSED),c)];return e&&u.push($t()),P(...u)}function _t(t,e=b,r=!1,n="",s="",a={priority:55}){return Ft(t,r,e,"keys",n,s,a)}function Yt(t,e=b,r=!1,n="",s="",a={priority:55}){return Ft(t,r,e,"values",n,s,a)}function Ht(t){return(e,r,n,s)=>{try{switch(t){case x.CREATE:s[n]=1;break;case x.UPDATE:s[n]++;break;default:throw new Y("Invalid operation: "+t)}}catch(t){throw new Y("Failed to update version: "+t)}}}function Vt(){const t=Ot.key(D.VERSION);return c.for(t).define(u(Number.name),rt(Ht(x.CREATE)),et(Ht(x.UPDATE)),o(t,!0)).apply()}function zt(){const t=Ot.key(D.TRANSIENT);return c.for(t).define((t,e)=>{o(Ot.key(D.TRANSIENT),!0)(t,e),o(Ot.key(D.TRANSIENT),!0)(t.constructor)}).apply()}function Qt(t){return!(!Reflect.getMetadata(Ot.key(D.TRANSIENT),t.constructor)&&!Reflect.getMetadata(Ot.key(D.TRANSIENT),E.get(t.constructor.name)))}function Kt(t){if(!Qt(t))return{model:t};const e=G(t,void 0,Ot.key(D.TRANSIENT)),r=Object.entries(e).reduce((e,[r,n])=>{if(n.find(t=>""===t.key)){e.transient=e.transient||{};try{e.transient[r]=t[r]}catch(t){throw new H(`Failed to serialize transient property ${r}: ${t}`)}}else e.model=e.model||{},e.model[r]=t[r];return e},{});return r.model=E.build(r.model,t.constructor.name),r}E.prototype.hasErrors=function(t,...e){!t||t instanceof E||(e.unshift(t),t=void 0);const r=this.isAsync(),n=m(this,r,...e);return r?Promise.resolve(n).then(n=>n||!t?n:Ct(t,this,r,...e)):n||!t?n:Ct(t,this,r,...e)};const qt="##VERSION##";export{F as BadRequestError,U as BaseError,Rt as BaseRepository,j as BulkCrudOperationKeys,z as ConflictError,mt as Context,D as DBKeys,C as DBOperations,L as DEFAULT_ERROR_MESSAGES,v as DEFAULT_TIMESTAMP_FORMAT,yt as DefaultContextFactory,Et as DefaultRepositoryFlags,b as DefaultSeparator,Y as InternalError,V as NotFoundError,x as OperationKeys,$ as Operations,M as OperationsRegistry,S as ReadOnlyValidator,Ot as Repository,H as SerializationError,I as TimestampValidator,k as UpdateValidationKeys,N as UpdateValidator,qt as VERSION,_ as ValidationError,dt as after,ht as afterAny,ut as afterCreate,it as afterCreateUpdate,pt as afterDelete,lt as afterRead,ct as afterUpdate,Yt as composed,Ut as composedFromCreateUpdate,_t as composedFromKeys,K as enforceDBDecorators,Pt as findModelId,wt as findPrimaryKey,G as getAllPropertyDecoratorsRecursive,q as getDbDecorators,Q as getHandlerArgs,W as getHandlersDecorators,Nt as getValidatableUpdateProps,X as groupDecorators,$t as hash,Mt as hashOnCreateUpdate,It as id,Qt as isTransient,Kt as modelToTransient,ot as on,at as onAny,rt as onCreate,tt as onCreateUpdate,st as onDelete,nt as onRead,et as onUpdate,ft as operation,At as prefixMethod,Dt as readonly,St as serialize,kt as serializeAfterAll,Lt as serializeOnCreateUpdate,B as sortDecorators,gt as suffixMethod,vt as timestamp,bt as timestampHandler,zt as transient,Ct as validateCompare,xt as validateDecorator,jt as validateDecorators,Vt as version,Ht as versionCreateUpdate,Tt as wrapMethodWithContext};
1
+ import{ModelKeys as t,validator as e,Validator as r,DEFAULT_ERROR_MESSAGES as n,Validation as s,Hashing as a,propMetadata as o,sf as i,Decoration as c,type as u,date as l,required as p,getValidationDecorators as d,ValidationKeys as h,toConditionalPromise as f,Model as E,ModelErrorDefinition as y,validate as m}from"@decaf-ts/decorator-validation";import{__decorate as A,__metadata as g}from"tslib";import{isEqual as T,Reflection as w,apply as P,metadata as R}from"@decaf-ts/reflection";import{metadata as O}from"@decaf-ts/decoration";import{ObjectAccumulator as D}from"typed-object-accumulator";const b={REFLECT:t.REFLECT+"persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},L="_",v="dd/MM/yyyy HH:mm:ss:S",k={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},S={REFLECT:"db.update.validation.",TIMESTAMP:b.TIMESTAMP,READONLY:b.READONLY};let I=class extends r{constructor(){super(k.READONLY.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t)return T(t,e)?void 0:this.getMessage(r||this.message)}};I=A([e(S.READONLY),g("design:paramtypes",[])],I);let N=class extends r{constructor(){super(k.TIMESTAMP.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t){r=r||this.getMessage(r||this.message);try{t=new Date(t),e=new Date(e)}catch(t){return r}return t>e?void 0:r}}};N=A([e(S.TIMESTAMP),g("design:paramtypes",[])],N);class x extends r{constructor(t=n.DEFAULT,...e){super(t,...e)}}var j,C;s.updateKey=t=>S.REFLECT+t,(t=>{t.REFLECT="decaf.model.db.operations.",t.CREATE="create",t.READ="read",t.UPDATE="update",t.DELETE="delete",t.ON="on.",t.AFTER="after.",t.BLOCK="block"})(j||(j={})),(t=>{t.CREATE_ALL="createAll",t.READ_ALL="readAll",t.UPDATE_ALL="updateAll",t.DELETE_ALL="deleteAll"})(C||(C={}));const M={CREATE:[j.CREATE],READ:[j.READ],UPDATE:[j.UPDATE],DELETE:[j.DELETE],CREATE_UPDATE:[j.CREATE,j.UPDATE],READ_CREATE:[j.READ,j.CREATE],ALL:[j.CREATE,j.READ,j.UPDATE,j.DELETE]};class ${constructor(){this.cache={}}get(t,e,r,n){let s;n=n||[];try{s="string"==typeof t?t:t.constructor.name,n.unshift(...Object.values(this.cache[s][e][r]||[]))}catch(e){if("string"==typeof t||t===Object.prototype||Object.getPrototypeOf(t)===Object.prototype)return n}let a=Object.getPrototypeOf(t);return a.constructor.name===s&&(a=Object.getPrototypeOf(a)),this.get(a,e,r,n)}register(t,e,r,n){const s=r.constructor.name,a=U.getHandlerName(t);this.cache[s]||(this.cache[s]={}),this.cache[s][n]||(this.cache[s][n]={}),this.cache[s][n][e]||(this.cache[s][n][e]={}),this.cache[s][n][e][a]||(this.cache[s][n][e][a]=t)}}class U{constructor(){}static getHandlerName(t){return t.name?t.name:a.hash(t.toString())}static key(t){return j.REFLECT+t}static get(t,e,r){return U.registry.get(t,e,r)}static getOpRegistry(){return U.registry||(U.registry=new $),U.registry}static register(t,e,r,n){U.getOpRegistry().register(t,e,r,n)}}class F extends Error{constructor(t,e,r){if(e instanceof F)return e;super(`[${t}] ${e instanceof Error?e.message:e}`),this.code=r,e instanceof Error&&(this.stack=e.stack)}}class _ extends F{constructor(t,e=_.name,r=400){super(e,t,r)}}class Y extends _{constructor(t){super(t,Y.name,422)}}class H extends F{constructor(t,e=H.name,r=500){super(e,t,r)}}class V extends H{constructor(t){super(t,V.name,500)}}class z extends _{constructor(t){super(t,z.name,404)}}class K extends _{constructor(t){super(t,K.name,409)}}const Q=(t,e,r,n)=>{const s=r.constructor.name;if(!s)throw new H("Could not determine model class");n=n||{},t.props.handlers[s]&&t.props.handlers[s][e]&&(n={...t.props.handlers[s][e],...n});let a=Object.getPrototypeOf(r);return a===Object.prototype?n:(a.constructor.name===s&&(a=Object.getPrototypeOf(a)),Q(t,e,a,n))};async function q(t,e,r,n,s,a){const o=B(r,n,s);if(!o)return;const i=tt(X(W(r,o,s)));for(const o of i){const i=[e,o.data.length>1?o.data:o.data[0],o.prop.length>1?o.prop:o.prop[0],r];if(n===j.UPDATE&&s===j.ON){if(!a)throw new H("Missing old model for update operation");i.push(a)}try{await o.handler.apply(t,i)}catch(t){const n=`Failed to execute handler ${o.handler.name} for ${o.prop} on ${r.constructor.name} due to error: ${t}`;if(e.get("breakOnHandlerError"))throw new H(n)}}}function B(t,e,r){const n=w.getAllPropertyDecorators(t,j.REFLECT+(r||""));if(n)return Object.keys(n).reduce((t,r)=>{const s=n[r].filter(t=>t.key===e);return s&&s.length&&(t||(t={}),t[r]=s),t},void 0)}const G=(e,r,...n)=>{const s=r||{},a=w.getAllPropertyDecorators(e,...n);if(a&&(e=>{Object.entries(e).forEach(([e,r])=>{s[e]=s[e]||[],((e,...r)=>{r.forEach(r=>{let n;if(!(n=s[e].find(t=>t.key===r.key))||n.props.operation!==r.props.operation)return void s[e].push(r);if(r.key===t.TYPE)return;const{handlers:a,operation:o}=r.props;if(!o||!o.match(RegExp(`^(:?${j.ON}|${j.AFTER})(:?${j.CREATE}|${j.READ}|${j.UPDATE}|${j.DELETE})$`)))return void s[e].push(r);const i=n.props.handlers;Object.entries(a).forEach(([t,e])=>{t in i?Object.entries(e).forEach(([e,r])=>{e in i[t]?Object.entries(r).forEach(([r,n])=>{r in i[t][e]||(i[t][e][r]=n)}):i[t][e]=r}):i[t]=e})})})(e,...r)})})(a),Object.getPrototypeOf(e)===Object.prototype)return s;const o=Object.getPrototypeOf(e);return o?G(o,s,...n):s},J=50,Z={priority:J};function W(t,e,r){const n=[];for(const s in e){const a=e[s];for(const e of a){const{key:a}=e,o=U.get(t,s,r+a);if(!o||!o.length)throw new H(`Could not find registered handler for the operation ${r+a} under property ${s}`);const i=Q(e,s,t);if(!i||Object.values(i).length!==o.length)throw new H("Args and handlers length do not match");for(let t=0;t<o.length;t++){const e=i[o[t].name].data;n.push({handler:o[t],data:[e],prop:[s]})}}}return n}function X(t){const e=t.reduce((t,e)=>{if(!e||!e.data||!e.prop)throw new H("Missing decorator properties or data");if(!e.data[0].group)return t.set(Symbol(),e),t;const r=e.data[0].group;if(t.has(r)){const n=t.get(r);t.set(r,{handler:n.handler,data:[...n.data,...e.data],prop:[...n.prop,...e.prop]})}else t.set(r,{...e});return t},new Map),r=Array.from(e.values());return r.forEach(t=>{const e=t.data.map((e,r)=>({data:e,prop:t.prop[r]}));e.sort((t,e)=>(t.data.groupPriority??50)-(e.data.groupPriority??50)),t.data=e.map(t=>t.data),t.prop=e.map(t=>t.prop)}),r}function tt(t){return t.sort((t,e)=>(t.data[0].priority??J)-(e.data[0].priority??J)),t}function et(t,e,r){return it(M.CREATE_UPDATE,t,e,r)}function rt(t,e,r){return it(M.UPDATE,t,e,r)}function nt(t,e,r){return it(M.CREATE,t,e,r)}function st(t,e,r){return it(M.READ,t,e,r)}function at(t,e,r){return it(M.DELETE,t,e,r)}function ot(t,e,r){return it(M.ALL,t,e,r)}function it(t=M.ALL,e,r,n){return Et(j.ON,t,e,r,n)}function ct(t,e,r){return ft(M.CREATE_UPDATE,t,e,r)}function ut(t,e,r){return ft(M.UPDATE,t,e,r)}function lt(t,e,r){return ft(M.CREATE,t,e,r)}function pt(t,e,r){return ft(M.READ,t,e,r)}function dt(t,e,r){return ft(M.DELETE,t,e,r)}function ht(t,e,r){return ft(M.ALL,t,e,r)}function ft(t=M.ALL,e,r,n){return Et(j.AFTER,t,e,r,n)}function Et(t,e=M.ALL,r,n,s=Z){return(a,i)=>{const c=a.constructor.name,u=e.reduce((e,u)=>{const l=t+u;let p=Reflect.getMetadata(U.key(l),a,i);p||(p={operation:u,handlers:{}});const d=U.getHandlerName(r);let h=s;if(n){if(Object.keys(n).filter(t=>t in s).length>0)throw new H("Unable to merge groupSort into dataToAdd due to overlaping keys");h={...s,...n}}return p.handlers[c]&&p.handlers[c][i]&&d in p.handlers[c][i]||(p.handlers[c]=p.handlers[c]||{},p.handlers[c][i]=p.handlers[c][i]||{},p.handlers[c][i][d]={data:h},e.push(((t,e)=>(r,n)=>{U.register(e,t,r,n)})(l,r),o(U.key(l),p))),e},[]);return P(...u)(a,i)}}function yt(t,e){return(...r)=>O(t,{args:r,handler:e})}const mt=t=>yt(j.REFLECT+j.BLOCK,(t,e)=>t.includes(e))(t),At={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0},gt=t=>(new Tt).accumulate(Object.assign({},t,{timestamp:new Date}));class Tt{constructor(){this.cache=new D,Object.defineProperty(this,"cache",{value:new D,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=gt}accumulate(t){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(t),writable:!1,enumerable:!1,configurable:!0}),this}get timestamp(){return this.cache.timestamp}get(t){try{return this.cache.get(t)}catch(e){const r=this.cache.parentContext;if(r)return r.get(t);throw e}}static childFrom(t,e){return Tt.factory(Object.assign({},t.cache,e||{}))}static async from(t,e,r,...n){return Tt.factory(Object.assign({},At,e,{operation:t,model:r}))}static async args(t,e,r,n,s){const a=r.pop();async function o(){return n?n.context(t,s||{},e,...r):Tt.from(t,s||{},e,...r)}let i;return a?a instanceof Tt?(i=a,r.push(a)):(r.push(a),i=await o(),r.push(i)):(i=await o(),r.push(i)),{context:i,args:r}}}function wt(t,e,r,n){const s=async function(...t){const n=await Promise.resolve(r.call(this,...t));return Promise.resolve(e.apply(this,n))}.bind(t),a=n||e.name;Object.defineProperty(s,"name",{enumerable:!0,configurable:!0,writable:!1,value:a}),t[a]=s}function Pt(t,e,r,n){const s=async function(...t){const n=await Promise.resolve(e.call(this,...t));return r.call(this,...n)}.bind(t),a=n||e.name;Object.defineProperty(s,"name",{enumerable:!0,configurable:!0,writable:!1,value:a}),t[a]=s}function Rt(t,e,r,n,s){const a=s||r.name;t[a]=new Proxy(t[a],{apply:async(t,r,s)=>{let a=e.call(r,...s);a instanceof Promise&&(a=await a);const o=a[a.length-1];if(!(o instanceof Tt))throw new H("Missing a context");let i=await t.call(r,...a);return i instanceof Promise&&(i=await i),i=n.call(r,i,o),i instanceof Promise&&(i=await i),i}})}function Ot(e){const r=G(e,void 0,b.REFLECT+b.ID),n=Object.entries(r).reduce((e,[r,n])=>{const s=n.filter(e=>e.key!==t.TYPE);return s&&s.length&&(e[r]=e[r]||[],e[r].push(...s)),e},{});if(!n||!Object.keys(n).length)throw new H("Could not find ID decorated Property");if(Object.keys(n).length>1)throw new H(i(Object.keys(n).join(", ")));const s=Object.keys(n)[0];if(!s)throw new H("Could not find ID decorated Property");return{id:s,props:n[s][0].props}}function Dt(t,e=!1){const r=Ot(t).id,n=t[r];if(void 0===n&&!e)throw new H("No value for the Id is defined under the property "+r);return n}class bt{get class(){if(!this._class)throw new H("No class definition found for this repository");return this._class}get pk(){if(!this._pk){const{id:t,props:e}=Ot(new this.class);this._pk=t,this._pkProps=e}return this._pk}get pkProps(){return this._pkProps||this.pk,this._pkProps}constructor(t){t&&(this._class=t);const e=this;[this.create,this.read,this.update,this.delete].forEach(t=>{const r=t.name;Rt(e,e[r+"Prefix"],t,e[r+"Suffix"])})}async createAll(t,...e){return Promise.all(t.map(t=>this.create(t,...e)))}async createPrefix(t,...e){const r=await Tt.args(j.CREATE,this.class,e);return t=new this.class(t),await q(this,r.context,t,j.CREATE,j.ON),[t,...r.args]}async createSuffix(t,e){return await q(this,e,t,j.CREATE,j.AFTER),t}async createAllPrefix(t,...e){const r=await Tt.args(j.CREATE,this.class,e);return await Promise.all(t.map(async t=>(t=new this.class(t),await q(this,r.context,t,j.CREATE,j.ON),t))),[t,...r.args]}async createAllSuffix(t,e){return await Promise.all(t.map(t=>q(this,e,t,j.CREATE,j.AFTER))),t}async readAll(t,...e){return await Promise.all(t.map(t=>this.read(t,...e)))}async readSuffix(t,e){return await q(this,e,t,j.READ,j.AFTER),t}async readPrefix(t,...e){const r=await Tt.args(j.READ,this.class,e),n=new this.class;return n[this.pk]=t,await q(this,r.context,n,j.READ,j.ON),[t,...r.args]}async readAllPrefix(t,...e){const r=await Tt.args(j.READ,this.class,e);return await Promise.all(t.map(async t=>{const e=new this.class;return e[this.pk]=t,q(this,r.context,e,j.READ,j.ON)})),[t,...r.args]}async readAllSuffix(t,e){return await Promise.all(t.map(t=>q(this,e,t,j.READ,j.AFTER))),t}async updateAll(t,...e){return Promise.all(t.map(t=>this.update(t,...e)))}async updateSuffix(t,e){return await q(this,e,t,j.UPDATE,j.AFTER),t}async updatePrefix(t,...e){const r=await Tt.args(j.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new H("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);return await q(this,r.context,t,j.UPDATE,j.ON,s),[t,...r.args]}async updateAllPrefix(t,...e){const r=await Tt.args(j.UPDATE,this.class,e);return await Promise.all(t.map(t=>(t=new this.class(t),q(this,r.context,t,j.UPDATE,j.ON),t))),[t,...r.args]}async updateAllSuffix(t,e){return await Promise.all(t.map(t=>q(this,e,t,j.UPDATE,j.AFTER))),t}async deleteAll(t,...e){return Promise.all(t.map(t=>this.delete(t,...e)))}async deleteSuffix(t,e){return await q(this,e,t,j.DELETE,j.AFTER),t}async deletePrefix(t,...e){const r=await Tt.args(j.DELETE,this.class,e),n=await this.read(t,...r.args);return await q(this,r.context,n,j.DELETE,j.ON),[t,...r.args]}async deleteAllPrefix(t,...e){const r=await Tt.args(j.DELETE,this.class,e),n=await this.readAll(t,...r.args);return await Promise.all(n.map(async t=>q(this,r.context,t,j.DELETE,j.ON))),[t,...r.args]}async deleteAllSuffix(t,e){return await Promise.all(t.map(t=>q(this,e,t,j.DELETE,j.AFTER))),t}merge(t,e){const r=t=>Object.entries(t).reduce((t,[e,r])=>(void 0!==r&&(t[e]=r),t),{});return new this.class(Object.assign({},r(t),r(e)))}toString(){return this.class.name+" Repository"}}class Lt extends bt{constructor(t){super(t)}async createPrefix(t,...e){const r=await Tt.args(j.CREATE,this.class,e);t=new this.class(t),await q(this,r.context,t,j.CREATE,j.ON);const n=await Promise.resolve(t.hasErrors());if(n)throw new Y(n.toString());return[t,...r.args]}async createAllPrefix(t,...e){const r=await Tt.args(j.CREATE,this.class,e);await Promise.all(t.map(async t=>(t=new this.class(t),await q(this,r.context,t,j.CREATE,j.ON),t)));const n=(await Promise.all(t.map(t=>Promise.resolve(t.hasErrors())))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(n)throw new Y(n);return[t,...r.args]}async updatePrefix(t,...e){const r=await Tt.args(j.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new H("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);t=this.merge(s,t),await q(this,r.context,t,j.UPDATE,j.ON,s);const a=await Promise.resolve(t.hasErrors(s));if(a)throw new Y(a.toString());return[t,...r.args]}async updateAllPrefix(t,...e){const r=await Tt.args(j.UPDATE,this.class,e),n=t.map(t=>{const e=t[this.pk];if(void 0===e)throw new H("No value for the Id is defined under the property "+this.pk);return e}),s=await this.readAll(n,...r.args);t=t.map((t,e)=>this.merge(s[e],t)),await Promise.all(t.map((t,e)=>q(this,r.context,t,j.UPDATE,j.ON,s[e])));const a=(await Promise.all(t.map((t,e)=>Promise.resolve(t.hasErrors(s[e]))))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(a)throw new Y(a);return[t,...r.args]}static key(t){return b.REFLECT+t}}function vt(t=k.READONLY.INVALID){const e=s.updateKey(b.READONLY);return c.for(e).define(o(e,{message:t})).apply()}async function kt(t,e,r,n){n[r]=t.timestamp}function St(t=M.CREATE_UPDATE,e=v){const r=s.updateKey(b.TIMESTAMP);return c.for(r).define({decorator:(t,e)=>{const n=[l(e,k.TIMESTAMP.DATE),p(k.TIMESTAMP.REQUIRED),o(s.key(b.TIMESTAMP),{operation:t,format:e}),it(t,kt)];return-1!==t.indexOf(j.UPDATE)?n.push(o(r,{message:k.TIMESTAMP.INVALID})):n.push(vt()),P(...n)},args:[t,e]}).apply()}async function It(t,e,r,n){if(n[r])try{n[r]=JSON.stringify(n[r])}catch(t){throw new V(`Failed to serialize ${r.toString()} property of model ${n.constructor.name}: e`)}}async function Nt(t,e,r,n){if(n[r]&&"string"==typeof n[r])try{n[r]=JSON.parse(n[r])}catch(t){throw new V(`Failed to deserialize ${r.toString()} property of model ${n.constructor.name}: ${t}`)}}function xt(){return P(et(It),ft(M.ALL,Nt),u([String.name,Object.name]),R(Lt.key(b.SERIALIZE),{}))}function jt(){return P(p(),vt(),o(Lt.key(b.ID),{}))}function Ct(t,e){const r=[];for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&!e.includes(n)){const e=d(t,n,S.REFLECT),s=d(t,n).decorators.find(({key:t})=>t===h.LIST);s&&e.decorators.push(s),r.push(e)}return r}function Mt(t,e,r,n,a){const o=s.get(n.key);if(!o)throw Error("Missing validator for "+n.key);if(!o.updateHasErrors)return f(void 0,a);if(!a&&n.props.async)return f(void 0,a);const i=Object.values(n.props)||{},c=o.updateHasErrors(t[r],e[r],...i);return f(c,a)}function $t(t,e,r,n,s){const a={};for(const o of n){if(!s&&o.props.async)continue;let n=Mt(t,e,r,o,s);if(o.key===h.LIST&&(!n||s)){const a=t[r],i=e[r],c=a instanceof Set?[...a]:a,u=i instanceof Set?[...i]:i;if(c&&c.length>0){const t=[o.props.class||o.props.clazz||o.props.customTypes].flat().map(t=>((t=(t="function"!=typeof t||t.name?t:t()).name?t.name:t)+"").toLowerCase()),e=c.map(e=>{const r=Dt(e,!0);if(!r)return"Failed to find model id";const n=u.find(t=>r===Dt(t,!0));return E.isModel(e)?e.hasErrors(n):t.includes(typeof e)?void 0:"Value has no validatable type"});if(s)n=Promise.all(e).then(t=>t.every(t=>!t)?void 0:t);else{const t=e.every(t=>!t);n=e.length>0&&!t?e:void 0}}}n&&(a[o.key]=n)}if(!s)return Object.keys(a).length>0?a:void 0;const o=Object.keys(a),i=Object.values(a);return Promise.all(i).then(t=>{const e={};for(let r=0;r<t.length;r++){const n=t[r];void 0!==n&&(e[o[r]]=n)}return Object.keys(e).length>0?e:void 0})}function Ut(e,r,n,...s){const a=Ct(r,s),o={},i={};for(const{prop:s,decorators:c}of a){const a=s+"";let u=r[s];if(!c?.length)continue;const l=c.find(e=>[t.TYPE,h.TYPE].includes(e.key));if(!l)continue;const p=l.props.name;if([Array.name,Set.name].includes(p)){const{decorators:e}=w.getPropertyDecorators(h.REFLECT,r,a);if(!e.some(t=>t.key===h.LIST)){o[a]={[h.TYPE]:`Array or Set property '${a}' requires a @list decorator`};continue}if(u&&!(Array.isArray(u)||u instanceof Set)){o[a]={[h.TYPE]:`Property '${s+""}' must be either an array or a Set`};continue}for(let r=e.length-1;r>=0;r--)e[r].key===t.TYPE&&e.splice(r,1);u=u instanceof Set?[...u]:u}const d=$t(r,e,a,c,n)||{},f=E.isPropertyModel(r,a);if(u&&f){const t=u;"object"!=typeof t||!t.hasErrors||"function"!=typeof t.hasErrors||(i[a]=t.hasErrors(e[s]))}(Object.keys(d).length>0||n)&&(o[a]=d),n||Object.entries(i[a]||{}).forEach(([t,e])=>{void 0!==e&&(o[`${a}.${t}`]=e)})}if(!n)return Object.keys(o).length>0?new y(o):void 0;const c=o,u=Object.keys(c),l=Object.values(c);return Promise.allSettled(l).then(async t=>{const e={};for(const[t,r]of Object.entries(i)){const n=await r;n&&Object.entries(n).forEach(([r,n])=>{void 0!==n&&(e[[t,r].join(".")]=n)})}for(let r=0;r<t.length;r++){const n=u[r],s=t[r];"fulfilled"===s.status&&void 0!==s.value?e[n]=s.value:"rejected"===s.status&&(e[n]=s.reason instanceof Error?s.reason.message:(s.reason||"Validation failed")+"")}return Object.keys(e).length>0?new y(e):void 0})}function Ft(t,e,r,n,s){if(void 0===n[r])return;const o=a.hash(n[r]);s&&n[r]===o||(n[r]=o)}function _t(){return P(et(Ft),o(Lt.key(b.HASH),{}))}function Yt(t,e,r,n){try{const{args:t,type:s,prefix:a,suffix:o,separator:i}=e,c=t.map(e=>{if(!(e in n))throw new H(`Property ${e} not found to compose from`);if("keys"===s)return e;if(void 0===n[e])throw new H(`Property ${t} does not contain a value to compose from`);return n[e].toString()});a&&c.unshift(a),o&&c.push(o),n[r]=c.join(i)}catch(t){throw new H("Failed to compose value: "+t)}}function Ht(t,e=!1,r=L,n="values",s="",a="",i={priority:55}){const c={args:t,hashResult:e,separator:r,type:n,prefix:s,suffix:a},u=[et(Yt,c,i),o(Lt.key(b.COMPOSED),c)];return e&&u.push(_t()),P(...u)}function Vt(t,e=L,r=!1,n="",s="",a={priority:55}){return Ht(t,r,e,"keys",n,s,a)}function zt(t,e=L,r=!1,n="",s="",a={priority:55}){return Ht(t,r,e,"values",n,s,a)}function Kt(t){return(e,r,n,s)=>{try{switch(t){case j.CREATE:s[n]=1;break;case j.UPDATE:s[n]++;break;default:throw new H("Invalid operation: "+t)}}catch(t){throw new H("Failed to update version: "+t)}}}function Qt(){const t=Lt.key(b.VERSION);return c.for(t).define(u(Number.name),nt(Kt(j.CREATE)),rt(Kt(j.UPDATE)),o(t,!0)).apply()}function qt(){const t=Lt.key(b.TRANSIENT);return c.for(t).define((t,e)=>{o(Lt.key(b.TRANSIENT),!0)(t,e),o(Lt.key(b.TRANSIENT),!0)(t.constructor)}).apply()}function Bt(t){return!(!Reflect.getMetadata(Lt.key(b.TRANSIENT),t.constructor)&&!Reflect.getMetadata(Lt.key(b.TRANSIENT),E.get(t.constructor.name)))}function Gt(t){if(!Bt(t))return{model:t};const e=G(t,void 0,Lt.key(b.TRANSIENT)),r=Object.entries(e).reduce((e,[r,n])=>{if(n.find(t=>""===t.key)){e.transient=e.transient||{};try{e.transient[r]=t[r]}catch(t){throw new V(`Failed to serialize transient property ${r}: ${t}`)}}else e.model=e.model||{},e.model[r]=t[r];return e},{});return r.model=E.build(r.model,t.constructor.name),r}E.prototype.hasErrors=function(t,...e){!t||t instanceof E||(e.unshift(t),t=void 0);const r=this.isAsync(),n=m(this,r,...e);return r?Promise.resolve(n).then(n=>n||!t?n:Ut(t,this,r,...e)):n||!t?n:Ut(t,this,r,...e)};const Jt="##VERSION##";export{_ as BadRequestError,F as BaseError,bt as BaseRepository,mt as BlockOperations,C as BulkCrudOperationKeys,K as ConflictError,Tt as Context,b as DBKeys,M as DBOperations,k as DEFAULT_ERROR_MESSAGES,v as DEFAULT_TIMESTAMP_FORMAT,gt as DefaultContextFactory,At as DefaultRepositoryFlags,L as DefaultSeparator,H as InternalError,z as NotFoundError,j as OperationKeys,U as Operations,$ as OperationsRegistry,I as ReadOnlyValidator,Lt as Repository,V as SerializationError,N as TimestampValidator,S as UpdateValidationKeys,x as UpdateValidator,Jt as VERSION,Y as ValidationError,ft as after,ht as afterAny,lt as afterCreate,ct as afterCreateUpdate,dt as afterDelete,pt as afterRead,ut as afterUpdate,zt as composed,Yt as composedFromCreateUpdate,Vt as composedFromKeys,q as enforceDBDecorators,Dt as findModelId,Ot as findPrimaryKey,G as getAllPropertyDecoratorsRecursive,B as getDbDecorators,Q as getHandlerArgs,W as getHandlersDecorators,Ct as getValidatableUpdateProps,X as groupDecorators,_t as hash,Ft as hashOnCreateUpdate,jt as id,Bt as isTransient,Gt as modelToTransient,it as on,ot as onAny,nt as onCreate,et as onCreateUpdate,at as onDelete,st as onRead,rt as onUpdate,Et as operation,wt as prefixMethod,vt as readonly,xt as serialize,Nt as serializeAfterAll,It as serializeOnCreateUpdate,tt as sortDecorators,yt as storeHandlerMetadata,Pt as suffixMethod,St as timestamp,kt as timestampHandler,qt as transient,Ut as validateCompare,Mt as validateDecorator,$t as validateDecorators,Qt as version,Kt as versionCreateUpdate,Rt as wrapMethodWithContext};
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/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/identity/utils.ts","../src/repository/BaseRepository.ts","../src/repository/Repository.ts","../src/validation/decorators.ts","../src/identity/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/model/utils.ts","../src/model/overrides.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,null,null],"names":["DBKeys","REFLECT","ModelKeys","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","name","unshift","Object","values","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","getHandlerArgs","dec","prop","m","props","handlers","async","enforceDBDecorators","repo","context","model","prefix","oldModel","decorators","getDbDecorators","sortedDecorators","sortDecorators","groupDecorators","getHandlersDecorators","data","length","ON","push","apply","extraPrefix","Reflection","getAllPropertyDecorators","keys","reduce","decorator","filter","d","getAllPropertyDecoratorsRecursive","prefixes","accumulator","decs","entries","forEach","val","match","find","TYPE","RegExp","AFTER","accumHandlers","clazz","handlerDef","handlerProp","handlerKey","argsObj","pushOrSquash","mergeDecorators","defaultPriority","DefaultGroupSort","priority","handlerArgs","i","grouped","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","combined","map","sort","a","b","groupPriority","c","onCreateUpdate","groupsort","on","onUpdate","onCreate","onRead","onDelete","onAny","op","afterCreateUpdate","after","afterUpdate","afterCreate","afterRead","afterDelete","afterAny","baseOp","dataToAdd","propertyKey","compoundKey","Reflect","getMetadata","mergeData","handle","propMetadata","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","DefaultContextFactory","arg","Context","accumulate","assign","timestamp","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","prefixMethod","obj","afterName","wrapped","results","Promise","resolve","call","bind","suffixMethod","before","suffix","beforeName","wrapMethodWithContext","method","methodName","Proxy","thisArg","argArray","transformedArgs","findPrimaryKey","idDecorators","filtered","sf","join","idProp","id","findModelId","returnEmpty","modelId","BaseRepository","_class","pk","_pk","class","_pkProps","pkProps","self","create","read","update","delete","createAll","models","all","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","merge","extract","Repository","errors","ids","oldModels","readonly","Decoration","for","define","timestampHandler","format","date","required","indexOf","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","serialize","type","String","metadata","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","includes","validationPropertyDefinition","getValidationDecorators","listDecorator","ValidationKeys","LIST","validateDecorator","newModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","validationErrors","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","customTypes","flat","t","toLowerCase","errs","childValue","el","Model","isModel","then","every","r","allEmpty","promises","resolvedValues","res","validateCompare","exceptions","nestedErrors","propValue","designTypeDec","designType","getPropertyDecorators","some","isArray","splice","propErrors","isConstr","isPropertyModel","instance","error","ModelErrorDefinition","merged","allSettled","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","separator","composed","composedFrom","hashResult","composedFromKeys","versionCreateUpdate","version","Number","transient","attribute","isTransient","modelToTransient","build","previousVersion","exclusions","isAsync","validate","resolvedErrs"],"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/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/identity/utils.ts","../src/repository/BaseRepository.ts","../src/repository/Repository.ts","../src/validation/decorators.ts","../src/identity/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/model/utils.ts","../src/model/overrides.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,null,null],"names":["DBKeys","REFLECT","ModelKeys","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","name","unshift","Object","values","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","getHandlerArgs","dec","prop","m","props","handlers","async","enforceDBDecorators","repo","context","model","prefix","oldModel","decorators","getDbDecorators","sortedDecorators","sortDecorators","groupDecorators","getHandlersDecorators","data","length","ON","push","apply","extraPrefix","Reflection","getAllPropertyDecorators","keys","reduce","decorator","filter","d","getAllPropertyDecoratorsRecursive","prefixes","accumulator","decs","entries","forEach","val","match","find","TYPE","RegExp","AFTER","accumHandlers","clazz","handlerDef","handlerProp","handlerKey","argsObj","pushOrSquash","mergeDecorators","defaultPriority","DefaultGroupSort","priority","handlerArgs","i","grouped","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","combined","map","sort","a","b","groupPriority","c","onCreateUpdate","groupsort","on","onUpdate","onCreate","onRead","onDelete","onAny","op","afterCreateUpdate","after","afterUpdate","afterCreate","afterRead","afterDelete","afterAny","baseOp","dataToAdd","propertyKey","compoundKey","Reflect","getMetadata","mergeData","handle","propMetadata","storeHandlerMetadata","params","metadata","BlockOperations","operations","BLOCK","includes","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","DefaultContextFactory","arg","Context","accumulate","assign","timestamp","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","prefixMethod","obj","afterName","wrapped","results","Promise","resolve","call","bind","suffixMethod","before","suffix","beforeName","wrapMethodWithContext","method","methodName","Proxy","thisArg","argArray","transformedArgs","findPrimaryKey","idDecorators","filtered","sf","join","idProp","id","findModelId","returnEmpty","modelId","BaseRepository","_class","pk","_pk","class","_pkProps","pkProps","self","create","read","update","delete","createAll","models","all","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","merge","extract","Repository","errors","ids","oldModels","readonly","Decoration","for","define","timestampHandler","format","date","required","indexOf","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","serialize","type","String","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","validationPropertyDefinition","getValidationDecorators","listDecorator","ValidationKeys","LIST","validateDecorator","newModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","validationErrors","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","customTypes","flat","t","toLowerCase","errs","childValue","el","Model","isModel","then","every","r","allEmpty","promises","resolvedValues","res","validateCompare","exceptions","nestedErrors","propValue","designTypeDec","designType","getPropertyDecorators","some","isArray","splice","propErrors","isConstr","isPropertyModel","instance","error","ModelErrorDefinition","merged","allSettled","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","separator","composed","composedFrom","hashResult","composedFromKeys","versionCreateUpdate","version","Number","transient","attribute","isTransient","modelToTransient","build","previousVersion","exclusions","isAsync","validate","resolvedErrs"],"mappings":"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"}
@@ -15,4 +15,4 @@ export * from "./validation";
15
15
  * @const VERSION
16
16
  * @memberOf module:db-decorators
17
17
  */
18
- export declare const VERSION = "0.6.11";
18
+ export declare const VERSION = "0.6.13";
package/lib/esm/index.js CHANGED
@@ -15,5 +15,5 @@ export * from "./validation/index.js";
15
15
  * @const VERSION
16
16
  * @memberOf module:db-decorators
17
17
  */
18
- export const VERSION = "0.6.11";
18
+ export const VERSION = "0.6.13";
19
19
  //# sourceMappingURL=index.js.map
@@ -12,7 +12,8 @@ export declare enum OperationKeys {
12
12
  UPDATE = "update",
13
13
  DELETE = "delete",
14
14
  ON = "on.",
15
- AFTER = "after."
15
+ AFTER = "after.",
16
+ BLOCK = "block"
16
17
  }
17
18
  /**
18
19
  * @description Type for basic CRUD operations
@@ -14,6 +14,7 @@ export var OperationKeys;
14
14
  OperationKeys["DELETE"] = "delete";
15
15
  OperationKeys["ON"] = "on.";
16
16
  OperationKeys["AFTER"] = "after.";
17
+ OperationKeys["BLOCK"] = "block";
17
18
  })(OperationKeys || (OperationKeys = {}));
18
19
  /**
19
20
  * @description Bulk database operation key constants
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/operations/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,uDAAsC,CAAA;IACtC,kCAAiB,CAAA;IACjB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,2BAAU,CAAA;IACV,iCAAgB,CAAA;AAClB,CAAC,EARW,aAAa,KAAb,aAAa,QAQxB;AAcD;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,iDAAwB,CAAA;IACxB,6CAAoB,CAAA;IACpB,iDAAwB,CAAA;IACxB,iDAAwB,CAAA;AAC1B,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AAcD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAqC;IAC5D,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,aAAa,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;IAC3D,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IACvD,GAAG,EAAE;QACH,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,IAAI;QAClB,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,MAAM;KACrB;CACF,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/operations/constants.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACvB,uDAAsC,CAAA;IACtC,kCAAiB,CAAA;IACjB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,2BAAU,CAAA;IACV,iCAAgB,CAAA;IAChB,gCAAe,CAAA;AACjB,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAcD;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,iDAAwB,CAAA;IACxB,6CAAoB,CAAA;IACpB,iDAAwB,CAAA;IACxB,iDAAwB,CAAA;AAC1B,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AAcD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAqC;IAC5D,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,aAAa,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;IAC3D,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IACvD,GAAG,EAAE;QACH,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,IAAI;QAClB,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,MAAM;KACrB;CACF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { GeneralOperationHandler, GeneralUpdateOperationHandler, IdOperationHandler, OperationHandler, StandardOperationHandler, UpdateOperationHandler } from "./types";
2
- import { OperationKeys } from "./constants";
2
+ import { CrudOperations, OperationKeys } from "./constants";
3
3
  import { Model } from "@decaf-ts/decorator-validation";
4
4
  import { IRepository } from "../interfaces";
5
5
  import { RepositoryFlags } from "../repository/types";
@@ -263,3 +263,68 @@ export declare function after<V = object>(op: OperationKeys[] | undefined, handl
263
263
  * Operations-->>Client: Return final result
264
264
  */
265
265
  export declare function operation<V = object>(baseOp: OperationKeys.ON | OperationKeys.AFTER, operation: OperationKeys[] | undefined, handler: OperationHandler<any, any, V, any, any>, dataToAdd?: V, groupsort?: GroupSort): (target: any, propertyKey?: any) => void;
266
+ /**
267
+ * @description
268
+ * Creates a higher-order function that attaches a metadata entry containing a handler
269
+ * and its execution parameters, to be conditionally evaluated later.
270
+ *
271
+ * @summary
272
+ * The `executeIf` function is a decorator factory designed to wrap a handler function
273
+ * and associate it with a specific metadata key. When invoked, it stores both the
274
+ * parameters passed and the handler reference inside the metadata system for deferred
275
+ * or conditional evaluation. This is particularly useful for dynamically applying logic
276
+ * or decorators only when certain conditions are met.
277
+ *
278
+ * @template P - Represents a tuple of any parameter types that the handler function accepts.
279
+ *
280
+ * @param {string} key - The metadata key used to store and later retrieve the handler and its parameters.
281
+ * @param {(...params: P) => boolean} handler - A predicate or handler function that receives the same parameters as the decorator
282
+ * and determines whether the associated logic should execute.
283
+ *
284
+ * @return {(...params: P) => ReturnType<typeof metadata>}
285
+ * Returns a function that, when invoked with the given parameters, stores a metadata object containing
286
+ * both the parameters and the handler reference under the provided key.
287
+ *
288
+ * @function storeHandlerMetadata
289
+ *
290
+ * @mermaid
291
+ * sequenceDiagram
292
+ * participant Dev as Developer
293
+ * participant executeIf as executeIf()
294
+ * participant ReturnedFn as Returned Function
295
+ * participant Metadata as metadata()
296
+ *
297
+ * Dev->>executeIf: Calls executeIf(key, handler)
298
+ * executeIf->>ReturnedFn: Returns function(...params)
299
+ * Dev->>ReturnedFn: Invokes returned function with (...params)
300
+ * ReturnedFn->>Metadata: Calls metadata(key, { args: params, handler })
301
+ * Metadata-->>ReturnedFn: Returns stored metadata reference
302
+ * ReturnedFn-->>Dev: Returns metadata response
303
+ *
304
+ */
305
+ export declare function storeHandlerMetadata<P extends any[]>(key: string, handler: (...params: P) => boolean): (...params: Partial<P>) => (model: any, prop?: any, descriptor?: PropertyDescriptor | number) => void;
306
+ /**
307
+ * @description
308
+ * Decorator factory that conditionally blocks specific CRUD operations
309
+ * from being executed on a model or controller.
310
+ *
311
+ * @summary
312
+ * The `BlockOperations` decorator integrates with the `executeIf` mechanism to
313
+ * associate metadata that defines which CRUD operations should be restricted.
314
+ * When applied, it registers a conditional handler that evaluates whether a given
315
+ * operation is included in the list of blocked operations. This enables dynamic,
316
+ * metadata-driven control over allowed operations in CRUD-based systems.
317
+ *
318
+ * @template CrudOperations - Enum or type representing valid CRUD operations.
319
+ *
320
+ * @param {CrudOperations[]} operations - An array of CRUD operations that should be blocked.
321
+ * The handler will later check if the requested operation is part of this list.
322
+ *
323
+ * Returns a decorator that stores metadata indicating which operations are blocked.
324
+ * The metadata can be inspected or enforced later within the application's lifecycle.
325
+ *
326
+ * @function BlockOperations
327
+
328
+ * @category decorators
329
+ */
330
+ export declare const BlockOperations: (operations: CrudOperations[]) => (model: any, prop?: any, descriptor?: PropertyDescriptor | number) => void;
@@ -4,6 +4,7 @@ import { apply } from "@decaf-ts/reflection";
4
4
  import { propMetadata } from "@decaf-ts/decorator-validation";
5
5
  import { InternalError } from "./../repository/errors.js";
6
6
  import { getHandlerArgs } from "./../repository/utils.js";
7
+ import { metadata } from "@decaf-ts/decoration";
7
8
  const defaultPriority = 50;
8
9
  const DefaultGroupSort = { priority: defaultPriority };
9
10
  /**
@@ -380,4 +381,75 @@ export function operation(baseOp, operation = DBOperations.ALL, handler, dataToA
380
381
  return apply(...decorators)(target, propertyKey);
381
382
  };
382
383
  }
384
+ /**
385
+ * @description
386
+ * Creates a higher-order function that attaches a metadata entry containing a handler
387
+ * and its execution parameters, to be conditionally evaluated later.
388
+ *
389
+ * @summary
390
+ * The `executeIf` function is a decorator factory designed to wrap a handler function
391
+ * and associate it with a specific metadata key. When invoked, it stores both the
392
+ * parameters passed and the handler reference inside the metadata system for deferred
393
+ * or conditional evaluation. This is particularly useful for dynamically applying logic
394
+ * or decorators only when certain conditions are met.
395
+ *
396
+ * @template P - Represents a tuple of any parameter types that the handler function accepts.
397
+ *
398
+ * @param {string} key - The metadata key used to store and later retrieve the handler and its parameters.
399
+ * @param {(...params: P) => boolean} handler - A predicate or handler function that receives the same parameters as the decorator
400
+ * and determines whether the associated logic should execute.
401
+ *
402
+ * @return {(...params: P) => ReturnType<typeof metadata>}
403
+ * Returns a function that, when invoked with the given parameters, stores a metadata object containing
404
+ * both the parameters and the handler reference under the provided key.
405
+ *
406
+ * @function storeHandlerMetadata
407
+ *
408
+ * @mermaid
409
+ * sequenceDiagram
410
+ * participant Dev as Developer
411
+ * participant executeIf as executeIf()
412
+ * participant ReturnedFn as Returned Function
413
+ * participant Metadata as metadata()
414
+ *
415
+ * Dev->>executeIf: Calls executeIf(key, handler)
416
+ * executeIf->>ReturnedFn: Returns function(...params)
417
+ * Dev->>ReturnedFn: Invokes returned function with (...params)
418
+ * ReturnedFn->>Metadata: Calls metadata(key, { args: params, handler })
419
+ * Metadata-->>ReturnedFn: Returns stored metadata reference
420
+ * ReturnedFn-->>Dev: Returns metadata response
421
+ *
422
+ */
423
+ export function storeHandlerMetadata(key, handler) {
424
+ return (...params) => {
425
+ return metadata(key, { args: params, handler });
426
+ };
427
+ }
428
+ /**
429
+ * @description
430
+ * Decorator factory that conditionally blocks specific CRUD operations
431
+ * from being executed on a model or controller.
432
+ *
433
+ * @summary
434
+ * The `BlockOperations` decorator integrates with the `executeIf` mechanism to
435
+ * associate metadata that defines which CRUD operations should be restricted.
436
+ * When applied, it registers a conditional handler that evaluates whether a given
437
+ * operation is included in the list of blocked operations. This enables dynamic,
438
+ * metadata-driven control over allowed operations in CRUD-based systems.
439
+ *
440
+ * @template CrudOperations - Enum or type representing valid CRUD operations.
441
+ *
442
+ * @param {CrudOperations[]} operations - An array of CRUD operations that should be blocked.
443
+ * The handler will later check if the requested operation is part of this list.
444
+ *
445
+ * Returns a decorator that stores metadata indicating which operations are blocked.
446
+ * The metadata can be inspected or enforced later within the application's lifecycle.
447
+ *
448
+ * @function BlockOperations
449
+
450
+ * @category decorators
451
+ */
452
+ export const BlockOperations = (operations) => storeHandlerMetadata(OperationKeys.REFLECT + OperationKeys.BLOCK, (operations, operation) => {
453
+ return operations.includes(operation);
454
+ })(operations);
383
455
  //# sourceMappingURL=decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/operations/decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/operations/decorators.ts"],"names":[],"mappings":"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"}
package/lib/index.cjs CHANGED
@@ -32,5 +32,5 @@ __exportStar(require("./validation/index.cjs"), exports);
32
32
  * @const VERSION
33
33
  * @memberOf module:db-decorators
34
34
  */
35
- exports.VERSION = "0.6.11";
35
+ exports.VERSION = "0.6.13";
36
36
  //# sourceMappingURL=index.js.map
package/lib/index.d.ts CHANGED
@@ -15,4 +15,4 @@ export * from "./validation";
15
15
  * @const VERSION
16
16
  * @memberOf module:db-decorators
17
17
  */
18
- export declare const VERSION = "0.6.11";
18
+ export declare const VERSION = "0.6.13";
@@ -17,6 +17,7 @@ var OperationKeys;
17
17
  OperationKeys["DELETE"] = "delete";
18
18
  OperationKeys["ON"] = "on.";
19
19
  OperationKeys["AFTER"] = "after.";
20
+ OperationKeys["BLOCK"] = "block";
20
21
  })(OperationKeys || (exports.OperationKeys = OperationKeys = {}));
21
22
  /**
22
23
  * @description Bulk database operation key constants
@@ -12,7 +12,8 @@ export declare enum OperationKeys {
12
12
  UPDATE = "update",
13
13
  DELETE = "delete",
14
14
  ON = "on.",
15
- AFTER = "after."
15
+ AFTER = "after.",
16
+ BLOCK = "block"
16
17
  }
17
18
  /**
18
19
  * @description Type for basic CRUD operations
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/operations/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,uDAAsC,CAAA;IACtC,kCAAiB,CAAA;IACjB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,2BAAU,CAAA;IACV,iCAAgB,CAAA;AAClB,CAAC,EARW,aAAa,6BAAb,aAAa,QAQxB;AAcD;;;;;;GAMG;AACH,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,iDAAwB,CAAA;IACxB,6CAAoB,CAAA;IACpB,iDAAwB,CAAA;IACxB,iDAAwB,CAAA;AAC1B,CAAC,EALW,qBAAqB,qCAArB,qBAAqB,QAKhC;AAcD;;;;;GAKG;AACU,QAAA,YAAY,GAAqC;IAC5D,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,aAAa,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;IAC3D,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IACvD,GAAG,EAAE;QACH,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,IAAI;QAClB,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,MAAM;KACrB;CACF,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/operations/constants.ts"],"names":[],"mappings":";;;AAAA;;;;;;GAMG;AACH,IAAY,aASX;AATD,WAAY,aAAa;IACvB,uDAAsC,CAAA;IACtC,kCAAiB,CAAA;IACjB,8BAAa,CAAA;IACb,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,2BAAU,CAAA;IACV,iCAAgB,CAAA;IAChB,gCAAe,CAAA;AACjB,CAAC,EATW,aAAa,6BAAb,aAAa,QASxB;AAcD;;;;;;GAMG;AACH,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,iDAAwB,CAAA;IACxB,6CAAoB,CAAA;IACpB,iDAAwB,CAAA;IACxB,iDAAwB,CAAA;AAC1B,CAAC,EALW,qBAAqB,qCAArB,qBAAqB,QAKhC;AAcD;;;;;GAKG;AACU,QAAA,YAAY,GAAqC;IAC5D,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;IAC1B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC;IAC9B,aAAa,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC;IAC3D,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC;IACvD,GAAG,EAAE;QACH,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,IAAI;QAClB,aAAa,CAAC,MAAM;QACpB,aAAa,CAAC,MAAM;KACrB;CACF,CAAC"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlockOperations = void 0;
3
4
  exports.getHandlersDecorators = getHandlersDecorators;
4
5
  exports.groupDecorators = groupDecorators;
5
6
  exports.sortDecorators = sortDecorators;
@@ -18,12 +19,14 @@ exports.afterDelete = afterDelete;
18
19
  exports.afterAny = afterAny;
19
20
  exports.after = after;
20
21
  exports.operation = operation;
22
+ exports.storeHandlerMetadata = storeHandlerMetadata;
21
23
  const constants_1 = require("./constants.cjs");
22
24
  const Operations_1 = require("./Operations.cjs");
23
25
  const reflection_1 = require("@decaf-ts/reflection");
24
26
  const decorator_validation_1 = require("@decaf-ts/decorator-validation");
25
27
  const errors_1 = require("./../repository/errors.cjs");
26
28
  const utils_1 = require("./../repository/utils.cjs");
29
+ const decoration_1 = require("@decaf-ts/decoration");
27
30
  const defaultPriority = 50;
28
31
  const DefaultGroupSort = { priority: defaultPriority };
29
32
  /**
@@ -400,4 +403,76 @@ function operation(baseOp, operation = constants_1.DBOperations.ALL, handler, da
400
403
  return (0, reflection_1.apply)(...decorators)(target, propertyKey);
401
404
  };
402
405
  }
406
+ /**
407
+ * @description
408
+ * Creates a higher-order function that attaches a metadata entry containing a handler
409
+ * and its execution parameters, to be conditionally evaluated later.
410
+ *
411
+ * @summary
412
+ * The `executeIf` function is a decorator factory designed to wrap a handler function
413
+ * and associate it with a specific metadata key. When invoked, it stores both the
414
+ * parameters passed and the handler reference inside the metadata system for deferred
415
+ * or conditional evaluation. This is particularly useful for dynamically applying logic
416
+ * or decorators only when certain conditions are met.
417
+ *
418
+ * @template P - Represents a tuple of any parameter types that the handler function accepts.
419
+ *
420
+ * @param {string} key - The metadata key used to store and later retrieve the handler and its parameters.
421
+ * @param {(...params: P) => boolean} handler - A predicate or handler function that receives the same parameters as the decorator
422
+ * and determines whether the associated logic should execute.
423
+ *
424
+ * @return {(...params: P) => ReturnType<typeof metadata>}
425
+ * Returns a function that, when invoked with the given parameters, stores a metadata object containing
426
+ * both the parameters and the handler reference under the provided key.
427
+ *
428
+ * @function storeHandlerMetadata
429
+ *
430
+ * @mermaid
431
+ * sequenceDiagram
432
+ * participant Dev as Developer
433
+ * participant executeIf as executeIf()
434
+ * participant ReturnedFn as Returned Function
435
+ * participant Metadata as metadata()
436
+ *
437
+ * Dev->>executeIf: Calls executeIf(key, handler)
438
+ * executeIf->>ReturnedFn: Returns function(...params)
439
+ * Dev->>ReturnedFn: Invokes returned function with (...params)
440
+ * ReturnedFn->>Metadata: Calls metadata(key, { args: params, handler })
441
+ * Metadata-->>ReturnedFn: Returns stored metadata reference
442
+ * ReturnedFn-->>Dev: Returns metadata response
443
+ *
444
+ */
445
+ function storeHandlerMetadata(key, handler) {
446
+ return (...params) => {
447
+ return (0, decoration_1.metadata)(key, { args: params, handler });
448
+ };
449
+ }
450
+ /**
451
+ * @description
452
+ * Decorator factory that conditionally blocks specific CRUD operations
453
+ * from being executed on a model or controller.
454
+ *
455
+ * @summary
456
+ * The `BlockOperations` decorator integrates with the `executeIf` mechanism to
457
+ * associate metadata that defines which CRUD operations should be restricted.
458
+ * When applied, it registers a conditional handler that evaluates whether a given
459
+ * operation is included in the list of blocked operations. This enables dynamic,
460
+ * metadata-driven control over allowed operations in CRUD-based systems.
461
+ *
462
+ * @template CrudOperations - Enum or type representing valid CRUD operations.
463
+ *
464
+ * @param {CrudOperations[]} operations - An array of CRUD operations that should be blocked.
465
+ * The handler will later check if the requested operation is part of this list.
466
+ *
467
+ * Returns a decorator that stores metadata indicating which operations are blocked.
468
+ * The metadata can be inspected or enforced later within the application's lifecycle.
469
+ *
470
+ * @function BlockOperations
471
+
472
+ * @category decorators
473
+ */
474
+ const BlockOperations = (operations) => storeHandlerMetadata(constants_1.OperationKeys.REFLECT + constants_1.OperationKeys.BLOCK, (operations, operation) => {
475
+ return operations.includes(operation);
476
+ })(operations);
477
+ exports.BlockOperations = BlockOperations;
403
478
  //# sourceMappingURL=decorators.js.map
@@ -1,5 +1,5 @@
1
1
  import { GeneralOperationHandler, GeneralUpdateOperationHandler, IdOperationHandler, OperationHandler, StandardOperationHandler, UpdateOperationHandler } from "./types";
2
- import { OperationKeys } from "./constants";
2
+ import { CrudOperations, OperationKeys } from "./constants";
3
3
  import { Model } from "@decaf-ts/decorator-validation";
4
4
  import { IRepository } from "../interfaces";
5
5
  import { RepositoryFlags } from "../repository/types";
@@ -263,3 +263,68 @@ export declare function after<V = object>(op: OperationKeys[] | undefined, handl
263
263
  * Operations-->>Client: Return final result
264
264
  */
265
265
  export declare function operation<V = object>(baseOp: OperationKeys.ON | OperationKeys.AFTER, operation: OperationKeys[] | undefined, handler: OperationHandler<any, any, V, any, any>, dataToAdd?: V, groupsort?: GroupSort): (target: any, propertyKey?: any) => void;
266
+ /**
267
+ * @description
268
+ * Creates a higher-order function that attaches a metadata entry containing a handler
269
+ * and its execution parameters, to be conditionally evaluated later.
270
+ *
271
+ * @summary
272
+ * The `executeIf` function is a decorator factory designed to wrap a handler function
273
+ * and associate it with a specific metadata key. When invoked, it stores both the
274
+ * parameters passed and the handler reference inside the metadata system for deferred
275
+ * or conditional evaluation. This is particularly useful for dynamically applying logic
276
+ * or decorators only when certain conditions are met.
277
+ *
278
+ * @template P - Represents a tuple of any parameter types that the handler function accepts.
279
+ *
280
+ * @param {string} key - The metadata key used to store and later retrieve the handler and its parameters.
281
+ * @param {(...params: P) => boolean} handler - A predicate or handler function that receives the same parameters as the decorator
282
+ * and determines whether the associated logic should execute.
283
+ *
284
+ * @return {(...params: P) => ReturnType<typeof metadata>}
285
+ * Returns a function that, when invoked with the given parameters, stores a metadata object containing
286
+ * both the parameters and the handler reference under the provided key.
287
+ *
288
+ * @function storeHandlerMetadata
289
+ *
290
+ * @mermaid
291
+ * sequenceDiagram
292
+ * participant Dev as Developer
293
+ * participant executeIf as executeIf()
294
+ * participant ReturnedFn as Returned Function
295
+ * participant Metadata as metadata()
296
+ *
297
+ * Dev->>executeIf: Calls executeIf(key, handler)
298
+ * executeIf->>ReturnedFn: Returns function(...params)
299
+ * Dev->>ReturnedFn: Invokes returned function with (...params)
300
+ * ReturnedFn->>Metadata: Calls metadata(key, { args: params, handler })
301
+ * Metadata-->>ReturnedFn: Returns stored metadata reference
302
+ * ReturnedFn-->>Dev: Returns metadata response
303
+ *
304
+ */
305
+ export declare function storeHandlerMetadata<P extends any[]>(key: string, handler: (...params: P) => boolean): (...params: Partial<P>) => (model: any, prop?: any, descriptor?: PropertyDescriptor | number) => void;
306
+ /**
307
+ * @description
308
+ * Decorator factory that conditionally blocks specific CRUD operations
309
+ * from being executed on a model or controller.
310
+ *
311
+ * @summary
312
+ * The `BlockOperations` decorator integrates with the `executeIf` mechanism to
313
+ * associate metadata that defines which CRUD operations should be restricted.
314
+ * When applied, it registers a conditional handler that evaluates whether a given
315
+ * operation is included in the list of blocked operations. This enables dynamic,
316
+ * metadata-driven control over allowed operations in CRUD-based systems.
317
+ *
318
+ * @template CrudOperations - Enum or type representing valid CRUD operations.
319
+ *
320
+ * @param {CrudOperations[]} operations - An array of CRUD operations that should be blocked.
321
+ * The handler will later check if the requested operation is part of this list.
322
+ *
323
+ * Returns a decorator that stores metadata indicating which operations are blocked.
324
+ * The metadata can be inspected or enforced later within the application's lifecycle.
325
+ *
326
+ * @function BlockOperations
327
+
328
+ * @category decorators
329
+ */
330
+ export declare const BlockOperations: (operations: CrudOperations[]) => (model: any, prop?: any, descriptor?: PropertyDescriptor | number) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/operations/decorators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/operations/decorators.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.6.12",
3
+ "version": "0.6.14",
4
4
  "description": "Agnostic database decorators and repository",
5
5
  "type": "module",
6
6
  "exports": {
@@ -27,7 +27,7 @@
27
27
  "lint": "eslint .",
28
28
  "lint-fix": "eslint --fix .",
29
29
  "prepare-pr": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
30
- "prepare-release": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
30
+ "prepare-release": "npm run lint-fix && npm run build:prod && npm run coverage",
31
31
  "release": "./bin/tag-release.sh",
32
32
  "clean-publish": "npx clean-publish",
33
33
  "drawings": "for FILE in workdocs/drawings/*.drawio; do echo \"converting $FILE to image...\" && docker run --rm -v $(pwd):/data rlespinasse/drawio-export --format png $FILE; done && cp -rf workdocs/drawings/export/* workdocs/resources/",
@@ -74,38 +74,16 @@
74
74
  },
75
75
  "homepage": "https://github.com/decaf-ts/db-decorators#readme",
76
76
  "devDependencies": {
77
- "@decaf-ts/logging": "latest",
78
- "@decaf-ts/utils": "latest",
79
- "@eslint/js": "^9.25.1",
80
- "@stylistic/eslint-plugin": "^4.2.0",
81
- "@types/jest": "^29.5.14",
82
- "clean-publish": "^5.1.0",
83
- "dpdm": "^3.14.0",
84
- "eslint": "^9.25.1",
85
- "eslint-config-prettier": "^10.1.2",
86
- "eslint-plugin-prettier": "^5.2.6",
87
- "globals": "^16.0.0",
88
- "jest": "^29.7.0",
89
- "jest-html-reporters": "^3.1.7",
90
- "jest-junit": "^16.0.0",
91
- "jsdoc": "^4.0.4",
92
- "jsdoc-mermaid": "^1.0.0",
93
- "markdown-include": "^0.4.3",
94
- "minimist": "^1.2.8",
95
- "nodemon": "^3.1.9",
96
- "npm-check-updates": "^18.0.0",
97
- "prettier": "3.5.3",
98
- "rimraf": "^6.0.1",
99
- "ts-jest": "^29.3.2",
100
- "ts-loader": "^9.5.2",
101
- "ts-node": "^10.9.2",
102
- "typescript": "^5.8.3",
103
- "typescript-eslint": "^8.31.0"
77
+ "@decaf-ts/utils": "latest"
104
78
  },
105
79
  "peerDependencies": {
106
80
  "@decaf-ts/decoration": "latest",
107
81
  "@decaf-ts/decorator-validation": "latest",
108
82
  "@decaf-ts/injectable-decorators": "latest",
109
83
  "@decaf-ts/reflection": "latest"
84
+ },
85
+ "dependencies": {
86
+ "better-docs": "^2.7.3",
87
+ "taffydb": "^2.7.3"
110
88
  }
111
89
  }