@decaf-ts/db-decorators 0.7.11 → 0.7.12
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 +1 -1
- package/dist/db-decorators.cjs +1 -1
- package/dist/db-decorators.cjs.map +1 -1
- package/dist/db-decorators.js +1 -1
- package/dist/db-decorators.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/model/decorators.d.ts +3 -2
- package/lib/esm/model/decorators.js +22 -10
- package/lib/esm/model/decorators.js.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/model/decorators.cjs +22 -10
- package/lib/model/decorators.d.ts +3 -2
- package/lib/model/decorators.js.map +1 -1
- package/package.json +3 -2
- package/workdocs/assets/slogans.json +170 -0
package/README.md
CHANGED
package/dist/db-decorators.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e,t,r,a,o,s){"use strict";const n={REFLECT:r.ModelKeys.MODEL+".persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},i="_",c="dd/MM/yyyy HH:mm:ss:S",l={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},d={REFLECT:"db.update.validation.",TIMESTAMP:n.TIMESTAMP,READONLY:n.READONLY};e.ReadOnlyValidator=class extends r.Validator{constructor(){super(l.READONLY.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,a){if(void 0!==e)return r.isEqual(e,t)?void 0:this.getMessage(a||this.message)}},e.ReadOnlyValidator=a.__decorate([r.validator(d.READONLY),a.__metadata("design:paramtypes",[])],e.ReadOnlyValidator),e.TimestampValidator=class extends r.Validator{constructor(){super(l.TIMESTAMP.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,r){if(void 0!==e){r=r||this.getMessage(r||this.message);try{e=new Date(e),t=new Date(t)}catch(e){return r}return e>t?void 0:r}}},e.TimestampValidator=a.__decorate([r.validator(d.TIMESTAMP),a.__metadata("design:paramtypes",[])],e.TimestampValidator);class p extends r.Validator{constructor(e=r.DEFAULT_ERROR_MESSAGES.DEFAULT,...t){super(e,...t)}}var u,f,y;r.Validation.updateKey=e=>d.REFLECT+e,e.OperationKeys=void 0,(u=e.OperationKeys||(e.OperationKeys={})).REFLECT="decaf.model.db.operations.",u.CREATE="create",u.READ="read",u.UPDATE="update",u.DELETE="delete",u.ON="on.",u.AFTER="after.",u.BLOCK="block",e.ModelOperations=void 0,(f=e.ModelOperations||(e.ModelOperations={})).OPERATIONS="operations",f.RELATIONS="relations",e.BulkCrudOperationKeys=void 0,(y=e.BulkCrudOperationKeys||(e.BulkCrudOperationKeys={})).CREATE_ALL="createAll",y.READ_ALL="readAll",y.UPDATE_ALL="updateAll",y.DELETE_ALL="deleteAll";const h={CREATE:[e.OperationKeys.CREATE],READ:[e.OperationKeys.READ],UPDATE:[e.OperationKeys.UPDATE],DELETE:[e.OperationKeys.DELETE],CREATE_UPDATE:[e.OperationKeys.CREATE,e.OperationKeys.UPDATE],READ_CREATE:[e.OperationKeys.READ,e.OperationKeys.CREATE],ALL:[e.OperationKeys.CREATE,e.OperationKeys.READ,e.OperationKeys.UPDATE,e.OperationKeys.DELETE]};class E{constructor(){this.cache={}}get(e,t,r,a){a=a||[];const o=this.resolveOwner(e),s=this.resolveTargetName(e,o);if(s){const e=this.selectHandlers(s,t,r,o);e?.length&&a.unshift(...e)}else if("string"==typeof e||e===Object.prototype||Object.getPrototypeOf(e)===Object.prototype)return a;let n=Object.getPrototypeOf(e);return n?(n.constructor&&n.constructor.name===s&&(n=Object.getPrototypeOf(n)),n?this.get(n,t,r,a):a):a}register(e,t,r,a){const o=r.constructor.name,s=g.getHandlerName(e),n=this.resolveFlavour(r.constructor);this.cache[o]||(this.cache[o]={}),this.cache[o][a]||(this.cache[o][a]={}),this.cache[o][a][t]||(this.cache[o][a][t]={}),this.cache[o][a][t][n]||(this.cache[o][a][t][n]={}),this.cache[o][a][t][n][s]||(this.cache[o][a][t][n][s]=e)}resolveOwner(e){if(e&&"string"!=typeof e)return"function"==typeof e?e:e.constructor}resolveTargetName(e,t){return"string"==typeof e?e:t?.name}resolveFlavour(e){if(!e)return t.Decoration.defaultFlavour;try{return t.Metadata.flavourOf(e)}catch{return t.Decoration.defaultFlavour}}selectHandlers(e,r,a,o){const s=this.cache[e]?.[r]?.[a];if(!s)return;const n=s[this.resolveFlavour(o)]||s[t.Decoration.defaultFlavour]||this.firstBucket(s);if(!n)return;const i=Object.values(n);return i.length?i:void 0}firstBucket(e){for(const t of Object.values(e))if(t&&Object.keys(t).length)return t}}class g{constructor(){}static getHandlerName(e){return e.name?e.name:r.Hashing.hash(e.toString())}static key(t){return e.OperationKeys.REFLECT+t}static get(e,t,r){return g.registry.get(e,t,r)}static getOpRegistry(){return g.registry||(g.registry=new E),g.registry}static register(e,t,r,a){g.getOpRegistry().register(e,t,r,a)}}class O extends Error{constructor(e,t,r){if(t instanceof O)return t;super(`[${e}] ${t instanceof Error?t.message:t}`),this.code=r,t instanceof Error&&(this.stack=t.stack)}}class m extends O{constructor(e,t=m.name,r=400){super(t,e,r)}}class A extends m{constructor(e){super(e,A.name,422)}}class T extends O{constructor(e,t=T.name,r=500){super(t,e,r)}}class w extends T{constructor(e){super(e,w.name,500)}}class M extends m{constructor(e){super(e,M.name,404)}}class P extends m{constructor(e){super(e,P.name,409)}}const D={priority:50},R=(e,t,r,a)=>{const o=r.constructor.name;if(!o)throw new T("Could not determine model class");a=a||{},e.props.handlers[o]&&e.props.handlers[o][t]&&(a={...e.props.handlers[o][t],...a});let s=Object.getPrototypeOf(r);return s===Object.prototype?a:(s.constructor.name===o&&(s=Object.getPrototypeOf(s)),R(e,t,s,a))};function K(e,t,r){const a=[];for(const o in t){const s=t[o];for(const t of s){const{key:s}=t,n=g.get(e,o,r+s);if(!n||!n.length)throw new T(`Could not find registered handler for the operation ${r+s} under property ${o}`);const i=R(t,o,e);if(!i)throw new T("Missing handler arguments for decorators");for(const e of n){const t=i[e.name];if(!t)throw new T("Missing handler arguments for handler "+e.name);const r=t.data;a.push({handler:e,data:[r],prop:[o]})}}}return a}function v(e){const t=e.reduce(((e,t)=>{if(!t||!t.data||!t.prop)throw new T("Missing decorator properties or data");if(!t.data[0].group)return e.set(Symbol(),t),e;const r=t.data[0].group;if(e.has(r)){const a=e.get(r);e.set(r,{handler:a.handler,data:[...a.data,...t.data],prop:[...a.prop,...t.prop]})}else e.set(r,{...t});return e}),new Map),r=Array.from(t.values());return r.forEach((e=>{const t=e.data.map(((t,r)=>({data:t,prop:e.prop[r]})));t.sort(((e,t)=>(e.data.groupPriority??50)-(t.data.groupPriority??50))),e.data=t.map((e=>e.data)),e.prop=t.map((e=>e.prop))})),r}function b(e){return e.sort(((e,t)=>(e.data[0].priority??50)-(t.data[0].priority??50))),e}function x(e,t,r){return N(h.CREATE_UPDATE,e,t,r)}function S(e,t,r){return N(h.UPDATE,e,t,r)}function L(e,t,r){return N(h.CREATE,e,t,r)}function N(t=h.ALL,r,a,o){return C(e.OperationKeys.ON,t,r,a,o)}function I(t=h.ALL,r,a,o){return C(e.OperationKeys.AFTER,t,r,a,o)}function C(r,a=h.ALL,o,s,n=D){return(i,c)=>{const l=i.constructor.name,d=a.reduce(((a,d)=>{const p=r+d;let u=t.Metadata.readOperation(i.constructor,c,p);u||(u={operation:d,handlers:{}});const f=g.getHandlerName(o);let y=n;if(s){if(Object.keys(s).filter((e=>e in n)).length>0)throw new T("Unable to merge groupSort into dataToAdd due to overlaping keys");y={...n,...s}}return u.handlers[l]&&u.handlers[l][c]&&f in u.handlers[l][c]||(u.handlers[l]=u.handlers[l]||{},u.handlers[l][c]=u.handlers[l][c]||{},u.handlers[l][c][f]={data:y},a.push(((e,t)=>(r,a)=>{g.register(t,e,r,a)})(p,o),t.propMetadata(t.Metadata.key(e.ModelOperations.OPERATIONS,c,p),u))),a}),[]);return t.apply(...d)(i,c)}}function k(e,r){return(...a)=>t.metadata(e,{args:a,handler:r})}function j(e=l.READONLY.INVALID){const a=n.READONLY,o={message:e,description:"defines the attribute as readOnly",async:!1};return t.Decoration.for(a).define({decorator:r.innerValidationDecorator,args:[j,a,o]}).apply()}async function U(e,t,r,a){a[r]=e.timestamp}async function V(e,t,r,a){if(a[r])try{a[r]=JSON.stringify(a[r])}catch(e){throw new w(`Failed to serialize ${r.toString()} property of model ${a.constructor.name}: e`)}}async function F(e,t,r,a){if(a[r]&&"string"==typeof a[r])try{a[r]=JSON.parse(a[r])}catch(e){throw new w(`Failed to deserialize ${r.toString()} property of model ${a.constructor.name}: ${e}`)}}function _(e,r){const a=[];for(const o in e){if(!Object.prototype.hasOwnProperty.call(e,o)||r.includes(o))continue;const s=t.Metadata.validationFor(e.constructor,o)||{};a.push({prop:o,decorators:s})}return a}function H(e,t,a,o,s){const n=r.Validation.get(o.key);if(!n)throw Error("Missing validator for "+o.key);if(!n.updateHasErrors)return r.toConditionalPromise(void 0,s);if(!s&&o.async)return r.toConditionalPromise(void 0,s);const i=Object.values(o)||{},c=n.updateHasErrors(e[a],t[a],...i);return r.toConditionalPromise(c,s)}function $(e,t,a,o,s){const n={};for(const i in o){const c={...o[i],key:i};if(!s&&c.async)continue;let l=H(e,t,a,c,s);if(c.key===r.ValidationKeys.LIST&&(!l||s)){const o=e[a],n=t[a],i=o instanceof Set?[...o]:o,d=n instanceof Set?[...n]:n;if(i?.length){const e=[c.class||c.clazz||c.customTypes].flat().map((e=>((e=(e="function"!=typeof e||e.name?e:e()).name?e.name:e)+"").toLowerCase())),t=i.map((t=>{const a=r.Model.pk(t,!0);if(!a)return"Failed to find model id";const o=d.find((e=>a===r.Model.pk(e,!0)));return r.Model.isModel(t)?t.hasErrors(o):e.includes(typeof t)?void 0:"Value has no validatable type"}));if(s)l=Promise.all(t).then((e=>e.every((e=>!e))?void 0:e));else{const e=t.every((e=>!e));l=t.length>0&&!e?t:void 0}}}l&&(n[c.key]=l)}if(!s)return Object.keys(n).length>0?n:void 0;const i=Object.keys(n),c=Object.values(n);return Promise.all(c).then((e=>{const t={};for(let r=0;r<e.length;r++){const a=e[r];void 0!==a&&(t[i[r]]=a)}return Object.keys(t).length>0?t:void 0}))}function B(e,a,o,...s){const n=_(a,s),i={},c={};for(const{prop:s,decorators:l}of n){const n=s+"",d=a[s],{designTypes:p,designType:u}=t.Metadata.getPropDesignTypes(a.constructor,s);if(!p)continue;if(p.some((e=>[Array.name,Set.name].includes(e)))){if(!l||!Object.keys(l).includes(r.ValidationKeys.LIST)){i[n]={[r.ValidationKeys.TYPE]:`Array or Set property '${n}' requires a @list decorator`};continue}if(d&&!(Array.isArray(d)||d instanceof Set)){i[n]={[r.ValidationKeys.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const f=$(a,e,n,l,o)||{},y=r.Model.isPropertyModel(a,n);if(null!=d&&y){const t=d,a=(Array.isArray(u)?u:[u]).map((e=>("function"!=typeof e||e.name||(e=e()),r.Model.get(e.name||e)))).find((e=>!!e));a&&t instanceof a?c[n]=t.hasErrors(e[s]):(f[r.ValidationKeys.TYPE]=a?"Value must be an instance of "+a.name:`Unable to verify type consistency, missing model registry for ${p.toString()} on prop ${n}`,delete f[r.ModelKeys.TYPE])}(Object.keys(f).length>0||o)&&(i[n]=f),o||Object.entries(c[n]||{}).forEach((([e,t])=>{void 0!==t&&(i[`${n}.${e}`]=t)}))}if(!o)return Object.keys(i).length>0?new r.ModelErrorDefinition(i):void 0;const l=i,d=Object.keys(l),p=Object.values(l);return Promise.allSettled(p).then((async e=>{const t={};for(const[e,r]of Object.entries(c)){const a=await r;a&&Object.entries(a).forEach((([r,a])=>{void 0!==a&&(t[[e,r].join(".")]=a)}))}for(let r=0;r<e.length;r++){const a=d[r],o=e[r];"fulfilled"===o.status&&void 0!==o.value?t[a]=o.value:"rejected"===o.status&&(t[a]=o.reason instanceof Error?o.reason.message:(o.reason||"Validation failed")+"")}return Object.keys(t).length>0?new r.ModelErrorDefinition(t):void 0}))}function Y(e,t,a,o,s){if(void 0===o[a])return;const n=r.Hashing.hash(o[a]);s&&o[a]===n||(o[a]=n)}function q(){return t.apply(x(Y),t.propMetadata(n.HASH,{}))}function z(e,t,r,a){try{const{args:e,type:o,prefix:s,suffix:n,separator:i}=t,c=e.map((t=>{if(!(t in a))throw new T(`Property ${t} not found to compose from`);if("keys"===o)return t;if(void 0===a[t])throw new T(`Property ${e} does not contain a value to compose from`);return a[t].toString()}));s&&c.unshift(s),n&&c.push(n),a[r]=c.join(i)}catch(e){throw new T("Failed to compose value: "+e)}}function G(e,r=!1,a=i,o="values",s="",c="",l={priority:55}){return t.Decoration.for(n.COMPOSED).define({decorator:(e,r,a,o,s,i,c)=>(l,d)=>{const p={args:e,hashResult:r,separator:a,type:o,prefix:s,suffix:i},u=[x(z,p,c),t.propMetadata(t.Metadata.key(n.COMPOSED,d),p)];return r&&u.push(q()),t.apply(...u)(l,d)},args:[e,r,a,o,s,c,l]}).apply()}function Q(t){return(r,a,o,s)=>{try{switch(t){case e.OperationKeys.CREATE:s[o]=1;break;case e.OperationKeys.UPDATE:s[o]++;break;default:throw new T("Invalid operation: "+t)}}catch(e){throw new T("Failed to update version: "+e)}}}function J(e){return e.reduce(((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e)),void 0)}async function W(t,r,a,o,s,n){const i=Z(a,o,s);if(!i)return;const c=b(v(K(a,i,s)));for(const i of c){const c=[r,i.data.length>1?i.data:i.data[0],i.prop.length>1?i.prop:i.prop[0],a];if(o===e.OperationKeys.UPDATE&&s===e.OperationKeys.ON){if(!n)throw new T("Missing old model for update operation");c.push(n)}try{await i.handler.apply(t,c)}catch(e){const t=`Failed to execute handler ${i.handler.name} for ${i.prop} on ${a.constructor.name} due to error: ${e}`;if(r.get("breakOnHandlerError"))throw new T(t)}}}function Z(r,a,o){const s=o?.replace(/[.]$/,""),n=t.Metadata.get(r.constructor,e.ModelOperations.OPERATIONS);if(n)return Object.keys(n).reduce(((e,t)=>{const r=s?n[t][s]||{}:n[t],o=Object.keys(r).filter((e=>e===a)),i=[];for(const e of o)i.push({key:e,props:r[e]});return i&&i.length&&(e||(e={}),e[t]=i),e}),void 0)}r.Model.prototype.isTransient=function(){return t.Metadata.isTransient(this)},r.Model.prototype.hasErrors=function(e,...t){!e||e instanceof r.Model||(t.unshift(e),e=void 0);const a=this.isAsync(),o=r.validate(this,a,...t);return a?Promise.resolve(o).then((r=>r||!e?r:B(e,this,a,...t))):o||!e?o:B(e,this,a,...t)},r.Model.prototype.segregate=function(){return r.Model.segregate(this)},r.Model.segregate=e=>{if(!t.Metadata.isTransient(e))return{model:e};const a=t.Metadata.validatableProperties(e.constructor),o=t.Metadata.get(e.constructor,n.TRANSIENT),s={model:{},transient:{}};for(const t of a)if(Object.keys(o).includes(t)){s.transient=s.transient||{};try{s.transient[t]=e[t]}catch(e){throw new w(`Failed to serialize transient property ${t}: ${e}`)}}else s.model=s.model||{},s.model[t]=e[t];return s.model=r.Model.build(s.model,e.constructor.name),s},r.Model.pk=((e,a=!1)=>{if(!e)throw Error("No model was provided");const o=e instanceof r.Model?e.constructor:e,s=t.Metadata.get(o,n.ID);if(!s)throw Error("No Id property defined for model "+(o?.name||"Unknown Model"));const i=Object.keys(s)[0];if(!a)return i;if(e instanceof r.Model)return e[i];throw Error("Cannot get the value of the pk from the constructor")}).bind(r.Model),r.Model.pkProps=(e=>t.Metadata.get(e,t.Metadata.key(n.ID,r.Model.pk(e)))).bind(r.Model),r.Model.isTransient=(e=>t.Metadata.isTransient(e)).bind(r.Model),r.Model.composed=((e,a)=>{const o=e instanceof r.Model?e.constructor:e;return a?t.Metadata.get(o,t.Metadata.key(n.COMPOSED,a)):!!t.Metadata.get(o,n.COMPOSED)}).bind(r.Model),r.Model.merge=((e,t,r)=>{const a=e=>Object.entries(e).reduce(((e,[t,r])=>(void 0!==r&&(e[t]=r),e)),{});return new(r=r||e.constructor)(Object.assign({},a(e),a(t)))}).bind(r.Model),t.Metadata.saveOperation=((r,a,o,s)=>{a&&t.Metadata.set(r,t.Metadata.key(e.ModelOperations.OPERATIONS,a,o),s)}).bind(t.Metadata),t.Metadata.readOperation=((r,a,o)=>{if(a&&o)return t.Metadata.get(r,t.Metadata.key(e.ModelOperations.OPERATIONS,a,o))}).bind(t.Metadata),t.Metadata.isTransient=(e=>!!t.Metadata.get("function"!=typeof e?e.constructor:e,n.TRANSIENT)).bind(t.Metadata);const X={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0,ignoreValidation:!1,ignoreHandlers:!1},ee=e=>(new te).accumulate(Object.assign({},e,{timestamp:new Date,logger:e.logger||s.Logging.get()}));class te{constructor(){this.cache=new o.ObjectAccumulator,Object.defineProperty(this,"cache",{value:new o.ObjectAccumulator,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=ee}accumulate(e){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(e),writable:!1,enumerable:!1,configurable:!0}),this}get logger(){return this.cache.logger}get timestamp(){return this.cache.timestamp}get(e){try{return this.cache.get(e)}catch(t){const r=this.cache.parentContext;if(r)return r.get(e);throw t}}static childFrom(e,t){return te.factory(Object.assign({},e.cache,t||{}))}static async from(e,t,r,...a){return te.factory(Object.assign({},X,t,{operation:e,model:r,logger:t.logger||s.Logging.get()}))}static async args(e,t,r,a,o){const s=r.pop();async function n(){return a?a.context(e,o||{},t,...r):te.from(e,o||{},t,...r)}let i;return s?s instanceof te?(i=s,r.push(s)):(r.push(s),i=await n(),r.push(i)):(i=await n(),r.push(i)),{context:i,args:r}}}function re(e,t,r,a,o){const s=o||r.name;e[s]=new Proxy(e[s],{apply:async(e,r,o)=>{let s=t.call(r,...o);s instanceof Promise&&(s=await s);const n=s[s.length-1];if(!(n instanceof te))throw new T("Missing a context");let i=e.call(r,...s);return i instanceof Promise&&(i=await i),i=a.call(r,i,n),i instanceof Promise&&(i=await i),i}})}class ae{get class(){if(!this._class)throw new T("No class definition found for this repository");return this._class}get pk(){return r.Model.pk(this.class)}get pkProps(){return r.Model.pkProps(this.class)}constructor(e){e&&(this._class=e);const t=this;[this.create,this.read,this.update,this.delete].forEach((e=>{const r=e.name;re(t,t[r+"Prefix"],e,t[r+"Suffix"])}))}async createAll(e,...t){return Promise.all(e.map((e=>this.create(e,...t))))}async createPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r);return t=new this.class(t),await W(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),[t,...a.args]}async createSuffix(t,r){return await W(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER),t}async createAllPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r);return await Promise.all(t.map((async t=>(t=new this.class(t),await W(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t)))),[t,...a.args]}async createAllSuffix(t,r){return await Promise.all(t.map((t=>W(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER)))),t}async readAll(e,...t){return await Promise.all(e.map((e=>this.read(e,...t))))}async readSuffix(t,r){return await W(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER),t}async readPrefix(t,...r){const a=await te.args(e.OperationKeys.READ,this.class,r),o=new this.class;return o[this.pk]=t,await W(this,a.context,o,e.OperationKeys.READ,e.OperationKeys.ON),[t,...a.args]}async readAllPrefix(t,...r){const a=await te.args(e.OperationKeys.READ,this.class,r);return await Promise.all(t.map((async t=>{const r=new this.class;return r[this.pk]=t,W(this,a.context,r,e.OperationKeys.READ,e.OperationKeys.ON)}))),[t,...a.args]}async readAllSuffix(t,r){return await Promise.all(t.map((t=>W(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER)))),t}async updateAll(e,...t){return Promise.all(e.map((e=>this.update(e,...t))))}async updateSuffix(t,r){return await W(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER),t}async updatePrefix(t,...r){const a=await te.args(e.OperationKeys.UPDATE,this.class,r),o=t[this.pk];if(!o)throw new T("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);return await W(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s),[t,...a.args]}async updateAllPrefix(t,...r){const a=await te.args(e.OperationKeys.UPDATE,this.class,r);return await Promise.all(t.map((t=>(t=new this.class(t),W(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON),t)))),[t,...a.args]}async updateAllSuffix(t,r){return await Promise.all(t.map((t=>W(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER)))),t}async deleteAll(e,...t){return Promise.all(e.map((e=>this.delete(e,...t))))}async deleteSuffix(t,r){return await W(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER),t}async deletePrefix(t,...r){const a=await te.args(e.OperationKeys.DELETE,this.class,r),o=await this.read(t,...a.args);return await W(this,a.context,o,e.OperationKeys.DELETE,e.OperationKeys.ON),[t,...a.args]}async deleteAllPrefix(t,...r){const a=await te.args(e.OperationKeys.DELETE,this.class,r),o=await this.readAll(t,...a.args);return await Promise.all(o.map((async t=>W(this,a.context,t,e.OperationKeys.DELETE,e.OperationKeys.ON)))),[t,...a.args]}async deleteAllSuffix(t,r){return await Promise.all(t.map((t=>W(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER)))),t}toString(){return this.class.name+" Repository"}}const oe="##VERSION##",se="##PACKAGE##";t.Metadata.registerLibrary(se,oe),e.BadRequestError=m,e.BaseError=O,e.BaseRepository=ae,e.BlockOperations=t=>k(e.OperationKeys.REFLECT+e.OperationKeys.BLOCK,((e,t)=>e.includes(t)))(t),e.ConflictError=P,e.Context=te,e.DBKeys=n,e.DBOperations=h,e.DEFAULT_ERROR_MESSAGES=l,e.DEFAULT_TIMESTAMP_FORMAT=c,e.DefaultContextFactory=ee,e.DefaultRepositoryFlags=X,e.DefaultSeparator=i,e.InternalError=T,e.NotFoundError=M,e.Operations=g,e.OperationsRegistry=E,e.PACKAGE_NAME=se,e.Repository=class extends ae{constructor(e){super(e)}async createPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r);if(t=new this.class(t),a.context.get("ignoreHandlers")||await W(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),!a.context.get("ignoreValidation")){const e=await Promise.resolve(t.hasErrors());if(e)throw new A(e.toString())}return[t,...a.args]}async createAllPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r),o=a.context.get("ignoreHandlers"),s=a.context.get("ignoreValidation");if(t=await Promise.all(t.map((async t=>{const r=new this.class(t);return o||await W(this,a.context,r,e.OperationKeys.CREATE,e.OperationKeys.ON),r}))),!s){const e=J(await Promise.all(t.map((e=>Promise.resolve(e.hasErrors())))));if(e)throw new A(e)}return[t,...a.args]}async updatePrefix(t,...a){const o=await te.args(e.OperationKeys.UPDATE,this.class,a),s=o.context.get("ignoreHandlers"),n=o.context.get("ignoreValidation"),i=t[this.pk];if(!i)throw new T("No value for the Id is defined under the property "+this.pk);const c=await this.read(i);if(t=r.Model.merge(c,t,this.class),s||await W(this,o.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,c),!n){const e=await Promise.resolve(t.hasErrors(c));if(e)throw new A(e.toString())}return[t,...o.args]}async updateAllPrefix(t,...a){const o=await te.args(e.OperationKeys.UPDATE,this.class,a),s=o.context.get("ignoreHandlers"),n=o.context.get("ignoreValidation"),i=t.map((e=>{const t=e[this.pk];if(void 0===t)throw new T("No value for the Id is defined under the property "+this.pk);return t})),c=await this.readAll(i,...o.args);if(t=t.map(((e,t)=>r.Model.merge(c[t],e,this.class))),s||await Promise.all(t.map(((t,r)=>W(this,o.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,c[r])))),!n){const e=J(await Promise.all(t.map(((e,t)=>Promise.resolve(e.hasErrors(c[t]))))));if(e)throw new A(e)}return[t,...o.args]}async readPrefix(e,...t){return super.readPrefix(e,...t)}async readAllPrefix(e,...t){return super.readAllPrefix(e,...t)}async deleteAllPrefix(e,...t){return super.deleteAllPrefix(e,...t)}},e.SerializationError=w,e.UpdateValidationKeys=d,e.UpdateValidator=p,e.VERSION=oe,e.ValidationError=A,e.after=I,e.afterAny=(e,t,r)=>I(h.ALL,e,t,r),e.afterCreate=(e,t,r)=>I(h.CREATE,e,t,r),e.afterCreateUpdate=(e,t,r)=>I(h.CREATE_UPDATE,e,t,r),e.afterDelete=(e,t,r)=>I(h.DELETE,e,t,r),e.afterRead=(e,t,r)=>I(h.READ,e,t,r),e.afterUpdate=(e,t,r)=>I(h.UPDATE,e,t,r),e.composed=(e,t=i,r=!1,a="",o="",s={priority:55})=>G(e,r,t,"values",a,o,s),e.composedFromCreateUpdate=z,e.composedFromKeys=(e,t=i,r=!1,a="",o="",s={priority:55})=>G(e,r,t,"keys",a,o,s),e.enforceDBDecorators=W,e.getDbDecorators=Z,e.getHandlerArgs=R,e.getHandlersDecorators=K,e.getValidatableUpdateProps=_,e.groupDecorators=v,e.hash=q,e.hashOnCreateUpdate=Y,e.id=()=>t.apply(r.required(),j(),((e,r)=>t.propMetadata(t.Metadata.key(n.ID,r),{})(e,r))),e.on=N,e.onAny=(e,t,r)=>N(h.ALL,e,t,r),e.onCreate=L,e.onCreateUpdate=x,e.onDelete=(e,t,r)=>N(h.DELETE,e,t,r),e.onRead=(e,t,r)=>N(h.READ,e,t,r),e.onUpdate=S,e.operation=C,e.prefixMethod=(e,t,r,a)=>{const o=a||t.name;e[o]=new Proxy(e[o],{apply:async(e,t,a)=>{let o=r.call(t,...a);return o instanceof Promise&&(o=await o),o=e.call(t,...o),o instanceof Promise&&(o=await o),o}})},e.readonly=j,e.reduceErrorsToPrint=J,e.serialize=()=>t.apply(x(V),I(h.ALL,F),r.type([String,Object]),t.metadata(n.SERIALIZE,{})),e.serializeAfterAll=F,e.serializeOnCreateUpdate=V,e.sortDecorators=b,e.storeHandlerMetadata=k,e.suffixMethod=(e,t,r,a)=>{const o=a||t.name;e[o]=new Proxy(e[o],{apply:async(e,t,a)=>{let o=e.call(t,...a);return o instanceof Promise&&(o=await o),o=r.call(t,...o),o instanceof Promise&&(o=await o),o}})},e.timestamp=(a=h.CREATE_UPDATE,o=c)=>{const s=n.TIMESTAMP,i=r.Validation.updateKey(n.TIMESTAMP);return t.Decoration.for(s).define({decorator:(a,o)=>{const s=[r.date(o,l.TIMESTAMP.DATE),r.required(l.TIMESTAMP.REQUIRED),t.propMetadata(r.Validation.key(n.TIMESTAMP),{operation:a,format:o}),N(a,U)];return-1!==a.indexOf(e.OperationKeys.UPDATE)?s.push(t.propMetadata(i,{message:l.TIMESTAMP.INVALID})):s.push(j()),t.apply(...s)},args:[a,o]}).apply()},e.timestampHandler=U,e.transient=()=>t.Decoration.for(n.TRANSIENT).define(((e,r)=>{t.propMetadata(n.TRANSIENT,!0)(e.constructor),t.propMetadata(t.Metadata.key(n.TRANSIENT,r),{})(e,r)})).apply(),e.validateCompare=B,e.validateDecorator=H,e.validateDecorators=$,e.version=()=>{const a=n.VERSION;return t.Decoration.for(a).define(r.type(Number),L(Q(e.OperationKeys.CREATE)),S(Q(e.OperationKeys.UPDATE)),t.propMetadata(a,!0)).apply()},e.versionCreateUpdate=Q,e.wrapMethodWithContext=re},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/decorator-validation"),require("tslib"),require("typed-object-accumulator"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/decorator-validation","tslib","typed-object-accumulator","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["db-decorators"]={},e.decafTsDecoration,e.decafTsDecoratorValidation,e.tslib,e.typedObjectAccumulator,e.decafTsLogging);
|
|
1
|
+
var e,t;e=this,t=function(e,t,r,a,o,s){"use strict";const n={REFLECT:r.ModelKeys.MODEL+".persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},i="_",c="dd/MM/yyyy HH:mm:ss:S",l={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},d={REFLECT:"db.update.validation.",TIMESTAMP:n.TIMESTAMP,READONLY:n.READONLY};e.ReadOnlyValidator=class extends r.Validator{constructor(){super(l.READONLY.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,a){if(void 0!==e)return r.isEqual(e,t)?void 0:this.getMessage(a||this.message)}},e.ReadOnlyValidator=a.__decorate([r.validator(d.READONLY),a.__metadata("design:paramtypes",[])],e.ReadOnlyValidator),e.TimestampValidator=class extends r.Validator{constructor(){super(l.TIMESTAMP.INVALID)}hasErrors(e,...t){}updateHasErrors(e,t,r){if(void 0!==e){r=r||this.getMessage(r||this.message);try{e=new Date(e),t=new Date(t)}catch(e){return r}return e>t?void 0:r}}},e.TimestampValidator=a.__decorate([r.validator(d.TIMESTAMP),a.__metadata("design:paramtypes",[])],e.TimestampValidator);class p extends r.Validator{constructor(e=r.DEFAULT_ERROR_MESSAGES.DEFAULT,...t){super(e,...t)}}var u,f,y;r.Validation.updateKey=e=>d.REFLECT+e,e.OperationKeys=void 0,(u=e.OperationKeys||(e.OperationKeys={})).REFLECT="decaf.model.db.operations.",u.CREATE="create",u.READ="read",u.UPDATE="update",u.DELETE="delete",u.ON="on.",u.AFTER="after.",u.BLOCK="block",e.ModelOperations=void 0,(f=e.ModelOperations||(e.ModelOperations={})).OPERATIONS="operations",f.RELATIONS="relations",e.BulkCrudOperationKeys=void 0,(y=e.BulkCrudOperationKeys||(e.BulkCrudOperationKeys={})).CREATE_ALL="createAll",y.READ_ALL="readAll",y.UPDATE_ALL="updateAll",y.DELETE_ALL="deleteAll";const h={CREATE:[e.OperationKeys.CREATE],READ:[e.OperationKeys.READ],UPDATE:[e.OperationKeys.UPDATE],DELETE:[e.OperationKeys.DELETE],CREATE_UPDATE:[e.OperationKeys.CREATE,e.OperationKeys.UPDATE],READ_CREATE:[e.OperationKeys.READ,e.OperationKeys.CREATE],ALL:[e.OperationKeys.CREATE,e.OperationKeys.READ,e.OperationKeys.UPDATE,e.OperationKeys.DELETE]};class E{constructor(){this.cache={}}get(e,t,r,a){a=a||[];const o=this.resolveOwner(e),s=this.resolveTargetName(e,o);if(s){const e=this.selectHandlers(s,t,r,o);e?.length&&a.unshift(...e)}else if("string"==typeof e||e===Object.prototype||Object.getPrototypeOf(e)===Object.prototype)return a;let n=Object.getPrototypeOf(e);return n?(n.constructor&&n.constructor.name===s&&(n=Object.getPrototypeOf(n)),n?this.get(n,t,r,a):a):a}register(e,t,r,a){const o=r.constructor.name,s=g.getHandlerName(e),n=this.resolveFlavour(r.constructor);this.cache[o]||(this.cache[o]={}),this.cache[o][a]||(this.cache[o][a]={}),this.cache[o][a][t]||(this.cache[o][a][t]={}),this.cache[o][a][t][n]||(this.cache[o][a][t][n]={}),this.cache[o][a][t][n][s]||(this.cache[o][a][t][n][s]=e)}resolveOwner(e){if(e&&"string"!=typeof e)return"function"==typeof e?e:e.constructor}resolveTargetName(e,t){return"string"==typeof e?e:t?.name}resolveFlavour(e){if(!e)return t.Decoration.defaultFlavour;try{return t.Metadata.flavourOf(e)}catch{return t.Decoration.defaultFlavour}}selectHandlers(e,r,a,o){const s=this.cache[e]?.[r]?.[a];if(!s)return;const n=s[this.resolveFlavour(o)]||s[t.Decoration.defaultFlavour]||this.firstBucket(s);if(!n)return;const i=Object.values(n);return i.length?i:void 0}firstBucket(e){for(const t of Object.values(e))if(t&&Object.keys(t).length)return t}}class g{constructor(){}static getHandlerName(e){return e.name?e.name:r.Hashing.hash(e.toString())}static key(t){return e.OperationKeys.REFLECT+t}static get(e,t,r){return g.registry.get(e,t,r)}static getOpRegistry(){return g.registry||(g.registry=new E),g.registry}static register(e,t,r,a){g.getOpRegistry().register(e,t,r,a)}}class O extends Error{constructor(e,t,r){if(t instanceof O)return t;super(`[${e}] ${t instanceof Error?t.message:t}`),this.code=r,t instanceof Error&&(this.stack=t.stack)}}class m extends O{constructor(e,t=m.name,r=400){super(t,e,r)}}class A extends m{constructor(e){super(e,A.name,422)}}class T extends O{constructor(e,t=T.name,r=500){super(t,e,r)}}class w extends T{constructor(e){super(e,w.name,500)}}class M extends m{constructor(e){super(e,M.name,404)}}class P extends m{constructor(e){super(e,P.name,409)}}const D={priority:50},R=(e,t,r,a)=>{const o=r.constructor.name;if(!o)throw new T("Could not determine model class");a=a||{},e.props.handlers[o]&&e.props.handlers[o][t]&&(a={...e.props.handlers[o][t],...a});let s=Object.getPrototypeOf(r);return s===Object.prototype?a:(s.constructor.name===o&&(s=Object.getPrototypeOf(s)),R(e,t,s,a))};function K(e,t,r){const a=[];for(const o in t){const s=t[o];for(const t of s){const{key:s}=t,n=g.get(e,o,r+s);if(!n||!n.length)throw new T(`Could not find registered handler for the operation ${r+s} under property ${o}`);const i=R(t,o,e);if(!i)throw new T("Missing handler arguments for decorators");for(const e of n){const t=i[e.name];if(!t)throw new T("Missing handler arguments for handler "+e.name);const r=t.data;a.push({handler:e,data:[r],prop:[o]})}}}return a}function v(e){const t=e.reduce(((e,t)=>{if(!t||!t.data||!t.prop)throw new T("Missing decorator properties or data");if(!t.data[0].group)return e.set(Symbol(),t),e;const r=t.data[0].group;if(e.has(r)){const a=e.get(r);e.set(r,{handler:a.handler,data:[...a.data,...t.data],prop:[...a.prop,...t.prop]})}else e.set(r,{...t});return e}),new Map),r=Array.from(t.values());return r.forEach((e=>{const t=e.data.map(((t,r)=>({data:t,prop:e.prop[r]})));t.sort(((e,t)=>(e.data.groupPriority??50)-(t.data.groupPriority??50))),e.data=t.map((e=>e.data)),e.prop=t.map((e=>e.prop))})),r}function b(e){return e.sort(((e,t)=>(e.data[0].priority??50)-(t.data[0].priority??50))),e}function x(e,t,r){return N(h.CREATE_UPDATE,e,t,r)}function S(e,t,r){return N(h.UPDATE,e,t,r)}function L(e,t,r){return N(h.CREATE,e,t,r)}function N(t=h.ALL,r,a,o){return C(e.OperationKeys.ON,t,r,a,o)}function I(t=h.ALL,r,a,o){return C(e.OperationKeys.AFTER,t,r,a,o)}function C(r,a=h.ALL,o,s,n=D){return(i,c)=>{const l=i.constructor.name,d=a.reduce(((a,d)=>{const p=r+d;let u=t.Metadata.readOperation(i.constructor,c,p);u||(u={operation:d,handlers:{}});const f=g.getHandlerName(o);let y=n;if(s){if(Object.keys(s).filter((e=>e in n)).length>0)throw new T("Unable to merge groupSort into dataToAdd due to overlaping keys");y={...n,...s}}return u.handlers[l]&&u.handlers[l][c]&&f in u.handlers[l][c]||(u.handlers[l]=u.handlers[l]||{},u.handlers[l][c]=u.handlers[l][c]||{},u.handlers[l][c][f]={data:y},a.push(((e,t)=>(r,a)=>{g.register(t,e,r,a)})(p,o),t.propMetadata(t.Metadata.key(e.ModelOperations.OPERATIONS,c,p),u))),a}),[]);return t.apply(...d)(i,c)}}function k(e,r){return(...a)=>t.metadata(e,{args:a,handler:r})}function j(e=l.READONLY.INVALID){const a=n.READONLY,o={message:e,description:"defines the attribute as readOnly",async:!1};return t.Decoration.for(a).define({decorator:r.innerValidationDecorator,args:[j,a,o]}).apply()}async function U(e,t,r,a){a[r]=e.timestamp}async function V(e,t,r,a){if(a[r])try{a[r]=JSON.stringify(a[r])}catch(e){throw new w(`Failed to serialize ${r.toString()} property of model ${a.constructor.name}: e`)}}async function F(e,t,r,a){if(a[r]&&"string"==typeof a[r])try{a[r]=JSON.parse(a[r])}catch(e){throw new w(`Failed to deserialize ${r.toString()} property of model ${a.constructor.name}: ${e}`)}}function _(e,r){const a=[];for(const o in e){if(!Object.prototype.hasOwnProperty.call(e,o)||r.includes(o))continue;const s=t.Metadata.validationFor(e.constructor,o)||{};a.push({prop:o,decorators:s})}return a}function H(e,t,a,o,s){const n=r.Validation.get(o.key);if(!n)throw Error("Missing validator for "+o.key);if(!n.updateHasErrors)return r.toConditionalPromise(void 0,s);if(!s&&o.async)return r.toConditionalPromise(void 0,s);const i=Object.values(o)||{},c=n.updateHasErrors(e[a],t[a],...i);return r.toConditionalPromise(c,s)}function $(e,t,a,o,s){const n={};for(const i in o){const c={...o[i],key:i};if(!s&&c.async)continue;let l=H(e,t,a,c,s);if(c.key===r.ValidationKeys.LIST&&(!l||s)){const o=e[a],n=t[a],i=o instanceof Set?[...o]:o,d=n instanceof Set?[...n]:n;if(i?.length){const e=[c.class||c.clazz||c.customTypes].flat().map((e=>((e=(e="function"!=typeof e||e.name?e:e()).name?e.name:e)+"").toLowerCase())),t=i.map((t=>{const a=r.Model.pk(t,!0);if(!a)return"Failed to find model id";const o=d.find((e=>a===r.Model.pk(e,!0)));return r.Model.isModel(t)?t.hasErrors(o):e.includes(typeof t)?void 0:"Value has no validatable type"}));if(s)l=Promise.all(t).then((e=>e.every((e=>!e))?void 0:e));else{const e=t.every((e=>!e));l=t.length>0&&!e?t:void 0}}}l&&(n[c.key]=l)}if(!s)return Object.keys(n).length>0?n:void 0;const i=Object.keys(n),c=Object.values(n);return Promise.all(c).then((e=>{const t={};for(let r=0;r<e.length;r++){const a=e[r];void 0!==a&&(t[i[r]]=a)}return Object.keys(t).length>0?t:void 0}))}function B(e,a,o,...s){const n=_(a,s),i={},c={};for(const{prop:s,decorators:l}of n){const n=s+"",d=a[s],{designTypes:p,designType:u}=t.Metadata.getPropDesignTypes(a.constructor,s);if(!p)continue;if(p.some((e=>[Array.name,Set.name].includes(e)))){if(!l||!Object.keys(l).includes(r.ValidationKeys.LIST)){i[n]={[r.ValidationKeys.TYPE]:`Array or Set property '${n}' requires a @list decorator`};continue}if(d&&!(Array.isArray(d)||d instanceof Set)){i[n]={[r.ValidationKeys.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const f=$(a,e,n,l,o)||{},y=r.Model.isPropertyModel(a,n);if(null!=d&&y){const t=d,a=(Array.isArray(u)?u:[u]).map((e=>("function"!=typeof e||e.name||(e=e()),r.Model.get(e.name||e)))).find((e=>!!e));a&&t instanceof a?c[n]=t.hasErrors(e[s]):(f[r.ValidationKeys.TYPE]=a?"Value must be an instance of "+a.name:`Unable to verify type consistency, missing model registry for ${p.toString()} on prop ${n}`,delete f[r.ModelKeys.TYPE])}(Object.keys(f).length>0||o)&&(i[n]=f),o||Object.entries(c[n]||{}).forEach((([e,t])=>{void 0!==t&&(i[`${n}.${e}`]=t)}))}if(!o)return Object.keys(i).length>0?new r.ModelErrorDefinition(i):void 0;const l=i,d=Object.keys(l),p=Object.values(l);return Promise.allSettled(p).then((async e=>{const t={};for(const[e,r]of Object.entries(c)){const a=await r;a&&Object.entries(a).forEach((([r,a])=>{void 0!==a&&(t[[e,r].join(".")]=a)}))}for(let r=0;r<e.length;r++){const a=d[r],o=e[r];"fulfilled"===o.status&&void 0!==o.value?t[a]=o.value:"rejected"===o.status&&(t[a]=o.reason instanceof Error?o.reason.message:(o.reason||"Validation failed")+"")}return Object.keys(t).length>0?new r.ModelErrorDefinition(t):void 0}))}function Y(e,t,a,o,s){if(void 0===o[a])return;const n=r.Hashing.hash(o[a]);s&&o[a]===n||(o[a]=n)}function q(){return t.apply(x(Y),t.propMetadata(n.HASH,{}))}function z(e,t,a,o){try{const{args:e,type:s,prefix:n,suffix:i,separator:c,filterEmpty:l,hashResult:d}=t,p=e.map((t=>{if(!(t in o))throw new T(`Property ${t} not found to compose from`);if("keys"===s)return t;if(void 0===o[t]){if(l){if(!Array.isArray(l))return;if(l.includes(t))return}throw new T(`Property ${e} does not contain a value to compose from`)}return o[t].toString()})).filter((e=>!l||!!e));n&&p.unshift(n),i&&p.push(i),o[a]=d?r.Hashing.hash(p.join(c)):p.join(c)}catch(e){throw new T("Failed to compose value: "+e)}}function G(e,r=!1,a=i,o=!1,s="values",c="",l="",d={priority:55}){return t.Decoration.for(n.COMPOSED).define({decorator:(e,r,a,s,i,c,l)=>(d,p)=>{const u={args:e,hashResult:r,separator:a,type:s,prefix:i,suffix:c,filterEmpty:o},f=[x(z,u,l),t.propMetadata(t.Metadata.key(n.COMPOSED,p),u)];return r&&f.push(q()),t.apply(...f)(d,p)},args:[e,r,a,s,c,l,d]}).apply()}function Q(t){return(r,a,o,s)=>{try{switch(t){case e.OperationKeys.CREATE:s[o]=1;break;case e.OperationKeys.UPDATE:s[o]++;break;default:throw new T("Invalid operation: "+t)}}catch(e){throw new T("Failed to update version: "+e)}}}function J(e){return e.reduce(((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e)),void 0)}async function W(t,r,a,o,s,n){const i=Z(a,o,s);if(!i)return;const c=b(v(K(a,i,s)));for(const i of c){const c=[r,i.data.length>1?i.data:i.data[0],i.prop.length>1?i.prop:i.prop[0],a];if(o===e.OperationKeys.UPDATE&&s===e.OperationKeys.ON){if(!n)throw new T("Missing old model for update operation");c.push(n)}try{await i.handler.apply(t,c)}catch(e){const t=`Failed to execute handler ${i.handler.name} for ${i.prop} on ${a.constructor.name} due to error: ${e}`;if(r.get("breakOnHandlerError"))throw new T(t)}}}function Z(r,a,o){const s=o?.replace(/[.]$/,""),n=t.Metadata.get(r.constructor,e.ModelOperations.OPERATIONS);if(n)return Object.keys(n).reduce(((e,t)=>{const r=s?n[t][s]||{}:n[t],o=Object.keys(r).filter((e=>e===a)),i=[];for(const e of o)i.push({key:e,props:r[e]});return i&&i.length&&(e||(e={}),e[t]=i),e}),void 0)}r.Model.prototype.isTransient=function(){return t.Metadata.isTransient(this)},r.Model.prototype.hasErrors=function(e,...t){!e||e instanceof r.Model||(t.unshift(e),e=void 0);const a=this.isAsync(),o=r.validate(this,a,...t);return a?Promise.resolve(o).then((r=>r||!e?r:B(e,this,a,...t))):o||!e?o:B(e,this,a,...t)},r.Model.prototype.segregate=function(){return r.Model.segregate(this)},r.Model.segregate=e=>{if(!t.Metadata.isTransient(e))return{model:e};const a=t.Metadata.validatableProperties(e.constructor),o=t.Metadata.get(e.constructor,n.TRANSIENT),s={model:{},transient:{}};for(const t of a)if(Object.keys(o).includes(t)){s.transient=s.transient||{};try{s.transient[t]=e[t]}catch(e){throw new w(`Failed to serialize transient property ${t}: ${e}`)}}else s.model=s.model||{},s.model[t]=e[t];return s.model=r.Model.build(s.model,e.constructor.name),s},r.Model.pk=((e,a=!1)=>{if(!e)throw Error("No model was provided");const o=e instanceof r.Model?e.constructor:e,s=t.Metadata.get(o,n.ID);if(!s)throw Error("No Id property defined for model "+(o?.name||"Unknown Model"));const i=Object.keys(s)[0];if(!a)return i;if(e instanceof r.Model)return e[i];throw Error("Cannot get the value of the pk from the constructor")}).bind(r.Model),r.Model.pkProps=(e=>t.Metadata.get(e,t.Metadata.key(n.ID,r.Model.pk(e)))).bind(r.Model),r.Model.isTransient=(e=>t.Metadata.isTransient(e)).bind(r.Model),r.Model.composed=((e,a)=>{const o=e instanceof r.Model?e.constructor:e;return a?t.Metadata.get(o,t.Metadata.key(n.COMPOSED,a)):!!t.Metadata.get(o,n.COMPOSED)}).bind(r.Model),r.Model.merge=((e,t,r)=>{const a=e=>Object.entries(e).reduce(((e,[t,r])=>(void 0!==r&&(e[t]=r),e)),{});return new(r=r||e.constructor)(Object.assign({},a(e),a(t)))}).bind(r.Model),t.Metadata.saveOperation=((r,a,o,s)=>{a&&t.Metadata.set(r,t.Metadata.key(e.ModelOperations.OPERATIONS,a,o),s)}).bind(t.Metadata),t.Metadata.readOperation=((r,a,o)=>{if(a&&o)return t.Metadata.get(r,t.Metadata.key(e.ModelOperations.OPERATIONS,a,o))}).bind(t.Metadata),t.Metadata.isTransient=(e=>!!t.Metadata.get("function"!=typeof e?e.constructor:e,n.TRANSIENT)).bind(t.Metadata);const X={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0,ignoreValidation:!1,ignoreHandlers:!1},ee=e=>(new te).accumulate(Object.assign({},e,{timestamp:new Date,logger:e.logger||s.Logging.get()}));class te{constructor(){this.cache=new o.ObjectAccumulator,Object.defineProperty(this,"cache",{value:new o.ObjectAccumulator,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=ee}accumulate(e){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(e),writable:!1,enumerable:!1,configurable:!0}),this}get logger(){return this.cache.logger}get timestamp(){return this.cache.timestamp}get(e){try{return this.cache.get(e)}catch(t){const r=this.cache.parentContext;if(r)return r.get(e);throw t}}static childFrom(e,t){return te.factory(Object.assign({},e.cache,t||{}))}static async from(e,t,r,...a){return te.factory(Object.assign({},X,t,{operation:e,model:r,logger:t.logger||s.Logging.get()}))}static async args(e,t,r,a,o){const s=r.pop();async function n(){return a?a.context(e,o||{},t,...r):te.from(e,o||{},t,...r)}let i;return s?s instanceof te?(i=s,r.push(s)):(r.push(s),i=await n(),r.push(i)):(i=await n(),r.push(i)),{context:i,args:r}}}function re(e,t,r,a,o){const s=o||r.name;e[s]=new Proxy(e[s],{apply:async(e,r,o)=>{let s=t.call(r,...o);s instanceof Promise&&(s=await s);const n=s[s.length-1];if(!(n instanceof te))throw new T("Missing a context");let i=e.call(r,...s);return i instanceof Promise&&(i=await i),i=a.call(r,i,n),i instanceof Promise&&(i=await i),i}})}class ae{get class(){if(!this._class)throw new T("No class definition found for this repository");return this._class}get pk(){return r.Model.pk(this.class)}get pkProps(){return r.Model.pkProps(this.class)}constructor(e){e&&(this._class=e);const t=this;[this.create,this.read,this.update,this.delete].forEach((e=>{const r=e.name;re(t,t[r+"Prefix"],e,t[r+"Suffix"])}))}async createAll(e,...t){return Promise.all(e.map((e=>this.create(e,...t))))}async createPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r);return t=new this.class(t),await W(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),[t,...a.args]}async createSuffix(t,r){return await W(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER),t}async createAllPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r);return await Promise.all(t.map((async t=>(t=new this.class(t),await W(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),t)))),[t,...a.args]}async createAllSuffix(t,r){return await Promise.all(t.map((t=>W(this,r,t,e.OperationKeys.CREATE,e.OperationKeys.AFTER)))),t}async readAll(e,...t){return await Promise.all(e.map((e=>this.read(e,...t))))}async readSuffix(t,r){return await W(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER),t}async readPrefix(t,...r){const a=await te.args(e.OperationKeys.READ,this.class,r),o=new this.class;return o[this.pk]=t,await W(this,a.context,o,e.OperationKeys.READ,e.OperationKeys.ON),[t,...a.args]}async readAllPrefix(t,...r){const a=await te.args(e.OperationKeys.READ,this.class,r);return await Promise.all(t.map((async t=>{const r=new this.class;return r[this.pk]=t,W(this,a.context,r,e.OperationKeys.READ,e.OperationKeys.ON)}))),[t,...a.args]}async readAllSuffix(t,r){return await Promise.all(t.map((t=>W(this,r,t,e.OperationKeys.READ,e.OperationKeys.AFTER)))),t}async updateAll(e,...t){return Promise.all(e.map((e=>this.update(e,...t))))}async updateSuffix(t,r){return await W(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER),t}async updatePrefix(t,...r){const a=await te.args(e.OperationKeys.UPDATE,this.class,r),o=t[this.pk];if(!o)throw new T("No value for the Id is defined under the property "+this.pk);const s=await this.read(o);return await W(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,s),[t,...a.args]}async updateAllPrefix(t,...r){const a=await te.args(e.OperationKeys.UPDATE,this.class,r);return await Promise.all(t.map((t=>(t=new this.class(t),W(this,a.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON),t)))),[t,...a.args]}async updateAllSuffix(t,r){return await Promise.all(t.map((t=>W(this,r,t,e.OperationKeys.UPDATE,e.OperationKeys.AFTER)))),t}async deleteAll(e,...t){return Promise.all(e.map((e=>this.delete(e,...t))))}async deleteSuffix(t,r){return await W(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER),t}async deletePrefix(t,...r){const a=await te.args(e.OperationKeys.DELETE,this.class,r),o=await this.read(t,...a.args);return await W(this,a.context,o,e.OperationKeys.DELETE,e.OperationKeys.ON),[t,...a.args]}async deleteAllPrefix(t,...r){const a=await te.args(e.OperationKeys.DELETE,this.class,r),o=await this.readAll(t,...a.args);return await Promise.all(o.map((async t=>W(this,a.context,t,e.OperationKeys.DELETE,e.OperationKeys.ON)))),[t,...a.args]}async deleteAllSuffix(t,r){return await Promise.all(t.map((t=>W(this,r,t,e.OperationKeys.DELETE,e.OperationKeys.AFTER)))),t}toString(){return this.class.name+" Repository"}}const oe="##VERSION##",se="##PACKAGE##";t.Metadata.registerLibrary(se,oe),e.BadRequestError=m,e.BaseError=O,e.BaseRepository=ae,e.BlockOperations=t=>k(e.OperationKeys.REFLECT+e.OperationKeys.BLOCK,((e,t)=>e.includes(t)))(t),e.ConflictError=P,e.Context=te,e.DBKeys=n,e.DBOperations=h,e.DEFAULT_ERROR_MESSAGES=l,e.DEFAULT_TIMESTAMP_FORMAT=c,e.DefaultContextFactory=ee,e.DefaultRepositoryFlags=X,e.DefaultSeparator=i,e.InternalError=T,e.NotFoundError=M,e.Operations=g,e.OperationsRegistry=E,e.PACKAGE_NAME=se,e.Repository=class extends ae{constructor(e){super(e)}async createPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r);if(t=new this.class(t),a.context.get("ignoreHandlers")||await W(this,a.context,t,e.OperationKeys.CREATE,e.OperationKeys.ON),!a.context.get("ignoreValidation")){const e=await Promise.resolve(t.hasErrors());if(e)throw new A(e.toString())}return[t,...a.args]}async createAllPrefix(t,...r){const a=await te.args(e.OperationKeys.CREATE,this.class,r),o=a.context.get("ignoreHandlers"),s=a.context.get("ignoreValidation");if(t=await Promise.all(t.map((async t=>{const r=new this.class(t);return o||await W(this,a.context,r,e.OperationKeys.CREATE,e.OperationKeys.ON),r}))),!s){const e=J(await Promise.all(t.map((e=>Promise.resolve(e.hasErrors())))));if(e)throw new A(e)}return[t,...a.args]}async updatePrefix(t,...a){const o=await te.args(e.OperationKeys.UPDATE,this.class,a),s=o.context.get("ignoreHandlers"),n=o.context.get("ignoreValidation"),i=t[this.pk];if(!i)throw new T("No value for the Id is defined under the property "+this.pk);const c=await this.read(i);if(t=r.Model.merge(c,t,this.class),s||await W(this,o.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,c),!n){const e=await Promise.resolve(t.hasErrors(c));if(e)throw new A(e.toString())}return[t,...o.args]}async updateAllPrefix(t,...a){const o=await te.args(e.OperationKeys.UPDATE,this.class,a),s=o.context.get("ignoreHandlers"),n=o.context.get("ignoreValidation"),i=t.map((e=>{const t=e[this.pk];if(void 0===t)throw new T("No value for the Id is defined under the property "+this.pk);return t})),c=await this.readAll(i,...o.args);if(t=t.map(((e,t)=>r.Model.merge(c[t],e,this.class))),s||await Promise.all(t.map(((t,r)=>W(this,o.context,t,e.OperationKeys.UPDATE,e.OperationKeys.ON,c[r])))),!n){const e=J(await Promise.all(t.map(((e,t)=>Promise.resolve(e.hasErrors(c[t]))))));if(e)throw new A(e)}return[t,...o.args]}async readPrefix(e,...t){return super.readPrefix(e,...t)}async readAllPrefix(e,...t){return super.readAllPrefix(e,...t)}async deleteAllPrefix(e,...t){return super.deleteAllPrefix(e,...t)}},e.SerializationError=w,e.UpdateValidationKeys=d,e.UpdateValidator=p,e.VERSION=oe,e.ValidationError=A,e.after=I,e.afterAny=(e,t,r)=>I(h.ALL,e,t,r),e.afterCreate=(e,t,r)=>I(h.CREATE,e,t,r),e.afterCreateUpdate=(e,t,r)=>I(h.CREATE_UPDATE,e,t,r),e.afterDelete=(e,t,r)=>I(h.DELETE,e,t,r),e.afterRead=(e,t,r)=>I(h.READ,e,t,r),e.afterUpdate=(e,t,r)=>I(h.UPDATE,e,t,r),e.composed=(e,t=i,r=!1,a=!1,o="",s="",n={priority:55})=>G(e,a,t,r,"values",o,s,n),e.composedFromCreateUpdate=z,e.composedFromKeys=(e,t=i,r=!1,a=!1,o="",s="",n={priority:55})=>G(e,a,t,r,"keys",o,s,n),e.enforceDBDecorators=W,e.getDbDecorators=Z,e.getHandlerArgs=R,e.getHandlersDecorators=K,e.getValidatableUpdateProps=_,e.groupDecorators=v,e.hash=q,e.hashOnCreateUpdate=Y,e.id=()=>t.apply(r.required(),j(),((e,r)=>t.propMetadata(t.Metadata.key(n.ID,r),{})(e,r))),e.on=N,e.onAny=(e,t,r)=>N(h.ALL,e,t,r),e.onCreate=L,e.onCreateUpdate=x,e.onDelete=(e,t,r)=>N(h.DELETE,e,t,r),e.onRead=(e,t,r)=>N(h.READ,e,t,r),e.onUpdate=S,e.operation=C,e.prefixMethod=(e,t,r,a)=>{const o=a||t.name;e[o]=new Proxy(e[o],{apply:async(e,t,a)=>{let o=r.call(t,...a);return o instanceof Promise&&(o=await o),o=e.call(t,...o),o instanceof Promise&&(o=await o),o}})},e.readonly=j,e.reduceErrorsToPrint=J,e.serialize=()=>t.apply(x(V),I(h.ALL,F),r.type([String,Object]),t.metadata(n.SERIALIZE,{})),e.serializeAfterAll=F,e.serializeOnCreateUpdate=V,e.sortDecorators=b,e.storeHandlerMetadata=k,e.suffixMethod=(e,t,r,a)=>{const o=a||t.name;e[o]=new Proxy(e[o],{apply:async(e,t,a)=>{let o=e.call(t,...a);return o instanceof Promise&&(o=await o),o=r.call(t,...o),o instanceof Promise&&(o=await o),o}})},e.timestamp=(a=h.CREATE_UPDATE,o=c)=>{const s=n.TIMESTAMP,i=r.Validation.updateKey(n.TIMESTAMP);return t.Decoration.for(s).define({decorator:(a,o)=>{const s=[r.date(o,l.TIMESTAMP.DATE),r.required(l.TIMESTAMP.REQUIRED),t.propMetadata(r.Validation.key(n.TIMESTAMP),{operation:a,format:o}),N(a,U)];return-1!==a.indexOf(e.OperationKeys.UPDATE)?s.push(t.propMetadata(i,{message:l.TIMESTAMP.INVALID})):s.push(j()),t.apply(...s)},args:[a,o]}).apply()},e.timestampHandler=U,e.transient=()=>t.Decoration.for(n.TRANSIENT).define(((e,r)=>{t.propMetadata(n.TRANSIENT,!0)(e.constructor),t.propMetadata(t.Metadata.key(n.TRANSIENT,r),{})(e,r)})).apply(),e.validateCompare=B,e.validateDecorator=H,e.validateDecorators=$,e.version=()=>{const a=n.VERSION;return t.Decoration.for(a).define(r.type(Number),L(Q(e.OperationKeys.CREATE)),S(Q(e.OperationKeys.UPDATE)),t.propMetadata(a,!0)).apply()},e.versionCreateUpdate=Q,e.wrapMethodWithContext=re},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/decorator-validation"),require("tslib"),require("typed-object-accumulator"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/decorator-validation","tslib","typed-object-accumulator","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["db-decorators"]={},e.decafTsDecoration,e.decafTsDecoratorValidation,e.tslib,e.typedObjectAccumulator,e.decafTsLogging);
|
|
2
2
|
//# sourceMappingURL=db-decorators.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-decorators.cjs","sources":["../src/model/constants.ts","../src/validation/constants.ts","../src/validation/validators/ReadOnlyValidator.ts","../src/validation/validators/TimestampValidator.ts","../src/validation/validators/UpdateValidator.ts","../src/operations/constants.ts","../src/validation/validation.ts","../src/operations/OperationsRegistry.ts","../src/operations/Operations.ts","../src/repository/errors.ts","../src/operations/decorators.ts","../src/validation/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/repository/utils.ts","../src/overrides/overrides.ts","../src/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/repository/BaseRepository.ts","../src/index.ts","../src/repository/Repository.ts","../src/identity/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DBKeys","REFLECT","ModelKeys","MODEL","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","exports","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","ModelOperations","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","owner","resolveOwner","name","resolveTargetName","handlers","selectHandlers","length","unshift","Object","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","flavour","resolveFlavour","Decoration","defaultFlavour","Metadata","flavourOf","byOperation","bucket","firstBucket","values","keys","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","DefaultGroupSort","priority","getHandlerArgs","dec","prop","m","props","getHandlersDecorators","model","decorators","prefix","decs","handlerArgs","argsEntry","data","push","groupDecorators","grouped","reduce","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","forEach","combined","map","d","i","sort","a","b","groupPriority","c","sortDecorators","onCreateUpdate","groupsort","on","onUpdate","onCreate","op","ON","after","AFTER","baseOp","dataToAdd","propertyKey","compoundKey","readOperation","handlerKey","mergeData","filter","handle","propMetadata","OPERATIONS","apply","storeHandlerMetadata","params","metadata","readonly","meta","description","async","for","define","decorator","innerValidationDecorator","timestampHandler","context","timestamp","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","call","includes","validationFor","validateDecorator","newModel","oldModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","decoratorKey","validationErrors","ValidationKeys","LIST","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","class","clazz","customTypes","flat","t","String","toLowerCase","errs","childValue","id","Model","pk","oldListModel","find","el","isModel","Promise","all","then","every","r","allEmpty","promises","resolvedValues","res","val","validateCompare","ValidatableUpdateProps","nestedErrors","propValue","designTypes","designType","getPropDesignTypes","some","TYPE","isArray","propErrors","isConstr","isPropertyModel","instance","Constr","entries","error","ModelErrorDefinition","merged","allSettled","results","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","join","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","type","suffix","separator","composed","arg","composedFrom","hashResult","property","versionCreateUpdate","reduceErrorsToPrint","errors","enforceDBDecorators","repo","getDbDecorators","sortedDecorators","extraPrefix","replace","obj","isTransient","decoratorValidation","previousVersion","exclusions","isAsync","validate","resolve","resolvedErrs","segregate","validatableProperties","transientProps","transient","build","keyValue","constr","idProp","bind","pkProps","merge","extract","assign","decoration","saveOperation","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","ignoreValidation","ignoreHandlers","DefaultContextFactory","Context","accumulate","logger","Logging","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","wrapMethodWithContext","before","method","methodName","Proxy","thisArg","argArray","transformedArgs","BaseRepository","_class","self","create","read","update","delete","createAll","models","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","PACKAGE_NAME","registerLibrary","operations","BLOCK","ignoreValidate","ids","oldModels","required","afterName","beforeName","format","decorationKey","updateValidationKey","date","indexOf","attribute","Number"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db-decorators.cjs","sources":["../src/model/constants.ts","../src/validation/constants.ts","../src/validation/validators/ReadOnlyValidator.ts","../src/validation/validators/TimestampValidator.ts","../src/validation/validators/UpdateValidator.ts","../src/operations/constants.ts","../src/validation/validation.ts","../src/operations/OperationsRegistry.ts","../src/operations/Operations.ts","../src/repository/errors.ts","../src/operations/decorators.ts","../src/validation/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/repository/utils.ts","../src/overrides/overrides.ts","../src/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/repository/BaseRepository.ts","../src/index.ts","../src/repository/Repository.ts","../src/identity/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DBKeys","REFLECT","ModelKeys","MODEL","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","exports","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","ModelOperations","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","owner","resolveOwner","name","resolveTargetName","handlers","selectHandlers","length","unshift","Object","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","flavour","resolveFlavour","Decoration","defaultFlavour","Metadata","flavourOf","byOperation","bucket","firstBucket","values","keys","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","DefaultGroupSort","priority","getHandlerArgs","dec","prop","m","props","getHandlersDecorators","model","decorators","prefix","decs","handlerArgs","argsEntry","data","push","groupDecorators","grouped","reduce","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","forEach","combined","map","d","i","sort","a","b","groupPriority","c","sortDecorators","onCreateUpdate","groupsort","on","onUpdate","onCreate","op","ON","after","AFTER","baseOp","dataToAdd","propertyKey","compoundKey","readOperation","handlerKey","mergeData","filter","handle","propMetadata","OPERATIONS","apply","storeHandlerMetadata","params","metadata","readonly","meta","description","async","for","define","decorator","innerValidationDecorator","timestampHandler","context","timestamp","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","call","includes","validationFor","validateDecorator","newModel","oldModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","decoratorKey","validationErrors","ValidationKeys","LIST","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","class","clazz","customTypes","flat","t","String","toLowerCase","errs","childValue","id","Model","pk","oldListModel","find","el","isModel","Promise","all","then","every","r","allEmpty","promises","resolvedValues","res","val","validateCompare","ValidatableUpdateProps","nestedErrors","propValue","designTypes","designType","getPropDesignTypes","some","TYPE","isArray","propErrors","isConstr","isPropertyModel","instance","Constr","entries","error","ModelErrorDefinition","merged","allSettled","results","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","join","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","type","suffix","separator","filterEmpty","hashResult","composed","arg","composedFrom","property","versionCreateUpdate","reduceErrorsToPrint","errors","enforceDBDecorators","repo","getDbDecorators","sortedDecorators","extraPrefix","replace","obj","isTransient","decoratorValidation","previousVersion","exclusions","isAsync","validate","resolve","resolvedErrs","segregate","validatableProperties","transientProps","transient","build","keyValue","constr","idProp","bind","pkProps","merge","extract","assign","decoration","saveOperation","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","ignoreValidation","ignoreHandlers","DefaultContextFactory","Context","accumulate","logger","Logging","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","wrapMethodWithContext","before","method","methodName","Proxy","thisArg","argArray","transformedArgs","BaseRepository","_class","self","create","read","update","delete","createAll","models","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","PACKAGE_NAME","registerLibrary","operations","BLOCK","ignoreValidate","ids","oldModels","required","afterName","beforeName","format","decorationKey","updateValidationKey","date","indexOf","attribute","Number"],"mappings":"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"}
|
package/dist/db-decorators.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Decoration as t,Metadata as e,propMetadata as r,apply as n,metadata as s}from"@decaf-ts/decoration";import{ModelKeys as a,validator as o,Validator as i,isEqual as c,DEFAULT_ERROR_MESSAGES as l,Validation as u,Hashing as f,innerValidationDecorator as d,type as p,date as h,required as E,toConditionalPromise as g,ValidationKeys as y,Model as m,ModelErrorDefinition as A,validate as T}from"@decaf-ts/decorator-validation";import{__decorate as w,__metadata as P}from"tslib";import{ObjectAccumulator as O}from"typed-object-accumulator";import{Logging as R}from"@decaf-ts/logging";const D={REFLECT:a.MODEL+".persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},v="_",b="dd/MM/yyyy HH:mm:ss:S",x={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},S={REFLECT:"db.update.validation.",TIMESTAMP:D.TIMESTAMP,READONLY:D.READONLY};let L=class extends i{constructor(){super(x.READONLY.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t)return c(t,e)?void 0:this.getMessage(r||this.message)}};L=w([o(S.READONLY),P("design:paramtypes",[])],L);let N=class extends i{constructor(){super(x.TIMESTAMP.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t){r=r||this.getMessage(r||this.message);try{t=new Date(t),e=new Date(e)}catch(t){return r}return t>e?void 0:r}}};N=w([o(S.TIMESTAMP),P("design:paramtypes",[])],N);class I extends i{constructor(t=l.DEFAULT,...e){super(t,...e)}}var k,C,M;u.updateKey=t=>S.REFLECT+t,(t=>{t.REFLECT="decaf.model.db.operations.",t.CREATE="create",t.READ="read",t.UPDATE="update",t.DELETE="delete",t.ON="on.",t.AFTER="after.",t.BLOCK="block"})(k||(k={})),(t=>{t.OPERATIONS="operations",t.RELATIONS="relations"})(C||(C={})),(t=>{t.CREATE_ALL="createAll",t.READ_ALL="readAll",t.UPDATE_ALL="updateAll",t.DELETE_ALL="deleteAll"})(M||(M={}));const j={CREATE:[k.CREATE],READ:[k.READ],UPDATE:[k.UPDATE],DELETE:[k.DELETE],CREATE_UPDATE:[k.CREATE,k.UPDATE],READ_CREATE:[k.READ,k.CREATE],ALL:[k.CREATE,k.READ,k.UPDATE,k.DELETE]};class U{constructor(){this.cache={}}get(t,e,r,n){n=n||[];const s=this.resolveOwner(t),a=this.resolveTargetName(t,s);if(a){const t=this.selectHandlers(a,e,r,s);t?.length&&n.unshift(...t)}else if("string"==typeof t||t===Object.prototype||Object.getPrototypeOf(t)===Object.prototype)return n;let o=Object.getPrototypeOf(t);return o?(o.constructor&&o.constructor.name===a&&(o=Object.getPrototypeOf(o)),o?this.get(o,e,r,n):n):n}register(t,e,r,n){const s=r.constructor.name,a=F.getHandlerName(t),o=this.resolveFlavour(r.constructor);this.cache[s]||(this.cache[s]={}),this.cache[s][n]||(this.cache[s][n]={}),this.cache[s][n][e]||(this.cache[s][n][e]={}),this.cache[s][n][e][o]||(this.cache[s][n][e][o]={}),this.cache[s][n][e][o][a]||(this.cache[s][n][e][o][a]=t)}resolveOwner(t){if(t&&"string"!=typeof t)return"function"==typeof t?t:t.constructor}resolveTargetName(t,e){return"string"==typeof t?t:e?.name}resolveFlavour(r){if(!r)return t.defaultFlavour;try{return e.flavourOf(r)}catch{return t.defaultFlavour}}selectHandlers(e,r,n,s){const a=this.cache[e]?.[r]?.[n];if(!a)return;const o=a[this.resolveFlavour(s)]||a[t.defaultFlavour]||this.firstBucket(a);if(!o)return;const i=Object.values(o);return i.length?i:void 0}firstBucket(t){for(const e of Object.values(t))if(e&&Object.keys(e).length)return e}}class F{constructor(){}static getHandlerName(t){return t.name?t.name:f.hash(t.toString())}static key(t){return k.REFLECT+t}static get(t,e,r){return F.registry.get(t,e,r)}static getOpRegistry(){return F.registry||(F.registry=new U),F.registry}static register(t,e,r,n){F.getOpRegistry().register(t,e,r,n)}}class $ extends Error{constructor(t,e,r){if(e instanceof $)return e;super(`[${t}] ${e instanceof Error?e.message:e}`),this.code=r,e instanceof Error&&(this.stack=e.stack)}}class H extends ${constructor(t,e=H.name,r=400){super(e,t,r)}}class V extends H{constructor(t){super(t,V.name,422)}}class _ extends ${constructor(t,e=_.name,r=500){super(e,t,r)}}class Y extends _{constructor(t){super(t,Y.name,500)}}class z extends H{constructor(t){super(t,z.name,404)}}class K extends H{constructor(t){super(t,K.name,409)}}const B={priority:50},Q=(t,e,r,n)=>{const s=r.constructor.name;if(!s)throw new _("Could not determine model class");n=n||{},t.props.handlers[s]&&t.props.handlers[s][e]&&(n={...t.props.handlers[s][e],...n});let a=Object.getPrototypeOf(r);return a===Object.prototype?n:(a.constructor.name===s&&(a=Object.getPrototypeOf(a)),Q(t,e,a,n))};function G(t,e,r){const n=[];for(const s in e){const a=e[s];for(const e of a){const{key:a}=e,o=F.get(t,s,r+a);if(!o||!o.length)throw new _(`Could not find registered handler for the operation ${r+a} under property ${s}`);const i=Q(e,s,t);if(!i)throw new _("Missing handler arguments for decorators");for(const t of o){const e=i[t.name];if(!e)throw new _("Missing handler arguments for handler "+t.name);const r=e.data;n.push({handler:t,data:[r],prop:[s]})}}}return n}function q(t){const e=t.reduce(((t,e)=>{if(!e||!e.data||!e.prop)throw new _("Missing decorator properties or data");if(!e.data[0].group)return t.set(Symbol(),e),t;const r=e.data[0].group;if(t.has(r)){const n=t.get(r);t.set(r,{handler:n.handler,data:[...n.data,...e.data],prop:[...n.prop,...e.prop]})}else t.set(r,{...e});return t}),new Map),r=Array.from(e.values());return r.forEach((t=>{const e=t.data.map(((e,r)=>({data:e,prop:t.prop[r]})));e.sort(((t,e)=>(t.data.groupPriority??50)-(e.data.groupPriority??50))),t.data=e.map((t=>t.data)),t.prop=e.map((t=>t.prop))})),r}function J(t){return t.sort(((t,e)=>(t.data[0].priority??50)-(e.data[0].priority??50))),t}function Z(t,e,r){return nt(j.CREATE_UPDATE,t,e,r)}function W(t,e,r){return nt(j.UPDATE,t,e,r)}function X(t,e,r){return nt(j.CREATE,t,e,r)}function tt(t,e,r){return nt(j.READ,t,e,r)}function et(t,e,r){return nt(j.DELETE,t,e,r)}function rt(t,e,r){return nt(j.ALL,t,e,r)}function nt(t=j.ALL,e,r,n){return ft(k.ON,t,e,r,n)}function st(t,e,r){return ut(j.CREATE_UPDATE,t,e,r)}function at(t,e,r){return ut(j.UPDATE,t,e,r)}function ot(t,e,r){return ut(j.CREATE,t,e,r)}function it(t,e,r){return ut(j.READ,t,e,r)}function ct(t,e,r){return ut(j.DELETE,t,e,r)}function lt(t,e,r){return ut(j.ALL,t,e,r)}function ut(t=j.ALL,e,r,n){return ft(k.AFTER,t,e,r,n)}function ft(t,s=j.ALL,a,o,i=B){return(c,l)=>{const u=c.constructor.name,f=s.reduce(((n,s)=>{const f=t+s;let d=e.readOperation(c.constructor,l,f);d||(d={operation:s,handlers:{}});const p=F.getHandlerName(a);let h=i;if(o){if(Object.keys(o).filter((t=>t in i)).length>0)throw new _("Unable to merge groupSort into dataToAdd due to overlaping keys");h={...i,...o}}return d.handlers[u]&&d.handlers[u][l]&&p in d.handlers[u][l]||(d.handlers[u]=d.handlers[u]||{},d.handlers[u][l]=d.handlers[u][l]||{},d.handlers[u][l][p]={data:h},n.push(((t,e)=>(r,n)=>{F.register(e,t,r,n)})(f,a),r(e.key(C.OPERATIONS,l,f),d))),n}),[]);return n(...f)(c,l)}}function dt(t,e){return(...r)=>s(t,{args:r,handler:e})}const pt=t=>dt(k.REFLECT+k.BLOCK,((t,e)=>t.includes(e)))(t);function ht(e=x.READONLY.INVALID){const r=D.READONLY,n={message:e,description:"defines the attribute as readOnly",async:!1};return t.for(r).define({decorator:d,args:[ht,r,n]}).apply()}async function Et(t,e,r,n){n[r]=t.timestamp}function gt(e=j.CREATE_UPDATE,s=b){const a=D.TIMESTAMP,o=u.updateKey(D.TIMESTAMP);return t.for(a).define({decorator:(t,e)=>{const s=[h(e,x.TIMESTAMP.DATE),E(x.TIMESTAMP.REQUIRED),r(u.key(D.TIMESTAMP),{operation:t,format:e}),nt(t,Et)];return-1!==t.indexOf(k.UPDATE)?s.push(r(o,{message:x.TIMESTAMP.INVALID})):s.push(ht()),n(...s)},args:[e,s]}).apply()}async function yt(t,e,r,n){if(n[r])try{n[r]=JSON.stringify(n[r])}catch(t){throw new Y(`Failed to serialize ${r.toString()} property of model ${n.constructor.name}: e`)}}async function mt(t,e,r,n){if(n[r]&&"string"==typeof n[r])try{n[r]=JSON.parse(n[r])}catch(t){throw new Y(`Failed to deserialize ${r.toString()} property of model ${n.constructor.name}: ${t}`)}}function At(){return n(Z(yt),ut(j.ALL,mt),p([String,Object]),s(D.SERIALIZE,{}))}function Tt(){return n(E(),ht(),((t,n)=>r(e.key(D.ID,n),{})(t,n)))}function wt(t,r){const n=[];for(const s in t){if(!Object.prototype.hasOwnProperty.call(t,s)||r.includes(s))continue;const a=e.validationFor(t.constructor,s)||{};n.push({prop:s,decorators:a})}return n}function Pt(t,e,r,n,s){const a=u.get(n.key);if(!a)throw Error("Missing validator for "+n.key);if(!a.updateHasErrors)return g(void 0,s);if(!s&&n.async)return g(void 0,s);const o=Object.values(n)||{},i=a.updateHasErrors(t[r],e[r],...o);return g(i,s)}function Ot(t,e,r,n,s){const a={};for(const o in n){const i={...n[o],key:o};if(!s&&i.async)continue;let c=Pt(t,e,r,i,s);if(i.key===y.LIST&&(!c||s)){const n=t[r],a=e[r],o=n instanceof Set?[...n]:n,l=a instanceof Set?[...a]:a;if(o?.length){const t=[i.class||i.clazz||i.customTypes].flat().map((t=>((t=(t="function"!=typeof t||t.name?t:t()).name?t.name:t)+"").toLowerCase())),e=o.map((e=>{const r=m.pk(e,!0);if(!r)return"Failed to find model id";const n=l.find((t=>r===m.pk(t,!0)));return m.isModel(e)?e.hasErrors(n):t.includes(typeof e)?void 0:"Value has no validatable type"}));if(s)c=Promise.all(e).then((t=>t.every((t=>!t))?void 0:t));else{const t=e.every((t=>!t));c=e.length>0&&!t?e:void 0}}}c&&(a[i.key]=c)}if(!s)return Object.keys(a).length>0?a:void 0;const o=Object.keys(a),i=Object.values(a);return Promise.all(i).then((t=>{const e={};for(let r=0;r<t.length;r++){const n=t[r];void 0!==n&&(e[o[r]]=n)}return Object.keys(e).length>0?e:void 0}))}function Rt(t,r,n,...s){const o=wt(r,s),i={},c={};for(const{prop:s,decorators:l}of o){const o=s+"",u=r[s],{designTypes:f,designType:d}=e.getPropDesignTypes(r.constructor,s);if(!f)continue;if(f.some((t=>[Array.name,Set.name].includes(t)))){if(!l||!Object.keys(l).includes(y.LIST)){i[o]={[y.TYPE]:`Array or Set property '${o}' requires a @list decorator`};continue}if(u&&!(Array.isArray(u)||u instanceof Set)){i[o]={[y.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const p=Ot(r,t,o,l,n)||{},h=m.isPropertyModel(r,o);if(null!=u&&h){const e=u,r=(Array.isArray(d)?d:[d]).map((t=>("function"!=typeof t||t.name||(t=t()),m.get(t.name||t)))).find((t=>!!t));r&&e instanceof r?c[o]=e.hasErrors(t[s]):(p[y.TYPE]=r?"Value must be an instance of "+r.name:`Unable to verify type consistency, missing model registry for ${f.toString()} on prop ${o}`,delete p[a.TYPE])}(Object.keys(p).length>0||n)&&(i[o]=p),n||Object.entries(c[o]||{}).forEach((([t,e])=>{void 0!==e&&(i[`${o}.${t}`]=e)}))}if(!n)return Object.keys(i).length>0?new A(i):void 0;const l=i,u=Object.keys(l),f=Object.values(l);return Promise.allSettled(f).then((async t=>{const e={};for(const[t,r]of Object.entries(c)){const n=await r;n&&Object.entries(n).forEach((([r,n])=>{void 0!==n&&(e[[t,r].join(".")]=n)}))}for(let r=0;r<t.length;r++){const n=u[r],s=t[r];"fulfilled"===s.status&&void 0!==s.value?e[n]=s.value:"rejected"===s.status&&(e[n]=s.reason instanceof Error?s.reason.message:(s.reason||"Validation failed")+"")}return Object.keys(e).length>0?new A(e):void 0}))}function Dt(t,e,r,n,s){if(void 0===n[r])return;const a=f.hash(n[r]);s&&n[r]===a||(n[r]=a)}function vt(){return n(Z(Dt),r(D.HASH,{}))}function bt(t,e,r,n){try{const{args:t,type:s,prefix:a,suffix:o,separator:i}=e,c=t.map((e=>{if(!(e in n))throw new _(`Property ${e} not found to compose from`);if("keys"===s)return e;if(void 0===n[e])throw new _(`Property ${t} does not contain a value to compose from`);return n[e].toString()}));a&&c.unshift(a),o&&c.push(o),n[r]=c.join(i)}catch(t){throw new _("Failed to compose value: "+t)}}function xt(s,a=!1,o=v,i="values",c="",l="",u={priority:55}){return t.for(D.COMPOSED).define({decorator:(t,s,a,o,i,c,l)=>(u,f)=>{const d={args:t,hashResult:s,separator:a,type:o,prefix:i,suffix:c},p=[Z(bt,d,l),r(e.key(D.COMPOSED,f),d)];return s&&p.push(vt()),n(...p)(u,f)},args:[s,a,o,i,c,l,u]}).apply()}function St(t,e=v,r=!1,n="",s="",a={priority:55}){return xt(t,r,e,"keys",n,s,a)}function Lt(t,e=v,r=!1,n="",s="",a={priority:55}){return xt(t,r,e,"values",n,s,a)}function Nt(t){return(e,r,n,s)=>{try{switch(t){case k.CREATE:s[n]=1;break;case k.UPDATE:s[n]++;break;default:throw new _("Invalid operation: "+t)}}catch(t){throw new _("Failed to update version: "+t)}}}function It(){const e=D.VERSION;return t.for(e).define(p(Number),X(Nt(k.CREATE)),W(Nt(k.UPDATE)),r(e,!0)).apply()}function kt(){return t.for(D.TRANSIENT).define(((t,n)=>{r(D.TRANSIENT,!0)(t.constructor),r(e.key(D.TRANSIENT,n),{})(t,n)})).apply()}function Ct(t){return t.reduce(((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t)),void 0)}async function Mt(t,e,r,n,s,a){const o=jt(r,n,s);if(!o)return;const i=J(q(G(r,o,s)));for(const o of i){const i=[e,o.data.length>1?o.data:o.data[0],o.prop.length>1?o.prop:o.prop[0],r];if(n===k.UPDATE&&s===k.ON){if(!a)throw new _("Missing old model for update operation");i.push(a)}try{await o.handler.apply(t,i)}catch(t){const n=`Failed to execute handler ${o.handler.name} for ${o.prop} on ${r.constructor.name} due to error: ${t}`;if(e.get("breakOnHandlerError"))throw new _(n)}}}function jt(t,r,n){const s=n?.replace(/[.]$/,""),a=e.get(t.constructor,C.OPERATIONS);if(a)return Object.keys(a).reduce(((t,e)=>{const n=s?a[e][s]||{}:a[e],o=Object.keys(n).filter((t=>t===r)),i=[];for(const t of o)i.push({key:t,props:n[t]});return i&&i.length&&(t||(t={}),t[e]=i),t}),void 0)}m.prototype.isTransient=function(){return e.isTransient(this)},m.prototype.hasErrors=function(t,...e){!t||t instanceof m||(e.unshift(t),t=void 0);const r=this.isAsync(),n=T(this,r,...e);return r?Promise.resolve(n).then((n=>n||!t?n:Rt(t,this,r,...e))):n||!t?n:Rt(t,this,r,...e)},m.prototype.segregate=function(){return m.segregate(this)},m.segregate=t=>{if(!e.isTransient(t))return{model:t};const r=e.validatableProperties(t.constructor),n=e.get(t.constructor,D.TRANSIENT),s={model:{},transient:{}};for(const e of r)if(Object.keys(n).includes(e)){s.transient=s.transient||{};try{s.transient[e]=t[e]}catch(t){throw new Y(`Failed to serialize transient property ${e}: ${t}`)}}else s.model=s.model||{},s.model[e]=t[e];return s.model=m.build(s.model,t.constructor.name),s},m.pk=((t,r=!1)=>{if(!t)throw Error("No model was provided");const n=t instanceof m?t.constructor:t,s=e.get(n,D.ID);if(!s)throw Error("No Id property defined for model "+(n?.name||"Unknown Model"));const a=Object.keys(s)[0];if(!r)return a;if(t instanceof m)return t[a];throw Error("Cannot get the value of the pk from the constructor")}).bind(m),m.pkProps=(t=>e.get(t,e.key(D.ID,m.pk(t)))).bind(m),m.isTransient=(t=>e.isTransient(t)).bind(m),m.composed=((t,r)=>{const n=t instanceof m?t.constructor:t;return r?e.get(n,e.key(D.COMPOSED,r)):!!e.get(n,D.COMPOSED)}).bind(m),m.merge=((t,e,r)=>{const n=t=>Object.entries(t).reduce(((t,[e,r])=>(void 0!==r&&(t[e]=r),t)),{});return new(r=r||t.constructor)(Object.assign({},n(t),n(e)))}).bind(m),e.saveOperation=((t,r,n,s)=>{r&&e.set(t,e.key(C.OPERATIONS,r,n),s)}).bind(e),e.readOperation=((t,r,n)=>{if(r&&n)return e.get(t,e.key(C.OPERATIONS,r,n))}).bind(e),e.isTransient=(t=>!!e.get("function"!=typeof t?t.constructor:t,D.TRANSIENT)).bind(e);const Ut={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0,ignoreValidation:!1,ignoreHandlers:!1},Ft=t=>(new $t).accumulate(Object.assign({},t,{timestamp:new Date,logger:t.logger||R.get()}));class $t{constructor(){this.cache=new O,Object.defineProperty(this,"cache",{value:new O,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=Ft}accumulate(t){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(t),writable:!1,enumerable:!1,configurable:!0}),this}get logger(){return this.cache.logger}get timestamp(){return this.cache.timestamp}get(t){try{return this.cache.get(t)}catch(e){const r=this.cache.parentContext;if(r)return r.get(t);throw e}}static childFrom(t,e){return $t.factory(Object.assign({},t.cache,e||{}))}static async from(t,e,r,...n){return $t.factory(Object.assign({},Ut,e,{operation:t,model:r,logger:e.logger||R.get()}))}static async args(t,e,r,n,s){const a=r.pop();async function o(){return n?n.context(t,s||{},e,...r):$t.from(t,s||{},e,...r)}let i;return a?a instanceof $t?(i=a,r.push(a)):(r.push(a),i=await o(),r.push(i)):(i=await o(),r.push(i)),{context:i,args:r}}}function Ht(t,e,r,n){const s=n||e.name;t[s]=new Proxy(t[s],{apply:async(t,e,n)=>{let s=r.call(e,...n);return s instanceof Promise&&(s=await s),s=t.call(e,...s),s instanceof Promise&&(s=await s),s}})}function Vt(t,e,r,n){const s=n||e.name;t[s]=new Proxy(t[s],{apply:async(t,e,n)=>{let s=t.call(e,...n);return s instanceof Promise&&(s=await s),s=r.call(e,...s),s instanceof Promise&&(s=await s),s}})}function _t(t,e,r,n,s){const a=s||r.name;t[a]=new Proxy(t[a],{apply:async(t,r,s)=>{let a=e.call(r,...s);a instanceof Promise&&(a=await a);const o=a[a.length-1];if(!(o instanceof $t))throw new _("Missing a context");let i=t.call(r,...a);return i instanceof Promise&&(i=await i),i=n.call(r,i,o),i instanceof Promise&&(i=await i),i}})}class Yt{get class(){if(!this._class)throw new _("No class definition found for this repository");return this._class}get pk(){return m.pk(this.class)}get pkProps(){return m.pkProps(this.class)}constructor(t){t&&(this._class=t);const e=this;[this.create,this.read,this.update,this.delete].forEach((t=>{const r=t.name;_t(e,e[r+"Prefix"],t,e[r+"Suffix"])}))}async createAll(t,...e){return Promise.all(t.map((t=>this.create(t,...e))))}async createPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);return t=new this.class(t),await Mt(this,r.context,t,k.CREATE,k.ON),[t,...r.args]}async createSuffix(t,e){return await Mt(this,e,t,k.CREATE,k.AFTER),t}async createAllPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);return await Promise.all(t.map((async t=>(t=new this.class(t),await Mt(this,r.context,t,k.CREATE,k.ON),t)))),[t,...r.args]}async createAllSuffix(t,e){return await Promise.all(t.map((t=>Mt(this,e,t,k.CREATE,k.AFTER)))),t}async readAll(t,...e){return await Promise.all(t.map((t=>this.read(t,...e))))}async readSuffix(t,e){return await Mt(this,e,t,k.READ,k.AFTER),t}async readPrefix(t,...e){const r=await $t.args(k.READ,this.class,e),n=new this.class;return n[this.pk]=t,await Mt(this,r.context,n,k.READ,k.ON),[t,...r.args]}async readAllPrefix(t,...e){const r=await $t.args(k.READ,this.class,e);return await Promise.all(t.map((async t=>{const e=new this.class;return e[this.pk]=t,Mt(this,r.context,e,k.READ,k.ON)}))),[t,...r.args]}async readAllSuffix(t,e){return await Promise.all(t.map((t=>Mt(this,e,t,k.READ,k.AFTER)))),t}async updateAll(t,...e){return Promise.all(t.map((t=>this.update(t,...e))))}async updateSuffix(t,e){return await Mt(this,e,t,k.UPDATE,k.AFTER),t}async updatePrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new _("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);return await Mt(this,r.context,t,k.UPDATE,k.ON,s),[t,...r.args]}async updateAllPrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e);return await Promise.all(t.map((t=>(t=new this.class(t),Mt(this,r.context,t,k.UPDATE,k.ON),t)))),[t,...r.args]}async updateAllSuffix(t,e){return await Promise.all(t.map((t=>Mt(this,e,t,k.UPDATE,k.AFTER)))),t}async deleteAll(t,...e){return Promise.all(t.map((t=>this.delete(t,...e))))}async deleteSuffix(t,e){return await Mt(this,e,t,k.DELETE,k.AFTER),t}async deletePrefix(t,...e){const r=await $t.args(k.DELETE,this.class,e),n=await this.read(t,...r.args);return await Mt(this,r.context,n,k.DELETE,k.ON),[t,...r.args]}async deleteAllPrefix(t,...e){const r=await $t.args(k.DELETE,this.class,e),n=await this.readAll(t,...r.args);return await Promise.all(n.map((async t=>Mt(this,r.context,t,k.DELETE,k.ON)))),[t,...r.args]}async deleteAllSuffix(t,e){return await Promise.all(t.map((t=>Mt(this,e,t,k.DELETE,k.AFTER)))),t}toString(){return this.class.name+" Repository"}}class zt extends Yt{constructor(t){super(t)}async createPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);if(t=new this.class(t),r.context.get("ignoreHandlers")||await Mt(this,r.context,t,k.CREATE,k.ON),!r.context.get("ignoreValidation")){const e=await Promise.resolve(t.hasErrors());if(e)throw new V(e.toString())}return[t,...r.args]}async createAllPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e),n=r.context.get("ignoreHandlers"),s=r.context.get("ignoreValidation");if(t=await Promise.all(t.map((async t=>{const e=new this.class(t);return n||await Mt(this,r.context,e,k.CREATE,k.ON),e}))),!s){const e=Ct(await Promise.all(t.map((t=>Promise.resolve(t.hasErrors())))));if(e)throw new V(e)}return[t,...r.args]}async updatePrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=r.context.get("ignoreHandlers"),s=r.context.get("ignoreValidation"),a=t[this.pk];if(!a)throw new _("No value for the Id is defined under the property "+this.pk);const o=await this.read(a);if(t=m.merge(o,t,this.class),n||await Mt(this,r.context,t,k.UPDATE,k.ON,o),!s){const e=await Promise.resolve(t.hasErrors(o));if(e)throw new V(e.toString())}return[t,...r.args]}async updateAllPrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=r.context.get("ignoreHandlers"),s=r.context.get("ignoreValidation"),a=t.map((t=>{const e=t[this.pk];if(void 0===e)throw new _("No value for the Id is defined under the property "+this.pk);return e})),o=await this.readAll(a,...r.args);if(t=t.map(((t,e)=>m.merge(o[e],t,this.class))),n||await Promise.all(t.map(((t,e)=>Mt(this,r.context,t,k.UPDATE,k.ON,o[e])))),!s){const e=Ct(await Promise.all(t.map(((t,e)=>Promise.resolve(t.hasErrors(o[e]))))));if(e)throw new V(e)}return[t,...r.args]}async readPrefix(t,...e){return super.readPrefix(t,...e)}async readAllPrefix(t,...e){return super.readAllPrefix(t,...e)}async deleteAllPrefix(t,...e){return super.deleteAllPrefix(t,...e)}}const Kt="##VERSION##",Bt="##PACKAGE##";e.registerLibrary(Bt,Kt);export{H as BadRequestError,$ as BaseError,Yt as BaseRepository,pt as BlockOperations,M as BulkCrudOperationKeys,K as ConflictError,$t as Context,D as DBKeys,j as DBOperations,x as DEFAULT_ERROR_MESSAGES,b as DEFAULT_TIMESTAMP_FORMAT,Ft as DefaultContextFactory,Ut as DefaultRepositoryFlags,v as DefaultSeparator,_ as InternalError,C as ModelOperations,z as NotFoundError,k as OperationKeys,F as Operations,U as OperationsRegistry,Bt as PACKAGE_NAME,L as ReadOnlyValidator,zt as Repository,Y as SerializationError,N as TimestampValidator,S as UpdateValidationKeys,I as UpdateValidator,Kt as VERSION,V as ValidationError,ut as after,lt as afterAny,ot as afterCreate,st as afterCreateUpdate,ct as afterDelete,it as afterRead,at as afterUpdate,Lt as composed,bt as composedFromCreateUpdate,St as composedFromKeys,Mt as enforceDBDecorators,jt as getDbDecorators,Q as getHandlerArgs,G as getHandlersDecorators,wt as getValidatableUpdateProps,q as groupDecorators,vt as hash,Dt as hashOnCreateUpdate,Tt as id,nt as on,rt as onAny,X as onCreate,Z as onCreateUpdate,et as onDelete,tt as onRead,W as onUpdate,ft as operation,Ht as prefixMethod,ht as readonly,Ct as reduceErrorsToPrint,At as serialize,mt as serializeAfterAll,yt as serializeOnCreateUpdate,J as sortDecorators,dt as storeHandlerMetadata,Vt as suffixMethod,gt as timestamp,Et as timestampHandler,kt as transient,Rt as validateCompare,Pt as validateDecorator,Ot as validateDecorators,It as version,Nt as versionCreateUpdate,_t as wrapMethodWithContext};
|
|
1
|
+
import{Decoration as t,Metadata as e,propMetadata as r,apply as n,metadata as s}from"@decaf-ts/decoration";import{ModelKeys as a,validator as o,Validator as i,isEqual as c,DEFAULT_ERROR_MESSAGES as l,Validation as u,Hashing as f,innerValidationDecorator as d,type as p,date as h,required as E,toConditionalPromise as g,ValidationKeys as y,Model as m,ModelErrorDefinition as A,validate as T}from"@decaf-ts/decorator-validation";import{__decorate as w,__metadata as P}from"tslib";import{ObjectAccumulator as O}from"typed-object-accumulator";import{Logging as R}from"@decaf-ts/logging";const D={REFLECT:a.MODEL+".persistence.",REPOSITORY:"repository",CLASS:"_class",ID:"id",INDEX:"index",UNIQUE:"unique",SERIALIZE:"serialize",READONLY:"readonly",TIMESTAMP:"timestamp",TRANSIENT:"transient",HASH:"hash",COMPOSED:"composed",VERSION:"version",ORIGINAL:"__originalObj"},v="_",b="dd/MM/yyyy HH:mm:ss:S",x={ID:{INVALID:"This Id is invalid",REQUIRED:"The Id is mandatory"},READONLY:{INVALID:"This cannot be updated"},TIMESTAMP:{REQUIRED:"Timestamp is Mandatory",DATE:"The Timestamp must the a valid date",INVALID:"This value must always increase"}},S={REFLECT:"db.update.validation.",TIMESTAMP:D.TIMESTAMP,READONLY:D.READONLY};let L=class extends i{constructor(){super(x.READONLY.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t)return c(t,e)?void 0:this.getMessage(r||this.message)}};L=w([o(S.READONLY),P("design:paramtypes",[])],L);let N=class extends i{constructor(){super(x.TIMESTAMP.INVALID)}hasErrors(t,...e){}updateHasErrors(t,e,r){if(void 0!==t){r=r||this.getMessage(r||this.message);try{t=new Date(t),e=new Date(e)}catch(t){return r}return t>e?void 0:r}}};N=w([o(S.TIMESTAMP),P("design:paramtypes",[])],N);class I extends i{constructor(t=l.DEFAULT,...e){super(t,...e)}}var k,C,M;u.updateKey=t=>S.REFLECT+t,(t=>{t.REFLECT="decaf.model.db.operations.",t.CREATE="create",t.READ="read",t.UPDATE="update",t.DELETE="delete",t.ON="on.",t.AFTER="after.",t.BLOCK="block"})(k||(k={})),(t=>{t.OPERATIONS="operations",t.RELATIONS="relations"})(C||(C={})),(t=>{t.CREATE_ALL="createAll",t.READ_ALL="readAll",t.UPDATE_ALL="updateAll",t.DELETE_ALL="deleteAll"})(M||(M={}));const j={CREATE:[k.CREATE],READ:[k.READ],UPDATE:[k.UPDATE],DELETE:[k.DELETE],CREATE_UPDATE:[k.CREATE,k.UPDATE],READ_CREATE:[k.READ,k.CREATE],ALL:[k.CREATE,k.READ,k.UPDATE,k.DELETE]};class U{constructor(){this.cache={}}get(t,e,r,n){n=n||[];const s=this.resolveOwner(t),a=this.resolveTargetName(t,s);if(a){const t=this.selectHandlers(a,e,r,s);t?.length&&n.unshift(...t)}else if("string"==typeof t||t===Object.prototype||Object.getPrototypeOf(t)===Object.prototype)return n;let o=Object.getPrototypeOf(t);return o?(o.constructor&&o.constructor.name===a&&(o=Object.getPrototypeOf(o)),o?this.get(o,e,r,n):n):n}register(t,e,r,n){const s=r.constructor.name,a=F.getHandlerName(t),o=this.resolveFlavour(r.constructor);this.cache[s]||(this.cache[s]={}),this.cache[s][n]||(this.cache[s][n]={}),this.cache[s][n][e]||(this.cache[s][n][e]={}),this.cache[s][n][e][o]||(this.cache[s][n][e][o]={}),this.cache[s][n][e][o][a]||(this.cache[s][n][e][o][a]=t)}resolveOwner(t){if(t&&"string"!=typeof t)return"function"==typeof t?t:t.constructor}resolveTargetName(t,e){return"string"==typeof t?t:e?.name}resolveFlavour(r){if(!r)return t.defaultFlavour;try{return e.flavourOf(r)}catch{return t.defaultFlavour}}selectHandlers(e,r,n,s){const a=this.cache[e]?.[r]?.[n];if(!a)return;const o=a[this.resolveFlavour(s)]||a[t.defaultFlavour]||this.firstBucket(a);if(!o)return;const i=Object.values(o);return i.length?i:void 0}firstBucket(t){for(const e of Object.values(t))if(e&&Object.keys(e).length)return e}}class F{constructor(){}static getHandlerName(t){return t.name?t.name:f.hash(t.toString())}static key(t){return k.REFLECT+t}static get(t,e,r){return F.registry.get(t,e,r)}static getOpRegistry(){return F.registry||(F.registry=new U),F.registry}static register(t,e,r,n){F.getOpRegistry().register(t,e,r,n)}}class $ extends Error{constructor(t,e,r){if(e instanceof $)return e;super(`[${t}] ${e instanceof Error?e.message:e}`),this.code=r,e instanceof Error&&(this.stack=e.stack)}}class H extends ${constructor(t,e=H.name,r=400){super(e,t,r)}}class V extends H{constructor(t){super(t,V.name,422)}}class _ extends ${constructor(t,e=_.name,r=500){super(e,t,r)}}class Y extends _{constructor(t){super(t,Y.name,500)}}class z extends H{constructor(t){super(t,z.name,404)}}class K extends H{constructor(t){super(t,K.name,409)}}const B={priority:50},Q=(t,e,r,n)=>{const s=r.constructor.name;if(!s)throw new _("Could not determine model class");n=n||{},t.props.handlers[s]&&t.props.handlers[s][e]&&(n={...t.props.handlers[s][e],...n});let a=Object.getPrototypeOf(r);return a===Object.prototype?n:(a.constructor.name===s&&(a=Object.getPrototypeOf(a)),Q(t,e,a,n))};function G(t,e,r){const n=[];for(const s in e){const a=e[s];for(const e of a){const{key:a}=e,o=F.get(t,s,r+a);if(!o||!o.length)throw new _(`Could not find registered handler for the operation ${r+a} under property ${s}`);const i=Q(e,s,t);if(!i)throw new _("Missing handler arguments for decorators");for(const t of o){const e=i[t.name];if(!e)throw new _("Missing handler arguments for handler "+t.name);const r=e.data;n.push({handler:t,data:[r],prop:[s]})}}}return n}function q(t){const e=t.reduce(((t,e)=>{if(!e||!e.data||!e.prop)throw new _("Missing decorator properties or data");if(!e.data[0].group)return t.set(Symbol(),e),t;const r=e.data[0].group;if(t.has(r)){const n=t.get(r);t.set(r,{handler:n.handler,data:[...n.data,...e.data],prop:[...n.prop,...e.prop]})}else t.set(r,{...e});return t}),new Map),r=Array.from(e.values());return r.forEach((t=>{const e=t.data.map(((e,r)=>({data:e,prop:t.prop[r]})));e.sort(((t,e)=>(t.data.groupPriority??50)-(e.data.groupPriority??50))),t.data=e.map((t=>t.data)),t.prop=e.map((t=>t.prop))})),r}function J(t){return t.sort(((t,e)=>(t.data[0].priority??50)-(e.data[0].priority??50))),t}function Z(t,e,r){return nt(j.CREATE_UPDATE,t,e,r)}function W(t,e,r){return nt(j.UPDATE,t,e,r)}function X(t,e,r){return nt(j.CREATE,t,e,r)}function tt(t,e,r){return nt(j.READ,t,e,r)}function et(t,e,r){return nt(j.DELETE,t,e,r)}function rt(t,e,r){return nt(j.ALL,t,e,r)}function nt(t=j.ALL,e,r,n){return ft(k.ON,t,e,r,n)}function st(t,e,r){return ut(j.CREATE_UPDATE,t,e,r)}function at(t,e,r){return ut(j.UPDATE,t,e,r)}function ot(t,e,r){return ut(j.CREATE,t,e,r)}function it(t,e,r){return ut(j.READ,t,e,r)}function ct(t,e,r){return ut(j.DELETE,t,e,r)}function lt(t,e,r){return ut(j.ALL,t,e,r)}function ut(t=j.ALL,e,r,n){return ft(k.AFTER,t,e,r,n)}function ft(t,s=j.ALL,a,o,i=B){return(c,l)=>{const u=c.constructor.name,f=s.reduce(((n,s)=>{const f=t+s;let d=e.readOperation(c.constructor,l,f);d||(d={operation:s,handlers:{}});const p=F.getHandlerName(a);let h=i;if(o){if(Object.keys(o).filter((t=>t in i)).length>0)throw new _("Unable to merge groupSort into dataToAdd due to overlaping keys");h={...i,...o}}return d.handlers[u]&&d.handlers[u][l]&&p in d.handlers[u][l]||(d.handlers[u]=d.handlers[u]||{},d.handlers[u][l]=d.handlers[u][l]||{},d.handlers[u][l][p]={data:h},n.push(((t,e)=>(r,n)=>{F.register(e,t,r,n)})(f,a),r(e.key(C.OPERATIONS,l,f),d))),n}),[]);return n(...f)(c,l)}}function dt(t,e){return(...r)=>s(t,{args:r,handler:e})}const pt=t=>dt(k.REFLECT+k.BLOCK,((t,e)=>t.includes(e)))(t);function ht(e=x.READONLY.INVALID){const r=D.READONLY,n={message:e,description:"defines the attribute as readOnly",async:!1};return t.for(r).define({decorator:d,args:[ht,r,n]}).apply()}async function Et(t,e,r,n){n[r]=t.timestamp}function gt(e=j.CREATE_UPDATE,s=b){const a=D.TIMESTAMP,o=u.updateKey(D.TIMESTAMP);return t.for(a).define({decorator:(t,e)=>{const s=[h(e,x.TIMESTAMP.DATE),E(x.TIMESTAMP.REQUIRED),r(u.key(D.TIMESTAMP),{operation:t,format:e}),nt(t,Et)];return-1!==t.indexOf(k.UPDATE)?s.push(r(o,{message:x.TIMESTAMP.INVALID})):s.push(ht()),n(...s)},args:[e,s]}).apply()}async function yt(t,e,r,n){if(n[r])try{n[r]=JSON.stringify(n[r])}catch(t){throw new Y(`Failed to serialize ${r.toString()} property of model ${n.constructor.name}: e`)}}async function mt(t,e,r,n){if(n[r]&&"string"==typeof n[r])try{n[r]=JSON.parse(n[r])}catch(t){throw new Y(`Failed to deserialize ${r.toString()} property of model ${n.constructor.name}: ${t}`)}}function At(){return n(Z(yt),ut(j.ALL,mt),p([String,Object]),s(D.SERIALIZE,{}))}function Tt(){return n(E(),ht(),((t,n)=>r(e.key(D.ID,n),{})(t,n)))}function wt(t,r){const n=[];for(const s in t){if(!Object.prototype.hasOwnProperty.call(t,s)||r.includes(s))continue;const a=e.validationFor(t.constructor,s)||{};n.push({prop:s,decorators:a})}return n}function Pt(t,e,r,n,s){const a=u.get(n.key);if(!a)throw Error("Missing validator for "+n.key);if(!a.updateHasErrors)return g(void 0,s);if(!s&&n.async)return g(void 0,s);const o=Object.values(n)||{},i=a.updateHasErrors(t[r],e[r],...o);return g(i,s)}function Ot(t,e,r,n,s){const a={};for(const o in n){const i={...n[o],key:o};if(!s&&i.async)continue;let c=Pt(t,e,r,i,s);if(i.key===y.LIST&&(!c||s)){const n=t[r],a=e[r],o=n instanceof Set?[...n]:n,l=a instanceof Set?[...a]:a;if(o?.length){const t=[i.class||i.clazz||i.customTypes].flat().map((t=>((t=(t="function"!=typeof t||t.name?t:t()).name?t.name:t)+"").toLowerCase())),e=o.map((e=>{const r=m.pk(e,!0);if(!r)return"Failed to find model id";const n=l.find((t=>r===m.pk(t,!0)));return m.isModel(e)?e.hasErrors(n):t.includes(typeof e)?void 0:"Value has no validatable type"}));if(s)c=Promise.all(e).then((t=>t.every((t=>!t))?void 0:t));else{const t=e.every((t=>!t));c=e.length>0&&!t?e:void 0}}}c&&(a[i.key]=c)}if(!s)return Object.keys(a).length>0?a:void 0;const o=Object.keys(a),i=Object.values(a);return Promise.all(i).then((t=>{const e={};for(let r=0;r<t.length;r++){const n=t[r];void 0!==n&&(e[o[r]]=n)}return Object.keys(e).length>0?e:void 0}))}function Rt(t,r,n,...s){const o=wt(r,s),i={},c={};for(const{prop:s,decorators:l}of o){const o=s+"",u=r[s],{designTypes:f,designType:d}=e.getPropDesignTypes(r.constructor,s);if(!f)continue;if(f.some((t=>[Array.name,Set.name].includes(t)))){if(!l||!Object.keys(l).includes(y.LIST)){i[o]={[y.TYPE]:`Array or Set property '${o}' requires a @list decorator`};continue}if(u&&!(Array.isArray(u)||u instanceof Set)){i[o]={[y.TYPE]:`Property '${s+""}' must be either an Array or a Set`};continue}}const p=Ot(r,t,o,l,n)||{},h=m.isPropertyModel(r,o);if(null!=u&&h){const e=u,r=(Array.isArray(d)?d:[d]).map((t=>("function"!=typeof t||t.name||(t=t()),m.get(t.name||t)))).find((t=>!!t));r&&e instanceof r?c[o]=e.hasErrors(t[s]):(p[y.TYPE]=r?"Value must be an instance of "+r.name:`Unable to verify type consistency, missing model registry for ${f.toString()} on prop ${o}`,delete p[a.TYPE])}(Object.keys(p).length>0||n)&&(i[o]=p),n||Object.entries(c[o]||{}).forEach((([t,e])=>{void 0!==e&&(i[`${o}.${t}`]=e)}))}if(!n)return Object.keys(i).length>0?new A(i):void 0;const l=i,u=Object.keys(l),f=Object.values(l);return Promise.allSettled(f).then((async t=>{const e={};for(const[t,r]of Object.entries(c)){const n=await r;n&&Object.entries(n).forEach((([r,n])=>{void 0!==n&&(e[[t,r].join(".")]=n)}))}for(let r=0;r<t.length;r++){const n=u[r],s=t[r];"fulfilled"===s.status&&void 0!==s.value?e[n]=s.value:"rejected"===s.status&&(e[n]=s.reason instanceof Error?s.reason.message:(s.reason||"Validation failed")+"")}return Object.keys(e).length>0?new A(e):void 0}))}function Dt(t,e,r,n,s){if(void 0===n[r])return;const a=f.hash(n[r]);s&&n[r]===a||(n[r]=a)}function vt(){return n(Z(Dt),r(D.HASH,{}))}function bt(t,e,r,n){try{const{args:t,type:s,prefix:a,suffix:o,separator:i,filterEmpty:c,hashResult:l}=e,u=t.map((e=>{if(!(e in n))throw new _(`Property ${e} not found to compose from`);if("keys"===s)return e;if(void 0===n[e]){if(c){if(!Array.isArray(c))return;if(c.includes(e))return}throw new _(`Property ${t} does not contain a value to compose from`)}return n[e].toString()})).filter((t=>!c||!!t));a&&u.unshift(a),o&&u.push(o),n[r]=l?f.hash(u.join(i)):u.join(i)}catch(t){throw new _("Failed to compose value: "+t)}}function xt(s,a=!1,o=v,i=!1,c="values",l="",u="",f={priority:55}){return t.for(D.COMPOSED).define({decorator:(t,s,a,o,c,l,u)=>(f,d)=>{const p={args:t,hashResult:s,separator:a,type:o,prefix:c,suffix:l,filterEmpty:i},h=[Z(bt,p,u),r(e.key(D.COMPOSED,d),p)];return s&&h.push(vt()),n(...h)(f,d)},args:[s,a,o,c,l,u,f]}).apply()}function St(t,e=v,r=!1,n=!1,s="",a="",o={priority:55}){return xt(t,n,e,r,"keys",s,a,o)}function Lt(t,e=v,r=!1,n=!1,s="",a="",o={priority:55}){return xt(t,n,e,r,"values",s,a,o)}function Nt(t){return(e,r,n,s)=>{try{switch(t){case k.CREATE:s[n]=1;break;case k.UPDATE:s[n]++;break;default:throw new _("Invalid operation: "+t)}}catch(t){throw new _("Failed to update version: "+t)}}}function It(){const e=D.VERSION;return t.for(e).define(p(Number),X(Nt(k.CREATE)),W(Nt(k.UPDATE)),r(e,!0)).apply()}function kt(){return t.for(D.TRANSIENT).define(((t,n)=>{r(D.TRANSIENT,!0)(t.constructor),r(e.key(D.TRANSIENT,n),{})(t,n)})).apply()}function Ct(t){return t.reduce(((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t)),void 0)}async function Mt(t,e,r,n,s,a){const o=jt(r,n,s);if(!o)return;const i=J(q(G(r,o,s)));for(const o of i){const i=[e,o.data.length>1?o.data:o.data[0],o.prop.length>1?o.prop:o.prop[0],r];if(n===k.UPDATE&&s===k.ON){if(!a)throw new _("Missing old model for update operation");i.push(a)}try{await o.handler.apply(t,i)}catch(t){const n=`Failed to execute handler ${o.handler.name} for ${o.prop} on ${r.constructor.name} due to error: ${t}`;if(e.get("breakOnHandlerError"))throw new _(n)}}}function jt(t,r,n){const s=n?.replace(/[.]$/,""),a=e.get(t.constructor,C.OPERATIONS);if(a)return Object.keys(a).reduce(((t,e)=>{const n=s?a[e][s]||{}:a[e],o=Object.keys(n).filter((t=>t===r)),i=[];for(const t of o)i.push({key:t,props:n[t]});return i&&i.length&&(t||(t={}),t[e]=i),t}),void 0)}m.prototype.isTransient=function(){return e.isTransient(this)},m.prototype.hasErrors=function(t,...e){!t||t instanceof m||(e.unshift(t),t=void 0);const r=this.isAsync(),n=T(this,r,...e);return r?Promise.resolve(n).then((n=>n||!t?n:Rt(t,this,r,...e))):n||!t?n:Rt(t,this,r,...e)},m.prototype.segregate=function(){return m.segregate(this)},m.segregate=t=>{if(!e.isTransient(t))return{model:t};const r=e.validatableProperties(t.constructor),n=e.get(t.constructor,D.TRANSIENT),s={model:{},transient:{}};for(const e of r)if(Object.keys(n).includes(e)){s.transient=s.transient||{};try{s.transient[e]=t[e]}catch(t){throw new Y(`Failed to serialize transient property ${e}: ${t}`)}}else s.model=s.model||{},s.model[e]=t[e];return s.model=m.build(s.model,t.constructor.name),s},m.pk=((t,r=!1)=>{if(!t)throw Error("No model was provided");const n=t instanceof m?t.constructor:t,s=e.get(n,D.ID);if(!s)throw Error("No Id property defined for model "+(n?.name||"Unknown Model"));const a=Object.keys(s)[0];if(!r)return a;if(t instanceof m)return t[a];throw Error("Cannot get the value of the pk from the constructor")}).bind(m),m.pkProps=(t=>e.get(t,e.key(D.ID,m.pk(t)))).bind(m),m.isTransient=(t=>e.isTransient(t)).bind(m),m.composed=((t,r)=>{const n=t instanceof m?t.constructor:t;return r?e.get(n,e.key(D.COMPOSED,r)):!!e.get(n,D.COMPOSED)}).bind(m),m.merge=((t,e,r)=>{const n=t=>Object.entries(t).reduce(((t,[e,r])=>(void 0!==r&&(t[e]=r),t)),{});return new(r=r||t.constructor)(Object.assign({},n(t),n(e)))}).bind(m),e.saveOperation=((t,r,n,s)=>{r&&e.set(t,e.key(C.OPERATIONS,r,n),s)}).bind(e),e.readOperation=((t,r,n)=>{if(r&&n)return e.get(t,e.key(C.OPERATIONS,r,n))}).bind(e),e.isTransient=(t=>!!e.get("function"!=typeof t?t.constructor:t,D.TRANSIENT)).bind(e);const Ut={parentContext:void 0,childContexts:[],ignoredValidationProperties:[],callArgs:[],writeOperation:!1,affectedTables:[],operation:void 0,breakOnHandlerError:!0,rebuildWithTransient:!0,ignoreValidation:!1,ignoreHandlers:!1},Ft=t=>(new $t).accumulate(Object.assign({},t,{timestamp:new Date,logger:t.logger||R.get()}));class $t{constructor(){this.cache=new O,Object.defineProperty(this,"cache",{value:new O,writable:!1,enumerable:!1,configurable:!0})}static{this.factory=Ft}accumulate(t){return Object.defineProperty(this,"cache",{value:this.cache.accumulate(t),writable:!1,enumerable:!1,configurable:!0}),this}get logger(){return this.cache.logger}get timestamp(){return this.cache.timestamp}get(t){try{return this.cache.get(t)}catch(e){const r=this.cache.parentContext;if(r)return r.get(t);throw e}}static childFrom(t,e){return $t.factory(Object.assign({},t.cache,e||{}))}static async from(t,e,r,...n){return $t.factory(Object.assign({},Ut,e,{operation:t,model:r,logger:e.logger||R.get()}))}static async args(t,e,r,n,s){const a=r.pop();async function o(){return n?n.context(t,s||{},e,...r):$t.from(t,s||{},e,...r)}let i;return a?a instanceof $t?(i=a,r.push(a)):(r.push(a),i=await o(),r.push(i)):(i=await o(),r.push(i)),{context:i,args:r}}}function Ht(t,e,r,n){const s=n||e.name;t[s]=new Proxy(t[s],{apply:async(t,e,n)=>{let s=r.call(e,...n);return s instanceof Promise&&(s=await s),s=t.call(e,...s),s instanceof Promise&&(s=await s),s}})}function Vt(t,e,r,n){const s=n||e.name;t[s]=new Proxy(t[s],{apply:async(t,e,n)=>{let s=t.call(e,...n);return s instanceof Promise&&(s=await s),s=r.call(e,...s),s instanceof Promise&&(s=await s),s}})}function _t(t,e,r,n,s){const a=s||r.name;t[a]=new Proxy(t[a],{apply:async(t,r,s)=>{let a=e.call(r,...s);a instanceof Promise&&(a=await a);const o=a[a.length-1];if(!(o instanceof $t))throw new _("Missing a context");let i=t.call(r,...a);return i instanceof Promise&&(i=await i),i=n.call(r,i,o),i instanceof Promise&&(i=await i),i}})}class Yt{get class(){if(!this._class)throw new _("No class definition found for this repository");return this._class}get pk(){return m.pk(this.class)}get pkProps(){return m.pkProps(this.class)}constructor(t){t&&(this._class=t);const e=this;[this.create,this.read,this.update,this.delete].forEach((t=>{const r=t.name;_t(e,e[r+"Prefix"],t,e[r+"Suffix"])}))}async createAll(t,...e){return Promise.all(t.map((t=>this.create(t,...e))))}async createPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);return t=new this.class(t),await Mt(this,r.context,t,k.CREATE,k.ON),[t,...r.args]}async createSuffix(t,e){return await Mt(this,e,t,k.CREATE,k.AFTER),t}async createAllPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);return await Promise.all(t.map((async t=>(t=new this.class(t),await Mt(this,r.context,t,k.CREATE,k.ON),t)))),[t,...r.args]}async createAllSuffix(t,e){return await Promise.all(t.map((t=>Mt(this,e,t,k.CREATE,k.AFTER)))),t}async readAll(t,...e){return await Promise.all(t.map((t=>this.read(t,...e))))}async readSuffix(t,e){return await Mt(this,e,t,k.READ,k.AFTER),t}async readPrefix(t,...e){const r=await $t.args(k.READ,this.class,e),n=new this.class;return n[this.pk]=t,await Mt(this,r.context,n,k.READ,k.ON),[t,...r.args]}async readAllPrefix(t,...e){const r=await $t.args(k.READ,this.class,e);return await Promise.all(t.map((async t=>{const e=new this.class;return e[this.pk]=t,Mt(this,r.context,e,k.READ,k.ON)}))),[t,...r.args]}async readAllSuffix(t,e){return await Promise.all(t.map((t=>Mt(this,e,t,k.READ,k.AFTER)))),t}async updateAll(t,...e){return Promise.all(t.map((t=>this.update(t,...e))))}async updateSuffix(t,e){return await Mt(this,e,t,k.UPDATE,k.AFTER),t}async updatePrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=t[this.pk];if(!n)throw new _("No value for the Id is defined under the property "+this.pk);const s=await this.read(n);return await Mt(this,r.context,t,k.UPDATE,k.ON,s),[t,...r.args]}async updateAllPrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e);return await Promise.all(t.map((t=>(t=new this.class(t),Mt(this,r.context,t,k.UPDATE,k.ON),t)))),[t,...r.args]}async updateAllSuffix(t,e){return await Promise.all(t.map((t=>Mt(this,e,t,k.UPDATE,k.AFTER)))),t}async deleteAll(t,...e){return Promise.all(t.map((t=>this.delete(t,...e))))}async deleteSuffix(t,e){return await Mt(this,e,t,k.DELETE,k.AFTER),t}async deletePrefix(t,...e){const r=await $t.args(k.DELETE,this.class,e),n=await this.read(t,...r.args);return await Mt(this,r.context,n,k.DELETE,k.ON),[t,...r.args]}async deleteAllPrefix(t,...e){const r=await $t.args(k.DELETE,this.class,e),n=await this.readAll(t,...r.args);return await Promise.all(n.map((async t=>Mt(this,r.context,t,k.DELETE,k.ON)))),[t,...r.args]}async deleteAllSuffix(t,e){return await Promise.all(t.map((t=>Mt(this,e,t,k.DELETE,k.AFTER)))),t}toString(){return this.class.name+" Repository"}}class zt extends Yt{constructor(t){super(t)}async createPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e);if(t=new this.class(t),r.context.get("ignoreHandlers")||await Mt(this,r.context,t,k.CREATE,k.ON),!r.context.get("ignoreValidation")){const e=await Promise.resolve(t.hasErrors());if(e)throw new V(e.toString())}return[t,...r.args]}async createAllPrefix(t,...e){const r=await $t.args(k.CREATE,this.class,e),n=r.context.get("ignoreHandlers"),s=r.context.get("ignoreValidation");if(t=await Promise.all(t.map((async t=>{const e=new this.class(t);return n||await Mt(this,r.context,e,k.CREATE,k.ON),e}))),!s){const e=Ct(await Promise.all(t.map((t=>Promise.resolve(t.hasErrors())))));if(e)throw new V(e)}return[t,...r.args]}async updatePrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=r.context.get("ignoreHandlers"),s=r.context.get("ignoreValidation"),a=t[this.pk];if(!a)throw new _("No value for the Id is defined under the property "+this.pk);const o=await this.read(a);if(t=m.merge(o,t,this.class),n||await Mt(this,r.context,t,k.UPDATE,k.ON,o),!s){const e=await Promise.resolve(t.hasErrors(o));if(e)throw new V(e.toString())}return[t,...r.args]}async updateAllPrefix(t,...e){const r=await $t.args(k.UPDATE,this.class,e),n=r.context.get("ignoreHandlers"),s=r.context.get("ignoreValidation"),a=t.map((t=>{const e=t[this.pk];if(void 0===e)throw new _("No value for the Id is defined under the property "+this.pk);return e})),o=await this.readAll(a,...r.args);if(t=t.map(((t,e)=>m.merge(o[e],t,this.class))),n||await Promise.all(t.map(((t,e)=>Mt(this,r.context,t,k.UPDATE,k.ON,o[e])))),!s){const e=Ct(await Promise.all(t.map(((t,e)=>Promise.resolve(t.hasErrors(o[e]))))));if(e)throw new V(e)}return[t,...r.args]}async readPrefix(t,...e){return super.readPrefix(t,...e)}async readAllPrefix(t,...e){return super.readAllPrefix(t,...e)}async deleteAllPrefix(t,...e){return super.deleteAllPrefix(t,...e)}}const Kt="##VERSION##",Bt="##PACKAGE##";e.registerLibrary(Bt,Kt);export{H as BadRequestError,$ as BaseError,Yt as BaseRepository,pt as BlockOperations,M as BulkCrudOperationKeys,K as ConflictError,$t as Context,D as DBKeys,j as DBOperations,x as DEFAULT_ERROR_MESSAGES,b as DEFAULT_TIMESTAMP_FORMAT,Ft as DefaultContextFactory,Ut as DefaultRepositoryFlags,v as DefaultSeparator,_ as InternalError,C as ModelOperations,z as NotFoundError,k as OperationKeys,F as Operations,U as OperationsRegistry,Bt as PACKAGE_NAME,L as ReadOnlyValidator,zt as Repository,Y as SerializationError,N as TimestampValidator,S as UpdateValidationKeys,I as UpdateValidator,Kt as VERSION,V as ValidationError,ut as after,lt as afterAny,ot as afterCreate,st as afterCreateUpdate,ct as afterDelete,it as afterRead,at as afterUpdate,Lt as composed,bt as composedFromCreateUpdate,St as composedFromKeys,Mt as enforceDBDecorators,jt as getDbDecorators,Q as getHandlerArgs,G as getHandlersDecorators,wt as getValidatableUpdateProps,q as groupDecorators,vt as hash,Dt as hashOnCreateUpdate,Tt as id,nt as on,rt as onAny,X as onCreate,Z as onCreateUpdate,et as onDelete,tt as onRead,W as onUpdate,ft as operation,Ht as prefixMethod,ht as readonly,Ct as reduceErrorsToPrint,At as serialize,mt as serializeAfterAll,yt as serializeOnCreateUpdate,J as sortDecorators,dt as storeHandlerMetadata,Vt as suffixMethod,gt as timestamp,Et as timestampHandler,kt as transient,Rt as validateCompare,Pt as validateDecorator,Ot as validateDecorators,It as version,Nt as versionCreateUpdate,_t as wrapMethodWithContext};
|
|
2
2
|
//# sourceMappingURL=db-decorators.js.map
|
|
@@ -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/operations/decorators.ts","../src/validation/decorators.ts","../src/identity/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/repository/utils.ts","../src/overrides/overrides.ts","../src/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/repository/BaseRepository.ts","../src/repository/Repository.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DBKeys","REFLECT","ModelKeys","MODEL","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","ModelOperations","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","owner","resolveOwner","name","resolveTargetName","handlers","selectHandlers","length","unshift","Object","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","flavour","resolveFlavour","Decoration","defaultFlavour","Metadata","flavourOf","byOperation","bucket","firstBucket","values","keys","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","DefaultGroupSort","priority","getHandlerArgs","dec","prop","m","props","getHandlersDecorators","model","decorators","prefix","decs","handlerArgs","argsEntry","data","push","groupDecorators","grouped","reduce","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","forEach","combined","map","d","i","sort","a","b","groupPriority","c","sortDecorators","onCreateUpdate","groupsort","on","onUpdate","onCreate","onRead","onDelete","onAny","op","ON","afterCreateUpdate","after","afterUpdate","afterCreate","afterRead","afterDelete","afterAny","AFTER","baseOp","dataToAdd","propertyKey","compoundKey","readOperation","handlerKey","mergeData","filter","handle","propMetadata","OPERATIONS","apply","storeHandlerMetadata","params","metadata","BlockOperations","operations","BLOCK","includes","readonly","meta","description","async","for","define","decorator","innerValidationDecorator","timestampHandler","context","timestamp","format","decorationKey","updateValidationKey","date","required","indexOf","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","serialize","type","String","id","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","call","validationFor","validateDecorator","newModel","oldModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","decoratorKey","validationErrors","ValidationKeys","LIST","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","class","clazz","customTypes","flat","t","toLowerCase","errs","childValue","Model","pk","oldListModel","find","el","isModel","Promise","all","then","every","r","allEmpty","promises","resolvedValues","res","val","validateCompare","ValidatableUpdateProps","nestedErrors","propValue","designTypes","designType","getPropDesignTypes","some","TYPE","isArray","propErrors","isConstr","isPropertyModel","instance","Constr","entries","error","ModelErrorDefinition","merged","allSettled","results","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","join","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","suffix","separator","composed","arg","composedFrom","hashResult","property","composedFromKeys","versionCreateUpdate","version","Number","transient","attribute","reduceErrorsToPrint","errors","enforceDBDecorators","repo","getDbDecorators","sortedDecorators","extraPrefix","replace","obj","isTransient","previousVersion","exclusions","isAsync","validate","resolve","resolvedErrs","segregate","validatableProperties","transientProps","build","keyValue","constr","idProp","bind","pkProps","merge","extract","assign","saveOperation","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","ignoreValidation","ignoreHandlers","DefaultContextFactory","Context","accumulate","logger","Logging","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","prefixMethod","afterName","Proxy","thisArg","argArray","suffixMethod","before","beforeName","wrapMethodWithContext","method","methodName","transformedArgs","BaseRepository","_class","self","create","read","update","delete","createAll","models","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","Repository","ignoreValidate","ids","oldModels","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db-decorators.js","sources":["../src/model/constants.ts","../src/validation/constants.ts","../src/validation/validators/ReadOnlyValidator.ts","../src/validation/validators/TimestampValidator.ts","../src/validation/validators/UpdateValidator.ts","../src/operations/constants.ts","../src/validation/validation.ts","../src/operations/OperationsRegistry.ts","../src/operations/Operations.ts","../src/repository/errors.ts","../src/operations/decorators.ts","../src/validation/decorators.ts","../src/identity/decorators.ts","../src/model/validation.ts","../src/model/decorators.ts","../src/repository/utils.ts","../src/overrides/overrides.ts","../src/repository/constants.ts","../src/repository/Context.ts","../src/repository/wrappers.ts","../src/repository/BaseRepository.ts","../src/repository/Repository.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["DBKeys","REFLECT","ModelKeys","MODEL","REPOSITORY","CLASS","ID","INDEX","UNIQUE","SERIALIZE","READONLY","TIMESTAMP","TRANSIENT","HASH","COMPOSED","VERSION","ORIGINAL","DefaultSeparator","DEFAULT_TIMESTAMP_FORMAT","DEFAULT_ERROR_MESSAGES","INVALID","REQUIRED","DATE","UpdateValidationKeys","ReadOnlyValidator","Validator","constructor","super","hasErrors","value","args","updateHasErrors","oldValue","message","undefined","isEqual","this","getMessage","__decorate","validator","TimestampValidator","Date","e","UpdateValidator","DecoratorMessages","DEFAULT","acceptedTypes","OperationKeys","ModelOperations","BulkCrudOperationKeys","Validation","updateKey","key","DBOperations","CREATE","READ","UPDATE","DELETE","CREATE_UPDATE","READ_CREATE","ALL","OperationsRegistry","cache","get","target","propKey","operation","accum","owner","resolveOwner","name","resolveTargetName","handlers","selectHandlers","length","unshift","Object","prototype","getPrototypeOf","proto","register","handler","handlerName","Operations","getHandlerName","flavour","resolveFlavour","Decoration","defaultFlavour","Metadata","flavourOf","byOperation","bucket","firstBucket","values","keys","Hashing","hash","toString","str","targetName","registry","getOpRegistry","BaseError","Error","msg","code","stack","BadRequestError","ValidationError","InternalError","SerializationError","NotFoundError","ConflictError","DefaultGroupSort","priority","getHandlerArgs","dec","prop","m","props","getHandlersDecorators","model","decorators","prefix","decs","handlerArgs","argsEntry","data","push","groupDecorators","grouped","reduce","acc","group","set","Symbol","groupKey","has","existing","Map","groups","Array","from","forEach","combined","map","d","i","sort","a","b","groupPriority","c","sortDecorators","onCreateUpdate","groupsort","on","onUpdate","onCreate","onRead","onDelete","onAny","op","ON","afterCreateUpdate","after","afterUpdate","afterCreate","afterRead","afterDelete","afterAny","AFTER","baseOp","dataToAdd","propertyKey","compoundKey","readOperation","handlerKey","mergeData","filter","handle","propMetadata","OPERATIONS","apply","storeHandlerMetadata","params","metadata","BlockOperations","operations","BLOCK","includes","readonly","meta","description","async","for","define","decorator","innerValidationDecorator","timestampHandler","context","timestamp","format","decorationKey","updateValidationKey","date","required","indexOf","serializeOnCreateUpdate","JSON","stringify","serializeAfterAll","parse","serialize","type","String","id","getValidatableUpdateProps","propsToIgnore","decoratedProperties","hasOwnProperty","call","validationFor","validateDecorator","newModel","oldModel","toConditionalPromise","decoratorProps","maybeError","validateDecorators","result","decoratorKey","validationErrors","ValidationKeys","LIST","newPropValue","oldPropValue","newValues","Set","oldValues","allowedTypes","class","clazz","customTypes","flat","t","toLowerCase","errs","childValue","Model","pk","oldListModel","find","el","isModel","Promise","all","then","every","r","allEmpty","promises","resolvedValues","res","val","validateCompare","ValidatableUpdateProps","nestedErrors","propValue","designTypes","designType","getPropDesignTypes","some","TYPE","isArray","propErrors","isConstr","isPropertyModel","instance","Constr","entries","error","ModelErrorDefinition","merged","allSettled","results","parentProp","nestedErrPromise","nestedPropDecErrors","nestedProp","nestedPropDecError","join","status","reason","hashOnCreateUpdate","composedFromCreateUpdate","suffix","separator","filterEmpty","hashResult","composed","arg","composedFrom","property","composedFromKeys","versionCreateUpdate","version","Number","transient","attribute","reduceErrorsToPrint","errors","enforceDBDecorators","repo","getDbDecorators","sortedDecorators","extraPrefix","replace","obj","isTransient","previousVersion","exclusions","isAsync","validate","resolve","resolvedErrs","segregate","validatableProperties","transientProps","build","keyValue","constr","idProp","bind","pkProps","merge","extract","assign","saveOperation","DefaultRepositoryFlags","parentContext","childContexts","ignoredValidationProperties","callArgs","writeOperation","affectedTables","breakOnHandlerError","rebuildWithTransient","ignoreValidation","ignoreHandlers","DefaultContextFactory","Context","accumulate","logger","Logging","ObjectAccumulator","defineProperty","writable","enumerable","configurable","factory","parent","childFrom","overrides","contextual","last","pop","getContext","prefixMethod","afterName","Proxy","thisArg","argArray","suffixMethod","before","beforeName","wrapMethodWithContext","method","methodName","transformedArgs","BaseRepository","_class","self","create","read","update","delete","createAll","models","createPrefix","contextArgs","createSuffix","createAllPrefix","createAllSuffix","readAll","readSuffix","readPrefix","readAllPrefix","k","readAllSuffix","updateAll","updateSuffix","updatePrefix","updateAllPrefix","updateAllSuffix","deleteAll","deleteSuffix","deletePrefix","deleteAllPrefix","deleteAllSuffix","Repository","ignoreValidate","ids","oldModels","PACKAGE_NAME","registerLibrary"],"mappings":"ukBAQa,MAAAA,EAAS,CACpBC,QAAYC,EAAUC,MAAb,gBACTC,WAAY,aACZC,MAAO,SACPC,GAAI,KACJC,MAAO,QACPC,OAAQ,SACRC,UAAW,YACXC,SAAU,WACVC,UAAW,YACXC,UAAW,YACXC,KAAM,OACNC,SAAU,WACVC,QAAS,UACTC,SAAU,iBASCC,EAAmB,IAQnBC,EAA2B,wBCrB3BC,EAAyB,CACpCb,GAAI,CACFc,QAAS,qBACTC,SAAU,uBAEZX,SAAU,CACRU,QAAS,0BAEXT,UAAW,CACTU,SAAU,yBACVC,KAAM,sCACNF,QAAS,oCAcAG,EAAuB,CAClCtB,QAAS,wBACTU,UAAWX,EAAOW,UAClBD,SAAUV,EAAOU,UCfZ,IAAMc,EAAN,cAAgCC,EACrC,WAAAC,GACEC,MAAMR,EAAuBT,SAASU,QACvC,CAUD,SAAAQ,CAAUC,KAAeC,GAExB,CAUM,eAAAC,CACLF,EACAG,EACAC,GAEA,QAAcC,IAAVL,EAEJ,OAAOM,EAAQN,EAAOG,QAClBE,EACAE,KAAKC,WAAWJ,GAAWG,KAAKH,QACrC,GAnCUT,EAAiBc,EAAA,CAD7BC,EAAUhB,EAAqBb,qCACnBc,GCAN,IAAMgB,EAAN,cAAiCf,EACtC,WAAAC,GACEC,MAAMR,EAAuBR,UAAUS,QACxC,CAUD,SAAAQ,CAAUC,KAAeC,GAExB,CAUM,eAAAC,CACLF,EACAG,EACAC,GAEA,QAAcC,IAAVL,EAAJ,CAEAI,EAAUA,GAAWG,KAAKC,WAAWJ,GAAWG,KAAKH,SAErD,IACEJ,EAAQ,IAAIY,KAAKZ,GACjBG,EAAW,IAAIS,KAAKT,EAErB,CAAC,MAAOU,GACP,OAAOT,CACR,CAED,OAAOJ,EAASG,OAAqBE,EAAVD,CAZK,CAajC,GA3CUO,EAAkBF,EAAA,CAD9BC,EAAUhB,EAAqBZ,sCACnB6B,GCCP,MAAgBG,UAAwBlB,EAC5C,WAAAC,CACEO,EAAkBW,EAAkBC,WACjCC,GAEHnB,MAAMM,KAAYa,EACnB,MC/BSC,EAkBAC,EAwBAC,ECjCZC,EAAWC,UAAsBC,GACxB7B,EAAqBtB,QAAUmD,EDVxC,CAAYL,IACVA,EAAA,QAAA,6BACAA,EAAA,OAAA,SACAA,EAAA,KAAA,OACAA,EAAA,OAAA,SACAA,EAAA,OAAA,SACAA,EAAA,GAAA,MACAA,EAAA,MAAA,SACAA,EAAA,MAAA,OACD,EATD,CAAYA,IAAAA,EASX,CAAA,IASD,CAAYC,IACVA,EAAA,WAAA,aACAA,EAAA,UAAA,WACD,EAHD,CAAYA,IAAAA,EAGX,CAAA,IAqBD,CAAYC,IACVA,EAAA,WAAA,YACAA,EAAA,SAAA,UACAA,EAAA,WAAA,YACAA,EAAA,WAAA,WACD,EALD,CAAYA,IAAAA,EAKX,CAAA,IAoBY,MAAAI,EAAiD,CAC5DC,OAAQ,CAACP,EAAcO,QACvBC,KAAM,CAACR,EAAcQ,MACrBC,OAAQ,CAACT,EAAcS,QACvBC,OAAQ,CAACV,EAAcU,QACvBC,cAAe,CAACX,EAAcO,OAAQP,EAAcS,QACpDG,YAAa,CAACZ,EAAcQ,KAAMR,EAAcO,QAChDM,IAAK,CACHb,EAAcO,OACdP,EAAcQ,KACdR,EAAcS,OACdT,EAAcU,eErDLI,EAAb,WAAAnC,GACmBU,KAAK0B,MASlB,EAwIL,CA1HC,GAAAC,CACEC,EACAC,EACAC,EACAC,GAEAA,EAAQA,GAAS,GACjB,MAAMC,EAAQhC,KAAKiC,aAAaL,GAC1BM,EAAOlC,KAAKmC,kBAAkBP,EAAQI,GAE5C,GAAIE,EAAM,CACR,MAAME,EAAWpC,KAAKqC,eACpBH,EACAL,EACAC,EACAE,GAEEI,GAAUE,QACZP,EAAMQ,WAAWH,EAEpB,MAAM,GACa,iBAAXR,GACPA,IAAWY,OAAOC,WAClBD,OAAOE,eAAed,KAAYY,OAAOC,UAEzC,OAAOV,EAGT,IAAIY,EAAQH,OAAOE,eAAed,GAClC,OAAKe,GACDA,EAAMrD,aAAeqD,EAAMrD,YAAY4C,OAASA,IAClDS,EAAQH,OAAOE,eAAeC,IAC3BA,EAEE3C,KAAK2B,IAAagB,EAAOd,EAASC,EAAWC,GAFjCA,GAHAA,CAMpB,CAgBD,QAAAa,CACEC,EACAf,EACAF,EACAC,GAEA,MAAMK,EAAON,EAAOtC,YAAY4C,KAC1BY,EAAcC,EAAWC,eAAeH,GACxCI,EAAUjD,KAAKkD,eAAetB,EAAOtC,aAEtCU,KAAK0B,MAAMQ,KAAOlC,KAAK0B,MAAMQ,GAAQ,IACrClC,KAAK0B,MAAMQ,GAAML,KAAU7B,KAAK0B,MAAMQ,GAAML,GAAW,CAAA,GACvD7B,KAAK0B,MAAMQ,GAAML,GAASC,KAC7B9B,KAAK0B,MAAMQ,GAAML,GAASC,GAAa,IACpC9B,KAAK0B,MAAMQ,GAAML,GAASC,GAAWmB,KACxCjD,KAAK0B,MAAMQ,GAAML,GAASC,GAAWmB,GAAW,IAC9CjD,KAAK0B,MAAMQ,GAAML,GAASC,GAAWmB,GAASH,KAClD9C,KAAK0B,MAAMQ,GAAML,GAASC,GAAWmB,GAASH,GAAeD,EAC9D,CAEO,YAAAZ,CACNL,GAEA,GAAKA,GAA4B,iBAAXA,EACtB,MAAsB,mBAAXA,EAA8BA,EAClCA,EAAOtC,WACf,CAEO,iBAAA6C,CACNP,EACAI,GAEA,MAAsB,iBAAXJ,EAA4BA,EAChCI,GAAOE,IACf,CAEO,cAAAgB,CAAetB,GACrB,IAAKA,EAAQ,OAAOuB,EAAWC,eAC/B,IACE,OAAOC,EAASC,UAAU1B,EAC3B,CAAC,MACA,OAAOuB,EAAWC,cACnB,CACF,CAEO,cAAAf,CACNH,EACAL,EACAC,EACAE,GAEA,MAAMuB,EAAcvD,KAAK0B,MAAMQ,KAAQL,KAAWC,GAClD,IAAKyB,EAAa,OAClB,MACMC,EACJD,EAFcvD,KAAKkD,eAAelB,KAGlCuB,EAAYJ,EAAWC,iBACvBpD,KAAKyD,YAAYF,GACnB,IAAKC,EAAQ,OACb,MAAMpB,EAAWI,OAAOkB,OAAOF,GAC/B,OAAOpB,EAASE,OAAUF,OAA2CtC,CACtE,CAEO,WAAA2D,CACNF,GAEA,IAAK,MAAMnB,KAAYI,OAAOkB,OAAOH,GACnC,GAAInB,GAAYI,OAAOmB,KAAKvB,GAAUE,OAAQ,OAAOF,CAGxD,QCjJUW,EAGX,WAAAzD,GAAwB,CAQxB,qBAAO0D,CAAeH,GACpB,OAAIA,EAAQX,KAAaW,EAAQX,KAK1B0B,EAAQC,KAAKhB,EAAQiB,WAC7B,CAQD,UAAO9C,CAAI+C,GACT,OAAOpD,EAAc9C,QAAUkG,CAChC,CAeD,UAAOpC,CACLqC,EACAnC,EACAC,GAEA,OAAOiB,EAAWkB,SAAStC,IAAaqC,EAAYnC,EAASC,EAC9D,CAQO,oBAAOoC,GAEb,OADKnB,EAAWkB,WAAUlB,EAAWkB,SAAW,IAAIxC,GAC7CsB,EAAWkB,QACnB,CAYD,eAAOrB,CACLC,EACAf,EACAF,EACAC,GAEAkB,EAAWmB,gBAAgBtB,SACzBC,EACAf,EACAF,EACAC,EAEH,EChGG,MAAgBsC,UAAkBC,MAEtC,WAAA9E,CAAsB4C,EAAcmC,EAAqBC,GACvD,GAAID,aAAeF,EAAW,OAAOE,EAErC9E,MADgB,IAAI2C,MAASmC,aAAeD,MAAQC,EAAIxE,QAAUwE,KAElErE,KAAKsE,KAAOA,EACRD,aAAeD,QAAOpE,KAAKuE,MAAQF,EAAIE,MAC5C,EAWG,MAAOC,UAAwBL,EACnC,WAAA7E,CAAY+E,EAAqBnC,EAAOsC,EAAgBtC,KAAMoC,EAAO,KACnE/E,MAAM2C,EAAMmC,EAAKC,EAClB,EAgBG,MAAOG,UAAwBD,EACnC,WAAAlF,CAAY+E,GACV9E,MAAM8E,EAAKI,EAAgBvC,KAAM,IAClC,EAiBG,MAAOwC,UAAsBP,EACjC,WAAA7E,CAAY+E,EAAqBnC,EAAOwC,EAAcxC,KAAMoC,EAAO,KACjE/E,MAAM2C,EAAMmC,EAAKC,EAClB,EAiBG,MAAOK,UAA2BD,EACtC,WAAApF,CAAY+E,GACV9E,MAAM8E,EAAKM,EAAmBzC,KAAM,IACrC,EAiBG,MAAO0C,UAAsBJ,EACjC,WAAAlF,CAAY+E,GACV9E,MAAM8E,EAAKO,EAAc1C,KAAM,IAChC,EAgBG,MAAO2C,UAAsBL,EACjC,WAAAlF,CAAY+E,GACV9E,MAAM8E,EAAKQ,EAAc3C,KAAM,IAChC,ECnGH,MAEM4C,EAA8B,CAAEC,SAFd,IA4CXC,EAAiB,CAC5BC,EACAC,EACAC,EACApD,KAEA,MAAMG,EAAOiD,EAAE7F,YAAY4C,KAC3B,IAAKA,EAAM,MAAM,IAAIwC,EAAc,mCACnC3C,EAAQA,GAAS,GAEbkD,EAAIG,MAAMhD,SAASF,IAAS+C,EAAIG,MAAMhD,SAASF,GAAMgD,KACvDnD,EAAQ,IAAKkD,EAAIG,MAAMhD,SAASF,GAAMgD,MAAUnD,IAElD,IAAIY,EAAQH,OAAOE,eAAeyC,GAClC,OAAIxC,IAAUH,OAAOC,UAAkBV,GACnCY,EAAMrD,YAAY4C,OAASA,IAAMS,EAAQH,OAAOE,eAAeC,IAE5DqC,EAAeC,EAAKC,EAAMvC,EAAOZ,GAC1C,WAiBgBsD,EAKdC,EACAC,EACAC,GAEA,MAAMzD,EAA2B,GACjC,IAAK,MAAMmD,KAAQK,EAAY,CAC7B,MAAME,EAA4BF,EAAWL,GAC7C,IAAK,MAAMD,KAAOQ,EAAM,CACtB,MAAMzE,IAAEA,GAAQiE,EACV7C,EAAoDW,EAAWpB,IAInE2D,EAAOJ,EAAMM,EAASxE,GACxB,IAAKoB,IAAaA,EAASE,OACzB,MAAM,IAAIoC,EACR,uDAAuDc,EAASxE,oBAAsBkE,KAG1F,MAAMQ,EAAcV,EAAeC,EAAKC,EAAMI,GAC9C,IAAKI,EACH,MAAM,IAAIhB,EAAc,4CAE1B,IAAK,MAAM7B,KAAWT,EAAU,CAC9B,MAAMuD,EAAYD,EAAY7C,EAAQX,MACtC,IAAKyD,EACH,MAAM,IAAIjB,EACR,yCAAyC7B,EAAQX,MAErD,MAAM0D,EAAQD,EAAkCC,KAChD7D,EAAM8D,KAAK,CACThD,UACA+C,KAAM,CAACA,GACPV,KAAM,CAACA,IAEV,CACF,CACF,CACD,OAAOnD,CACT,CAUM,SAAU+D,EACdP,GAEA,MAAMQ,EAAUR,EAAWS,QACzB,CAACC,EAAKhB,KACJ,IAAKA,IAAQA,EAAIW,OAASX,EAAIC,KAC5B,MAAM,IAAIR,EAAc,wCAG1B,IAAKO,EAAIW,KAAK,GAAGM,MAEf,OADAD,EAAIE,IAAIC,SAAUnB,GACXgB,EAGT,MAAMI,EAAWpB,EAAIW,KAAK,GAAGM,MAE7B,GAAKD,EAAIK,IAAID,GAGN,CACL,MAAME,EAAWN,EAAItE,IAAI0E,GAEzBJ,EAAIE,IAAIE,EAAU,CAChBxD,QAAS0D,EAAS1D,QAClB+C,KAAM,IAAIW,EAASX,QAASX,EAAIW,MAChCV,KAAM,IAAIqB,EAASrB,QAASD,EAAIC,OAEnC,MATCe,EAAIE,IAAIE,EAAU,IAAKpB,IAWzB,OAAOgB,CAAG,GAEZ,IAAIO,KAGAC,EAASC,MAAMC,KAAKZ,EAAQrC,UAiBlC,OAdA+C,EAAOG,SAASV,IACd,MAAMW,EAAWX,EAAMN,KAAKkB,KAAI,CAACC,EAAGC,KAAO,CACzCpB,KAAMmB,EACN7B,KAAMgB,EAAMhB,KAAK8B,OAGnBH,EAASI,MACP,CAACC,EAAGC,KAAOD,EAAEtB,KAAKwB,eAAiB,KAAOD,EAAEvB,KAAKwB,eAAiB,MAGpElB,EAAMN,KAAOiB,EAASC,KAAKO,GAAMA,EAAEzB,OACnCM,EAAMhB,KAAO2B,EAASC,KAAKO,GAAMA,EAAEnC,MAAK,IAGnCuB,CACT,CAUM,SAAUa,EACd/B,GASA,OANAA,EAAW0B,MAAK,CAACC,EAAGC,KACAD,EAAEtB,KAAK,GAAGb,UAxMR,KAyMFoC,EAAEvB,KAAK,GAAGb,UAzMR,MA6MfQ,CACT,UAYgBgC,EACd1E,EAGA+C,EACA4B,GAEA,OAAOC,GAAGxG,EAAaK,cAAeuB,EAAS+C,EAAM4B,EACvD,UAWgBE,EACd7E,EACA+C,EACA4B,GAEA,OAAOC,GAAGxG,EAAaG,OAAQyB,EAAS+C,EAAM4B,EAChD,UAWgBG,EACd9E,EACA+C,EACA4B,GAEA,OAAOC,GAAGxG,EAAaC,OAAQ2B,EAAS+C,EAAM4B,EAChD,UAYgBI,GACd/E,EACA+C,EACA4B,GAEA,OAAOC,GAAGxG,EAAaE,KAAM0B,EAAS+C,EAAM4B,EAC9C,UAYgBK,GACdhF,EACA+C,EACA4B,GAEA,OAAOC,GAAGxG,EAAaI,OAAQwB,EAAS+C,EAAM4B,EAChD,UAYgBM,GACdjF,EACA+C,EACA4B,GAEA,OAAOC,GAAGxG,EAAaO,IAAKqB,EAAS+C,EAAM4B,EAC7C,CAmBgB,SAAAC,GACdM,EAAsB9G,EAAaO,IACnCqB,EACA+C,EACA4B,GAEA,OAAO1F,GAAUnB,EAAcqH,GAAID,EAAIlF,EAAS+C,EAAM4B,EACxD,UAWgBS,GACdpF,EAGA+C,EACA4B,GAEA,OAAOU,GAAMjH,EAAaK,cAAeuB,EAAS+C,EAAM4B,EAC1D,UAYgBW,GACdtF,EACA+C,EACA4B,GAEA,OAAOU,GAAMjH,EAAaG,OAAQyB,EAAS+C,EAAM4B,EACnD,UAYgBY,GACdvF,EACA+C,EACA4B,GAEA,OAAOU,GAAMjH,EAAaC,OAAQ2B,EAAS+C,EAAM4B,EACnD,UAYgBa,GACdxF,EACA+C,EACA4B,GAEA,OAAOU,GAAMjH,EAAaE,KAAM0B,EAAS+C,EAAM4B,EACjD,UAWgBc,GACdzF,EACA+C,EACA4B,GAEA,OAAOU,GAAMjH,EAAaI,OAAQwB,EAAS+C,EAAM4B,EACnD,UAYgBe,GACd1F,EACA+C,EACA4B,GAEA,OAAOU,GAAMjH,EAAaO,IAAKqB,EAAS+C,EAAM4B,EAChD,CAmBgB,SAAAU,GACdH,EAAsB9G,EAAaO,IACnCqB,EACA+C,EACA4B,GAEA,OAAO1F,GAAUnB,EAAc6H,MAAOT,EAAIlF,EAAS+C,EAAM4B,EAC3D,CA8BgB,SAAA1F,GACd2G,EACA3G,EAA6Bb,EAAaO,IAC1CqB,EACA6F,EACAlB,EAAuB1C,GAEvB,MAAO,CAAClD,EAAa+G,KACnB,MAAMzG,EAAON,EAAOtC,YAAY4C,KAC1BqD,EAAazD,EAAUkE,QAAO,CAACjE,EAAcgG,KACjD,MAAMa,EAAcH,EAASV,EAC7B,IAAInC,EAAOvC,EAASwF,cAClBjH,EAAOtC,YACPqJ,EACAC,GAEGhD,IACHA,EAAO,CACL9D,UAAWiG,EACX3F,SAAU,CAAE,IAGhB,MAAM0G,EAAa/F,EAAWC,eAAeH,GAE7C,IAAIkG,EAAYvB,EAEhB,GAAIkB,EAAW,CACb,GAAIlG,OAAOmB,KAAK+E,GAAWM,QAAQhI,GAAQA,KAAOwG,IAAWlF,OAAS,EACpE,MAAM,IAAIoC,EACR,mEAGJqE,EAAY,IAAKvB,KAAckB,EAChC,CAsBD,OAnBG9C,EAAKxD,SAASF,IACd0D,EAAKxD,SAASF,GAAMyG,IACnBG,KAAclD,EAAKxD,SAASF,GAAMyG,KAEpC/C,EAAKxD,SAASF,GAAQ0D,EAAKxD,SAASF,IAAS,GAC7C0D,EAAKxD,SAASF,GAAMyG,GAClB/C,EAAKxD,SAASF,GAAMyG,IAAgB,CAAA,EACtC/C,EAAKxD,SAASF,GAAMyG,GAAaG,GAAc,CAC7ClD,KAAMmD,GAERhH,EAAM8D,KA1gBd,EAAgBkC,EAAmBlF,IAC1B,CAACjB,EAAa+G,KACnB5F,EAAWH,SAASC,EAASkF,EAAInG,EAAQ+G,EAAY,EAygB/CM,CAAOL,EAA8B/F,GACrCqG,EACE7F,EAASrC,IAAIJ,EAAgBuI,WAAYR,EAAaC,GACtDhD,KAKC7D,CAAK,GACX,IACH,OAAOqH,KAAS7D,EAAT6D,CAAqBxH,EAAQ+G,EAAY,CAEpD,CAyCgB,SAAAU,GACdrI,EACA6B,GAEA,MAAO,IAAIyG,IACFC,EAASvI,EAAK,CAAEtB,KAAM4J,EAAQzG,WAEzC,CA0Ba,MAAA2G,GAAmBC,GAC9BJ,GACE1I,EAAc9C,QAAU8C,EAAc+I,OACtC,CAACD,EAA8B3H,IACtB2H,EAAWE,SAAS7H,IAH/BuH,CAKEI,GC7oBE,SAAUG,GACd/J,EAAkBd,EAAuBT,SAASU,SAElD,MAAMgC,EAAMpD,EAAOU,SACbuL,EAAO,CACXhK,QAASA,EACTiK,YAAa,oCACbC,OAAO,GAET,OAAO5G,EAAW6G,IAAIhJ,GACnBiJ,OAAO,CACNC,UAAWC,EACXzK,KAAM,CAACkK,GAAU5I,EAAK6I,KAEvBT,OACL,CAiBOW,eAAeK,GAMpBC,EACAzE,EACA5E,EACAsE,GAECA,EAActE,GAAOqJ,EAAQC,SAChC,CAiDM,SAAUA,GACdxI,EAA6Bb,EAAaK,cAC1CiJ,EAAiBzL,GAEjB,MAAM0L,EAAgB5M,EAAOW,UACvBkM,EAAsB3J,EAAWC,UAAUnD,EAAOW,WAqBxD,OAAO4E,EAAW6G,IAAIQ,GACnBP,OAAO,CACNC,UArBJ,CAAYpI,EAA4ByI,KACtC,MAAMhF,EAAoB,CACxBmF,EAAKH,EAAQxL,EAAuBR,UAAUW,MAC9CyL,EAAS5L,EAAuBR,UAAUU,UAC1CiK,EAAapI,EAAWE,IAAIpD,EAAOW,WAAY,CAC7CuD,UAAWA,EACXyI,OAAQA,IAEV9C,GAAG3F,EAAWsI,KAShB,OAPiD,IAA7CtI,EAAU8I,QAAQjK,EAAcS,QAClCmE,EAAWM,KACTqD,EAAauB,EAAqB,CAChC5K,QAASd,EAAuBR,UAAUS,WAG3CuG,EAAWM,KAAK+D,MACdR,KAAS7D,EACjB,EAIG7F,KAAM,CAACoC,EAAWyI,KAEnBnB,OACL,CAiBOW,eAAec,GAMpBR,EACAzE,EACA5E,EACAsE,GAEA,GAAKA,EAAMtE,GACX,IACEsE,EAAMtE,GAAO8J,KAAKC,UAAUzF,EAAMtE,GAEnC,CAAC,MAAOV,GACP,MAAM,IAAIqE,EACR,uBAAuB3D,EAAI8C,gCAAgCwB,EAAMhG,YAAY4C,UAEhF,CACH,CAiBO6H,eAAeiB,GAMpBX,EACAzE,EACA5E,EACAsE,GAEA,GAAKA,EAAMtE,IACe,iBAAfsE,EAAMtE,GAEjB,IACEsE,EAAMtE,GAAO8J,KAAKG,MAAM3F,EAAMtE,GAC/B,CAAC,MAAOV,GACP,MAAM,IAAIqE,EACR,yBAAyB3D,EAAI8C,gCAAgCwB,EAAMhG,YAAY4C,SAAS5B,IAE3F,CACH,UA6BgB4K,KACd,OAAO9B,EACL7B,EAAesD,IACf3C,GAAMjH,EAAaO,IAAKwJ,IACxBG,EAAK,CAACC,OAAQ5I,SACd+G,EAAS3L,EAAOS,UAAW,CAAE,GAEjC,UC/PgBgN,KAOd,OAAOjC,EAAMuB,IAAYf,MALhB,CAAqBtE,EAAeJ,IAClCgE,EAAa7F,EAASrC,IAAIpD,EAAOM,GAAIgH,GAAO,CAAE,EAA9CgE,CAAgD5D,EAAOJ,IAKpE,CCegB,SAAAoG,GACdhG,EACAiG,GAEA,MAAMC,EAA6B,GACnC,IAAK,MAAMtG,KAAQI,EAAO,CACxB,IACG9C,OAAOC,UAAUgJ,eAAeC,KAAKpG,EAAOJ,IAC7CqG,EAAc5B,SAASzE,GAEvB,SAEF,MAAMK,EACJlC,EAASsI,cAAcrG,EAAMhG,YAA4B4F,IAAS,GAUpEsG,EAAoB3F,KAAK,CAAEX,OAAMK,cAClC,CAED,OAAOiG,CACT,CAEM,SAAUI,GAIdC,EACAC,EACA5G,EACAgF,EACAH,GAEA,MAAM5J,EAA6BW,EAAWa,IAC5CuI,EAAUlJ,KAGZ,IAAKb,EACH,MAAUiE,MAAM,yBAAyB8F,EAAUlJ,KAIrD,IAAKb,EAAUR,gBAAiB,OAAOoM,OAAqBjM,EAAWiK,GAGvE,IAAKA,GAASG,EAAUH,MAAO,OAAOgC,OAAqBjM,EAAWiK,GAEtE,MAAMiC,EAAiBxJ,OAAOkB,OAAOwG,IAAc,CAAA,EAO7C+B,EAAa9L,EAAUR,gBAC1BkM,EAAiB3G,GACjB4G,EAAiB5G,MACf8G,GAGL,OAAOD,EAAqBE,EAAYlC,EAC1C,CAEM,SAAUmC,GAIdL,EACAC,EACA5G,EACAK,EACAwE,GAEA,MAAMoC,EAAmD,CAAA,EAEzD,IAAK,MAAMC,KAAgB7G,EAAY,CACrC,MAAM2E,EAAY,IAAK3E,EAAW6G,GAAepL,IAAKoL,GAEtD,IAAKrC,GAASG,EAAUH,MAAO,SAE/B,IAAIsC,EAAmBT,GACrBC,EACAC,EACA5G,EACAgF,EACAH,GAQF,GAAIG,EAAUlJ,MAAQsL,EAAeC,QAAUF,GAAoBtC,GAAQ,CACzE,MAAMyC,EAAgBX,EAAiB3G,GACjCuH,EAAgBX,EAAiB5G,GAEjCwH,EACJF,aAAwBG,IAAM,IAAIH,GAAgBA,EAC9CI,EACJH,aAAwBE,IAAM,IAAIF,GAAgBA,EAEpD,GAAIC,GAAWpK,OAAQ,CACrB,MAGMuK,EAAe,CAFnB3C,EAAU4C,OAAS5C,EAAU6C,OAAS7C,EAAU8C,aAErBC,OAAOnG,KAAKoG,KAEvCA,GADAA,EAAiB,mBAANA,GAAqBA,EAAEhL,KAAagL,EAANA,KAC1BhL,KAAQgL,EAAUhL,KAAOgL,GACjC9B,IAAU+B,gBAGbC,EAAOV,EAAU5F,KAAKuG,IAE1B,MAAMhC,EAAKiC,EAAMC,GAAGF,GAAmB,GACvC,IAAKhC,EAAI,MAAO,0BAEhB,MAAMmC,EAAeZ,EAAUa,MAC5BC,GAAYrC,IAAOiC,EAAMC,GAAGG,GAAW,KAG1C,OAAIJ,EAAMK,QAAQN,GACTA,EAAW7N,UAAUgO,GAGvBX,EAAalD,gBAAgB0D,QAChCvN,EACA,+BAA+B,IAGrC,GAAIiK,EACFsC,EAAmBuB,QAAQC,IAAIT,GAAMU,MAAM3B,GACxBA,EAAO4B,OAAOC,IAAOA,SACpBlO,EAAYqM,QAE3B,CACL,MAAM8B,EAAWb,EAAKW,OAAOC,IAA2BA,IACxD3B,EAAmBe,EAAK9K,OAAS,IAAM2L,EAAWb,OAAOtN,CAC1D,CACF,CACF,CAEGuM,IAAmBF,EAAejC,EAAUlJ,KAAOqL,EACxD,CAED,IAAKtC,EACH,OAAOvH,OAAOmB,KAAKwI,GAAQ7J,OAAS,EAAK6J,OAAiBrM,EAE5D,MAAM6D,EAAOnB,OAAOmB,KAAKwI,GACnB+B,EAAW1L,OAAOkB,OAAOyI,GAC/B,OAAOyB,QAAQC,IAAIK,GAAUJ,MAAMK,IACjC,MAAMC,EAA8B,CAAA,EACpC,IAAK,IAAIpH,EAAI,EAAGA,EAAImH,EAAe7L,OAAQ0E,IAAK,CAC9C,MAAMqH,EAAMF,EAAenH,QACflH,IAARuO,IACFD,EAAIzK,EAAKqD,IAAMqH,EAElB,CACD,OAAO7L,OAAOmB,KAAKyK,GAAK9L,OAAS,EAAI8L,OAAMtO,CAAS,GAExD,CAiCM,SAAUwO,GACdxC,EACAD,EACA9B,KACGwB,GAEH,MAAMgD,EAAyBjD,GAC7BO,EACAN,GAGIY,EAA8B,CAAA,EAC9BqC,EAAoC,CAAA,EAE1C,IAAK,MAAMtJ,KAAEA,EAAIK,WAAEA,KAAgBgJ,EAAwB,CACzD,MAAM1M,EAAiBqD,EAAPkG,GACVqD,EAAa5C,EAAiB3G,IAE9BwJ,YAAEA,EAAWC,WAAEA,GAAetL,EAASuL,mBAC3C/C,EAASvM,YACT4F,GAEF,IAAKwJ,EAAa,SAGlB,GAAIA,EAAYG,MAAM3B,GAAM,CAACxG,MAAMxE,KAAMyK,IAAIzK,MAAMyH,SAASuD,KAAK,CAC/D,IACG3H,IACA/C,OAAOmB,KAAK4B,GAAYoE,SAAS2C,EAAeC,MACjD,CACAJ,EAAOtK,GAAW,CAChB,CAACyK,EAAewC,MAAO,0BAA0BjN,iCAEnD,QACD,CAED,GACE4M,KACE/H,MAAMqI,QAAQN,IAAcA,aAAqB9B,KACnD,CACAR,EAAOtK,GAAW,CAChB,CAACyK,EAAewC,MAAO,aAAoB5J,EAAPkG,wCAEtC,QACD,CACF,CAGD,MAAM4D,EACJ9C,GAAmBL,EAAUC,EAAUjK,EAAS0D,EAAYwE,IAAU,GAIlEkF,EAAW3B,EAAM4B,gBAAgBrD,EAAUhK,GAGjD,GAFqB4M,SAEDQ,EAAU,CAC5B,MAAME,EAAWV,EAEXW,GAAU1I,MAAMqI,QAAQJ,GAAcA,EAAa,CAACA,IACvD7H,KAAKC,IACa,mBAANA,GAAqBA,EAAE7E,OAAM6E,EAAIA,KACrCuG,EAAM3L,IAAIoF,EAAE7E,MAAQ6E,MAE5B0G,MAAM1G,KAAQA,IAGZqI,GAAYD,aAAoBC,EAMnCZ,EAAa3M,GAAWsN,EAAS3P,UAAWsM,EAAiB5G,KAL7D8J,EAAW1C,EAAewC,MAASM,EAE/B,gCAAgCA,EAAOlN,KADvC,iEAAiEwM,EAAY5K,sBAAsBjC,WAEhGmN,EAAWlR,EAAUgR,MAI/B,EAIGtM,OAAOmB,KAAKqL,GAAY1M,OAAS,GAAKyH,KACxCoC,EAAOtK,GAAWmN,GAGfjF,GACHvH,OAAO6M,QAAQb,EAAa3M,IAAY,CAAA,GAAI+E,SAAQ,EAAE5F,EAAKsO,WAC3CxP,IAAVwP,IACFnD,EAAO,GAAGtK,KAAWb,KAASsO,EAC/B,GAGN,CAGD,IAAKvF,EACH,OACEvH,OAAOmB,KAAKwI,GAAQ7J,OAAS,EACzB,IAAIiN,EAAqBpD,QACzBrM,EAIR,MAAM0P,EAAcrD,EAEdxI,EAAOnB,OAAOmB,KAAK6L,GACnBtB,EAAW1L,OAAOkB,OAAO8L,GAC/B,OAAO5B,QAAQ6B,WAAWvB,GAAUJ,MAAK/D,MAAO2F,IAC9C,MAAMvD,EAAsB,CAAA,EAE5B,IAAK,MAAOwD,EAAYC,KAAqBpN,OAAO6M,QAAQb,GAAe,CACzE,MAAMqB,QAA6BD,EAK/BC,GACFrN,OAAO6M,QAAQQ,GAAqBjJ,SAClC,EAAEkJ,EAAYC,WACejQ,IAAvBiQ,IAEF5D,EADkB,CAACwD,EAAYG,GAAYE,KAAK,MAC5BD,EACrB,GAGR,CAED,IAAK,IAAI/I,EAAI,EAAGA,EAAI0I,EAAQpN,OAAQ0E,IAAK,CACvC,MAAMhG,EAAM2C,EAAKqD,GACXoH,EAAMsB,EAAQ1I,GAED,cAAfoH,EAAI6B,aAAwCnQ,IAAdsO,EAAI3O,MACnC0M,EAAenL,GAAOoN,EAAI3O,MACH,aAAf2O,EAAI6B,SACZ9D,EAAenL,GACdoN,EAAI8B,kBAAkB9L,MAClBgK,EAAI8B,OAAOrQ,SACJuO,EAAI8B,QAAU,qBAArB9E,GAET,CAED,OAAO5I,OAAOmB,KAAKwI,GAAQ7J,OAAS,EAChC,IAAIiN,EAAqBpD,QACzBrM,CAAS,GAEjB,CC1VM,SAAUqQ,GAMd9F,EACAzE,EACA5E,EACAsE,EACAwG,GAEA,QAA0B,IAAfxG,EAAMtE,GAAsB,OACvC,MAAM6C,EAAOD,EAAQC,KAAMyB,EAActE,IACrC8K,GAAaxG,EAActE,KAAS6C,IACxCyB,EAAMtE,GAAO6C,EACf,UASgBA,KACd,OAAOuF,EACL7B,EAAe4I,IACfjH,EAAatL,EAAOa,KAAM,CAAE,GAEhC,CAwCM,SAAU2R,GAIL/F,EAAiCzE,EAAS5E,EAAcsE,GACjE,IACE,MAAM5F,KAAEA,EAAIyL,KAAEA,EAAI3F,OAAEA,EAAM6K,OAAEA,EAAMC,UAAEA,EAASC,YAAEA,EAAWC,WAAEA,GAC1D5K,EACI6K,EAAW/Q,EACdoH,KAAK4J,IACJ,KAAMA,KAAOpL,GACX,MAAM,IAAIZ,EAAc,YAAYgM,+BACtC,GAAa,SAATvF,EAAiB,OAAOuF,EAC5B,QAAmC,IAAvBpL,EAAcoL,GAAsB,CAC9C,GAAIH,EAAa,CACf,IAAK7J,MAAMqI,QAAQwB,GAAc,OACjC,GAAIA,EAAY5G,SAAS+G,GAAM,MAChC,CACD,MAAM,IAAIhM,EACR,YAAYhF,6CAEf,CACD,OAAS4F,EAAcoL,GAAa5M,UAAU,IAE/CkF,QAAQ9B,IAAOqJ,KAAgBrJ,IAE9B1B,GAAQiL,EAASlO,QAAQiD,GACzB6K,GAAQI,EAAS5K,KAAKwK,GAEzB/K,EAActE,GAAOwP,EAClB5M,EAAQC,KAAK4M,EAAST,KAAKM,IAC3BG,EAAST,KAAKM,EACnB,CAAC,MAAOhQ,GACP,MAAM,IAAIoE,EAAc,4BAA4BpE,EACrD,CACH,CAgBA,SAASqQ,GACPjR,EACA8Q,GAAsB,EACtBF,EAAoBzR,EACpB0R,GAAkC,EAClCpF,EAA0B,SAC1B3F,EAAS,GACT6K,EAAS,GACT7I,EAAuB,CAAEzC,SAAU,KA+BnC,OAAO5B,EAAW6G,IAAIpM,EAAOc,UAC1BuL,OAAO,CACNC,UA/BJ,CACExK,EACA8Q,EACAF,EACAnF,EACA3F,EACA6K,EACA7I,IAEO,CAAqB5F,EAAgBgP,KAC1C,MAAMhL,EAA6B,CACjClG,KAAMA,EACN8Q,WAAYA,EACZF,UAAWA,EACXnF,KAAMA,EACN3F,OAAQA,EACR6K,OAAQA,EACRE,YAAaA,GAGThL,EAAa,CACjBgC,EAAe6I,GAA0BxK,EAAM4B,GAC/C0B,EAAa7F,EAASrC,IAAIpD,EAAOc,SAAUkS,GAAWhL,IAGxD,OADI4K,GAAYjL,EAAWM,KAAKhC,MACzBuF,KAAS7D,EAAT6D,CAAqBxH,EAAQgP,EACtC,EAMElR,KAAM,CAACA,EAAM8Q,EAAYF,EAAWnF,EAAM3F,EAAQ6K,EAAQ7I,KAE3D4B,OACL,CAeM,SAAUyH,GACdnR,EACA4Q,EAAoBzR,EACpB0R,GAAkC,EAClC1M,GAAgB,EAChB2B,EAAS,GACT6K,EAAS,GACT7I,EAAuB,CAAEzC,SAAU,KAEnC,OAAO4L,GACLjR,EACAmE,EACAyM,EACAC,EACA,OACA/K,EACA6K,EACA7I,EAEJ,CAeM,SAAUiJ,GACd/Q,EACA4Q,EAAoBzR,EACpB0R,GAAkC,EAClC1M,GAAgB,EAChB2B,EAAS,GACT6K,EAAS,GACT7I,EAAuB,CAAEzC,SAAU,KAEnC,OAAO4L,GACLjR,EACAmE,EACAyM,EACAC,EACA,SACA/K,EACA6K,EACA7I,EAEJ,CAgCM,SAAUsJ,GAAoBhP,GAClC,MAAO,CAIIuI,EAAiCzE,EAAS5E,EAAcsE,KACjE,IACE,OAAQxD,GACN,KAAKnB,EAAcO,OAChBoE,EAActE,GAAO,EACtB,MACF,KAAKL,EAAcS,OAChBkE,EAActE,KACf,MACF,QACE,MAAM,IAAI0D,EAAc,sBAAsB5C,GAEnD,CAAC,MAAOxB,GACP,MAAM,IAAIoE,EAAc,6BAA6BpE,EACtD,CACH,CACF,UASgByQ,KACd,MAAM/P,EAAMpD,EAAOe,QACnB,OAAOwE,EAAW6G,IAAIhJ,GACnBiJ,OACCkB,EAAK6F,QACLrJ,EAASmJ,GAAoBnQ,EAAcO,SAC3CwG,EAASoJ,GAAoBnQ,EAAcS,SAC3C8H,EAAalI,GAAK,IAEnBoI,OACL,UASgB6H,KACd,OAAO9N,EAAW6G,IAAIpM,EAAOY,WAC1ByL,QAAO,CAAmB3E,EAAY4L,KACrChI,EAAatL,EAAOY,WAAW,EAA/B0K,CAAqC5D,EAAMhG,aAC3C4J,EAAa7F,EAASrC,IAAIpD,EAAOY,UAAW0S,GAAY,GAAxDhI,CACE5D,EACA4L,EAEJ,IACC9H,OACL,CCjVM,SAAU+H,GACdC,GAEA,OAAOA,EAAOpL,QAAO,CAACjE,EAA2BzB,EAAG0G,KAC9C1G,IACFyB,EACmB,iBAAVA,EACHA,EAAQ,QAAQiF,MAAM1G,EAAEwD,aACxB,MAAMkD,MAAM1G,EAAEwD,cACf/B,SACNjC,EACL,CAeOiK,eAAesH,GAKpBC,EACAjH,EACA/E,EACAxD,EACA0D,EACAsG,GAEA,MAAMvG,EACJgM,GAAgBjM,EAAOxD,EAAW0D,GAEpC,IAAKD,EAAY,OAEjB,MAEMiM,EAAmBlK,EADCxB,EADAT,EAAsBC,EAAOC,EAAYC,KAInE,IAAK,MAAMP,KAAOuM,EAAkB,CAClC,MAAM9R,EAAc,CAClB2K,EACApF,EAAIW,KAAKtD,OAAS,EAAI2C,EAAIW,KAAOX,EAAIW,KAAK,GAC1CX,EAAIC,KAAK5C,OAAS,EAAI2C,EAAIC,KAAOD,EAAIC,KAAK,GAC1CI,GAGF,GAAIxD,IAAcnB,EAAcS,QAAUoE,IAAW7E,EAAcqH,GAAI,CACrE,IAAK8D,EACH,MAAM,IAAIpH,EAAc,0CAC1BhF,EAAKmG,KAAKiG,EACX,CACD,UACS7G,EAAIpC,QAA4CuG,MACrDkI,EACA5R,EAEH,CAAC,MAAOY,GACP,MAAM+D,EAAM,6BAA6BY,EAAIpC,QAAQX,YAAY+C,EAAIC,WAAWI,EAAMhG,YAAY4C,sBAAsB5B,IACxH,GAAI+J,EAAQ1I,IAAI,uBAAwB,MAAM,IAAI+C,EAAcL,EAEjE,CACF,CACH,UAYgBkN,GACdjM,EACAxD,EACA2P,GAEA,MAAMjM,EAASiM,GAAaC,QAAQ,OAAQ,IAEtCnM,EAAalC,EAAS1B,IAC1B2D,EAAMhG,YACNsB,EAAgBuI,YAGlB,GAAK5D,EACL,OAAO/C,OAAOmB,KAAK4B,GAAYS,QAC7B,CAACjE,EAAwDmI,KACvD,MAAMyH,EAAMnM,EACRD,EAAW2E,GAAW1E,IAAW,CAAE,EACnCD,EAAW2E,GACTjF,EAAMzC,OAAOmB,KAAKgO,GAAK3I,QAAQjC,GAAWA,IAAMjF,IAChD2D,EAAO,GACb,IAAK,MAAMsB,KAAK9B,EAAKQ,EAAKI,KAAK,CAAE7E,IAAK+F,EAAG3B,MAAOuM,EAAI5K,KAMpD,OAJItB,GAAQA,EAAKnD,SACVP,IAAOA,EAAQ,CAAA,GACpBA,EAAMmI,GAAazE,GAEd1D,CAAK,QAEdjC,EAEJ,CCxHAwN,EAAM7K,UAAUmP,YAAc,WAC5B,OAAOvO,EAASuO,YAAY5R,KAC9B,EAYAsN,EAAM7K,UAAUjD,UAAY,SAE1BqS,KACGC,IAECD,GAAqBA,aAA2BvE,IAClDwE,EAAWvP,QAAQsP,GACnBA,OAAkB/R,GAGpB,MAAMiK,EAAQ/J,KAAK+R,UACb3E,EAAO4E,EAAShS,KAAM+J,KAAU+H,GAEtC,OAAI/H,EACK6D,QAAQqE,QAAQ7E,GAAMU,MAAMoE,GAC7BA,IAAiBL,EACZK,EAEF5D,GAAgBuD,EAAiB7R,KAAM+J,KAAU+H,KAIxD1E,IAASyE,EAAwBzE,EAG9BkB,GAAgBuD,EAAiB7R,KAAM+J,KAAU+H,EAC1D,EAEAxE,EAAM7K,UAAU0P,UAAY,WAG1B,OAAO7E,EAAM6E,UAAUnS,KACzB,EAECsN,EAAc6E,UACb7M,IAEA,IAAKjC,EAASuO,YAAYtM,GAAQ,MAAO,CAAEA,MAAOA,GAClD,MAAMkG,EAAsBnI,EAAS+O,sBACnC9M,EAAMhG,aAGF+S,EAAiBhP,EAAS1B,IAC9B2D,EAAMhG,YACN1B,EAAOY,WAGH2N,EAAS,CACb7G,MAAO,CAAyB,EAChC2L,UAAW,CAAyB,GAEtC,IAAK,MAAMjQ,KAAOwK,EAEhB,GADoBhJ,OAAOmB,KAAK0O,GAAgB1I,SAAS3I,GACxC,CACfmL,EAAO8E,UAAY9E,EAAO8E,WAAa,CAAA,EACvC,IACE9E,EAAO8E,UAAUjQ,GAAOsE,EAAMtE,EAC/B,CAAC,MAAOV,GACP,MAAM,IAAIqE,EACR,0CAA0C3D,MAAQV,IAErD,CACF,MACC6L,EAAO7G,MAAQ6G,EAAO7G,OAAS,CAAA,EAC/B6G,EAAO7G,MAAMtE,GAAQsE,EAA8BtE,GAKvD,OADAmL,EAAO7G,MAAQgI,EAAMgF,MAAMnG,EAAO7G,MAAOA,EAAMhG,YAAY4C,MACpDiK,CACT,EAECmB,EAAcC,IAAK,CAClBjI,EACAiN,GAAW,KAEX,IAAKjN,EAAO,MAAUlB,MAAM,yBAC5B,MAAMoO,EAASlN,aAAiBgI,EAAQhI,EAAMhG,YAAcgG,EACtDmN,EAASpP,EAAS1B,IAAI6Q,EAAuB5U,EAAOM,IAC1D,IAAKuU,EACH,MAAUrO,MACR,qCAAoCoO,GAAQtQ,MAAQ,kBAGxD,MAAMlB,EAAMwB,OAAOmB,KAAK8O,GAAQ,GAChC,IAAKF,EAAU,OAAOvR,EACtB,GAAIsE,aAAiBgI,EAAO,OAAOhI,EAAMtE,GACzC,MAAUoD,MAAM,sDAClB,GAAEsO,KAAKpF,GAENA,EAAcqF,SACbrN,GAEOjC,EAAS1B,IACd2D,EACAjC,EAASrC,IAAIpD,EAAOM,GAAIoP,EAAMC,GAAGjI,MAEnCoN,KAAKpF,GAENA,EAAcsE,aACbtM,GAEOjC,EAASuO,YAAYtM,IAC5BoN,KAAKpF,GAENA,EAAcmD,UAAW,CACxBnL,EACAJ,KAEA,MAAMsN,EACJlN,aAAiBgI,EAAShI,EAAMhG,YAAiCgG,EACnE,OAAIJ,EACK7B,EAAS1B,IAAI6Q,EAAQnP,EAASrC,IAAIpD,EAAOc,SAAUwG,MACnD7B,EAAS1B,IAAI6Q,EAAQ5U,EAAOc,SACvC,GAAEgU,KAAKpF,GAWNA,EAAcsF,OAAQ,CACrB9G,EACAD,EACAvM,KAGA,MAAMuT,EAAWvN,GACf9C,OAAO6M,QAAQ/J,GAAOU,QAAO,CAACjE,GAA6Bf,EAAKqN,WAC3C,IAARA,IAAqBtM,EAAMf,GAAOqN,GACtCtM,IACN,CAAE,GAEP,OAAO,IAPPzC,EAAcA,GAAgBwM,EAASxM,aAQrCkD,OAAOsQ,OAAO,CAAE,EAAED,EAAQ/G,GAAW+G,EAAQhH,IAEjD,GAAE6G,KAAKpF,GAENjK,EAAiB0P,eAAgB,CAChCzN,EACAqD,EACA7G,EACAyH,KAEKZ,GACLtF,EAAS8C,IACPb,EACAjC,EAASrC,IAAIJ,EAAgBuI,WAAYR,EAAa7G,GACtDyH,EAEJ,GAAEmJ,KAAKrP,GAENA,EAAiBwF,eAAgB,CAChCvD,EACAqD,EACA7G,KAEA,GAAK6G,GAAgB7G,EACrB,OAAOuB,EAAS1B,IACd2D,EACAjC,EAASrC,IAAIJ,EAAgBuI,WAAYR,EAAa7G,GAE1D,GAAE4Q,KAAKrP,GAENA,EAAiBuO,aAChBtM,KAESjC,EAAS1B,IACC,mBAAV2D,EAAwBA,EAAMhG,YAAsBgG,EAC3D1H,EAAOY,YAETkU,KAAKrP,GChMM,MAAA2P,GAGT,CACFC,mBAAenT,EACfoT,cAAe,GACfC,4BAA6B,GAC7BC,SAAU,GACVC,gBAAgB,EAChBC,eAAgB,GAChBxR,eAAWhC,EACXyT,qBAAqB,EACrBC,sBAAsB,EACtBC,kBAAkB,EAClBC,gBAAgB,GCULC,GAIXjD,IAEO,IAAIkD,IAAaC,WACtBrR,OAAOsQ,OAAO,CAAE,EAAEpC,EAAK,CACrBpG,UAAW,IAAIjK,KACfyT,OAAQpD,EAAIoD,QAAUC,EAAQpS,eA+DvBiS,GACX,WAAAtU,GAWSU,KAAA0B,MACP,IAAIsS,EAXJxR,OAAOyR,eAAejU,KAAM,QAAS,CACnCP,MAAO,IAAIuU,EACXE,UAAU,EACVC,YAAY,EACZC,cAAc,GAEjB,QAEMpU,KAAOqU,QAAwBV,EAAsB,CAW5D,UAAAE,CAA6BpU,GAO3B,OANA+C,OAAOyR,eAAejU,KAAM,QAAS,CACnCP,MAAQO,KAAK0B,MAAiCmS,WAAWpU,GACzDyU,UAAU,EACVC,YAAY,EACZC,cAAc,IAETpU,IACR,CAED,UAAI8T,GACF,OAAQ9T,KAAK0B,MAAcoS,MAC5B,CAED,aAAIxJ,GACF,OAAQtK,KAAK0B,MAAc4I,SAC5B,CAOD,GAAA3I,CAAuBX,GACrB,IACE,OAAQhB,KAAK0B,MAAiCC,IAC5CX,EAEH,CAAC,MAAOV,GACP,MAAMgU,EAAUtU,KAAK0B,MAAcuR,cAGnC,GAAIqB,EAAQ,OAAOA,EAAO3S,IAAIX,GAC9B,MAAMV,CACP,CACF,CAKD,gBAAOiU,CACLlK,EACAmK,GAEA,OAAOZ,GAAQS,QACb7R,OAAOsQ,OAAO,CAAA,EAAKzI,EAAgB3I,MAAO8S,GAAa,CAAE,GAE5D,CAKD,iBAAa7N,CACX7E,EAMA0S,EACAlP,KAEG5F,GAEH,OAAOkU,GAAQS,QACb7R,OAAOsQ,OAAO,CAAE,EAAEE,GAA2CwB,EAAW,CACtE1S,UAAWA,EACXwD,MAAOA,EACPwO,OAAQU,EAAUV,QAAWC,EAAQpS,QAG1C,CAKD,iBAAajC,CACXoC,EAMAwD,EACA5F,EACA+U,EACAD,GAEA,MAAME,EAAOhV,EAAKiV,MAElB5K,eAAe6K,IACb,OAAIH,EACKA,EAAWpK,QAAQvI,EAAW0S,GAAa,CAAA,EAAIlP,KAAU5F,GAC3DkU,GAAQjN,KAAW7E,EAAW0S,GAAa,CAAA,EAAIlP,KAAU5F,EACjE,CAED,IAAI2H,EAeJ,OAdIqN,EACEA,aAAgBd,IAClBvM,EAAIqN,EACJhV,EAAKmG,KAAK6O,KAEVhV,EAAKmG,KAAK6O,GACVrN,QAAWuN,IACXlV,EAAKmG,KAAKwB,KAGZA,QAAWuN,IACXlV,EAAKmG,KAAKwB,IAGL,CAAEgD,QAAShD,EAAG3H,KAAMA,EAC5B,EChOG,SAAUmV,GACdlD,EACAzJ,EACA1C,EACAsP,GAEA,MAAM5S,EAAO4S,GAAwB5M,EAAMhG,KAE3CyP,EAAIzP,GAAQ,IAAI6S,MAAMpD,EAAIzP,GAAO,CAC7BkH,MAAOW,MAAOnI,EAAQoT,EAASC,KAC7B,IAAIvF,EAAUlK,EAAOkG,KAAKsJ,KAAYC,GAStC,OARGvF,aAAmB9B,UACpB8B,QAAgBA,GAElBA,EAAU9N,EAAO8J,KAAKsJ,KAAYtF,GAE/BA,aAAmB9B,UACpB8B,QAAgBA,GAEXA,CAAO,GAGtB,CAaM,SAAUwF,GACdvD,EACAwD,EACA9E,EACA+E,GAEE,MAAMlT,EAAOkT,GAA0BD,EAAOjT,KAC9CyP,EAAIzP,GAAQ,IAAI6S,MAAMpD,EAAIzP,GAAO,CAC7BkH,MAAOW,MAAOnI,EAAQoT,EAASC,KAC7B,IAAIvF,EAAU9N,EAAO8J,KAAKsJ,KAAYC,GAStC,OARGvF,aAAmB9B,UACpB8B,QAAgBA,GAElBA,EAAUW,EAAO3E,KAAKsJ,KAAYtF,GAE/BA,aAAmB9B,UACpB8B,QAAgBA,GAEXA,CAAO,GAGxB,CAeM,SAAU2F,GACd1D,EACAwD,EACAG,EACApN,EACAqN,GAEA,MAAMrT,EAAOqT,GAA0BD,EAAOpT,KAC9CyP,EAAIzP,GAAQ,IAAI6S,MAAMpD,EAAIzP,GAAO,CAC/BkH,MAAOW,MAAOnI,EAAQoT,EAASC,KAC7B,IAAIO,EAAkBL,EAAOzJ,KAAKsJ,KAAYC,GAC1CO,aAA2B5H,UAC7B4H,QAAwBA,GAC1B,MAAMnL,EAAUmL,EAAgBA,EAAgBlT,OAAS,GACzD,KAAM+H,aAAmBuJ,IACvB,MAAM,IAAIlP,EAAc,qBAC1B,IAAIgL,EAAU9N,EAAO8J,KAAKsJ,KAAYQ,GAItC,OAHI9F,aAAmB9B,UAAS8B,QAAgBA,GAChDA,EAAUxH,EAAMwD,KAAKsJ,EAAStF,EAASrF,GACnCqF,aAAmB9B,UAAS8B,QAAgBA,GACzCA,CAAO,GAGpB,OCNsB+F,GAapB,SAAI,GACF,IAAKzV,KAAK0V,OACR,MAAM,IAAIhR,EAAc,iDAC1B,OAAO1E,KAAK0V,MACb,CAQD,MAAcnI,GACZ,OAAOD,EAAMC,GAAGvN,KAAK8M,MACtB,CAQD,WAAc6F,GACZ,OAAOrF,EAAMqF,QAAQ3S,KAAK8M,MAC3B,CAED,WAAAxN,CAAsByN,GAChBA,IAAO/M,KAAK0V,OAAS3I,GAEzB,MAAM4I,EAAO3V,KACb,CAACA,KAAK4V,OAAQ5V,KAAK6V,KAAM7V,KAAK8V,OAAQ9V,KAAK+V,QAAQnP,SAASzB,IAC1D,MAAMjD,EAAOiD,EAAEjD,KACfmT,GACEM,EACCA,EAAazT,EAAO,UACrBiD,EACCwQ,EAAazT,EAAO,UACtB,GAEJ,CAoBD,eAAM8T,CAAUC,KAAgBvW,GAC9B,OAAOkO,QAAQC,IAAIoI,EAAOnP,KAAK3B,GAAMnF,KAAK4V,OAAOzQ,KAAMzF,KACxD,CAWS,kBAAMwW,CACd5Q,KACG5F,GAEH,MAAMyW,QAAoCvC,GAAQlU,KAChDiB,EAAcO,OACdlB,KAAK8M,MACLpN,GAUF,OARA4F,EAAQ,IAAItF,KAAK8M,MAAMxH,SACjB+L,GACJrR,KACAmW,EAAY9L,QACZ/E,EACA3E,EAAcO,OACdP,EAAcqH,IAET,CAAC1C,KAAU6Q,EAAYzW,KAC/B,CAUS,kBAAM0W,CAAa9Q,EAAU+E,GAQrC,aAPMgH,GACJrR,KACAqK,EACA/E,EACA3E,EAAcO,OACdP,EAAc6H,OAETlD,CACR,CAWS,qBAAM+Q,CACdJ,KACGvW,GAEH,MAAMyW,QAAoBvC,GAAQlU,KAChCiB,EAAcO,OACdlB,KAAK8M,MACLpN,GAeF,aAbMkO,QAAQC,IACZoI,EAAOnP,KAAIiD,MAAO5E,IAChBA,EAAI,IAAInF,KAAK8M,MAAM3H,SACbkM,GACJrR,KACAmW,EAAY9L,QACZlF,EACAxE,EAAcO,OACdP,EAAcqH,IAET7C,MAGJ,CAAC8Q,KAAWE,EAAYzW,KAChC,CAUS,qBAAM4W,CAAgBL,EAAa5L,GAY3C,aAXMuD,QAAQC,IACZoI,EAAOnP,KAAK3B,GACVkM,GACErR,KACAqK,EACAlF,EACAxE,EAAcO,OACdP,EAAc6H,UAIbyN,CACR,CAoBD,aAAMM,CAAQ5S,KAA2BjE,GACvC,aAAakO,QAAQC,IAAIlK,EAAKmD,KAAKuE,GAAOrL,KAAK6V,KAAKxK,KAAO3L,KAC5D,CAUS,gBAAM8W,CAAWlR,EAAU+E,GAQnC,aAPMgH,GACJrR,KACAqK,EACA/E,EACA3E,EAAcQ,KACdR,EAAc6H,OAETlD,CACR,CAWS,gBAAMmR,CACdzV,KACGtB,GAEH,MAAMyW,QAAoBvC,GAAQlU,KAChCiB,EAAcQ,KACdnB,KAAK8M,MACLpN,GAEI4F,EAAW,IAAItF,KAAK8M,MAS1B,OARAxH,EAAMtF,KAAKuN,IAAMvM,QACXqQ,GACJrR,KACAmW,EAAY9L,QACZ/E,EACA3E,EAAcQ,KACdR,EAAcqH,IAET,CAAChH,KAAQmV,EAAYzW,KAC7B,CAWS,mBAAMgX,CACd/S,KACGjE,GAEH,MAAMyW,QAAoBvC,GAAQlU,KAChCiB,EAAcQ,KACdnB,KAAK8M,MACLpN,GAeF,aAbMkO,QAAQC,IACZlK,EAAKmD,KAAIiD,MAAO4M,IACd,MAAMxR,EAAI,IAAInF,KAAK8M,MAEnB,OADA3H,EAAEnF,KAAKuN,IAAMoJ,EACNtF,GACLrR,KACAmW,EAAY9L,QACZlF,EACAxE,EAAcQ,KACdR,EAAcqH,GACf,KAGE,CAACrE,KAASwS,EAAYzW,KAC9B,CAUS,mBAAMkX,CAAcX,EAAa5L,GAYzC,aAXMuD,QAAQC,IACZoI,EAAOnP,KAAK3B,GACVkM,GACErR,KACAqK,EACAlF,EACAxE,EAAcQ,KACdR,EAAc6H,UAIbyN,CACR,CAoBD,eAAMY,CAAUZ,KAAgBvW,GAC9B,OAAOkO,QAAQC,IAAIoI,EAAOnP,KAAK3B,GAAMnF,KAAK8V,OAAO3Q,KAAMzF,KACxD,CAUS,kBAAMoX,CAAaxR,EAAU+E,GAQrC,aAPMgH,GACJrR,KACAqK,EACA/E,EACA3E,EAAcS,OACdT,EAAc6H,OAETlD,CACR,CAWS,kBAAMyR,CACdzR,KACG5F,GAEH,MAAMyW,QAAoBvC,GAAQlU,KAChCiB,EAAcS,OACdpB,KAAK8M,MACLpN,GAEI2L,EAAK/F,EAAMtF,KAAKuN,IACtB,IAAKlC,EACH,MAAM,IAAI3G,EACR,qDAAqD1E,KAAKuN,IAE9D,MAAMzB,QAAiB9L,KAAK6V,KAAKxK,GASjC,aARMgG,GACJrR,KACAmW,EAAY9L,QACZ/E,EACA3E,EAAcS,OACdT,EAAcqH,GACd8D,GAEK,CAACxG,KAAU6Q,EAAYzW,KAC/B,CAWS,qBAAMsX,CACdf,KACGvW,GAEH,MAAMyW,QAAoBvC,GAAQlU,KAChCiB,EAAcS,OACdpB,KAAK8M,MACLpN,GAeF,aAbMkO,QAAQC,IACZoI,EAAOnP,KAAK3B,IACVA,EAAI,IAAInF,KAAK8M,MAAM3H,GACnBkM,GACErR,KACAmW,EAAY9L,QACZlF,EACAxE,EAAcS,OACdT,EAAcqH,IAET7C,MAGJ,CAAC8Q,KAAWE,EAAYzW,KAChC,CAUS,qBAAMuX,CAAgBhB,EAAa5L,GAY3C,aAXMuD,QAAQC,IACZoI,EAAOnP,KAAK3B,GACVkM,GACErR,KACAqK,EACAlF,EACAxE,EAAcS,OACdT,EAAc6H,UAIbyN,CACR,CAoBD,eAAMiB,CAAUvT,KAA2BjE,GACzC,OAAOkO,QAAQC,IAAIlK,EAAKmD,KAAK6P,GAAM3W,KAAK+V,OAAOY,KAAMjX,KACtD,CAUS,kBAAMyX,CAAa7R,EAAU+E,GAQrC,aAPMgH,GACJrR,KACAqK,EACA/E,EACA3E,EAAcU,OACdV,EAAc6H,OAETlD,CACR,CAWS,kBAAM8R,CACdpW,KACGtB,GAEH,MAAMyW,QAAoBvC,GAAQlU,KAChCiB,EAAcU,OACdrB,KAAK8M,MACLpN,GAEI4F,QAActF,KAAK6V,KAAK7U,KAAQmV,EAAYzW,MAQlD,aAPM2R,GACJrR,KACAmW,EAAY9L,QACZ/E,EACA3E,EAAcU,OACdV,EAAcqH,IAET,CAAChH,KAAQmV,EAAYzW,KAC7B,CAWS,qBAAM2X,CACd1T,KACGjE,GAEH,MAAMyW,QAAoBvC,GAAQlU,KAChCiB,EAAcU,OACdrB,KAAK8M,MACLpN,GAEIuW,QAAejW,KAAKuW,QAAQ5S,KAASwS,EAAYzW,MAYvD,aAXMkO,QAAQC,IACZoI,EAAOnP,KAAIiD,MAAO5E,GACTkM,GACLrR,KACAmW,EAAY9L,QACZlF,EACAxE,EAAcU,OACdV,EAAcqH,OAIb,CAACrE,KAASwS,EAAYzW,KAC9B,CAUS,qBAAM4X,CAAgBrB,EAAa5L,GAY3C,aAXMuD,QAAQC,IACZoI,EAAOnP,KAAK3B,GACVkM,GACErR,KACAqK,EACAlF,EACAxE,EAAcU,OACdV,EAAc6H,UAIbyN,CACR,CAOD,QAAAnS,GACE,OAAU9D,KAAK8M,MAAM5K,KAAd,aACR,ECrnBG,MAAgBqV,WAGZ9B,GACR,WAAAnW,CAAsByN,GACpBxN,MAAMwN,EACP,CAYkB,kBAAMmJ,CACvB5Q,KACG5F,GAEH,MAAMyW,QAAoBvC,GAAQlU,KAChCiB,EAAcO,OACdlB,KAAK8M,MACLpN,GAYF,GAVA4F,EAAQ,IAAItF,KAAK8M,MAAMxH,GAClB6Q,EAAY9L,QAAQ1I,IAAI,yBACrB0P,GACJrR,KACAmW,EAAY9L,QACZ/E,EACA3E,EAAcO,OACdP,EAAcqH,KAGbmO,EAAY9L,QAAQ1I,IAAI,oBAAqB,CAChD,MAAMyP,QAAexD,QAAQqE,QAAQ3M,EAAM9F,aAC3C,GAAI4R,EAAQ,MAAM,IAAI3M,EAAgB2M,EAAOtN,WAC9C,CAED,MAAO,CAACwB,KAAU6Q,EAAYzW,KAC/B,CAYkB,qBAAM2W,CACvBJ,KACGvW,GAEH,MAAMyW,QAAoBvC,GAAQlU,KAChCiB,EAAcO,OACdlB,KAAK8M,MACLpN,GAEIgU,EAAiByC,EAAY9L,QAAQ1I,IAAI,kBACzC6V,EAAiBrB,EAAY9L,QAAQ1I,IAAI,oBAiB/C,GAfAsU,QAAerI,QAAQC,IACrBoI,EAAOnP,KAAIiD,MAAO5E,IAChB,MAAMG,EAAQ,IAAItF,KAAK8M,MAAM3H,GAS7B,OARKuO,SACGrC,GACJrR,KACAmW,EAAY9L,QACZ/E,EACA3E,EAAcO,OACdP,EAAcqH,IAEX1C,CAAK,MAIXkS,EAAgB,CACnB,MAIMpG,EAASD,SAJgBvD,QAAQC,IACrCoI,EAAOnP,KAAK3B,GAAMyI,QAAQqE,QAAQ9M,EAAE3F,iBAKtC,GAAI4R,EAAQ,MAAM,IAAI3M,EAAgB2M,EACvC,CACD,MAAO,CAAC6E,KAAWE,EAAYzW,KAChC,CAckB,kBAAMqX,CACvBzR,KACG5F,GAEH,MAAMyW,QAAoBvC,GAAQlU,KAChCiB,EAAcS,OACdpB,KAAK8M,MACLpN,GAEIgU,EAAiByC,EAAY9L,QAAQ1I,IAAI,kBACzC6V,EAAiBrB,EAAY9L,QAAQ1I,IAAI,oBACzC4L,EAAMjI,EAActF,KAAKuN,IAC/B,IAAKA,EACH,MAAM,IAAI7I,EACR,qDAAqD1E,KAAKuN,IAG9D,MAAMzB,QAAoB9L,KAAK6V,KAAKtI,GAcpC,GAZAjI,EAAQgI,EAAMsF,MAAM9G,EAAUxG,EAAOtF,KAAK8M,OAErC4G,SACGrC,GACJrR,KACAmW,EAAY9L,QACZ/E,EACA3E,EAAcS,OACdT,EAAcqH,GACd8D,IAGC0L,EAAgB,CACnB,MAAMpG,QAAexD,QAAQqE,QAAQ3M,EAAM9F,UAAUsM,IACrD,GAAIsF,EAAQ,MAAM,IAAI3M,EAAgB2M,EAAOtN,WAC9C,CACD,MAAO,CAACwB,KAAU6Q,EAAYzW,KAC/B,CAckB,qBAAMsX,CACvBf,KACGvW,GAEH,MAAMyW,QAAoBvC,GAAQlU,KAChCiB,EAAcS,OACdpB,KAAK8M,MACLpN,GAEIgU,EAAiByC,EAAY9L,QAAQ1I,IAAI,kBACzC6V,EAAiBrB,EAAY9L,QAAQ1I,IAAI,oBACzC8V,EAAMxB,EAAOnP,KAAK3B,IACtB,MAAMkG,EAAKlG,EAAEnF,KAAKuN,IAClB,QAAkB,IAAPlC,EACT,MAAM,IAAI3G,EACR,qDAAqD1E,KAAKuN,IAE9D,OAAOlC,CAAY,IAEfqM,QAAuB1X,KAAKuW,QAAQkB,KAAQtB,EAAYzW,MAgB9D,GAfAuW,EAASA,EAAOnP,KAAI,CAAC3B,EAAG6B,IAAMsG,EAAMsF,MAAM8E,EAAU1Q,GAAI7B,EAAGnF,KAAK8M,SAC3D4G,SACG9F,QAAQC,IACZoI,EAAOnP,KAAI,CAAC3B,EAAG6B,IACbqK,GACErR,KACAmW,EAAY9L,QACZlF,EACAxE,EAAcS,OACdT,EAAcqH,GACd0P,EAAU1Q,QAKbwQ,EAAgB,CACnB,MAIMpG,EAASD,SAJgBvD,QAAQC,IACrCoI,EAAOnP,KAAI,CAAC3B,EAAG6B,IAAM4G,QAAQqE,QAAQ9M,EAAE3F,UAAUkY,EAAU1Q,SAK7D,GAAIoK,EAAQ,MAAM,IAAI3M,EAAgB2M,EACvC,CACD,MAAO,CAAC6E,KAAWE,EAAYzW,KAChC,CAEkB,gBAAM+W,CACvBzV,KACGtB,GAEH,OAAOH,MAAMkX,WAAWzV,KAAQtB,EACjC,CAEkB,mBAAMgX,CACvB/S,KACGjE,GAEH,OAAOH,MAAMmX,cAAc/S,KAASjE,EACrC,CAEkB,qBAAM2X,CACvB1T,KACGjE,GAEH,OAAOH,MAAM8X,gBAAgB1T,KAASjE,EACvC,ECxPI,MAAMf,GAAU,cACVgZ,GAAe,cAC5BtU,EAASuU,gBAAgBD,GAAchZ"}
|
package/lib/esm/index.d.ts
CHANGED
package/lib/esm/index.js
CHANGED
|
@@ -17,7 +17,7 @@ export * from "./validation/index.js";
|
|
|
17
17
|
* @const VERSION
|
|
18
18
|
* @memberOf module:db-decorators
|
|
19
19
|
*/
|
|
20
|
-
export const VERSION = "0.7.
|
|
20
|
+
export const VERSION = "0.7.11";
|
|
21
21
|
export const PACKAGE_NAME = "@decaf-ts/db-decorators";
|
|
22
22
|
Metadata.registerLibrary(PACKAGE_NAME, VERSION);
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -47,6 +47,7 @@ export type ComposedFromMetadata = {
|
|
|
47
47
|
type: "keys" | "values";
|
|
48
48
|
prefix?: string;
|
|
49
49
|
suffix?: string;
|
|
50
|
+
filterEmpty: boolean | string[];
|
|
50
51
|
};
|
|
51
52
|
/**
|
|
52
53
|
* @description Composes a property value from other properties during create or update operations
|
|
@@ -78,7 +79,7 @@ export declare function composedFromCreateUpdate<M extends Model, R extends IRep
|
|
|
78
79
|
* @function composedFromKeys
|
|
79
80
|
* @category PropertyDecorators
|
|
80
81
|
*/
|
|
81
|
-
export declare function composedFromKeys(args: string[], separator?: string, hash?: boolean, prefix?: string, suffix?: string, groupsort?: GroupSort): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
82
|
+
export declare function composedFromKeys(args: string[], separator?: string, filterEmpty?: boolean | string[], hash?: boolean, prefix?: string, suffix?: string, groupsort?: GroupSort): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
82
83
|
/**
|
|
83
84
|
* @description Creates a decorator that composes a property value from property values
|
|
84
85
|
* @summary Decorator that generates a property value by joining the values of other properties
|
|
@@ -92,7 +93,7 @@ export declare function composedFromKeys(args: string[], separator?: string, has
|
|
|
92
93
|
* @function composed
|
|
93
94
|
* @category PropertyDecorators
|
|
94
95
|
*/
|
|
95
|
-
export declare function composed(args: string[], separator?: string, hash?: boolean, prefix?: string, suffix?: string, groupsort?: GroupSort): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
96
|
+
export declare function composed(args: string[], separator?: string, filterEmpty?: boolean | string[], hash?: boolean, prefix?: string, suffix?: string, groupsort?: GroupSort): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
96
97
|
/**
|
|
97
98
|
* @description Creates a function that updates a version property during operations
|
|
98
99
|
* @summary Factory function that generates a callback for incrementing version numbers
|
|
@@ -57,21 +57,32 @@ export function hash() {
|
|
|
57
57
|
*/
|
|
58
58
|
export function composedFromCreateUpdate(context, data, key, model) {
|
|
59
59
|
try {
|
|
60
|
-
const { args, type, prefix, suffix, separator } = data;
|
|
61
|
-
const composed = args
|
|
60
|
+
const { args, type, prefix, suffix, separator, filterEmpty, hashResult } = data;
|
|
61
|
+
const composed = args
|
|
62
|
+
.map((arg) => {
|
|
62
63
|
if (!(arg in model))
|
|
63
64
|
throw new InternalError(`Property ${arg} not found to compose from`);
|
|
64
65
|
if (type === "keys")
|
|
65
66
|
return arg;
|
|
66
|
-
if (typeof model[arg] === "undefined")
|
|
67
|
+
if (typeof model[arg] === "undefined") {
|
|
68
|
+
if (filterEmpty) {
|
|
69
|
+
if (!Array.isArray(filterEmpty))
|
|
70
|
+
return undefined;
|
|
71
|
+
if (filterEmpty.includes(arg))
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
67
74
|
throw new InternalError(`Property ${args} does not contain a value to compose from`);
|
|
75
|
+
}
|
|
68
76
|
return model[arg].toString();
|
|
69
|
-
})
|
|
77
|
+
})
|
|
78
|
+
.filter((a) => (filterEmpty ? !!a : true));
|
|
70
79
|
if (prefix)
|
|
71
80
|
composed.unshift(prefix);
|
|
72
81
|
if (suffix)
|
|
73
82
|
composed.push(suffix);
|
|
74
|
-
model[key] =
|
|
83
|
+
model[key] = hashResult
|
|
84
|
+
? Hashing.hash(composed.join(separator))
|
|
85
|
+
: composed.join(separator);
|
|
75
86
|
}
|
|
76
87
|
catch (e) {
|
|
77
88
|
throw new InternalError(`Failed to compose value: ${e}`);
|
|
@@ -91,7 +102,7 @@ export function composedFromCreateUpdate(context, data, key, model) {
|
|
|
91
102
|
* @function composedFrom
|
|
92
103
|
* @category PropertyDecorators
|
|
93
104
|
*/
|
|
94
|
-
function composedFrom(args, hashResult = false, separator = DefaultSeparator, type = "values", prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
105
|
+
function composedFrom(args, hashResult = false, separator = DefaultSeparator, filterEmpty = false, type = "values", prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
95
106
|
function composedFrom(args, hashResult, separator, type, prefix, suffix, groupsort) {
|
|
96
107
|
return function composeFrom(target, property) {
|
|
97
108
|
const data = {
|
|
@@ -101,6 +112,7 @@ function composedFrom(args, hashResult = false, separator = DefaultSeparator, ty
|
|
|
101
112
|
type: type,
|
|
102
113
|
prefix: prefix,
|
|
103
114
|
suffix: suffix,
|
|
115
|
+
filterEmpty: filterEmpty,
|
|
104
116
|
};
|
|
105
117
|
const decorators = [
|
|
106
118
|
onCreateUpdate(composedFromCreateUpdate, data, groupsort),
|
|
@@ -131,8 +143,8 @@ function composedFrom(args, hashResult = false, separator = DefaultSeparator, ty
|
|
|
131
143
|
* @function composedFromKeys
|
|
132
144
|
* @category PropertyDecorators
|
|
133
145
|
*/
|
|
134
|
-
export function composedFromKeys(args, separator = DefaultSeparator, hash = false, prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
135
|
-
return composedFrom(args, hash, separator, "keys", prefix, suffix, groupsort);
|
|
146
|
+
export function composedFromKeys(args, separator = DefaultSeparator, filterEmpty = false, hash = false, prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
147
|
+
return composedFrom(args, hash, separator, filterEmpty, "keys", prefix, suffix, groupsort);
|
|
136
148
|
}
|
|
137
149
|
/**
|
|
138
150
|
* @description Creates a decorator that composes a property value from property values
|
|
@@ -147,8 +159,8 @@ export function composedFromKeys(args, separator = DefaultSeparator, hash = fals
|
|
|
147
159
|
* @function composed
|
|
148
160
|
* @category PropertyDecorators
|
|
149
161
|
*/
|
|
150
|
-
export function composed(args, separator = DefaultSeparator, hash = false, prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
151
|
-
return composedFrom(args, hash, separator, "values", prefix, suffix, groupsort);
|
|
162
|
+
export function composed(args, separator = DefaultSeparator, filterEmpty = false, hash = false, prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
163
|
+
return composedFrom(args, hash, separator, filterEmpty, "values", prefix, suffix, groupsort);
|
|
152
164
|
}
|
|
153
165
|
/**
|
|
154
166
|
* @description Creates a function that updates a version property during operations
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/model/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,uBAAoB;AACvD,OAAO,EAAE,OAAO,EAAS,IAAI,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,sCAAiC;AAE9E,OAAO,EAAE,aAAa,EAAE,kCAA6B;AACrD,OAAO,EAA6B,aAAa,EAAE,iCAAsB;AACzE,OAAO,EACL,UAAU,EACV,YAAY,EACZ,KAAK,EACL,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAG9B;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB,CAMhC,OAA+B,EAC/B,IAAO,EACP,GAAY,EACZ,KAAQ,EACR,QAAY;IAEZ,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,WAAW;QAAE,OAAO;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAE,KAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAI,QAAQ,IAAK,KAAa,CAAC,GAAG,CAAC,KAAK,IAAI;QAAE,OAAO;IACrD,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;AACpB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,IAAI;IAClB,OAAO,KAAK,CACV,cAAc,CAAC,kBAAkB,CAAC,EAClC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAC9B,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../src/model/decorators.ts"],"names":[],"mappings":"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"}
|
package/lib/index.cjs
CHANGED
|
@@ -34,7 +34,7 @@ __exportStar(require("./validation/index.cjs"), exports);
|
|
|
34
34
|
* @const VERSION
|
|
35
35
|
* @memberOf module:db-decorators
|
|
36
36
|
*/
|
|
37
|
-
exports.VERSION = "0.7.
|
|
37
|
+
exports.VERSION = "0.7.11";
|
|
38
38
|
exports.PACKAGE_NAME = "@decaf-ts/db-decorators";
|
|
39
39
|
decoration_1.Metadata.registerLibrary(exports.PACKAGE_NAME, exports.VERSION);
|
|
40
40
|
//# sourceMappingURL=index.js.map
|
package/lib/index.d.ts
CHANGED
package/lib/model/decorators.cjs
CHANGED
|
@@ -67,21 +67,32 @@ function hash() {
|
|
|
67
67
|
*/
|
|
68
68
|
function composedFromCreateUpdate(context, data, key, model) {
|
|
69
69
|
try {
|
|
70
|
-
const { args, type, prefix, suffix, separator } = data;
|
|
71
|
-
const composed = args
|
|
70
|
+
const { args, type, prefix, suffix, separator, filterEmpty, hashResult } = data;
|
|
71
|
+
const composed = args
|
|
72
|
+
.map((arg) => {
|
|
72
73
|
if (!(arg in model))
|
|
73
74
|
throw new errors_1.InternalError(`Property ${arg} not found to compose from`);
|
|
74
75
|
if (type === "keys")
|
|
75
76
|
return arg;
|
|
76
|
-
if (typeof model[arg] === "undefined")
|
|
77
|
+
if (typeof model[arg] === "undefined") {
|
|
78
|
+
if (filterEmpty) {
|
|
79
|
+
if (!Array.isArray(filterEmpty))
|
|
80
|
+
return undefined;
|
|
81
|
+
if (filterEmpty.includes(arg))
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
77
84
|
throw new errors_1.InternalError(`Property ${args} does not contain a value to compose from`);
|
|
85
|
+
}
|
|
78
86
|
return model[arg].toString();
|
|
79
|
-
})
|
|
87
|
+
})
|
|
88
|
+
.filter((a) => (filterEmpty ? !!a : true));
|
|
80
89
|
if (prefix)
|
|
81
90
|
composed.unshift(prefix);
|
|
82
91
|
if (suffix)
|
|
83
92
|
composed.push(suffix);
|
|
84
|
-
model[key] =
|
|
93
|
+
model[key] = hashResult
|
|
94
|
+
? decorator_validation_1.Hashing.hash(composed.join(separator))
|
|
95
|
+
: composed.join(separator);
|
|
85
96
|
}
|
|
86
97
|
catch (e) {
|
|
87
98
|
throw new errors_1.InternalError(`Failed to compose value: ${e}`);
|
|
@@ -101,7 +112,7 @@ function composedFromCreateUpdate(context, data, key, model) {
|
|
|
101
112
|
* @function composedFrom
|
|
102
113
|
* @category PropertyDecorators
|
|
103
114
|
*/
|
|
104
|
-
function composedFrom(args, hashResult = false, separator = constants_1.DefaultSeparator, type = "values", prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
115
|
+
function composedFrom(args, hashResult = false, separator = constants_1.DefaultSeparator, filterEmpty = false, type = "values", prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
105
116
|
function composedFrom(args, hashResult, separator, type, prefix, suffix, groupsort) {
|
|
106
117
|
return function composeFrom(target, property) {
|
|
107
118
|
const data = {
|
|
@@ -111,6 +122,7 @@ function composedFrom(args, hashResult = false, separator = constants_1.DefaultS
|
|
|
111
122
|
type: type,
|
|
112
123
|
prefix: prefix,
|
|
113
124
|
suffix: suffix,
|
|
125
|
+
filterEmpty: filterEmpty,
|
|
114
126
|
};
|
|
115
127
|
const decorators = [
|
|
116
128
|
(0, decorators_1.onCreateUpdate)(composedFromCreateUpdate, data, groupsort),
|
|
@@ -141,8 +153,8 @@ function composedFrom(args, hashResult = false, separator = constants_1.DefaultS
|
|
|
141
153
|
* @function composedFromKeys
|
|
142
154
|
* @category PropertyDecorators
|
|
143
155
|
*/
|
|
144
|
-
function composedFromKeys(args, separator = constants_1.DefaultSeparator, hash = false, prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
145
|
-
return composedFrom(args, hash, separator, "keys", prefix, suffix, groupsort);
|
|
156
|
+
function composedFromKeys(args, separator = constants_1.DefaultSeparator, filterEmpty = false, hash = false, prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
157
|
+
return composedFrom(args, hash, separator, filterEmpty, "keys", prefix, suffix, groupsort);
|
|
146
158
|
}
|
|
147
159
|
/**
|
|
148
160
|
* @description Creates a decorator that composes a property value from property values
|
|
@@ -157,8 +169,8 @@ function composedFromKeys(args, separator = constants_1.DefaultSeparator, hash =
|
|
|
157
169
|
* @function composed
|
|
158
170
|
* @category PropertyDecorators
|
|
159
171
|
*/
|
|
160
|
-
function composed(args, separator = constants_1.DefaultSeparator, hash = false, prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
161
|
-
return composedFrom(args, hash, separator, "values", prefix, suffix, groupsort);
|
|
172
|
+
function composed(args, separator = constants_1.DefaultSeparator, filterEmpty = false, hash = false, prefix = "", suffix = "", groupsort = { priority: 55 }) {
|
|
173
|
+
return composedFrom(args, hash, separator, filterEmpty, "values", prefix, suffix, groupsort);
|
|
162
174
|
}
|
|
163
175
|
/**
|
|
164
176
|
* @description Creates a function that updates a version property during operations
|
|
@@ -47,6 +47,7 @@ export type ComposedFromMetadata = {
|
|
|
47
47
|
type: "keys" | "values";
|
|
48
48
|
prefix?: string;
|
|
49
49
|
suffix?: string;
|
|
50
|
+
filterEmpty: boolean | string[];
|
|
50
51
|
};
|
|
51
52
|
/**
|
|
52
53
|
* @description Composes a property value from other properties during create or update operations
|
|
@@ -78,7 +79,7 @@ export declare function composedFromCreateUpdate<M extends Model, R extends IRep
|
|
|
78
79
|
* @function composedFromKeys
|
|
79
80
|
* @category PropertyDecorators
|
|
80
81
|
*/
|
|
81
|
-
export declare function composedFromKeys(args: string[], separator?: string, hash?: boolean, prefix?: string, suffix?: string, groupsort?: GroupSort): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
82
|
+
export declare function composedFromKeys(args: string[], separator?: string, filterEmpty?: boolean | string[], hash?: boolean, prefix?: string, suffix?: string, groupsort?: GroupSort): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
82
83
|
/**
|
|
83
84
|
* @description Creates a decorator that composes a property value from property values
|
|
84
85
|
* @summary Decorator that generates a property value by joining the values of other properties
|
|
@@ -92,7 +93,7 @@ export declare function composedFromKeys(args: string[], separator?: string, has
|
|
|
92
93
|
* @function composed
|
|
93
94
|
* @category PropertyDecorators
|
|
94
95
|
*/
|
|
95
|
-
export declare function composed(args: string[], separator?: string, hash?: boolean, prefix?: string, suffix?: string, groupsort?: GroupSort): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
96
|
+
export declare function composed(args: string[], separator?: string, filterEmpty?: boolean | string[], hash?: boolean, prefix?: string, suffix?: string, groupsort?: GroupSort): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
96
97
|
/**
|
|
97
98
|
* @description Creates a function that updates a version property during operations
|
|
98
99
|
* @summary Factory function that generates a callback for incrementing version numbers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/model/decorators.ts"],"names":[],"mappings":";;AA+BA,gDAgBC;AASD,oBAKC;
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/model/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.7.
|
|
3
|
+
"version": "0.7.12",
|
|
4
4
|
"description": "Agnostic database decorators and repository",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -53,7 +53,8 @@
|
|
|
53
53
|
},
|
|
54
54
|
"files": [
|
|
55
55
|
"lib",
|
|
56
|
-
"dist"
|
|
56
|
+
"dist",
|
|
57
|
+
"workdocs/assets/slogans.json"
|
|
57
58
|
],
|
|
58
59
|
"keywords": [
|
|
59
60
|
"database",
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"Slogan": "db‑decorators: So your models wear suits, not roller‑skates.",
|
|
4
|
+
"Tags": "Decorators, Models, Style"
|
|
5
|
+
},
|
|
6
|
+
{
|
|
7
|
+
"Slogan": "Decorate your data so your code doesn’t caffeinate itself.",
|
|
8
|
+
"Tags": "Decorators, Calm, Coffee‑themed"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"Slogan": "From @entity to @column — make your data look sharp in decaf mode.",
|
|
12
|
+
"Tags": "Annotations, Coffee‑themed, Technical"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"Slogan": "When your model looks professional, your bugs wear pajamas.",
|
|
16
|
+
"Tags": "Models, Humor, Decorators"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"Slogan": "Mark your relationships like a barista marks your decaf latte.",
|
|
20
|
+
"Tags": "Relations, Coffee‑themed, Metaphor"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"Slogan": "Schema decor so smooth you’ll forget you’re doing backend work.",
|
|
24
|
+
"Tags": "Schema, Chill, Developer"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"Slogan": "Decorators that bring elegance, not adrenaline.",
|
|
28
|
+
"Tags": "Decorators, Calm, Technical"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"Slogan": "Your model’s wardrobe: tidy, typed, decaf‑prepared.",
|
|
32
|
+
"Tags": "Models, Coffee‑themed, Typescript"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"Slogan": "Let your decorators do the pomp while you do the code.",
|
|
36
|
+
"Tags": "Decorators, Productivity, Calm"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"Slogan": "Column, PK, relation — all without you sweating a coffee break.",
|
|
40
|
+
"Tags": "Schema, Humor, Coffee‑themed"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"Slogan": "Annotate and relax — your repository sees everything anyway.",
|
|
44
|
+
"Tags": "Annotations, Chill, Backend"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"Slogan": "We swapped caffeine for decorators — same energy, less crash.",
|
|
48
|
+
"Tags": "Decorators, Humor, Calm"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"Slogan": "When your model metadata is crisp, your dev‑flow is calm.",
|
|
52
|
+
"Tags": "Metadata, DeveloperDX, Calm"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"Slogan": "Decorators: because your code deserves latte art too.",
|
|
56
|
+
"Tags": "Decorators, Coffee‑themed, Fun"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"Slogan": "Mark it up, ship it out, sip your decaf.",
|
|
60
|
+
"Tags": "Decorators, Workflow, Coffee‑themed"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"Slogan": "Relations that don’t tangle your wiring — wired for decaf.",
|
|
64
|
+
"Tags": "Relations, Calm, Decorators"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"Slogan": "Your models don’t need energy drinks; they need annotations.",
|
|
68
|
+
"Tags": "Models, Humor, Decorators"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"Slogan": "From @table to @oneToMany — style your schema like a latte menu.",
|
|
72
|
+
"Tags": "Schema, Decorators, Coffee‑themed"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"Slogan": "Clean decor, clean data, no caffeine crash.",
|
|
76
|
+
"Tags": "Decorators, Calm, Technical"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"Slogan": "Schema decorators with zero jitters and full flavour.",
|
|
80
|
+
"Tags": "Schema, Coffee‑themed, Style"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"Slogan": "Inject metadata, not panic.",
|
|
84
|
+
"Tags": "Metadata, Calm, Developer"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"Slogan": "Your DB model’s fashion statement: decaf cool.",
|
|
88
|
+
"Tags": "Models, Coffee‑themed, Fun"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"Slogan": "Decorators that whisper ‘persist’ instead of shouting ‘error’.",
|
|
92
|
+
"Tags": "Decorators, Calm, Backend"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"Slogan": "Default your columns like you default your brew: easy and chill.",
|
|
96
|
+
"Tags": "Columns, Chill, Coffee‑themed"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"Slogan": "Schema style guide: lean, typed, decaf‑approved.",
|
|
100
|
+
"Tags": "Schema, Developer, Calm"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"Slogan": "When the backend looks good, you feel good. And you didn’t need espresso.",
|
|
104
|
+
"Tags": "Backend, Coffee‑themed, Developer"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"Slogan": "Decorate your data so your queries don’t need adrenaline.",
|
|
108
|
+
"Tags": "Decorators, Calm, Technical"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"Slogan": "Models wear less boilerplate in these threads.",
|
|
112
|
+
"Tags": "Boilerplate, Developer, Decorators"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"Slogan": "Typed metadata + relaxed devs = sustainable stack.",
|
|
116
|
+
"Tags": "Typing, Calm, Developer"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"Slogan": "When your persistence layer is a boutique café, not a nightclub.",
|
|
120
|
+
"Tags": "Metaphor, Persistence, Coffee‑themed"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"Slogan": "Decorators: your model’s barista‑style garnish.",
|
|
124
|
+
"Tags": "Decorators, Fun, Coffee‑themed"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"Slogan": "Mark your fields, relationships and indices — sit back while they sort themselves.",
|
|
128
|
+
"Tags": "Indices, Chill, Backend"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"Slogan": "Your models deserve more than spaghetti; they deserve decaf structure.",
|
|
132
|
+
"Tags": "Models, Humor, Decorators"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"Slogan": "When annotated properly, your repository thanks you.",
|
|
136
|
+
"Tags": "Repository, Developer, Calm"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"Slogan": "Schema metadata: served neat, no sugar‑rush.",
|
|
140
|
+
"Tags": "Schema, Coffee‑themed, Technical"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"Slogan": "Decorators that give your code purpose and your devs pause.",
|
|
144
|
+
"Tags": "Decorators, Calm, Developer"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"Slogan": "Your DB model’s vibe: cozy café, not caffeine chaos.",
|
|
148
|
+
"Tags": "Database, Coffee‑themed, Developer"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"Slogan": "Stop decorating chaos; start decorating clarity.",
|
|
152
|
+
"Tags": "Decorators, Calm, Technical"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"Slogan": "Schema style guide: decaf edition.",
|
|
156
|
+
"Tags": "Schema, Branding, Calm"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"Slogan": "Your code’s annotation lounge — come in, relax, persist.",
|
|
160
|
+
"Tags": "Developer, Calm, Decorators"
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"Slogan": "When your model metadata aligns, your dev day flows.",
|
|
164
|
+
"Tags": "Metadata, Productivity, Calm"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"Slogan": "db‑decorators: Because your data deserves decaf elegance.",
|
|
168
|
+
"Tags": "Decorators, Branding, Coffee‑themed"
|
|
169
|
+
}
|
|
170
|
+
]
|