@decaf-ts/core 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/core.js CHANGED
@@ -1,2 +1,2 @@
1
- import{InjectableRegistryImp as t,Injectables as e,inject as r,injectable as s}from"@decaf-ts/injectable-decorators";import{__decorate as i,__metadata as n}from"tslib";import{BadRequestError as a,InternalError as o,Context as c,DefaultRepositoryFlags as l,OperationKeys as u,Repository as d,wrapMethodWithContext as h,enforceDBDecorators as p,ValidationError as f,DBKeys as g,DefaultSeparator as y,BulkCrudOperationKeys as w,NotFoundError as b,ConflictError as m,onCreateUpdate as v,timestamp as O,onCreate as A,onUpdate as E,onDelete as T,afterAny as N,readonly as _,BaseError as x}from"@decaf-ts/db-decorators";import{Model as D,hashObj as P,required as R,sf as $,ModelKeys as k,ValidationKeys as I,type as C,list as j,model as B}from"@decaf-ts/decorator-validation";import{LoggedClass as L,Logging as M,isClass as F}from"@decaf-ts/logging";import{Metadata as U,Decoration as G,DefaultFlavour as H,DecorationKeys as q,uses as Y,metadata as z,propMetadata as V,apply as Q,prop as W}from"@decaf-ts/decoration";import{Lock as X}from"@decaf-ts/transactional-decorators";var J;function Z(){return(t,e,r)=>{if(!r)throw Error("final decorator can only be used on methods");return r?.configurable&&(r.configurable=!1),r}}(t=>{t.INDEX="index",t.UNIQUE="unique",t.ADAPTER="adapter",t.INJECTABLE="decaf_{0}_adapter_for_{1}",t.TABLE="table",t.COLUMN="column",t.METADATA="__metadata",t.OWNERSHIP="ownership",t.CREATED_BY="ownership.created-by",t.UPDATED_BY="ownership.updated-by",t.RELATIONS="__relations",t.RELATION="relation",t.ONE_TO_ONE="relation.one-to-one",t.ONE_TO_MANY="relation.one-to-many",t.MANY_TO_ONE="relation.many-to-one",t.MANY_TO_MANY="relation.many-to-many",t.POPULATE="populate",t.NO_VALIDATE="no-validate",t.MIGRATION="migration"})(J||(J={}));class K extends a{constructor(t,e=K.name,r=401){super(t,e,r)}}class tt extends K{constructor(t,e=tt.name){super(t,e,403)}}class et extends o{constructor(t){super(t,et.name,503)}}class rt{constructor(){this.observers=[]}count(){return this.observers.length}observe(t,e){if(-1!==this.observers.map(t=>t.observer).indexOf(t))throw new o("Observer already registered");this.observers.push({observer:t,filter:e})}unObserve(t){const e=this.observers.map(t=>t.observer).indexOf(t);if(-1===e)throw new o("Failed to find Observer");this.observers.splice(e,1)}async updateObservers(t,e,r,s,...i){(await Promise.allSettled(this.observers.filter(i=>{const{filter:n}=i;if(!n)return!0;try{return n(e,r,s)}catch(e){return t.error(`Failed to filter observer ${i.observer.toString()}: ${e}`),!1}}).map(t=>{t.observer.refresh(e,r,s,...i)}))).forEach((e,r)=>{"rejected"===e.status&&t.error(`Failed to update observable ${this.observers[r].toString()}: ${e.reason}`)})}}function st(t){if(!(t instanceof D?D.get(t.constructor.name):t))throw new o("Unable to find model "+t);return U.get(t instanceof D?t.constructor:t,J.TABLE)||(t instanceof D?t.constructor.name:t.name)}function it(t,e){return U.get(t instanceof D?t.constructor:t,U.key(J.COLUMN,e))||e}function nt(t,...e){return[st(t),...e].join("_")}class at extends o{constructor(t){super(t,at.name,500)}}class ot extends o{constructor(t,e=ot.name){super(t,e,500)}}class ct extends ot{constructor(t){super(t,ct.name)}}const lt=G.flavourResolver.bind(G);G.flavourResolver=t=>{try{const e=lt(t);if(e&&e!==H)return e;const r="function"==typeof t?t:t?.constructor,s=r&&"function"==typeof U.registeredFlavour?U.registeredFlavour(r):void 0;if(s&&s!==H)return s;const i=ut._currentFlavour;if(i){const t=ut._cache?.[i];return t?.flavour?t.flavour:i}}catch(t){return H}};class ut extends L{static{this._cache={}}get config(){return this._config}get alias(){return this._alias||this.flavour}repository(){if(!ut._baseRepository)throw new o("This should be overridden when necessary. Otherwise it will be replaced lazily");return ut._baseRepository}async shutdownProxies(t){if(this.proxies){if(t&&!(t in this.proxies))throw new o("No proxy found for "+t);if(t)try{await this.proxies[t].shutdown(),delete this.proxies[t]}catch(e){this.log.error(`Failed to shutdown proxied adapter ${t}: ${e}`)}else for(const t in this.proxies){try{await this.proxies[t].shutdown()}catch(e){this.log.error(`Failed to shutdown proxied adapter ${t}: ${e}`);continue}delete this.proxies[t]}}}async shutdown(){await this.shutdownProxies(),this.dispatch&&await this.dispatch.close()}constructor(t,e,r){if(super(),this._config=t,this.flavour=e,this._alias=r,this.Context=c,this.alias in ut._cache)throw new o(`${this.alias} persistence adapter ${this._alias?`(${this.flavour}) `:""} already registered`);ut._cache[this.alias]=this,this.log.info(`Created ${this.alias} persistence adapter ${this._alias?`(${this.flavour}) `:""} persistence adapter`),ut._currentFlavour||(this.log.verbose(`Defined ${this.alias} persistence adapter as current`),ut._currentFlavour=this.alias)}Dispatch(){return new ut._baseDispatch}ObserverHandler(){return new rt}isReserved(t){return!t}async initialize(...t){}async flags(t,e,r,...s){return Object.assign({},l,r,{affectedTables:st(e),writeOperation:t!==u.READ,timestamp:new Date,operation:t,ignoredValidationProperties:U.validationExceptions(e,t)})}async context(t,e,r,...s){this.log.for(this.context).debug(`Creating new context for ${t} operation on ${r.name} model with flag overrides: ${JSON.stringify(e)}`);const i=await this.flags(t,r,e,...s);return(new this.Context).accumulate(i)}prepare(t,e){const r=this.log.for(this.prepare),s=t.toTransient(),i=Object.entries(s.model).reduce((e,[r,s])=>{if(void 0===s)return e;const i=it(t,r);if(this.isReserved(i))throw new o(`Property name ${i} is reserved`);return e[i]=s,e},{});return t[J.METADATA]&&(r.silly("Passing along persistence metadata for "+t[J.METADATA]),Object.defineProperty(i,J.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:t[J.METADATA]})),{record:i,id:t[e],transient:s.transient}}revert(t,e,r,s,i){const n=this.log.for(this.revert),a={};a[r]=s;const c="string"==typeof e?D.build(a,e):new e(a);n.silly(`Rebuilding model ${c.constructor.name} id ${s}`);const l=t[J.METADATA],u=Object.keys(c).reduce((e,s)=>(s===r||(e[s]=t[it(e,s)]),e),c);return i&&(n.verbose("re-adding transient properties: "+Object.keys(i).join(", ")),Object.entries(i).forEach(([t,e])=>{if(t in u)throw new o(`Transient property ${t} already exists on model ${c.constructor.name}. should be impossible`);u[t]=e})),l&&(n.silly(`Passing along ${this.flavour} persistence metadata for ${c.constructor.name} id ${s}: ${l}`),Object.defineProperty(u,J.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:l})),u}async createAll(t,e,r,...s){if(e.length!==r.length)throw new o("Ids and models must have the same length");const i=this.log.for(this.createAll);return i.verbose(`Creating ${e.length} entries ${t} table`),i.debug("pks: "+e),Promise.all(e.map((e,i)=>this.create(t,e,r[i],...s)))}async readAll(t,e,...r){const s=this.log.for(this.readAll);return s.verbose(`Reading ${e.length} entries ${t} table`),s.debug("pks: "+e),Promise.all(e.map(e=>this.read(t,e,...r)))}async updateAll(t,e,r,...s){if(e.length!==r.length)throw new o("Ids and models must have the same length");const i=this.log.for(this.updateAll);return i.verbose(`Updating ${e.length} entries ${t} table`),i.debug("pks: "+e),Promise.all(e.map((e,i)=>this.update(t,e,r[i],...s)))}async deleteAll(t,e,...r){const s=this.log.for(this.createAll);return s.verbose(`Deleting ${e.length} entries ${t} table`),s.debug("pks: "+e),Promise.all(e.map(e=>this.delete(t,e,...r)))}observe(t,e){this.observerHandler||Object.defineProperty(this,"observerHandler",{value:this.ObserverHandler(),writable:!1}),this.observerHandler.observe(t,e),this.log.for(this.observe).verbose("Registering new observer "+t.toString()),this.dispatch||(this.log.for(this.observe).info("Creating dispatch for "+this.alias),this.dispatch=this.Dispatch(),this.dispatch.observe(this))}unObserve(t){if(!this.observerHandler)throw new o("ObserverHandler not initialized. Did you register any observables?");this.observerHandler.unObserve(t),this.log.for(this.unObserve).verbose(`Observer ${t.toString()} removed`)}async updateObservers(t,e,r,...s){if(!this.observerHandler)throw new o("ObserverHandler not initialized. Did you register any observables?");this.log.for(this.updateObservers).verbose(`Updating ${this.observerHandler.count()} observers for adapter ${this.alias}`),await this.observerHandler.updateObservers(this.log,t,e,r,...s)}async refresh(t,e,r,...s){return this.updateObservers(t,e,r,...s)}toString(){return this.flavour+" persistence Adapter"}static flavourOf(t){return U.flavourOf(t)}static get currentFlavour(){if(!ut._currentFlavour)throw new o("No persistence flavour set. Please initialize your adapter");return ut._currentFlavour}static get current(){return ut.get(this.currentFlavour)}static get(t){if(!t)return ut.get(this._currentFlavour);if(t in this._cache)return this._cache[t];throw new o(`No Adapter registered under ${t}.`)}static setCurrent(t){this._currentFlavour=t}static models(t){try{return U.flavouredAs(t)}catch(t){throw new o(t)}}static decoration(){}get client(){return this._client||(this._client=this.getClient()),this._client}for(t,...e){this.proxies||(this.proxies={});const r=`${this.alias} - ${P(t)}`;if(r in this.proxies)return this.proxies[r];let s;const i=new Proxy(this,{get:(e,r,i)=>{if("_config"===r){const s=Reflect.get(e,r,i);return Object.assign({},s,t)}return"_client"===r?s:Reflect.get(e,r,i)},set:(t,e,r,i)=>"_client"===e?(s=r,!0):Reflect.set(t,e,r,i)});return this.proxies[r]=i,i}migrations(){return U.migrationsFor(this)}async migrate(t=this.migrations()){for(const e of t)try{const t=new e;await t.up(this,this,this.log),await t.down(this,this,this.log)}catch(t){throw new ot(t)}}}var dt,ht;i([Z(),n("design:type",Function),n("design:paramtypes",[String]),n("design:returntype",Promise)],ut.prototype,"shutdownProxies",null),i([Z(),n("design:type",Function),n("design:paramtypes",[String,Object,Object,Object]),n("design:returntype",Promise)],ut.prototype,"context",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Object,Function]),n("design:returntype",void 0)],ut.prototype,"observe",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Object]),n("design:returntype",void 0)],ut.prototype,"unObserve",null),i([Z(),n("design:type",Object),n("design:paramtypes",[])],ut.prototype,"client",null),(t=>{t.ASC="asc",t.DSC="desc"})(dt||(dt={})),(t=>{t.CASCADE="cascade",t.NONE="none"})(ht||(ht={}));const pt={update:ht.CASCADE,delete:ht.NONE};class ft{get log(){return this.logger||(this.logger=M.for(this)),this.logger}constructor(t){this.options=t}static pk(t){return nt(t,"pk")}static parseValue(t,e){switch(t){case"Number":return"string"==typeof e?parseInt(e):"number"==typeof e?e:BigInt(e);case"BigInt":return BigInt(e);case void 0:case"String":return e;default:throw new at(`Unsupported sequence type: ${t} for adapter ${this}`)}}}var gt,yt;(t=>{t.EQUAL="EQUAL",t.DIFFERENT="DIFFERENT",t.BIGGER="BIGGER",t.BIGGER_EQ="BIGGER_EQ",t.SMALLER="SMALLER",t.SMALLER_EQ="SMALLER_EQ",t.NOT="NOT",t.IN="IN",t.REGEXP="REGEXP"})(gt||(gt={})),(t=>{t.AND="AND",t.OR="OR"})(yt||(yt={}));class wt extends o{constructor(t){super(t,wt.name,500)}}class bt extends o{constructor(t){super(t,bt.name,500)}}class mt extends D{constructor(t,e,r){super(),this.attr1=void 0,this.operator=void 0,this.comparison=void 0,this.attr1=t,this.operator=e,this.comparison=r}and(t){return mt.and(this,t)}or(t){return mt.or(this,t)}not(t){return new mt(this,gt.NOT,t)}hasErrors(...t){const e=()=>{const t=`Invalid operator ${this.operator}}`;if("string"==typeof this.attr1){if(this.comparison instanceof mt)return{comparison:{condition:"Both sides of the comparison must be of the same type"}};if(-1===Object.values(gt).indexOf(this.operator))return{operator:{condition:t}}}if(this.attr1 instanceof mt){if(!(this.comparison instanceof mt)&&this.operator!==gt.NOT)return{comparison:{condition:t}};if(-1===Object.values(yt).indexOf(this.operator)&&this.operator!==gt.NOT)return{operator:{condition:t}}}},r=super.hasErrors(...t);return this.isAsync()?(async()=>await Promise.resolve(r)??e())():r??e()}static and(t,e){return mt.group(t,yt.AND,e)}static or(t,e){return mt.group(t,yt.OR,e)}static group(t,e,r){return new mt(t,e,r)}static attribute(t){return(new mt.Builder).attribute(t)}static attr(t){return this.attribute(t)}static{this.Builder=class{constructor(){this.attr1=void 0,this.operator=void 0,this.comparison=void 0}attribute(t){return this.attr1=t,this}attr(t){return this.attribute(t)}eq(t){return this.setOp(gt.EQUAL,t)}dif(t){return this.setOp(gt.DIFFERENT,t)}gt(t){return this.setOp(gt.BIGGER,t)}lt(t){return this.setOp(gt.SMALLER,t)}gte(t){return this.setOp(gt.BIGGER_EQ,t)}lte(t){return this.setOp(gt.SMALLER_EQ,t)}in(t){return this.setOp(gt.IN,t)}regexp(t){return this.setOp(gt.REGEXP,RegExp(t).source)}setOp(t,e){return this.operator=t,this.comparison=e,this.build()}build(){try{return new mt(this.attr1,this.operator,this.comparison)}catch(t){throw new wt(t)}}}}static builder(){return new mt.Builder}}i([R(),n("design:type",Object)],mt.prototype,"attr1",void 0),i([R(),n("design:type",String)],mt.prototype,"operator",void 0),i([R(),n("design:type",Object)],mt.prototype,"comparison",void 0);class vt extends d{static{this._cache={}}get log(){return this.logger||(this.logger=this.adapter.log.for(this.toString())),this.logger}get adapter(){if(!this._adapter)throw new o("No adapter found for this repository. did you use the @uses decorator or pass it in the constructor?");return this._adapter}get tableName(){return this._tableName||(this._tableName=vt.table(this.class)),this._tableName}get pkProps(){return super.pkProps}constructor(t,e,...r){super(e),this.observers=[],t&&(this._adapter=t),e&&(vt.register(e,this,this.adapter.alias),t)&&U.get(e,q.FLAVOUR)===H&&Y(t.flavour)(e),[this.createAll,this.readAll,this.updateAll,this.deleteAll].forEach(t=>{const e=t.name;h(this,this[e+"Prefix"],t,this[e+"Suffix"])})}override(t){return this.log.for(this.override).debug("Overriding repository flags with "+JSON.stringify(t)),new Proxy(this,{get:(e,r,s)=>{const i=Reflect.get(e,r,s);return"_overrides"!==r?i:Object.assign({},i,t)}})}for(t,...e){return new Proxy(this,{get:(r,s,i)=>"adapter"===s?this.adapter.for(t,...e):Reflect.get(r,s,i)})}ObserverHandler(){return new rt}async createPrefix(t,...e){const r=await c.args(u.CREATE,this.class,e,this.adapter,this._overrides||{});t=new this.class(t),await p(this,r.context,t,u.CREATE,u.ON);const s=await Promise.resolve(t.hasErrors(...r.context.get("ignoredValidationProperties")||[]));if(s)throw new f(s.toString());return[t,...r.args]}async create(t,...e){let r,{record:s,id:i,transient:n}=this.adapter.prepare(t,this.pk);return s=await this.adapter.create(this.tableName,i,s,...e),e.length&&(r=e[e.length-1]),this.adapter.revert(s,this.class,this.pk,i,r&&r.get("rebuildWithTransient")?n:void 0)}async createSuffix(t,e){return super.createSuffix(t,e)}async createAll(t,...e){if(!t.length)return t;const r=t.map(t=>this.adapter.prepare(t,this.pk)),s=r.map(t=>t.id);let i=r.map(t=>t.record);return i=await this.adapter.createAll(this.tableName,s,i,...e),i.map((t,e)=>this.adapter.revert(t,this.class,this.pk,s[e]))}async createAllPrefix(t,...e){const r=await c.args(u.CREATE,this.class,e,this.adapter,this._overrides||{});if(!t.length)return[t,...r.args];const s=vt.getSequenceOptions(t[0]);let i=[];s.type?(s.name||(s.name=ft.pk(t[0])),i=await(await this.adapter.Sequence(s)).range(t.length)):i=t.map((t,e)=>{if(void 0===t[this.pk])throw new o("Primary key is not defined for model in position "+e);return t[this.pk]}),t=await Promise.all(t.map(async(t,e)=>(t=new this.class(t),s.type&&(t[this.pk]="String"!==s.type||s.generated?i[e]:""+t[this.pk]),await p(this,r.context,t,u.CREATE,u.ON),t)));const n=r.context.get("ignoredValidationProperties")||[],a=(await Promise.all(t.map(t=>Promise.resolve(t.hasErrors(...n))))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(a)throw new f(a);return[t,...r.args]}async readPrefix(t,...e){const r=await c.args(u.READ,this.class,e,this.adapter,this._overrides||{}),s=new this.class;return s[this.pk]=t,await p(this,r.context,s,u.READ,u.ON),[t,...r.args]}async read(t,...e){const r=await this.adapter.read(this.tableName,t,...e);return this.adapter.revert(r,this.class,this.pk,t)}async readAllPrefix(t,...e){const r=await c.args(u.READ,this.class,e,this.adapter,this._overrides||{});return await Promise.all(t.map(async t=>{const e=new this.class;return e[this.pk]=t,p(this,r.context,e,u.READ,u.ON)})),[t,...r.args]}async readAll(t,...e){return(await this.adapter.readAll(this.tableName,t,...e)).map((e,r)=>this.adapter.revert(e,this.class,this.pk,t[r]))}async update(t,...e){let{record:r,id:s,transient:i}=this.adapter.prepare(t,this.pk);return r=await this.adapter.update(this.tableName,s,r,...e),this.adapter.revert(r,this.class,this.pk,s,i)}async updatePrefix(t,...e){const r=await c.args(u.UPDATE,this.class,e,this.adapter,this._overrides||{}),s=t[this.pk];if(!s)throw new o("No value for the Id is defined under the property "+this.pk);const i=await this.read(s,...r.args);t=this.merge(i,t),await p(this,r.context,t,u.UPDATE,u.ON,i);const n=await Promise.resolve(t.hasErrors(i,...vt.relations(this.class),...r.context.get("ignoredValidationProperties")||[]));if(n)throw new f(n.toString());return vt.getMetadata(i)&&(vt.getMetadata(t)||vt.setMetadata(t,vt.getMetadata(i))),[t,...r.args]}async updateAll(t,...e){const r=t.map(t=>this.adapter.prepare(t,this.pk));return(await this.adapter.updateAll(this.tableName,r.map(t=>t.id),r.map(t=>t.record),...e)).map((t,e)=>this.adapter.revert(t,this.class,this.pk,r[e].id))}async updateAllPrefix(t,...e){const r=await c.args(u.UPDATE,this.class,e,this.adapter,this._overrides||{}),s=t.map(t=>{const e=t[this.pk];if(!e)throw new o("missing id on update operation");return e}),i=await this.readAll(s,...r.args);t=t.map((t,e)=>(t=this.merge(i[e],t),vt.getMetadata(i[e])&&(vt.getMetadata(t)||vt.setMetadata(t,vt.getMetadata(i[e]))),t)),await Promise.all(t.map((t,e)=>p(this,r.context,t,u.UPDATE,u.ON,i[e])));const n=r.context.get("ignoredValidationProperties")||[],a=(await Promise.all(t.map((t,e)=>Promise.resolve(t.hasErrors(i[e],t,...n))))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(a)throw new f(a);return t.forEach((t,e)=>{vt.getMetadata(i[e])&&(vt.getMetadata(t)||vt.setMetadata(t,vt.getMetadata(i[e])))}),[t,...r.args]}async deletePrefix(t,...e){const r=await c.args(u.DELETE,this.class,e,this.adapter,this._overrides||{}),s=await this.read(t,...r.args);return await p(this,r.context,s,u.DELETE,u.ON),[t,...r.args]}async delete(t,...e){const r=await this.adapter.delete(this.tableName,t,...e);return this.adapter.revert(r,this.class,this.pk,t)}async deleteAllPrefix(t,...e){const r=await c.args(u.DELETE,this.class,e,this.adapter,this._overrides||{}),s=await this.readAll(t,...r.args);return await Promise.all(s.map(async t=>p(this,r.context,t,u.DELETE,u.ON))),[t,...r.args]}async deleteAll(t,...e){return(await this.adapter.deleteAll(this.tableName,t,...e)).map((e,r)=>this.adapter.revert(e,this.class,this.pk,t[r]))}select(t){return this.adapter.Statement().select(t).from(this.class)}async query(t,e,r=dt.ASC,s,i){const n=[e,r],a=this.select().where(t).orderBy(n);return s&&a.limit(s),i&&a.offset(i),a.execute()}attr(t){return mt.attr(t)}observe(t,e){this.observerHandler||Object.defineProperty(this,"observerHandler",{value:this.ObserverHandler(),writable:!1});const r=this.log.for(this.observe),s=vt.table(this.class);this.adapter.observe(this,t=>s===t),r.verbose(`now observing ${this.adapter} filtering on table === ${s}`),this.observerHandler.observe(t,e),r.verbose("Registered new observer "+t.toString())}unObserve(t){if(!this.observerHandler)throw new o("ObserverHandler not initialized. Did you register any observables?");this.observerHandler.unObserve(t),this.log.for(this.unObserve).verbose(`Observer ${t.toString()} removed`),this.observerHandler.count()||(this.log.verbose(`No more observers registered for ${this.adapter}, unsubscribing`),this.adapter.unObserve(this),this.log.verbose("No longer observing adapter "+this.adapter.flavour))}async updateObservers(t,e,r,...s){if(!this.observerHandler)throw new o("ObserverHandler not initialized. Did you register any observables?");this.log.for(this.updateObservers).verbose(`Updating ${this.observerHandler.count()} observers for ${this}`),await this.observerHandler.updateObservers(this.log,t,e,Array.isArray(r)?r.map(t=>ft.parseValue(this.pkProps?.type,t)):ft.parseValue(this.pkProps?.type,r),...s)}async refresh(t,e,r,...s){return this.updateObservers(t,e,r,...s)}static forModel(t,e,...r){let s;const i=e||U.flavourOf(t)||ut.currentFlavour;try{s=this.get(t,i)}catch(t){s=void 0}if(s instanceof vt)return s;const n=e||U.flavourOf(t)||s&&U.get(s,J.ADAPTER)||ut.currentFlavour,a=n?ut.get(n):void 0;if(!a)throw new o("No registered persistence adapter found flavour "+n);return s=s||a.repository(),new s(a,t,...r)}static get(t,e){const r=vt.table(t);let s=r;if(e&&(s=[r,e].join(y)),s in this._cache)return this._cache[s];if(r in this._cache)return this._cache[r];throw new o("Could not find repository registered under "+r)}static register(t,e,r){let s=vt.table(t);if(r&&(s=[s,r].join(y)),s in this._cache&&this._cache[s]instanceof vt)throw new o(s+" already has a registered instance");this._cache[s]=e}static setMetadata(t,e){Object.defineProperty(t,J.METADATA,{enumerable:!1,configurable:!0,writable:!1,value:e})}static getMetadata(t){const e=Object.getOwnPropertyDescriptor(t,J.METADATA);return e?e.value:void 0}static removeMetadata(t){Object.getOwnPropertyDescriptor(t,J.METADATA)&&delete t[J.METADATA]}static getSequenceOptions(t){const e=D.pk(t.constructor),r=U.key(g.ID,e),s=U.get(t.constructor,r);if(!s)throw new o("No sequence options defined for model. did you use the @pk decorator?");return s}static indexes(t){const e=U.get(t instanceof D?t.constructor:t,J.INDEX);return Object.keys(e||{}).reduce((t,r)=>(t[r]={[J.INDEX]:e[r]},t),{})}static relations(t){return U.relations(t instanceof D?t.constructor:t)||[]}static table(t){return st(t)}static column(t,e){return it(t,e)}}function Ot(t,e){if(!(e||(e=G.flavourResolver(t instanceof D?t.constructor:t))&&e!==H))throw new o("Could not retrieve flavour from model "+(t instanceof D?t.constructor.name:t.name));return $(J.INJECTABLE,e,st(t))}i([Z(),n("design:type",Function),n("design:paramtypes",[Object,Function]),n("design:returntype",void 0)],vt.prototype,"observe",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Object]),n("design:returntype",void 0)],vt.prototype,"unObserve",null),ut&&(ut._baseRepository=vt);class At extends t{get log(){return this.logger||(this.logger=M.for(this)),this.logger}constructor(){super()}get(t,r){const s=this.log.for(this.get);let i;try{i=super.get(t)}catch{}if(!i){let n;if("function"==typeof t?n=t:"symbol"!=typeof t&&"string"!=typeof t||(n=D.get(t.toString())),!n)return;const a=J.ADAPTER,o=r||U.get(n,a);try{let t=o;try{o&&ut.get(o)}catch{const e=ut.current;e&&e.flavour===o&&(t=e.alias)}if(i=vt.forModel(n,t),i instanceof vt)return i;const r=o||U.get(i.constructor,a)||U.get(n,a);e.register(i,Ot(n,r))}catch(t){s.debug("No registered repository or adapter found. falling back to default adapter. Error: "+(t?.message||JSON.stringify(t)));const e=vt.get(n,o);if("function"==typeof e){const t=o?ut.get(o):ut.current;if(!t)return;return new e(t,n)}}}return i}}class Et extends L{constructor(){super()}async initialize(){if(!this.adapter)return void this.log.verbose("No adapter observed for dispatch; skipping initialization");const t=this.adapter;[u.CREATE,u.UPDATE,u.DELETE,w.CREATE_ALL,w.UPDATE_ALL,w.DELETE_ALL].forEach(e=>{if(!t[e])throw new o(`Method ${e} not found in ${t.alias} adapter to bind Observables Dispatch`);let r=Object.getOwnPropertyDescriptor(t,e),s=t;for(;!r&&s!==Object.prototype;)s=Object.getPrototypeOf(s),r=Object.getOwnPropertyDescriptor(s,e);r&&r.writable?t[e]=new Proxy(t[e],{apply:async(t,r,s)=>{const[i,n]=s,a=await t.apply(r,s);return this.updateObservers(i,(t=>{switch(t){case w.CREATE_ALL:return u.CREATE;case w.UPDATE_ALL:return u.UPDATE;case w.DELETE_ALL:return u.DELETE;default:return t}})(e),n).then(()=>{this.log.verbose(`Observer refresh dispatched by ${e} for ${i}`),this.log.debug("pks: "+n)}).catch(t=>this.log.error(`Failed to dispatch observer refresh for ${e} on ${i}: ${t}`)),a}}):this.log.error(`Could not find method ${e} to bind Observables Dispatch`)})}async close(){}observe(t){if(!(t instanceof ut))throw new at("Only Adapters can be observed by dispatch");this.adapter=t,this.models=ut.models(this.adapter.alias),this.initialize().then(()=>this.log.verbose(`Dispatch initialized for ${this.adapter.alias} adapter`))}unObserve(t){if(this.adapter!==t)throw new at("Only the adapter that was used to observe can be unobserved");this.adapter=void 0}async updateObservers(t,e,r){if(this.adapter)try{await this.adapter.refresh(t,e,r)}catch(t){throw new o("Failed to refresh dispatch: "+t)}else this.log.verbose(`No adapter observed for dispatch; skipping observer update for ${t}:${e}`)}}function Tt(t,e,r,s){const i=async function(...t){let s;try{s=await Promise.resolve(r.call(this,...t))}catch(t){if(t instanceof ct)return;throw t}return Promise.resolve(e.apply(this,s))}.bind(t),n=s||e.name;Object.defineProperty(i,"name",{enumerable:!0,configurable:!0,writable:!1,value:n}),t[n]=i}ut&&(ut._baseDispatch=Et);class Nt extends L{constructor(){super(),this.transaction=!0,[this.up,this.down].forEach(t=>{const e=t.name;Tt(this,t,this.prefix(e))})}get adapter(){const t=U.get(this.constructor,J.MIGRATION);if(!t)throw new o("No migration metadata for "+this.constructor.name);const e=t.flavour;return ut.get(e)}async enforceRules(t,e,r){const s=U.get(this.constructor,J.MIGRATION)?.rules;if(!s||!s.length)return!0;let i;for(const n of s)if(i=r.for(n),!await n(t,e,i))return!1;return!0}prefix(t){return async function(e){let r;e instanceof ut?r=this.getQueryRunner(e.client):(r=e,e=this.adapter);const s=this.log.for(t);if(!await this.enforceRules(r,e,s))throw s.verbose(`Skipping migration ${this.constructor.name} due to rules`),new ct("Migration skipped for rule enforcement");return[r,e,s]}.bind(this)}}function _t(t,e){return G.for(J.MIGRATION).define({decorator:(t,e)=>r=>{const s=U.innerGet(Symbol.for(J.MIGRATION),t)||[];return U.set(J.MIGRATION,t,[...s,{class:r}]),z(J.MIGRATION,{flavour:t,rules:e})(r)},args:[t,e]}).apply()}function xt(t,e){return(i,n)=>n?r(t[k.ANCHOR]||t)(i,n):(z(g.REPOSITORY,i.name)(t),e=e||U.get(i.constructor,J.ADAPTER),vt.register(U.constr(t),i,e),s(U.constr(t),{callback:e=>(Object.defineProperty(e,g.CLASS,{enumerable:!1,configurable:!1,writable:!1,value:t}),e)})(i))}U.validationExceptions=((t,e)=>{const r=U.get(t,J.NO_VALIDATE);return r?Object.entries(r).filter(([,t])=>t.includes(e)).map(([t])=>t):[]}).bind(U),D.shouldValidateNestedHandler=((t,e)=>{const r=U.get(t.constructor);if(!r)return!1;const s=r[J.RELATIONS],i=r[J.RELATION];if(Array.isArray(s)&&s?.includes(e)){const r=Object.keys(i)[0],s=D.isPropertyModel(t,e);return i[r]?.class!==s}return!0}).bind(D),U.migrationsFor=(t=>{if(!(t=t??ut.current))throw new o("Could not get adapter for migrations");return U.innerGet(Symbol.for(J.MIGRATION),t.alias).map(t=>t.class)}).bind(U),U.relations=((t,e)=>{const r=U.get(t,J.RELATIONS);if(r){if(!e)return Object.keys(r);if(!r[e])throw new o("No relations metadata found for property "+e);return r[e]}}).bind(U),D.relations=(t,e)=>U.relations(t,e)||[];class St extends o{constructor(t){super(t,St.name,500)}}const Dt={type:void 0,generated:!1,startWith:0,incrementBy:1,cycle:!1},Pt=Dt,Rt={type:"Number",generated:!0,startWith:0,incrementBy:1,cycle:!1},$t=Object.assign({},Rt,{type:"BigInt"});async function kt(t,e,r,s){if(!s){const e=D.get(t.constructor.name);if(!e)throw new o("Could not find model "+t.constructor.name);s=vt.forModel(e,r)}if(void 0===t[s.pk])return s.create(t,e);try{return s.update(t,e)}catch(r){if(!(r instanceof b))throw r;return s.create(t,e)}}async function It(t,e,r,s){const i=s[r];if(!i)return;if("object"!=typeof i){const e=qt(s,r,this.adapter.alias),n=await e.read(i);return await Ut(t,s,r,i,n),void(s[r]=i)}const n=F(e.class)?e.class:e.class();if(!n)throw new o("Could not find model "+e.class);const a=vt.forModel(n,this.adapter.alias),c=await a.create(i),l=D.pk(c);await Ut(t,s,r,c[l],c),s[r]=c[l]}async function Ct(t,e,r,s){const i=s[r];if(!i)return;if(e.cascade.update!==ht.CASCADE)return;if("object"!=typeof i){const e=qt(s,r,this.adapter.alias),n=await e.read(i);return await Ut(t,s,r,i,n),void(s[r]=i)}const n=await kt(s[r],t,this.adapter.alias),a=D.pk(n);await Ut(t,s,r,n[a],n),s[r]=n[a]}async function jt(t,e,r,s){const i=s[r];if(!i)return;if(e.cascade.update!==ht.CASCADE)return;const n=qt(s,r,this.adapter.alias);let a;a=i instanceof D?await n.delete(s[r][n.pk]):await n.delete(s[r]),await Ut(t,s,r,a[n.pk],a)}async function Bt(t,e,r,s){const i=s[r];if(!i||!i.length)return;const n=typeof i[0];if(!i.every(t=>typeof t===n))throw new o(`Invalid operation. All elements of property ${r} must match the same type.`);const a=new Set([...i]);if("object"!==n){const e=qt(s,r,this.adapter.alias);for(const i of a){const n=await e.read(i);await Ut(t,s,r,i,n)}return void(s[r]=[...a])}const c=D.pk(i[0]),l=new Set;for(const e of i){const i=await kt(e,t,this.adapter.alias);await Ut(t,s,r,i[c],i),l.add(i[c])}s[r]=[...l]}async function Lt(t,e,r,s){const{cascade:i}=e;if(i.update===ht.CASCADE)return Bt.call(this,t,e,r,s)}async function Mt(t,e,r,s){if(e.cascade.delete!==ht.CASCADE)return;const i=s[r];if(!i||!i.length)return;const n=typeof i[0];if(!i.every(t=>typeof t===n))throw new o(`Invalid operation. All elements of property ${r} must match the same type.`);const a="object"===n,c=a?vt.forModel(i[0],this.adapter.alias):qt(s,r,this.adapter.alias),l=new Set([...a?i.map(t=>t[c.pk]):i]);for(const e of l.values()){const i=await c.delete(e);await Ut(t,s,r,e,i)}s[r]=[...l]}function Ft(t,e,r){return[J.POPULATE,t,e,r].join(".")}async function Ut(t,e,r,s,i){const n=Ft(e.constructor.name,r,s);return t.accumulate({[n]:i})}async function Gt(t,e,r,s){if(!e.populate)return;const i=s[r],n=Array.isArray(i);if(void 0===i||n&&0===i.length)return;const a=await(async(t,e,r,s,i)=>{let n,a;const c=[];for(const l of s){n=Ft(e.constructor.name,r,l);try{a=await t.get(n)}catch(t){const s=qt(e,r,i);if(!s)throw new o("Could not find repo");a=await s.read(l)}c.push(a)}return c})(t,s,r,n?i:[i],this.adapter.alias);s[r]=n?a:a[0]}const Ht=["array","string","number","boolean","symbol","function","object","undefined","null","bigint"];function qt(t,e,r){if(!t)throw Error("No model was provided to get repository");let s;if(Array.isArray(t[e])||t[e]instanceof Set){const r=U.get(t instanceof D?t.constructor:t,U.key(I.REFLECT,e,I.LIST))?.clazz;if(!r)throw new o("Failed to find types decorators for property "+e);s=(Array.isArray(r)?[...r]:[r]).map(t=>"function"!=typeof t||t.name?t:t())}else s=U.getPropDesignTypes(t instanceof D?t.constructor:t,e)?.designTypes;const i=s?.find(t=>!Ht.includes((""+t.name).toLowerCase()));return vt.forModel(i,r)}function Yt(t){return G.for(J.TABLE).define({decorator:t=>e=>z(J.TABLE,t||e.name.toLowerCase())(e),args:[t]}).apply()}function zt(t){return G.for(J.COLUMN).define({decorator:t=>(e,r)=>V(U.key(J.COLUMN,r),t||r)(e,r),args:[t]}).apply()}function Vt(t,e,r){return G.for(J.INDEX).define({decorator:(t,e,r)=>(s,i)=>("string"==typeof t&&(r=t,t=void 0,e=void 0),"string"==typeof e&&(r=e,e=void 0),!e&&t&&t.find(t=>![dt.ASC,dt.DSC].includes(t))&&(e=t,t=void 0),V(U.key(`${J.INDEX}${e&&e?.length?"."+e.join("."):""}`,i),{directions:t,compositions:e,name:r})(s,i)),args:[t,e,r]}).apply()}async function Qt(t,e,r,s){if(s[r]&&(await this.select().where(mt.attribute(r).eq(s[r])).execute()).length)throw new m(`model already exists with property ${r} equal to ${JSON.stringify(s[r],void 0,2)}`)}function Wt(){const t=J.UNIQUE;return G.for(t).define(v(Qt),V(t,{})).apply()}async function Xt(t,e,r,s){throw new K("This adapter does not support user identification")}function Jt(){const t=J.CREATED_BY;return G.for(t).define({decorator:()=>Q(A(Xt),V(t,{})),args:[]}).apply()}function Zt(){const t=J.UPDATED_BY;return G.for(t).define({decorator:()=>Q(E(Xt),V(t,{})),args:[]}).apply()}function Kt(){return O([u.CREATE])}function te(){return O()}function ee(t,e=pt,r=!0,s,i){const n=J.ONE_TO_ONE;return G.for(n).define({decorator:(t,e,r,s,i)=>{const a={class:t,cascade:e,populate:r};return s&&(a.joinTable=s),i&&(a.name=i),Q(W(),le(n,a),C([t,String,Number,BigInt]),A(It,a),E(Ct,a),T(jt,a),N(Gt,a))},args:[t,e,r,s,i]}).apply()}function re(t,e=pt,r=!0,s,i){const n=J.ONE_TO_MANY;return G.for(n).define({decorator:(t,e,r,s,i)=>{const a={class:t,cascade:e,populate:r};return s&&(a.joinTable=s),i&&(a.name=i),Q(W(),le(n,a),j([t,String,Number,BigInt]),A(Bt,a),E(Lt,a),T(Mt,a),N(Gt,a))},args:[t,e,r,s,i]}).apply()}function se(t,e=pt,r=!0,s,i){const n=J.MANY_TO_ONE;return G.for(n).define({decorator:(t,e,r,s,i)=>{const a={class:t,cascade:e,populate:r};return s&&(a.joinTable=s),i&&(a.name=i),Q(W(),le(n,a),C([t,String,Number,BigInt]))},args:[t,e,r,s,i]}).apply()}function ie(t,e=pt,r=!0,s,i){const n=J.MANY_TO_MANY;return G.for(n).define({decorator:(t,e,r,s,i)=>{const a={class:t,cascade:e,populate:r};return s&&(a.joinTable=s),i&&(a.name=i),Q(W(),le(n,a),j([t,String,Number,BigInt]))},args:[t,e,r,s,i]}).apply()}function ne(...t){return(e,r)=>{const s=U.get(e,U.key(J.NO_VALIDATE,r))||[],i=[...new Set([...s,...t])];return Q(z(U.key(J.NO_VALIDATE,r),i))(e,r)}}function ae(){return ne(u.CREATE)}function oe(){return ne(u.UPDATE)}function ce(){return ne(u.UPDATE,u.CREATE)}function le(t,e){return G.for(J.RELATIONS).define({decorator:(t,e)=>(r,s)=>(V(t,e)(r,s),V(U.key(J.RELATIONS,s),Object.assign({},e,{key:t}))(r,s)),args:[t,e]}).apply()}async function ue(t,e,r,s){if(!e.type||!e.generated||s[r])return;let i;e.name||(e.name=nt(s,"pk"));try{i=await this.adapter.Sequence(e)}catch(t){throw new o(`Failed to instantiate Sequence ${e.name}: ${t}`)}const n=await i.next();Object.defineProperty(s,r,{enumerable:!0,writable:!1,configurable:!0,value:n})}function de(t=Pt){t=Object.assign({},Pt,t,{generated:!(!t.type||void 0!==t.generated)||t.generated||Pt.generated});const e=g.ID;return G.for(e).define({decorator:(t,e)=>(r,s)=>Q(Vt([dt.ASC,dt.DSC]),R(),_(),V(U.key(g.ID,s),t),A(ue,t,e))(r,s),args:[t,{priority:60}]}).apply()}class he extends D{constructor(t){super(t)}}i([Kt(),n("design:type",Date)],he.prototype,"createdOn",void 0),i([te(),n("design:type",Date)],he.prototype,"updatedOn",void 0);class pe extends L{get current(){return this._currentPage}get total(){return this._totalPages}get count(){return this._recordCount}get statement(){return this._statement||(this._statement=this.prepare(this.query)),this._statement}constructor(t,e,r,s){super(),this.adapter=t,this.query=e,this.size=r,this.clazz=s}async next(){return this.page(this.current+1)}async previous(){return this.page(this.current-1)}validatePage(t){if(1>t||!Number.isInteger(t))throw new bt("Page number cannot be under 1 and must be an integer");if(void 0!==this._totalPages&&t>this._totalPages)throw new bt(`Only ${this._totalPages} are available. Cannot go to page ${t}`);return t}}var fe,ge,ye,we,be;class me extends L{constructor(t){super(),this.adapter=t}get log(){return this.adapter.log.for(me)}select(t){return Object.defineProperty(this,"selectSelector",{value:t,writable:!1}),this}distinct(t){return this.distinctSelector=t,this}max(t){return this.maxSelector=t,this}min(t){return this.minSelector=t,this}count(t){return this.countSelector=t,this}from(t){if(this.fromSelector="string"==typeof t?D.get(t):t,!this.fromSelector)throw new wt("Could not find selector model: "+t);return this}where(t){return this.whereCondition=t,this}orderBy(t){return this.orderBySelector=t,this}groupBy(t){return this.groupBySelector=t,this}limit(t){return this.limitSelector=t,this}offset(t){return this.offsetSelector=t,this}async execute(){try{const t=this.build();return await this.raw(t)}catch(t){throw new o(t)}}async raw(t){const e=await this.adapter.raw(t);if(!this.selectSelector)return e;const r=D.pk(this.fromSelector),s=function(t){const e=t[r];return this.adapter.revert(t,this.fromSelector,r,e)}.bind(this);return Array.isArray(e)?e.map(s):s(e)}}i([Z(),n("design:type",Function),n("design:paramtypes",[Array]),n("design:returntype",Object)],me.prototype,"select",null),i([Z(),n("design:type",Function),n("design:paramtypes",["function"==typeof(fe="undefined"!=typeof S&&S)?fe:Object]),n("design:returntype",Object)],me.prototype,"distinct",null),i([Z(),n("design:type",Function),n("design:paramtypes",["function"==typeof(ge="undefined"!=typeof S&&S)?ge:Object]),n("design:returntype",Object)],me.prototype,"max",null),i([Z(),n("design:type",Function),n("design:paramtypes",["function"==typeof(ye="undefined"!=typeof S&&S)?ye:Object]),n("design:returntype",Object)],me.prototype,"min",null),i([Z(),n("design:type",Function),n("design:paramtypes",["function"==typeof(we="undefined"!=typeof S&&S)?we:Object]),n("design:returntype",Object)],me.prototype,"count",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Object]),n("design:returntype",Object)],me.prototype,"from",null),i([Z(),n("design:type",Function),n("design:paramtypes",[mt]),n("design:returntype",Object)],me.prototype,"where",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Array]),n("design:returntype",Object)],me.prototype,"orderBy",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Object]),n("design:returntype",Object)],me.prototype,"groupBy",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Number]),n("design:returntype",Object)],me.prototype,"limit",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Number]),n("design:returntype",Object)],me.prototype,"offset",null),i([Z(),n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",Promise)],me.prototype,"execute",null),(t=>{t.FIND_BY="findBy",t.SELECT="Select",t.AND="And",t.OR="Or",t.GROUP_BY="GroupBy",t.ORDER_BY="OrderBy",t.THEN="Then",t.THEN_BY="ThenBy"})(be||(be={}));const ve={Equals:(t,e)=>mt.attribute(t).eq(e),Diff:(t,e)=>mt.attribute(t).dif(e),LessThan:(t,e)=>mt.attribute(t).lt(e),LessThanEqual:(t,e)=>mt.attribute(t).lte(e),GreaterThan:(t,e)=>mt.attribute(t).gt(e),GreaterThanEqual:(t,e)=>mt.attribute(t).gte(e),Between:(t,e,r)=>mt.attribute(t).gte(e).and(mt.attribute(t).lte(r)),In:(t,e)=>mt.attribute(t).in(e),Matches:(t,e)=>mt.attribute(t).regexp(e)},Oe=t=>t.charAt(0).toLowerCase()+t.slice(1);class Ae{static build(t,...e){if(!t.startsWith(be.FIND_BY))throw Error("Unsupported method "+t);const r=this.extractCore(t),s=this.extractSelect(t),i=this.extractGroupBy(t),n=this.buildWhere(r,e),{orderBy:a,limit:o,offset:c}=this.extractOrderLimitOffset(r,e);return{action:"find",select:s,where:n,groupBy:i,orderBy:a,limit:o,offset:c}}static extractCore(t){const e=t.substring(be.FIND_BY.length),r=e.match(/(Then[A-Z]|OrderBy|GroupBy|Limit|Offset)/);return r?e.substring(0,r.index):e}static extractSelect(t){const e=t.indexOf(be.SELECT);if(-1===e)return;const r=t.substring(e+be.SELECT.length),s=r.match(/(Then[A-Z]|OrderBy|GroupBy|Limit|Offset)/);return(s?r.substring(0,s.index):r).split(be.AND).map(Oe).filter(Boolean)}static extractGroupBy(t){const e=t.indexOf(be.GROUP_BY);if(-1!==e)return t.substring(e+be.GROUP_BY.length).split(be.ORDER_BY)[0].split(be.THEN_BY).map(Oe).filter(Boolean)}static buildWhere(t,e){const r=(t.split(/OrderBy|GroupBy/)[0]||"").split(/And|Or/),s=t.match(/And|Or/g)||[];let i;if(r.forEach((t,r)=>{const{field:n,operator:a}=this.parseFieldAndOperator(t),o=a?ve[a]:ve.Equals;if(!o)throw Error("Unsupported operator "+a);const c=e[r];if(void 0===c)throw Error("Invalid value for field "+n);const l=o(n,c);i=0===r?l:s[r-1]===be.AND?i.and(l):i.or(l)}),!i)throw Error("No conditions found in method name");return i}static parseFieldAndOperator(t){for(const e of Object.keys(ve))if(t.endsWith(e)){const r=t.slice(0,-e.length);return{field:Oe(r),operator:e}}return{field:Oe(t)}}static extractOrderLimitOffset(t,e){const r=t.split(/And|Or/).length,s=e.slice(r);let i,n,a;return s.length>=1&&Array.isArray(s[0])&&(i=s[0]),2>s.length||"number"!=typeof s[1]||(n=s[1]),3>s.length||"number"!=typeof s[2]||(a=s[2]),{orderBy:i,limit:n,offset:a}}}function Ee(t={}){return(e,r,s)=>{const i=r.toString();s.value=function(...e){const{select:r,where:s,groupBy:n,orderBy:a,limit:o,offset:c}=Ae.build(i,...e);let l=this.select(r);s&&(l=l.where(s));const{allowLimit:u,allowOffset:d,allowOrderBy:h,throws:p}={allowLimit:!0,allowOrderBy:!0,allowOffset:!0,throws:!0,...t},f=[{key:"orderBy",value:(a||[])[0],allowed:h},{key:"limit",value:o,allowed:u},{key:"offset",value:c,allowed:d}];for(const t of f)if(void 0!==t.value){if(!t.allowed&&p)throw new wt(t.key[0].toUpperCase()+t.key.slice(1)+" is not allowed for this query");t.allowed&&(l=l[t.key](t.value))}return l.execute()}}}class Te extends pe{constructor(t,e,r,s){super(t,e,r,s)}prepare(t){const e=Object.assign({},t);return e.limit=this.size,e}async page(t=1){const e=this.prepare(this.statement);if(!this._recordCount||!this._totalPages){this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...e,limit:void 0})||[];if(this._recordCount=t.length,this._recordCount>0){const t=e?.limit||this.size;this._totalPages=Math.ceil(this._recordCount/t)}}t=this.validatePage(t),e.skip=(t-1)*this.size;const r=await this.adapter.raw(e);return this._currentPage=t,r}}class Ne extends me{constructor(t){super(t)}getSort(){return(t,e)=>{if(!this.orderBySelector)throw new o("orderBySelector not set. Should be impossible");const r=this.orderBySelector,[s,i]=r,{designType:n}=U.getPropDesignTypes(t.constructor,s);if(!n)throw new wt("type not compatible with sorting: "+n);switch(n.name){case"string":case"String":return("asc"===i?1:-1)*t[s].localeCompare(e[s]);case"number":case"Number":return("asc"===i?1:-1)*(t[s]-e[s]);case"object":case"Object":if(t[s]instanceof Date&&e[s]instanceof Date)return("asc"===i?1:-1)*(t[s].valueOf()-e[s].valueOf());throw new wt("Sorting not supported for not date classes");default:throw new wt("sorting not supported for type "+n)}}}build(){const t={select:this.selectSelector,from:this.fromSelector,where:this.whereCondition?this.parseCondition(this.whereCondition).where:t=>!0,limit:this.limitSelector,skip:this.offsetSelector};return this.orderBySelector&&(t.sort=this.getSort()),t}async paginate(t){try{const e=this.build();return new Te(this.adapter,e,t,this.fromSelector)}catch(t){throw new o(t)}}parseCondition(t){return{where:e=>{const{attr1:r,operator:s,comparison:i}=t;if(-1===[yt.AND,yt.OR,gt.NOT].indexOf(s))switch(s){case gt.BIGGER:return e[r]>i;case gt.BIGGER_EQ:return e[r]>=i;case gt.DIFFERENT:return e[r]!==i;case gt.EQUAL:return e[r]===i;case gt.REGEXP:if("string"!=typeof e[r])throw new wt("Invalid regexp comparison on a non string attribute: "+e[r]);return!!e[r].match(RegExp(i,"g"));case gt.SMALLER:return e[r]<i;case gt.SMALLER_EQ:return e[r]<=i;default:throw new o("Invalid operator for standard comparisons: "+s)}else{if(s===gt.NOT)throw new o("Not implemented");{const t=this.parseCondition(r),n=this.parseCondition(i);switch(s){case yt.AND:return t.where(e)&&n.where(e);case yt.OR:return t.where(e)||n.where(e);default:throw new o("Invalid operator for And/Or comparisons: "+s)}}}}}}}class _e extends c{constructor(){super()}}let xe=class extends he{constructor(t){super(t)}};i([de(),n("design:type",String)],xe.prototype,"id",void 0),i([R(),Vt(),n("design:type",Object)],xe.prototype,"current",void 0),xe=i([Yt("__RamSequence"),B(),n("design:paramtypes",[Object])],xe);class Se extends ft{constructor(t,e){super(t),this.repo=vt.forModel(xe,e.alias)}async current(){const{name:t,startWith:e}=this.options;try{const e=await this.repo.read(t);return this.parse(e.current)}catch(r){if(r instanceof b){if(void 0===e)throw new o("Starting value is not defined for a non existing sequence");try{return this.parse(e)}catch(t){throw new o(`Failed to parse initial value for sequence ${e}: ${t}`)}}throw new o(`Failed to retrieve current value for sequence ${t}: ${r}`)}}parse(t){return ft.parseValue(this.options.type,t)}async increment(t,e){const{type:r,incrementBy:s,name:i}=this.options;let n;const a=e||s;if(a%s!==0)throw new o("Value to increment does not consider the incrementBy setting: "+s);switch(r){case"Number":n=this.parse(t)+a;break;case"BigInt":n=this.parse(t)+BigInt(a);break;case"String":n=this.parse(t);break;default:throw new o("Should never happen")}let c;const l=this.repo.override({ignoredValidationProperties:["updatedOn"]});try{c=await l.update(new xe({id:i,current:n}))}catch(t){if(!(t instanceof b))throw t;c=await l.create(new xe({id:i,current:n}))}return c.current}async next(){const t=await this.current();return this.increment(t)}async range(t){const e=await this.current(),r=this.parse(this.options.incrementBy),s=await this.increment(e,this.parse(t)*r),i=[];for(let s=1;t>=s;s++)i.push(e+r*this.parse(s));if(i[i.length-1]!==s&&"String"!==this.options.type)throw new o("Miscalculation of range");return i}}async function De(t,e,r,s){const i=t.get("UUID");if(!i)throw new at("This adapter does not support user identification");s[r]=i}const Pe="ram";class Re extends ut{constructor(t={},e){super(t,Pe,e),this.Context=_e,this.indexes={},this.lock=new X}repository(){return super.repository()}async flags(t,e,r){return Object.assign(await super.flags(t,e,r),{UUID:this.config.user||""+Date.now()})}Dispatch(){return super.Dispatch()}async index(...t){return Promise.resolve(void 0)}prepare(t,e){const r=super.prepare(t,e);return delete r.record[e],r}revert(t,e,r,s){return super.revert(t,e,r,s)}async create(t,e,r){if(await this.lock.acquire(),this.client.has(t)||this.client.set(t,new Map),this.client.get(t)&&this.client.get(t)?.has(e))throw new m(`Record with id ${e} already exists in table ${t}`);return this.client.get(t)?.set(e,r),this.lock.release(),r}async read(t,e){if(!this.client.has(t))throw new b(`Table ${t} not found`);if(!this.client.get(t)?.has(e))throw new b(`Record with id ${e} not found in table ${t}`);return this.client.get(t)?.get(e)}async update(t,e,r){if(await this.lock.acquire(),!this.client.has(t))throw new b(`Table ${t} not found`);if(!this.client.get(t)?.has(e))throw new b(`Record with id ${e} not found in table ${t}`);return this.client.get(t)?.set(e,r),this.lock.release(),r}async delete(t,e){if(await this.lock.acquire(),!this.client.has(t))throw new b(`Table ${t} not found`);if(!this.client.get(t)?.has(e))throw new b(`Record with id ${e} not found in table ${t}`);const r=this.client.get(t)?.get(e);return this.client.get(t)?.delete(e),this.lock.release(),r}tableFor(t){"string"==typeof t&&(t=D.get(t));const e=vt.table(t);return this.client.has(e)||this.client.set(e,new Map),this.client.get(e)}async raw(t){const{where:e,sort:r,limit:s,skip:i,from:n}=t;let{select:a}=t;const c=this.tableFor(n);if(!c)throw new o(`Table ${n} not found in RamAdapter`);const l=D.pk(n),u=U.get(n,U.key(g.ID,l));let d=Array.from(c.entries()).map(([t,e])=>this.revert(e,n,l,ft.parseValue(u.type,t)));return d=e?d.filter(e):d,r&&(d=d.sort(r)),i&&(d=d.slice(i)),s&&(d=d.slice(0,s)),a&&(a=Array.isArray(a)?a:[a],d=d.map(t=>Object.entries(t).reduce((t,[e,r])=>(a.includes(e)&&(t[e]=r),t),{}))),d}parseError(t){return t instanceof x?t:new o(t)}Statement(){return new Ne(this)}async Sequence(t){return new Se(t,this)}for(t,...e){this.proxies||(this.proxies={});const r=`${this.alias} - ${P(t)}`;if(r in this.proxies)return this.proxies[r];const s=new Proxy(this,{get:(e,r,s)=>{if("_config"===r){const i=Reflect.get(e,r,s);return Object.assign({},i,t)}return Reflect.get(e,r,s)}});return this.proxies[r]=s,s}static decoration(){super.decoration();const t=J.CREATED_BY,e=J.UPDATED_BY;G.flavouredAs(Pe).for(t).define(A(De),V(t,{})).apply(),G.flavouredAs(Pe).for(e).define(v(De),V(e,{})).apply()}getClient(){return new Map}}Re.decoration(),e.setRegistry(new At);const $e="##VERSION##",ke="##PACKAGE##";U.registerLibrary(ke,$e);export{Nt as AbsMigration,ut as Adapter,K as AuthorizationError,he as BaseModel,$t as BigIntSequence,ht as Cascade,mt as Condition,et as ConnectionError,pt as DefaultCascade,Pt as DefaultSequenceOptions,Et as Dispatch,tt as ForbiddenError,yt as GroupOperator,At as InjectablesRegistry,Ae as MethodQueryBuilder,ot as MigrationError,ct as MigrationRuleError,Dt as NoneSequenceOptions,Rt as NumericSequence,St as ObserverError,rt as ObserverHandler,gt as Operator,ve as OperatorsMap,dt as OrderDirection,ke as PACKAGE_NAME,pe as Paginator,bt as PagingError,J as PersistenceKeys,be as QueryClause,wt as QueryError,Re as RamAdapter,_e as RamContext,Pe as RamFlavour,Te as RamPaginator,Se as RamSequence,xe as RamSequenceModel,Ne as RamStatement,vt as Repository,ft as Sequence,me as Statement,at as UnsupportedError,$e as VERSION,Ut as cacheModelForPopulate,zt as column,kt as createOrUpdate,Kt as createdAt,Jt as createdBy,Xt as createdByOnCreateUpdate,De as createdByOnRamCreateUpdate,Z as final,Ot as generateInjectableNameForRepository,it as getColumnName,Ft as getPopulateKey,st as getTableName,Vt as index,ie as manyToMany,se as manyToOne,_t as migration,ne as noValidateOn,ae as noValidateOnCreate,ce as noValidateOnCreateUpdate,oe as noValidateOnUpdate,re as oneToMany,Bt as oneToManyOnCreate,Mt as oneToManyOnDelete,Lt as oneToManyOnUpdate,ee as oneToOne,It as oneToOneOnCreate,jt as oneToOneOnDelete,Ct as oneToOneOnUpdate,de as pk,ue as pkOnCreate,Gt as populate,Tt as prefixMethod,Ee as query,le as relation,xt as repository,qt as repositoryFromTypeMetadata,nt as sequenceNameForModel,Yt as table,Wt as unique,Qt as uniqueOnCreateUpdate,te as updatedAt,Zt as updatedBy};
1
+ import{InjectableRegistryImp as t,Injectables as e,inject as r,injectable as s}from"@decaf-ts/injectable-decorators";import{__decorate as i,__metadata as n}from"tslib";import{BadRequestError as a,InternalError as o,Context as c,DefaultRepositoryFlags as l,OperationKeys as u,Repository as d,wrapMethodWithContext as h,enforceDBDecorators as p,ValidationError as f,DBKeys as g,DefaultSeparator as y,BulkCrudOperationKeys as w,NotFoundError as b,ConflictError as m,onCreateUpdate as v,timestamp as O,onCreate as A,onUpdate as E,onDelete as T,afterAny as N,readonly as _,BaseError as x}from"@decaf-ts/db-decorators";import{Model as D,hashObj as P,required as R,sf as $,ModelKeys as k,ValidationKeys as I,type as C,list as j,model as B}from"@decaf-ts/decorator-validation";import{LoggedClass as L,Logging as M,isClass as F}from"@decaf-ts/logging";import{Metadata as U,Decoration as G,DefaultFlavour as H,DecorationKeys as q,uses as Y,metadata as z,propMetadata as V,apply as Q,prop as W}from"@decaf-ts/decoration";import{Lock as X}from"@decaf-ts/transactional-decorators";var J;function Z(){return(t,e,r)=>{if(!r)throw Error("final decorator can only be used on methods");return r?.configurable&&(r.configurable=!1),r}}(t=>{t.INDEX="index",t.UNIQUE="unique",t.ADAPTER="adapter",t.INJECTABLE="decaf_{0}_adapter_for_{1}",t.TABLE="table",t.COLUMN="column",t.METADATA="__metadata",t.OWNERSHIP="ownership",t.CREATED_BY="ownership.created-by",t.UPDATED_BY="ownership.updated-by",t.RELATIONS="__relations",t.RELATION="relation",t.ONE_TO_ONE="relation.one-to-one",t.ONE_TO_MANY="relation.one-to-many",t.MANY_TO_ONE="relation.many-to-one",t.MANY_TO_MANY="relation.many-to-many",t.POPULATE="populate",t.NO_VALIDATE="no-validate",t.MIGRATION="migration"})(J||(J={}));class K extends a{constructor(t,e=K.name,r=401){super(t,e,r)}}class tt extends K{constructor(t,e=tt.name){super(t,e,403)}}class et extends o{constructor(t){super(t,et.name,503)}}class rt{constructor(){this.observers=[]}count(){return this.observers.length}observe(t,e){if(-1!==this.observers.map(t=>t.observer).indexOf(t))throw new o("Observer already registered");this.observers.push({observer:t,filter:e})}unObserve(t){const e=this.observers.map(t=>t.observer).indexOf(t);if(-1===e)throw new o("Failed to find Observer");this.observers.splice(e,1)}async updateObservers(t,e,r,s,...i){(await Promise.allSettled(this.observers.filter(i=>{const{filter:n}=i;if(!n)return!0;try{return n(e,r,s)}catch(e){return t.error(`Failed to filter observer ${i.observer.toString()}: ${e}`),!1}}).map(t=>{t.observer.refresh(e,r,s,...i)}))).forEach((e,r)=>{"rejected"===e.status&&t.error(`Failed to update observable ${this.observers[r].toString()}: ${e.reason}`)})}}function st(t){if(!(t instanceof D?D.get(t.constructor.name):t))throw new o("Unable to find model "+t);return U.get(t instanceof D?t.constructor:t,J.TABLE)||(t instanceof D?t.constructor.name:t.name)}function it(t,e){return U.get(t instanceof D?t.constructor:t,U.key(J.COLUMN,e))||e}function nt(t,...e){return[st(t),...e].join("_")}class at extends o{constructor(t){super(t,at.name,500)}}class ot extends o{constructor(t,e=ot.name){super(t,e,500)}}class ct extends ot{constructor(t){super(t,ct.name)}}const lt=G.flavourResolver.bind(G);G.flavourResolver=t=>{try{const e=lt(t);if(e&&e!==H)return e;const r="function"==typeof t?t:t?.constructor,s=r&&"function"==typeof U.registeredFlavour?U.registeredFlavour(r):void 0;if(s&&s!==H)return s;const i=ut._currentFlavour;if(i){const t=ut._cache?.[i];return t?.flavour?t.flavour:i}}catch(t){return H}};class ut extends L{static{this._cache={}}get config(){return this._config}get alias(){return this._alias||this.flavour}repository(){if(!ut._baseRepository)throw new o("This should be overridden when necessary. Otherwise it will be replaced lazily");return ut._baseRepository}async shutdownProxies(t){if(this.proxies){if(t&&!(t in this.proxies))throw new o("No proxy found for "+t);if(t)try{await this.proxies[t].shutdown(),delete this.proxies[t]}catch(e){this.log.error(`Failed to shutdown proxied adapter ${t}: ${e}`)}else for(const t in this.proxies){try{await this.proxies[t].shutdown()}catch(e){this.log.error(`Failed to shutdown proxied adapter ${t}: ${e}`);continue}delete this.proxies[t]}}}async shutdown(){await this.shutdownProxies(),this.dispatch&&await this.dispatch.close()}constructor(t,e,r){if(super(),this._config=t,this.flavour=e,this._alias=r,this.Context=c,this.alias in ut._cache)throw new o(`${this.alias} persistence adapter ${this._alias?`(${this.flavour}) `:""} already registered`);ut._cache[this.alias]=this,this.log.info(`Created ${this.alias} persistence adapter ${this._alias?`(${this.flavour}) `:""} persistence adapter`),ut._currentFlavour||(this.log.verbose(`Defined ${this.alias} persistence adapter as current`),ut._currentFlavour=this.alias)}Dispatch(){return new ut._baseDispatch}ObserverHandler(){return new rt}isReserved(t){return!t}async initialize(...t){}async flags(t,e,r,...s){return Object.assign({},l,r,{affectedTables:st(e),writeOperation:t!==u.READ,timestamp:new Date,operation:t,ignoredValidationProperties:U.validationExceptions(e,t)})}async context(t,e,r,...s){this.log.for(this.context).debug(`Creating new context for ${t} operation on ${r.name} model with flag overrides: ${JSON.stringify(e)}`);const i=await this.flags(t,r,e,...s);return(new this.Context).accumulate(i)}prepare(t,e){const r=this.log.for(this.prepare),s=t.segregate(),i=Object.entries(s.model).reduce((e,[r,s])=>{if(void 0===s)return e;const i=it(t,r);if(this.isReserved(i))throw new o(`Property name ${i} is reserved`);return e[i]=s,e},{});return t[J.METADATA]&&(r.silly("Passing along persistence metadata for "+t[J.METADATA]),Object.defineProperty(i,J.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:t[J.METADATA]})),{record:i,id:t[e],transient:s.transient}}revert(t,e,r,s,i){const n=this.log.for(this.revert),a={};a[r]=s;const c="string"==typeof e?D.build(a,e):new e(a);n.silly(`Rebuilding model ${c.constructor.name} id ${s}`);const l=t[J.METADATA],u=Object.keys(c).reduce((e,s)=>(s===r||(e[s]=t[it(e,s)]),e),c);return i&&(n.verbose("re-adding transient properties: "+Object.keys(i).join(", ")),Object.entries(i).forEach(([t,e])=>{if(t in u)throw new o(`Transient property ${t} already exists on model ${c.constructor.name}. should be impossible`);u[t]=e})),l&&(n.silly(`Passing along ${this.flavour} persistence metadata for ${c.constructor.name} id ${s}: ${l}`),Object.defineProperty(u,J.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:l})),u}async createAll(t,e,r,...s){if(e.length!==r.length)throw new o("Ids and models must have the same length");const i=this.log.for(this.createAll);return i.verbose(`Creating ${e.length} entries ${t} table`),i.debug("pks: "+e),Promise.all(e.map((e,i)=>this.create(t,e,r[i],...s)))}async readAll(t,e,...r){const s=this.log.for(this.readAll);return s.verbose(`Reading ${e.length} entries ${t} table`),s.debug("pks: "+e),Promise.all(e.map(e=>this.read(t,e,...r)))}async updateAll(t,e,r,...s){if(e.length!==r.length)throw new o("Ids and models must have the same length");const i=this.log.for(this.updateAll);return i.verbose(`Updating ${e.length} entries ${t} table`),i.debug("pks: "+e),Promise.all(e.map((e,i)=>this.update(t,e,r[i],...s)))}async deleteAll(t,e,...r){const s=this.log.for(this.createAll);return s.verbose(`Deleting ${e.length} entries ${t} table`),s.debug("pks: "+e),Promise.all(e.map(e=>this.delete(t,e,...r)))}observe(t,e){this.observerHandler||Object.defineProperty(this,"observerHandler",{value:this.ObserverHandler(),writable:!1}),this.observerHandler.observe(t,e),this.log.for(this.observe).verbose("Registering new observer "+t.toString()),this.dispatch||(this.log.for(this.observe).info("Creating dispatch for "+this.alias),this.dispatch=this.Dispatch(),this.dispatch.observe(this))}unObserve(t){if(!this.observerHandler)throw new o("ObserverHandler not initialized. Did you register any observables?");this.observerHandler.unObserve(t),this.log.for(this.unObserve).verbose(`Observer ${t.toString()} removed`)}async updateObservers(t,e,r,...s){if(!this.observerHandler)throw new o("ObserverHandler not initialized. Did you register any observables?");this.log.for(this.updateObservers).verbose(`Updating ${this.observerHandler.count()} observers for adapter ${this.alias}`),await this.observerHandler.updateObservers(this.log,t,e,r,...s)}async refresh(t,e,r,...s){return this.updateObservers(t,e,r,...s)}toString(){return this.flavour+" persistence Adapter"}static flavourOf(t){return U.flavourOf(t)}static get currentFlavour(){if(!ut._currentFlavour)throw new o("No persistence flavour set. Please initialize your adapter");return ut._currentFlavour}static get current(){return ut.get(this.currentFlavour)}static get(t){if(!t)return ut.get(this._currentFlavour);if(t in this._cache)return this._cache[t];throw new o(`No Adapter registered under ${t}.`)}static setCurrent(t){this._currentFlavour=t}static models(t){try{return U.flavouredAs(t)}catch(t){throw new o(t)}}static decoration(){}get client(){return this._client||(this._client=this.getClient()),this._client}for(t,...e){this.proxies||(this.proxies={});const r=`${this.alias} - ${P(t)}`;if(r in this.proxies)return this.proxies[r];let s;const i=new Proxy(this,{get:(e,r,i)=>{if("_config"===r){const s=Reflect.get(e,r,i);return Object.assign({},s,t)}return"_client"===r?s:Reflect.get(e,r,i)},set:(t,e,r,i)=>"_client"===e?(s=r,!0):Reflect.set(t,e,r,i)});return this.proxies[r]=i,i}migrations(){return U.migrationsFor(this)}async migrate(t=this.migrations()){for(const e of t)try{const t=new e;await t.up(this,this,this.log),await t.down(this,this,this.log)}catch(t){throw new ot(t)}}}var dt,ht;i([Z(),n("design:type",Function),n("design:paramtypes",[String]),n("design:returntype",Promise)],ut.prototype,"shutdownProxies",null),i([Z(),n("design:type",Function),n("design:paramtypes",[String,Object,Object,Object]),n("design:returntype",Promise)],ut.prototype,"context",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Object,Function]),n("design:returntype",void 0)],ut.prototype,"observe",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Object]),n("design:returntype",void 0)],ut.prototype,"unObserve",null),i([Z(),n("design:type",Object),n("design:paramtypes",[])],ut.prototype,"client",null),(t=>{t.ASC="asc",t.DSC="desc"})(dt||(dt={})),(t=>{t.CASCADE="cascade",t.NONE="none"})(ht||(ht={}));const pt={update:ht.CASCADE,delete:ht.NONE};class ft{get log(){return this.logger||(this.logger=M.for(this)),this.logger}constructor(t){this.options=t}static pk(t){return nt(t,"pk")}static parseValue(t,e){switch(t){case"Number":return"string"==typeof e?parseInt(e):"number"==typeof e?e:BigInt(e);case"BigInt":return BigInt(e);case void 0:case"String":return e;default:throw new at(`Unsupported sequence type: ${t} for adapter ${this}`)}}}var gt,yt;(t=>{t.EQUAL="EQUAL",t.DIFFERENT="DIFFERENT",t.BIGGER="BIGGER",t.BIGGER_EQ="BIGGER_EQ",t.SMALLER="SMALLER",t.SMALLER_EQ="SMALLER_EQ",t.NOT="NOT",t.IN="IN",t.REGEXP="REGEXP"})(gt||(gt={})),(t=>{t.AND="AND",t.OR="OR"})(yt||(yt={}));class wt extends o{constructor(t){super(t,wt.name,500)}}class bt extends o{constructor(t){super(t,bt.name,500)}}class mt extends D{constructor(t,e,r){super(),this.attr1=void 0,this.operator=void 0,this.comparison=void 0,this.attr1=t,this.operator=e,this.comparison=r}and(t){return mt.and(this,t)}or(t){return mt.or(this,t)}not(t){return new mt(this,gt.NOT,t)}hasErrors(...t){const e=()=>{const t=`Invalid operator ${this.operator}}`;if("string"==typeof this.attr1){if(this.comparison instanceof mt)return{comparison:{condition:"Both sides of the comparison must be of the same type"}};if(-1===Object.values(gt).indexOf(this.operator))return{operator:{condition:t}}}if(this.attr1 instanceof mt){if(!(this.comparison instanceof mt)&&this.operator!==gt.NOT)return{comparison:{condition:t}};if(-1===Object.values(yt).indexOf(this.operator)&&this.operator!==gt.NOT)return{operator:{condition:t}}}},r=super.hasErrors(...t);return this.isAsync()?(async()=>await Promise.resolve(r)??e())():r??e()}static and(t,e){return mt.group(t,yt.AND,e)}static or(t,e){return mt.group(t,yt.OR,e)}static group(t,e,r){return new mt(t,e,r)}static attribute(t){return(new mt.Builder).attribute(t)}static attr(t){return this.attribute(t)}static{this.Builder=class{constructor(){this.attr1=void 0,this.operator=void 0,this.comparison=void 0}attribute(t){return this.attr1=t,this}attr(t){return this.attribute(t)}eq(t){return this.setOp(gt.EQUAL,t)}dif(t){return this.setOp(gt.DIFFERENT,t)}gt(t){return this.setOp(gt.BIGGER,t)}lt(t){return this.setOp(gt.SMALLER,t)}gte(t){return this.setOp(gt.BIGGER_EQ,t)}lte(t){return this.setOp(gt.SMALLER_EQ,t)}in(t){return this.setOp(gt.IN,t)}regexp(t){return this.setOp(gt.REGEXP,RegExp(t).source)}setOp(t,e){return this.operator=t,this.comparison=e,this.build()}build(){try{return new mt(this.attr1,this.operator,this.comparison)}catch(t){throw new wt(t)}}}}static builder(){return new mt.Builder}}i([R(),n("design:type",Object)],mt.prototype,"attr1",void 0),i([R(),n("design:type",String)],mt.prototype,"operator",void 0),i([R(),n("design:type",Object)],mt.prototype,"comparison",void 0);class vt extends d{static{this._cache={}}get log(){return this.logger||(this.logger=this.adapter.log.for(this.toString())),this.logger}get adapter(){if(!this._adapter)throw new o("No adapter found for this repository. did you use the @uses decorator or pass it in the constructor?");return this._adapter}get tableName(){return this._tableName||(this._tableName=vt.table(this.class)),this._tableName}get pkProps(){return super.pkProps}constructor(t,e,...r){super(e),this.observers=[],t&&(this._adapter=t),e&&(vt.register(e,this,this.adapter.alias),t)&&U.get(e,q.FLAVOUR)===H&&Y(t.flavour)(e),[this.createAll,this.readAll,this.updateAll,this.deleteAll].forEach(t=>{const e=t.name;h(this,this[e+"Prefix"],t,this[e+"Suffix"])})}override(t){return this.log.for(this.override).debug("Overriding repository flags with "+JSON.stringify(t)),new Proxy(this,{get:(e,r,s)=>{const i=Reflect.get(e,r,s);return"_overrides"!==r?i:Object.assign({},i,t)}})}for(t,...e){return new Proxy(this,{get:(r,s,i)=>"adapter"===s?this.adapter.for(t,...e):Reflect.get(r,s,i)})}ObserverHandler(){return new rt}async createPrefix(t,...e){const r=await c.args(u.CREATE,this.class,e,this.adapter,this._overrides||{});t=new this.class(t),await p(this,r.context,t,u.CREATE,u.ON);const s=await Promise.resolve(t.hasErrors(...r.context.get("ignoredValidationProperties")||[]));if(s)throw new f(s.toString());return[t,...r.args]}async create(t,...e){let r,{record:s,id:i,transient:n}=this.adapter.prepare(t,this.pk);return s=await this.adapter.create(this.tableName,i,s,...e),e.length&&(r=e[e.length-1]),this.adapter.revert(s,this.class,this.pk,i,r&&r.get("rebuildWithTransient")?n:void 0)}async createSuffix(t,e){return super.createSuffix(t,e)}async createAll(t,...e){if(!t.length)return t;const r=t.map(t=>this.adapter.prepare(t,this.pk)),s=r.map(t=>t.id);let i=r.map(t=>t.record);return i=await this.adapter.createAll(this.tableName,s,i,...e),i.map((t,e)=>this.adapter.revert(t,this.class,this.pk,s[e]))}async createAllPrefix(t,...e){const r=await c.args(u.CREATE,this.class,e,this.adapter,this._overrides||{});if(!t.length)return[t,...r.args];const s=vt.getSequenceOptions(t[0]);let i=[];s.type?(s.name||(s.name=ft.pk(t[0])),i=await(await this.adapter.Sequence(s)).range(t.length)):i=t.map((t,e)=>{if(void 0===t[this.pk])throw new o("Primary key is not defined for model in position "+e);return t[this.pk]}),t=await Promise.all(t.map(async(t,e)=>(t=new this.class(t),s.type&&(t[this.pk]="String"!==s.type||s.generated?i[e]:""+t[this.pk]),await p(this,r.context,t,u.CREATE,u.ON),t)));const n=r.context.get("ignoredValidationProperties")||[],a=(await Promise.all(t.map(t=>Promise.resolve(t.hasErrors(...n))))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(a)throw new f(a);return[t,...r.args]}async readPrefix(t,...e){const r=await c.args(u.READ,this.class,e,this.adapter,this._overrides||{}),s=new this.class;return s[this.pk]=t,await p(this,r.context,s,u.READ,u.ON),[t,...r.args]}async read(t,...e){const r=await this.adapter.read(this.tableName,t,...e);return this.adapter.revert(r,this.class,this.pk,t)}async readAllPrefix(t,...e){const r=await c.args(u.READ,this.class,e,this.adapter,this._overrides||{});return await Promise.all(t.map(async t=>{const e=new this.class;return e[this.pk]=t,p(this,r.context,e,u.READ,u.ON)})),[t,...r.args]}async readAll(t,...e){return(await this.adapter.readAll(this.tableName,t,...e)).map((e,r)=>this.adapter.revert(e,this.class,this.pk,t[r]))}async update(t,...e){let{record:r,id:s,transient:i}=this.adapter.prepare(t,this.pk);return r=await this.adapter.update(this.tableName,s,r,...e),this.adapter.revert(r,this.class,this.pk,s,i)}async updatePrefix(t,...e){const r=await c.args(u.UPDATE,this.class,e,this.adapter,this._overrides||{}),s=t[this.pk];if(!s)throw new o("No value for the Id is defined under the property "+this.pk);const i=await this.read(s,...r.args);t=this.merge(i,t),await p(this,r.context,t,u.UPDATE,u.ON,i);const n=await Promise.resolve(t.hasErrors(i,...vt.relations(this.class),...r.context.get("ignoredValidationProperties")||[]));if(n)throw new f(n.toString());return vt.getMetadata(i)&&(vt.getMetadata(t)||vt.setMetadata(t,vt.getMetadata(i))),[t,...r.args]}async updateAll(t,...e){const r=t.map(t=>this.adapter.prepare(t,this.pk));return(await this.adapter.updateAll(this.tableName,r.map(t=>t.id),r.map(t=>t.record),...e)).map((t,e)=>this.adapter.revert(t,this.class,this.pk,r[e].id))}async updateAllPrefix(t,...e){const r=await c.args(u.UPDATE,this.class,e,this.adapter,this._overrides||{}),s=t.map(t=>{const e=t[this.pk];if(!e)throw new o("missing id on update operation");return e}),i=await this.readAll(s,...r.args);t=t.map((t,e)=>(t=this.merge(i[e],t),vt.getMetadata(i[e])&&(vt.getMetadata(t)||vt.setMetadata(t,vt.getMetadata(i[e]))),t)),await Promise.all(t.map((t,e)=>p(this,r.context,t,u.UPDATE,u.ON,i[e])));const n=r.context.get("ignoredValidationProperties")||[],a=(await Promise.all(t.map((t,e)=>Promise.resolve(t.hasErrors(i[e],t,...n))))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(a)throw new f(a);return t.forEach((t,e)=>{vt.getMetadata(i[e])&&(vt.getMetadata(t)||vt.setMetadata(t,vt.getMetadata(i[e])))}),[t,...r.args]}async deletePrefix(t,...e){const r=await c.args(u.DELETE,this.class,e,this.adapter,this._overrides||{}),s=await this.read(t,...r.args);return await p(this,r.context,s,u.DELETE,u.ON),[t,...r.args]}async delete(t,...e){const r=await this.adapter.delete(this.tableName,t,...e);return this.adapter.revert(r,this.class,this.pk,t)}async deleteAllPrefix(t,...e){const r=await c.args(u.DELETE,this.class,e,this.adapter,this._overrides||{}),s=await this.readAll(t,...r.args);return await Promise.all(s.map(async t=>p(this,r.context,t,u.DELETE,u.ON))),[t,...r.args]}async deleteAll(t,...e){return(await this.adapter.deleteAll(this.tableName,t,...e)).map((e,r)=>this.adapter.revert(e,this.class,this.pk,t[r]))}select(t){return this.adapter.Statement().select(t).from(this.class)}async query(t,e,r=dt.ASC,s,i){const n=[e,r],a=this.select().where(t).orderBy(n);return s&&a.limit(s),i&&a.offset(i),a.execute()}attr(t){return mt.attr(t)}observe(t,e){this.observerHandler||Object.defineProperty(this,"observerHandler",{value:this.ObserverHandler(),writable:!1});const r=this.log.for(this.observe),s=vt.table(this.class);this.adapter.observe(this,t=>s===t),r.verbose(`now observing ${this.adapter} filtering on table === ${s}`),this.observerHandler.observe(t,e),r.verbose("Registered new observer "+t.toString())}unObserve(t){if(!this.observerHandler)throw new o("ObserverHandler not initialized. Did you register any observables?");this.observerHandler.unObserve(t),this.log.for(this.unObserve).verbose(`Observer ${t.toString()} removed`),this.observerHandler.count()||(this.log.verbose(`No more observers registered for ${this.adapter}, unsubscribing`),this.adapter.unObserve(this),this.log.verbose("No longer observing adapter "+this.adapter.flavour))}async updateObservers(t,e,r,...s){if(!this.observerHandler)throw new o("ObserverHandler not initialized. Did you register any observables?");this.log.for(this.updateObservers).verbose(`Updating ${this.observerHandler.count()} observers for ${this}`),await this.observerHandler.updateObservers(this.log,t,e,Array.isArray(r)?r.map(t=>ft.parseValue(this.pkProps?.type,t)):ft.parseValue(this.pkProps?.type,r),...s)}async refresh(t,e,r,...s){return this.updateObservers(t,e,r,...s)}static forModel(t,e,...r){let s;const i=e||U.flavourOf(t)||ut.currentFlavour;try{s=this.get(t,i)}catch(t){s=void 0}if(s instanceof vt)return s;const n=e||U.flavourOf(t)||s&&U.get(s,J.ADAPTER)||ut.currentFlavour,a=n?ut.get(n):void 0;if(!a)throw new o("No registered persistence adapter found flavour "+n);return s=s||a.repository(),new s(a,t,...r)}static get(t,e){const r=vt.table(t);let s=r;if(e&&(s=[r,e].join(y)),s in this._cache)return this._cache[s];if(r in this._cache)return this._cache[r];throw new o("Could not find repository registered under "+r)}static register(t,e,r){let s=vt.table(t);if(r&&(s=[s,r].join(y)),s in this._cache&&this._cache[s]instanceof vt)throw new o(s+" already has a registered instance");this._cache[s]=e}static setMetadata(t,e){Object.defineProperty(t,J.METADATA,{enumerable:!1,configurable:!0,writable:!1,value:e})}static getMetadata(t){const e=Object.getOwnPropertyDescriptor(t,J.METADATA);return e?e.value:void 0}static removeMetadata(t){Object.getOwnPropertyDescriptor(t,J.METADATA)&&delete t[J.METADATA]}static getSequenceOptions(t){const e=D.pk(t.constructor),r=U.key(g.ID,e),s=U.get(t.constructor,r);if(!s)throw new o("No sequence options defined for model. did you use the @pk decorator?");return s}static indexes(t){const e=U.get(t instanceof D?t.constructor:t,J.INDEX);return Object.keys(e||{}).reduce((t,r)=>(t[r]={[J.INDEX]:e[r]},t),{})}static relations(t){return U.relations(t instanceof D?t.constructor:t)||[]}static table(t){return st(t)}static column(t,e){return it(t,e)}}function Ot(t,e){if(!(e||(e=G.flavourResolver(t instanceof D?t.constructor:t))&&e!==H))throw new o("Could not retrieve flavour from model "+(t instanceof D?t.constructor.name:t.name));return $(J.INJECTABLE,e,st(t))}i([Z(),n("design:type",Function),n("design:paramtypes",[Object,Function]),n("design:returntype",void 0)],vt.prototype,"observe",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Object]),n("design:returntype",void 0)],vt.prototype,"unObserve",null),ut&&(ut._baseRepository=vt);class At extends t{get log(){return this.logger||(this.logger=M.for(this)),this.logger}constructor(){super()}get(t,r){const s=this.log.for(this.get);let i;try{i=super.get(t)}catch{}if(!i){let n;if("function"==typeof t?n=t:"symbol"!=typeof t&&"string"!=typeof t||(n=D.get(t.toString())),!n)return;const a=J.ADAPTER,o=r||U.get(n,a);try{let t=o;try{o&&ut.get(o)}catch{const e=ut.current;e&&e.flavour===o&&(t=e.alias)}if(i=vt.forModel(n,t),i instanceof vt)return i;const r=o||U.get(i.constructor,a)||U.get(n,a);e.register(i,Ot(n,r))}catch(t){s.debug("No registered repository or adapter found. falling back to default adapter. Error: "+(t?.message||JSON.stringify(t)));const e=vt.get(n,o);if("function"==typeof e){const t=o?ut.get(o):ut.current;if(!t)return;return new e(t,n)}}}return i}}class Et extends L{constructor(){super()}async initialize(){if(!this.adapter)return void this.log.verbose("No adapter observed for dispatch; skipping initialization");const t=this.adapter;[u.CREATE,u.UPDATE,u.DELETE,w.CREATE_ALL,w.UPDATE_ALL,w.DELETE_ALL].forEach(e=>{if(!t[e])throw new o(`Method ${e} not found in ${t.alias} adapter to bind Observables Dispatch`);let r=Object.getOwnPropertyDescriptor(t,e),s=t;for(;!r&&s!==Object.prototype;)s=Object.getPrototypeOf(s),r=Object.getOwnPropertyDescriptor(s,e);r&&r.writable?t[e]=new Proxy(t[e],{apply:async(t,r,s)=>{const[i,n]=s,a=await t.apply(r,s);return this.updateObservers(i,(t=>{switch(t){case w.CREATE_ALL:return u.CREATE;case w.UPDATE_ALL:return u.UPDATE;case w.DELETE_ALL:return u.DELETE;default:return t}})(e),n).then(()=>{this.log.verbose(`Observer refresh dispatched by ${e} for ${i}`),this.log.debug("pks: "+n)}).catch(t=>this.log.error(`Failed to dispatch observer refresh for ${e} on ${i}: ${t}`)),a}}):this.log.error(`Could not find method ${e} to bind Observables Dispatch`)})}async close(){}observe(t){if(!(t instanceof ut))throw new at("Only Adapters can be observed by dispatch");this.adapter=t,this.models=ut.models(this.adapter.alias),this.initialize().then(()=>this.log.verbose(`Dispatch initialized for ${this.adapter.alias} adapter`))}unObserve(t){if(this.adapter!==t)throw new at("Only the adapter that was used to observe can be unobserved");this.adapter=void 0}async updateObservers(t,e,r){if(this.adapter)try{await this.adapter.refresh(t,e,r)}catch(t){throw new o("Failed to refresh dispatch: "+t)}else this.log.verbose(`No adapter observed for dispatch; skipping observer update for ${t}:${e}`)}}function Tt(t,e,r,s){const i=async function(...t){let s;try{s=await Promise.resolve(r.call(this,...t))}catch(t){if(t instanceof ct)return;throw t}return Promise.resolve(e.apply(this,s))}.bind(t),n=s||e.name;Object.defineProperty(i,"name",{enumerable:!0,configurable:!0,writable:!1,value:n}),t[n]=i}ut&&(ut._baseDispatch=Et);class Nt extends L{constructor(){super(),this.transaction=!0,[this.up,this.down].forEach(t=>{const e=t.name;Tt(this,t,this.prefix(e))})}get adapter(){const t=U.get(this.constructor,J.MIGRATION);if(!t)throw new o("No migration metadata for "+this.constructor.name);const e=t.flavour;return ut.get(e)}async enforceRules(t,e,r){const s=U.get(this.constructor,J.MIGRATION)?.rules;if(!s||!s.length)return!0;let i;for(const n of s)if(i=r.for(n),!await n(t,e,i))return!1;return!0}prefix(t){return async function(e){let r;e instanceof ut?r=this.getQueryRunner(e.client):(r=e,e=this.adapter);const s=this.log.for(t);if(!await this.enforceRules(r,e,s))throw s.verbose(`Skipping migration ${this.constructor.name} due to rules`),new ct("Migration skipped for rule enforcement");return[r,e,s]}.bind(this)}}function _t(t,e){return G.for(J.MIGRATION).define({decorator:(t,e)=>r=>{const s=U.innerGet(Symbol.for(J.MIGRATION),t)||[];return U.set(J.MIGRATION,t,[...s,{class:r}]),z(J.MIGRATION,{flavour:t,rules:e})(r)},args:[t,e]}).apply()}function xt(t,e){return(i,n)=>n?r(t[k.ANCHOR]||t)(i,n):(z(g.REPOSITORY,i.name)(t),e=e||U.get(i.constructor,J.ADAPTER),vt.register(U.constr(t),i,e),s(U.constr(t),{callback:e=>(Object.defineProperty(e,g.CLASS,{enumerable:!1,configurable:!1,writable:!1,value:t}),e)})(i))}U.validationExceptions=((t,e)=>{const r=U.get(t,J.NO_VALIDATE);return r?Object.entries(r).filter(([,t])=>t.includes(e)).map(([t])=>t):[]}).bind(U),D.shouldValidateNestedHandler=((t,e)=>{const r=U.get(t.constructor);if(!r)return!1;const s=r[J.RELATIONS],i=r[J.RELATION];if(Array.isArray(s)&&s?.includes(e)){const r=Object.keys(i)[0],s=D.isPropertyModel(t,e);return i[r]?.class!==s}return!0}).bind(D),U.migrationsFor=(t=>{if(!(t=t??ut.current))throw new o("Could not get adapter for migrations");return U.innerGet(Symbol.for(J.MIGRATION),t.alias).map(t=>t.class)}).bind(U),U.relations=((t,e)=>{const r=U.get(t,J.RELATIONS);if(r){if(!e)return Object.keys(r);if(!r[e])throw new o("No relations metadata found for property "+e);return r[e]}}).bind(U),D.relations=(t,e)=>U.relations(t,e)||[];class St extends o{constructor(t){super(t,St.name,500)}}const Dt={type:void 0,generated:!1,startWith:0,incrementBy:1,cycle:!1},Pt=Dt,Rt={type:"Number",generated:!0,startWith:0,incrementBy:1,cycle:!1},$t=Object.assign({},Rt,{type:"BigInt"});async function kt(t,e,r,s){if(!s){const e=D.get(t.constructor.name);if(!e)throw new o("Could not find model "+t.constructor.name);s=vt.forModel(e,r)}if(void 0===t[s.pk])return s.create(t,e);try{return s.update(t,e)}catch(r){if(!(r instanceof b))throw r;return s.create(t,e)}}async function It(t,e,r,s){const i=s[r];if(!i)return;if("object"!=typeof i){const e=qt(s,r,this.adapter.alias),n=await e.read(i);return await Ut(t,s,r,i,n),void(s[r]=i)}const n=F(e.class)?e.class:e.class();if(!n)throw new o("Could not find model "+e.class);const a=vt.forModel(n,this.adapter.alias),c=await a.create(i),l=D.pk(c);await Ut(t,s,r,c[l],c),s[r]=c[l]}async function Ct(t,e,r,s){const i=s[r];if(!i)return;if(e.cascade.update!==ht.CASCADE)return;if("object"!=typeof i){const e=qt(s,r,this.adapter.alias),n=await e.read(i);return await Ut(t,s,r,i,n),void(s[r]=i)}const n=await kt(s[r],t,this.adapter.alias),a=D.pk(n);await Ut(t,s,r,n[a],n),s[r]=n[a]}async function jt(t,e,r,s){const i=s[r];if(!i)return;if(e.cascade.update!==ht.CASCADE)return;const n=qt(s,r,this.adapter.alias);let a;a=i instanceof D?await n.delete(s[r][n.pk]):await n.delete(s[r]),await Ut(t,s,r,a[n.pk],a)}async function Bt(t,e,r,s){const i=s[r];if(!i||!i.length)return;const n=typeof i[0];if(!i.every(t=>typeof t===n))throw new o(`Invalid operation. All elements of property ${r} must match the same type.`);const a=new Set([...i]);if("object"!==n){const e=qt(s,r,this.adapter.alias);for(const i of a){const n=await e.read(i);await Ut(t,s,r,i,n)}return void(s[r]=[...a])}const c=D.pk(i[0]),l=new Set;for(const e of i){const i=await kt(e,t,this.adapter.alias);await Ut(t,s,r,i[c],i),l.add(i[c])}s[r]=[...l]}async function Lt(t,e,r,s){const{cascade:i}=e;if(i.update===ht.CASCADE)return Bt.call(this,t,e,r,s)}async function Mt(t,e,r,s){if(e.cascade.delete!==ht.CASCADE)return;const i=s[r];if(!i||!i.length)return;const n=typeof i[0];if(!i.every(t=>typeof t===n))throw new o(`Invalid operation. All elements of property ${r} must match the same type.`);const a="object"===n,c=a?vt.forModel(i[0],this.adapter.alias):qt(s,r,this.adapter.alias),l=new Set([...a?i.map(t=>t[c.pk]):i]);for(const e of l.values()){const i=await c.delete(e);await Ut(t,s,r,e,i)}s[r]=[...l]}function Ft(t,e,r){return[J.POPULATE,t,e,r].join(".")}async function Ut(t,e,r,s,i){const n=Ft(e.constructor.name,r,s);return t.accumulate({[n]:i})}async function Gt(t,e,r,s){if(!e.populate)return;const i=s[r],n=Array.isArray(i);if(void 0===i||n&&0===i.length)return;const a=await(async(t,e,r,s,i)=>{let n,a;const c=[];for(const l of s){n=Ft(e.constructor.name,r,l);try{a=await t.get(n)}catch(t){const s=qt(e,r,i);if(!s)throw new o("Could not find repo");a=await s.read(l)}c.push(a)}return c})(t,s,r,n?i:[i],this.adapter.alias);s[r]=n?a:a[0]}const Ht=["array","string","number","boolean","symbol","function","object","undefined","null","bigint"];function qt(t,e,r){if(!t)throw Error("No model was provided to get repository");let s;if(Array.isArray(t[e])||t[e]instanceof Set){const r=U.get(t instanceof D?t.constructor:t,U.key(I.REFLECT,e,I.LIST))?.clazz;if(!r)throw new o("Failed to find types decorators for property "+e);s=(Array.isArray(r)?[...r]:[r]).map(t=>"function"!=typeof t||t.name?t:t())}else s=U.getPropDesignTypes(t instanceof D?t.constructor:t,e)?.designTypes;const i=s?.find(t=>!Ht.includes((""+t.name).toLowerCase()));return vt.forModel(i,r)}function Yt(t){return G.for(J.TABLE).define({decorator:t=>e=>z(J.TABLE,t||e.name.toLowerCase())(e),args:[t]}).apply()}function zt(t){return G.for(J.COLUMN).define({decorator:t=>(e,r)=>V(U.key(J.COLUMN,r),t||r)(e,r),args:[t]}).apply()}function Vt(t,e,r){return G.for(J.INDEX).define({decorator:(t,e,r)=>(s,i)=>("string"==typeof t&&(r=t,t=void 0,e=void 0),"string"==typeof e&&(r=e,e=void 0),!e&&t&&t.find(t=>![dt.ASC,dt.DSC].includes(t))&&(e=t,t=void 0),V(U.key(`${J.INDEX}${e&&e?.length?"."+e.join("."):""}`,i),{directions:t,compositions:e,name:r})(s,i)),args:[t,e,r]}).apply()}async function Qt(t,e,r,s){if(s[r]&&(await this.select().where(mt.attribute(r).eq(s[r])).execute()).length)throw new m(`model already exists with property ${r} equal to ${JSON.stringify(s[r],void 0,2)}`)}function Wt(){const t=J.UNIQUE;return G.for(t).define(v(Qt),V(t,{})).apply()}async function Xt(t,e,r,s){throw new K("This adapter does not support user identification")}function Jt(){const t=J.CREATED_BY;return G.for(t).define({decorator:()=>Q(A(Xt),V(t,{})),args:[]}).apply()}function Zt(){const t=J.UPDATED_BY;return G.for(t).define({decorator:()=>Q(E(Xt),V(t,{})),args:[]}).apply()}function Kt(){return O([u.CREATE])}function te(){return O()}function ee(t,e=pt,r=!0,s,i){const n=J.ONE_TO_ONE;return G.for(n).define({decorator:(t,e,r,s,i)=>{const a={class:t,cascade:e,populate:r};return s&&(a.joinTable=s),i&&(a.name=i),Q(W(),le(n,a),C([t,String,Number,BigInt]),A(It,a),E(Ct,a),T(jt,a),N(Gt,a))},args:[t,e,r,s,i]}).apply()}function re(t,e=pt,r=!0,s,i){const n=J.ONE_TO_MANY;return G.for(n).define({decorator:(t,e,r,s,i)=>{const a={class:t,cascade:e,populate:r};return s&&(a.joinTable=s),i&&(a.name=i),Q(W(),le(n,a),j([t,String,Number,BigInt]),A(Bt,a),E(Lt,a),T(Mt,a),N(Gt,a))},args:[t,e,r,s,i]}).apply()}function se(t,e=pt,r=!0,s,i){const n=J.MANY_TO_ONE;return G.for(n).define({decorator:(t,e,r,s,i)=>{const a={class:t,cascade:e,populate:r};return s&&(a.joinTable=s),i&&(a.name=i),Q(W(),le(n,a),C([t,String,Number,BigInt]))},args:[t,e,r,s,i]}).apply()}function ie(t,e=pt,r=!0,s,i){const n=J.MANY_TO_MANY;return G.for(n).define({decorator:(t,e,r,s,i)=>{const a={class:t,cascade:e,populate:r};return s&&(a.joinTable=s),i&&(a.name=i),Q(W(),le(n,a),j([t,String,Number,BigInt]))},args:[t,e,r,s,i]}).apply()}function ne(...t){return(e,r)=>{const s=U.get(e,U.key(J.NO_VALIDATE,r))||[],i=[...new Set([...s,...t])];return Q(z(U.key(J.NO_VALIDATE,r),i))(e,r)}}function ae(){return ne(u.CREATE)}function oe(){return ne(u.UPDATE)}function ce(){return ne(u.UPDATE,u.CREATE)}function le(t,e){return G.for(J.RELATIONS).define({decorator:(t,e)=>(r,s)=>(V(t,e)(r,s),V(U.key(J.RELATIONS,s),Object.assign({},e,{key:t}))(r,s)),args:[t,e]}).apply()}async function ue(t,e,r,s){if(!e.type||!e.generated||s[r])return;let i;e.name||(e.name=nt(s,"pk"));try{i=await this.adapter.Sequence(e)}catch(t){throw new o(`Failed to instantiate Sequence ${e.name}: ${t}`)}const n=await i.next();Object.defineProperty(s,r,{enumerable:!0,writable:!1,configurable:!0,value:n})}function de(t=Pt){t=Object.assign({},Pt,t,{generated:!(!t.type||void 0!==t.generated)||t.generated||Pt.generated});const e=g.ID;return G.for(e).define({decorator:(t,e)=>(r,s)=>Q(Vt([dt.ASC,dt.DSC]),R(),_(),V(U.key(g.ID,s),t),A(ue,t,e))(r,s),args:[t,{priority:60}]}).apply()}class he extends D{constructor(t){super(t)}}i([Kt(),n("design:type",Date)],he.prototype,"createdOn",void 0),i([te(),n("design:type",Date)],he.prototype,"updatedOn",void 0);class pe extends L{get current(){return this._currentPage}get total(){return this._totalPages}get count(){return this._recordCount}get statement(){return this._statement||(this._statement=this.prepare(this.query)),this._statement}constructor(t,e,r,s){super(),this.adapter=t,this.query=e,this.size=r,this.clazz=s}async next(){return this.page(this.current+1)}async previous(){return this.page(this.current-1)}validatePage(t){if(1>t||!Number.isInteger(t))throw new bt("Page number cannot be under 1 and must be an integer");if(void 0!==this._totalPages&&t>this._totalPages)throw new bt(`Only ${this._totalPages} are available. Cannot go to page ${t}`);return t}}var fe,ge,ye,we,be;class me extends L{constructor(t){super(),this.adapter=t}get log(){return this.adapter.log.for(me)}select(t){return Object.defineProperty(this,"selectSelector",{value:t,writable:!1}),this}distinct(t){return this.distinctSelector=t,this}max(t){return this.maxSelector=t,this}min(t){return this.minSelector=t,this}count(t){return this.countSelector=t,this}from(t){if(this.fromSelector="string"==typeof t?D.get(t):t,!this.fromSelector)throw new wt("Could not find selector model: "+t);return this}where(t){return this.whereCondition=t,this}orderBy(t){return this.orderBySelector=t,this}groupBy(t){return this.groupBySelector=t,this}limit(t){return this.limitSelector=t,this}offset(t){return this.offsetSelector=t,this}async execute(){try{const t=this.build();return await this.raw(t)}catch(t){throw new o(t)}}async raw(t){const e=await this.adapter.raw(t);if(!this.selectSelector)return e;const r=D.pk(this.fromSelector),s=function(t){const e=t[r];return this.adapter.revert(t,this.fromSelector,r,e)}.bind(this);return Array.isArray(e)?e.map(s):s(e)}}i([Z(),n("design:type",Function),n("design:paramtypes",[Array]),n("design:returntype",Object)],me.prototype,"select",null),i([Z(),n("design:type",Function),n("design:paramtypes",["function"==typeof(fe="undefined"!=typeof S&&S)?fe:Object]),n("design:returntype",Object)],me.prototype,"distinct",null),i([Z(),n("design:type",Function),n("design:paramtypes",["function"==typeof(ge="undefined"!=typeof S&&S)?ge:Object]),n("design:returntype",Object)],me.prototype,"max",null),i([Z(),n("design:type",Function),n("design:paramtypes",["function"==typeof(ye="undefined"!=typeof S&&S)?ye:Object]),n("design:returntype",Object)],me.prototype,"min",null),i([Z(),n("design:type",Function),n("design:paramtypes",["function"==typeof(we="undefined"!=typeof S&&S)?we:Object]),n("design:returntype",Object)],me.prototype,"count",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Object]),n("design:returntype",Object)],me.prototype,"from",null),i([Z(),n("design:type",Function),n("design:paramtypes",[mt]),n("design:returntype",Object)],me.prototype,"where",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Array]),n("design:returntype",Object)],me.prototype,"orderBy",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Object]),n("design:returntype",Object)],me.prototype,"groupBy",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Number]),n("design:returntype",Object)],me.prototype,"limit",null),i([Z(),n("design:type",Function),n("design:paramtypes",[Number]),n("design:returntype",Object)],me.prototype,"offset",null),i([Z(),n("design:type",Function),n("design:paramtypes",[]),n("design:returntype",Promise)],me.prototype,"execute",null),(t=>{t.FIND_BY="findBy",t.SELECT="Select",t.AND="And",t.OR="Or",t.GROUP_BY="GroupBy",t.ORDER_BY="OrderBy",t.THEN="Then",t.THEN_BY="ThenBy"})(be||(be={}));const ve={Equals:(t,e)=>mt.attribute(t).eq(e),Diff:(t,e)=>mt.attribute(t).dif(e),LessThan:(t,e)=>mt.attribute(t).lt(e),LessThanEqual:(t,e)=>mt.attribute(t).lte(e),GreaterThan:(t,e)=>mt.attribute(t).gt(e),GreaterThanEqual:(t,e)=>mt.attribute(t).gte(e),Between:(t,e,r)=>mt.attribute(t).gte(e).and(mt.attribute(t).lte(r)),In:(t,e)=>mt.attribute(t).in(e),Matches:(t,e)=>mt.attribute(t).regexp(e)},Oe=t=>t.charAt(0).toLowerCase()+t.slice(1);class Ae{static build(t,...e){if(!t.startsWith(be.FIND_BY))throw Error("Unsupported method "+t);const r=this.extractCore(t),s=this.extractSelect(t),i=this.extractGroupBy(t),n=this.buildWhere(r,e),{orderBy:a,limit:o,offset:c}=this.extractOrderLimitOffset(r,e);return{action:"find",select:s,where:n,groupBy:i,orderBy:a,limit:o,offset:c}}static extractCore(t){const e=t.substring(be.FIND_BY.length),r=e.match(/(Then[A-Z]|OrderBy|GroupBy|Limit|Offset)/);return r?e.substring(0,r.index):e}static extractSelect(t){const e=t.indexOf(be.SELECT);if(-1===e)return;const r=t.substring(e+be.SELECT.length),s=r.match(/(Then[A-Z]|OrderBy|GroupBy|Limit|Offset)/);return(s?r.substring(0,s.index):r).split(be.AND).map(Oe).filter(Boolean)}static extractGroupBy(t){const e=t.indexOf(be.GROUP_BY);if(-1!==e)return t.substring(e+be.GROUP_BY.length).split(be.ORDER_BY)[0].split(be.THEN_BY).map(Oe).filter(Boolean)}static buildWhere(t,e){const r=(t.split(/OrderBy|GroupBy/)[0]||"").split(/And|Or/),s=t.match(/And|Or/g)||[];let i;if(r.forEach((t,r)=>{const{field:n,operator:a}=this.parseFieldAndOperator(t),o=a?ve[a]:ve.Equals;if(!o)throw Error("Unsupported operator "+a);const c=e[r];if(void 0===c)throw Error("Invalid value for field "+n);const l=o(n,c);i=0===r?l:s[r-1]===be.AND?i.and(l):i.or(l)}),!i)throw Error("No conditions found in method name");return i}static parseFieldAndOperator(t){for(const e of Object.keys(ve))if(t.endsWith(e)){const r=t.slice(0,-e.length);return{field:Oe(r),operator:e}}return{field:Oe(t)}}static extractOrderLimitOffset(t,e){const r=t.split(/And|Or/).length,s=e.slice(r);let i,n,a;return s.length>=1&&Array.isArray(s[0])&&(i=s[0]),2>s.length||"number"!=typeof s[1]||(n=s[1]),3>s.length||"number"!=typeof s[2]||(a=s[2]),{orderBy:i,limit:n,offset:a}}}function Ee(t={}){return(e,r,s)=>{const i=r.toString();s.value=function(...e){const{select:r,where:s,groupBy:n,orderBy:a,limit:o,offset:c}=Ae.build(i,...e);let l=this.select(r);s&&(l=l.where(s));const{allowLimit:u,allowOffset:d,allowOrderBy:h,throws:p}={allowLimit:!0,allowOrderBy:!0,allowOffset:!0,throws:!0,...t},f=[{key:"orderBy",value:(a||[])[0],allowed:h},{key:"limit",value:o,allowed:u},{key:"offset",value:c,allowed:d}];for(const t of f)if(void 0!==t.value){if(!t.allowed&&p)throw new wt(t.key[0].toUpperCase()+t.key.slice(1)+" is not allowed for this query");t.allowed&&(l=l[t.key](t.value))}return l.execute()}}}class Te extends pe{constructor(t,e,r,s){super(t,e,r,s)}prepare(t){const e=Object.assign({},t);return e.limit=this.size,e}async page(t=1){const e=this.prepare(this.statement);if(!this._recordCount||!this._totalPages){this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...e,limit:void 0})||[];if(this._recordCount=t.length,this._recordCount>0){const t=e?.limit||this.size;this._totalPages=Math.ceil(this._recordCount/t)}}t=this.validatePage(t),e.skip=(t-1)*this.size;const r=await this.adapter.raw(e);return this._currentPage=t,r}}class Ne extends me{constructor(t){super(t)}getSort(){return(t,e)=>{if(!this.orderBySelector)throw new o("orderBySelector not set. Should be impossible");const r=this.orderBySelector,[s,i]=r,{designType:n}=U.getPropDesignTypes(t.constructor,s);if(!n)throw new wt("type not compatible with sorting: "+n);switch(n.name){case"string":case"String":return("asc"===i?1:-1)*t[s].localeCompare(e[s]);case"number":case"Number":return("asc"===i?1:-1)*(t[s]-e[s]);case"object":case"Object":if(t[s]instanceof Date&&e[s]instanceof Date)return("asc"===i?1:-1)*(t[s].valueOf()-e[s].valueOf());throw new wt("Sorting not supported for not date classes");default:throw new wt("sorting not supported for type "+n)}}}build(){const t={select:this.selectSelector,from:this.fromSelector,where:this.whereCondition?this.parseCondition(this.whereCondition).where:t=>!0,limit:this.limitSelector,skip:this.offsetSelector};return this.orderBySelector&&(t.sort=this.getSort()),t}async paginate(t){try{const e=this.build();return new Te(this.adapter,e,t,this.fromSelector)}catch(t){throw new o(t)}}parseCondition(t){return{where:e=>{const{attr1:r,operator:s,comparison:i}=t;if(-1===[yt.AND,yt.OR,gt.NOT].indexOf(s))switch(s){case gt.BIGGER:return e[r]>i;case gt.BIGGER_EQ:return e[r]>=i;case gt.DIFFERENT:return e[r]!==i;case gt.EQUAL:return e[r]===i;case gt.REGEXP:if("string"!=typeof e[r])throw new wt("Invalid regexp comparison on a non string attribute: "+e[r]);return!!e[r].match(RegExp(i,"g"));case gt.SMALLER:return e[r]<i;case gt.SMALLER_EQ:return e[r]<=i;default:throw new o("Invalid operator for standard comparisons: "+s)}else{if(s===gt.NOT)throw new o("Not implemented");{const t=this.parseCondition(r),n=this.parseCondition(i);switch(s){case yt.AND:return t.where(e)&&n.where(e);case yt.OR:return t.where(e)||n.where(e);default:throw new o("Invalid operator for And/Or comparisons: "+s)}}}}}}}class _e extends c{constructor(){super()}}let xe=class extends he{constructor(t){super(t)}};i([de(),n("design:type",String)],xe.prototype,"id",void 0),i([R(),Vt(),n("design:type",Object)],xe.prototype,"current",void 0),xe=i([Yt("__RamSequence"),B(),n("design:paramtypes",[Object])],xe);class Se extends ft{constructor(t,e){super(t),this.repo=vt.forModel(xe,e.alias)}async current(){const{name:t,startWith:e}=this.options;try{const e=await this.repo.read(t);return this.parse(e.current)}catch(r){if(r instanceof b){if(void 0===e)throw new o("Starting value is not defined for a non existing sequence");try{return this.parse(e)}catch(t){throw new o(`Failed to parse initial value for sequence ${e}: ${t}`)}}throw new o(`Failed to retrieve current value for sequence ${t}: ${r}`)}}parse(t){return ft.parseValue(this.options.type,t)}async increment(t,e){const{type:r,incrementBy:s,name:i}=this.options;let n;const a=e||s;if(a%s!==0)throw new o("Value to increment does not consider the incrementBy setting: "+s);switch(r){case"Number":n=this.parse(t)+a;break;case"BigInt":n=this.parse(t)+BigInt(a);break;case"String":n=this.parse(t);break;default:throw new o("Should never happen")}let c;const l=this.repo.override({ignoredValidationProperties:["updatedOn"]});try{c=await l.update(new xe({id:i,current:n}))}catch(t){if(!(t instanceof b))throw t;c=await l.create(new xe({id:i,current:n}))}return c.current}async next(){const t=await this.current();return this.increment(t)}async range(t){const e=await this.current(),r=this.parse(this.options.incrementBy),s=await this.increment(e,this.parse(t)*r),i=[];for(let s=1;t>=s;s++)i.push(e+r*this.parse(s));if(i[i.length-1]!==s&&"String"!==this.options.type)throw new o("Miscalculation of range");return i}}async function De(t,e,r,s){const i=t.get("UUID");if(!i)throw new at("This adapter does not support user identification");s[r]=i}const Pe="ram";class Re extends ut{constructor(t={},e){super(t,Pe,e),this.Context=_e,this.indexes={},this.lock=new X}repository(){return super.repository()}async flags(t,e,r){return Object.assign(await super.flags(t,e,r),{UUID:this.config.user||""+Date.now()})}Dispatch(){return super.Dispatch()}async index(...t){return Promise.resolve(void 0)}prepare(t,e){const r=super.prepare(t,e);return delete r.record[e],r}revert(t,e,r,s){return super.revert(t,e,r,s)}async create(t,e,r){if(await this.lock.acquire(),this.client.has(t)||this.client.set(t,new Map),this.client.get(t)&&this.client.get(t)?.has(e))throw new m(`Record with id ${e} already exists in table ${t}`);return this.client.get(t)?.set(e,r),this.lock.release(),r}async read(t,e){if(!this.client.has(t))throw new b(`Table ${t} not found`);if(!this.client.get(t)?.has(e))throw new b(`Record with id ${e} not found in table ${t}`);return this.client.get(t)?.get(e)}async update(t,e,r){if(await this.lock.acquire(),!this.client.has(t))throw new b(`Table ${t} not found`);if(!this.client.get(t)?.has(e))throw new b(`Record with id ${e} not found in table ${t}`);return this.client.get(t)?.set(e,r),this.lock.release(),r}async delete(t,e){if(await this.lock.acquire(),!this.client.has(t))throw new b(`Table ${t} not found`);if(!this.client.get(t)?.has(e))throw new b(`Record with id ${e} not found in table ${t}`);const r=this.client.get(t)?.get(e);return this.client.get(t)?.delete(e),this.lock.release(),r}tableFor(t){"string"==typeof t&&(t=D.get(t));const e=vt.table(t);return this.client.has(e)||this.client.set(e,new Map),this.client.get(e)}async raw(t){const{where:e,sort:r,limit:s,skip:i,from:n}=t;let{select:a}=t;const c=this.tableFor(n);if(!c)throw new o(`Table ${n} not found in RamAdapter`);const l=D.pk(n),u=U.get(n,U.key(g.ID,l));let d=Array.from(c.entries()).map(([t,e])=>this.revert(e,n,l,ft.parseValue(u.type,t)));return d=e?d.filter(e):d,r&&(d=d.sort(r)),i&&(d=d.slice(i)),s&&(d=d.slice(0,s)),a&&(a=Array.isArray(a)?a:[a],d=d.map(t=>Object.entries(t).reduce((t,[e,r])=>(a.includes(e)&&(t[e]=r),t),{}))),d}parseError(t){return t instanceof x?t:new o(t)}Statement(){return new Ne(this)}async Sequence(t){return new Se(t,this)}for(t,...e){this.proxies||(this.proxies={});const r=`${this.alias} - ${P(t)}`;if(r in this.proxies)return this.proxies[r];const s=new Proxy(this,{get:(e,r,s)=>{if("_config"===r){const i=Reflect.get(e,r,s);return Object.assign({},i,t)}return Reflect.get(e,r,s)}});return this.proxies[r]=s,s}static decoration(){super.decoration();const t=J.CREATED_BY,e=J.UPDATED_BY;G.flavouredAs(Pe).for(t).define(A(De),V(t,{})).apply(),G.flavouredAs(Pe).for(e).define(v(De),V(e,{})).apply()}getClient(){return new Map}}Re.decoration(),e.setRegistry(new At);const $e="##VERSION##",ke="##PACKAGE##";U.registerLibrary(ke,$e);export{Nt as AbsMigration,ut as Adapter,K as AuthorizationError,he as BaseModel,$t as BigIntSequence,ht as Cascade,mt as Condition,et as ConnectionError,pt as DefaultCascade,Pt as DefaultSequenceOptions,Et as Dispatch,tt as ForbiddenError,yt as GroupOperator,At as InjectablesRegistry,Ae as MethodQueryBuilder,ot as MigrationError,ct as MigrationRuleError,Dt as NoneSequenceOptions,Rt as NumericSequence,St as ObserverError,rt as ObserverHandler,gt as Operator,ve as OperatorsMap,dt as OrderDirection,ke as PACKAGE_NAME,pe as Paginator,bt as PagingError,J as PersistenceKeys,be as QueryClause,wt as QueryError,Re as RamAdapter,_e as RamContext,Pe as RamFlavour,Te as RamPaginator,Se as RamSequence,xe as RamSequenceModel,Ne as RamStatement,vt as Repository,ft as Sequence,me as Statement,at as UnsupportedError,$e as VERSION,Ut as cacheModelForPopulate,zt as column,kt as createOrUpdate,Kt as createdAt,Jt as createdBy,Xt as createdByOnCreateUpdate,De as createdByOnRamCreateUpdate,Z as final,Ot as generateInjectableNameForRepository,it as getColumnName,Ft as getPopulateKey,st as getTableName,Vt as index,ie as manyToMany,se as manyToOne,_t as migration,ne as noValidateOn,ae as noValidateOnCreate,ce as noValidateOnCreateUpdate,oe as noValidateOnUpdate,re as oneToMany,Bt as oneToManyOnCreate,Mt as oneToManyOnDelete,Lt as oneToManyOnUpdate,ee as oneToOne,It as oneToOneOnCreate,jt as oneToOneOnDelete,Ct as oneToOneOnUpdate,de as pk,ue as pkOnCreate,Gt as populate,Tt as prefixMethod,Ee as query,le as relation,xt as repository,qt as repositoryFromTypeMetadata,nt as sequenceNameForModel,Yt as table,Wt as unique,Qt as uniqueOnCreateUpdate,te as updatedAt,Zt as updatedBy};
2
2
  //# sourceMappingURL=core.js.map
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sources":["../src/persistence/constants.ts","../src/utils/decorators.ts","../src/utils/errors.ts","../src/persistence/ObserverHandler.ts","../src/identity/utils.ts","../src/persistence/errors.ts","../src/persistence/Adapter.ts","../src/repository/constants.ts","../src/persistence/Sequence.ts","../src/query/constants.ts","../src/query/errors.ts","../src/query/Condition.ts","../src/repository/Repository.ts","../src/repository/utils.ts","../src/repository/injectables.ts","../src/persistence/Dispatch.ts","../src/persistence/migrations.ts","../src/repository/decorators.ts","../src/overrides/overrides.ts","../src/repository/errors.ts","../src/interfaces/SequenceOptions.ts","../src/model/construction.ts","../src/model/decorators.ts","../src/identity/decorators.ts","../src/model/BaseModel.ts","../src/query/Paginator.ts","../src/query/types.ts","../src/query/Statement.ts","../src/query/utils.ts","../src/query/MethodQueryBuilder.ts","../src/query/decorators.ts","../src/ram/RamPaginator.ts","../src/ram/RamStatement.ts","../src/ram/RamContext.ts","../src/ram/model/RamSequenceModel.ts","../src/ram/RamSequence.ts","../src/ram/handlers.ts","../src/ram/constants.ts","../src/ram/RamAdapter.ts","../src/ram/index.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["PersistenceKeys","final","target","propertyKey","descriptor","Error","configurable","AuthorizationError","BadRequestError","constructor","msg","name","code","super","ForbiddenError","ConnectionError","InternalError","ObserverHandler","this","observers","count","length","observe","observer","filter","map","o","indexOf","push","unObserve","index","splice","updateObservers","log","table","event","id","args","Promise","allSettled","e","error","toString","refresh","forEach","result","i","status","reason","getTableName","model","Model","get","Metadata","TABLE","getColumnName","attribute","key","COLUMN","sequenceNameForModel","join","UnsupportedError","MigrationError","MigrationRuleError","flavourResolver","Decoration","bind","obj","DefaultFlavour","targetCtor","registeredFlavour","undefined","currentFlavour","Adapter","cachedAdapter","flavour","LoggedClass","_cache","config","_config","alias","_alias","repository","_baseRepository","shutdownProxies","k","proxies","shutdown","dispatch","close","Context","info","_currentFlavour","verbose","Dispatch","_baseDispatch","isReserved","attr","initialize","flags","operation","Object","assign","DefaultRepositoryFlags","affectedTables","writeOperation","OperationKeys","READ","timestamp","Date","ignoredValidationProperties","validationExceptions","context","overrides","for","debug","JSON","stringify","accumulate","prepare","pk","split","toTransient","entries","reduce","accum","val","mappedProp","METADATA","silly","defineProperty","enumerable","writable","value","record","transient","revert","clazz","ob","m","build","metadata","keys","createAll","tableName","all","create","readAll","read","updateAll","update","deleteAll","delete","observerHandler","flavourOf","current","setCurrent","models","flavouredAs","decoration","client","_client","getClient","hashObj","proxy","Proxy","p","receiver","originalConf","Reflect","set","migrations","migrationsFor","migrate","migration","up","down","OrderDirection","Cascade","__decorate","prototype","DefaultCascade","CASCADE","NONE","Sequence","logger","Logging","options","parseValue","type","parseInt","BigInt","Operator","GroupOperator","QueryError","PagingError","Condition","attr1","operator","comparison","and","condition","or","not","NOT","hasErrors","exceptions","conditionCheck","invalidOpMessage","values","errors","isAsync","resolve","condition1","condition2","group","AND","OR","Builder","eq","setOp","EQUAL","dif","DIFFERENT","gt","BIGGER","lt","SMALLER","gte","BIGGER_EQ","lte","SMALLER_EQ","arr","IN","regexp","REGEXP","RegExp","source","op","builder","required","Repository","Rep","adapter","_adapter","_tableName","class","pkProps","register","DecorationKeys","FLAVOUR","uses","wrapMethodWithContext","override","conf","createPrefix","contextArgs","CREATE","_overrides","enforceDBDecorators","ON","ValidationError","c","createSuffix","prepared","ids","records","r","createAllPrefix","opts","getSequenceOptions","range","async","generated","ignoredProps","errorMessages","readPrefix","readAllPrefix","updatePrefix","UPDATE","oldModel","merge","relations","getMetadata","setMetadata","u","updateAllPrefix","oldModels","deletePrefix","DELETE","deleteAllPrefix","select","selector","Statement","from","query","orderBy","order","ASC","limit","skip","sort","where","offset","execute","prop","Array","isArray","forModel","repo","ADAPTER","registryName","DefaultSeparator","getOwnPropertyDescriptor","removeMetadata","pkName","DBKeys","ID","indexes","indexDecorators","INDEX","acum","t","column","generateInjectableNameForRepository","sf","INJECTABLE","InjectablesRegistry","InjectableRegistryImp","injectable","modelCtor","metaKey","resolvedFlavour","aliasToUse","f","Injectables","message","repoCtor","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","method","proto","getPrototypeOf","apply","thisArg","argArray","bulkToSingle","then","catch","prefixMethod","after","prefix","afterName","wrapped","results","call","AbsMigration","transaction","meta","MIGRATION","enforceRules","qr","l","rules","rule","qrOrAdapter","getQueryRunner","define","decorator","original","Symbol","inject","ModelKeys","ANCHOR","REPOSITORY","constr","callback","instance","CLASS","noValidation","NO_VALIDATE","includes","shouldValidateNestedHandler","property","RELATIONS","relation","RELATION","relationName","relationClassName","isPropertyModel","ObserverError","NoneSequenceOptions","startWith","incrementBy","cycle","DefaultSequenceOptions","NumericSequence","BigIntSequence","createOrUpdate","NotFoundError","oneToOneOnCreate","data","propertyValue","innerRepo","repositoryFromTypeMetadata","cacheModelForPopulate","isClass","created","oneToOneOnUpdate","cascade","updated","oneToOneOnDelete","deleted","oneToManyOnCreate","propertyValues","arrayType","every","item","uniqueValues","Set","add","oneToManyOnUpdate","oneToManyOnDelete","isInstantiated","v","getPopulateKey","fieldName","POPULATE","parentModel","pkValue","cacheValue","cacheKey","populate","nested","isArr","res","propName","propKeyValues","proKeyValue","fetchPopulateValues","commomTypes","allowedTypes","customTypes","ValidationKeys","REFLECT","LIST","getPropDesignTypes","designTypes","find","toLowerCase","columnName","propMetadata","directions","compositions","d","DSC","uniqueOnCreateUpdate","ConflictError","unique","UNIQUE","onCreateUpdate","createdByOnCreateUpdate","createdBy","CREATED_BY","onCreate","updatedBy","UPDATED_BY","onUpdate","createdAt","updatedAt","oneToOne","cascadeOptions","joinColumnOpts","fk","ONE_TO_ONE","joinTable","String","Number","onDelete","afterAny","pop","oneToMany","joinTableOpts","ONE_TO_MANY","list","manyToOne","MANY_TO_ONE","manyToMany","MANY_TO_MANY","noValidateOn","ops","currentMeta","newMeta","newApply","newMetadata","noValidateOnCreate","noValidateOnUpdate","noValidateOnCreateUpdate","relationKey","pkOnCreate","sequence","next","groupsort","readonly","priority","BaseModel","arg","Paginator","_currentPage","total","_totalPages","_recordCount","statement","_statement","size","page","previous","validatePage","isInteger","QueryClause","distinct","distinctSelector","max","maxSelector","min","minSelector","countSelector","fromSelector","whereCondition","orderBySelector","groupBy","groupBySelector","limitSelector","offsetSelector","raw","rawInput","selectSelector","pkAttr","processor","__metadata","_a","S","_b","_c","_d","OperatorsMap","Equals","Diff","LessThan","LessThanEqual","GreaterThan","GreaterThanEqual","Between","v1","v2","In","in","Matches","lowerFirst","str","charAt","slice","MethodQueryBuilder","methodName","startsWith","FIND_BY","core","extractCore","extractSelect","extractGroupBy","buildWhere","extractOrderLimitOffset","action","afterFindBy","substring","match","selectIndex","SELECT","afterSelect","Boolean","groupByIndex","GROUP_BY","ORDER_BY","THEN_BY","conditions","operators","token","idx","field","parseFieldAndOperator","parser","conditionValue","endsWith","conditionCount","extraArgs","stmt","allowLimit","allowOffset","allowOrderBy","throws","params","allowed","param","toUpperCase","RamPaginator","rawStatement","Math","ceil","RamStatement","getSort","el1","el2","direction","designType","localeCompare","valueOf","parseCondition","el","paginate","op1","op2","RamContext","RamSequenceModel","seq","RamSequence","parse","increment","toIncrementBy","createdByOnRamCreateUpdate","uuid","RamFlavour","RamAdapter","lock","Lock","UUID","user","now","acquire","has","Map","release","natived","tableFor","collection","props","acc","parseError","err","BaseError","createdByKey","updatedByKey","setRegistry","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sources":["../src/persistence/constants.ts","../src/utils/decorators.ts","../src/utils/errors.ts","../src/persistence/ObserverHandler.ts","../src/identity/utils.ts","../src/persistence/errors.ts","../src/persistence/Adapter.ts","../src/repository/constants.ts","../src/persistence/Sequence.ts","../src/query/constants.ts","../src/query/errors.ts","../src/query/Condition.ts","../src/repository/Repository.ts","../src/repository/utils.ts","../src/repository/injectables.ts","../src/persistence/Dispatch.ts","../src/persistence/migrations.ts","../src/repository/decorators.ts","../src/overrides/overrides.ts","../src/repository/errors.ts","../src/interfaces/SequenceOptions.ts","../src/model/construction.ts","../src/model/decorators.ts","../src/identity/decorators.ts","../src/model/BaseModel.ts","../src/query/Paginator.ts","../src/query/types.ts","../src/query/Statement.ts","../src/query/utils.ts","../src/query/MethodQueryBuilder.ts","../src/query/decorators.ts","../src/ram/RamPaginator.ts","../src/ram/RamStatement.ts","../src/ram/RamContext.ts","../src/ram/model/RamSequenceModel.ts","../src/ram/RamSequence.ts","../src/ram/handlers.ts","../src/ram/constants.ts","../src/ram/RamAdapter.ts","../src/ram/index.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["PersistenceKeys","final","target","propertyKey","descriptor","Error","configurable","AuthorizationError","BadRequestError","constructor","msg","name","code","super","ForbiddenError","ConnectionError","InternalError","ObserverHandler","this","observers","count","length","observe","observer","filter","map","o","indexOf","push","unObserve","index","splice","updateObservers","log","table","event","id","args","Promise","allSettled","e","error","toString","refresh","forEach","result","i","status","reason","getTableName","model","Model","get","Metadata","TABLE","getColumnName","attribute","key","COLUMN","sequenceNameForModel","join","UnsupportedError","MigrationError","MigrationRuleError","flavourResolver","Decoration","bind","obj","DefaultFlavour","targetCtor","registeredFlavour","undefined","currentFlavour","Adapter","cachedAdapter","flavour","LoggedClass","_cache","config","_config","alias","_alias","repository","_baseRepository","shutdownProxies","k","proxies","shutdown","dispatch","close","Context","info","_currentFlavour","verbose","Dispatch","_baseDispatch","isReserved","attr","initialize","flags","operation","Object","assign","DefaultRepositoryFlags","affectedTables","writeOperation","OperationKeys","READ","timestamp","Date","ignoredValidationProperties","validationExceptions","context","overrides","for","debug","JSON","stringify","accumulate","prepare","pk","split","segregate","entries","reduce","accum","val","mappedProp","METADATA","silly","defineProperty","enumerable","writable","value","record","transient","revert","clazz","ob","m","build","metadata","keys","createAll","tableName","all","create","readAll","read","updateAll","update","deleteAll","delete","observerHandler","flavourOf","current","setCurrent","models","flavouredAs","decoration","client","_client","getClient","hashObj","proxy","Proxy","p","receiver","originalConf","Reflect","set","migrations","migrationsFor","migrate","migration","up","down","OrderDirection","Cascade","__decorate","prototype","DefaultCascade","CASCADE","NONE","Sequence","logger","Logging","options","parseValue","type","parseInt","BigInt","Operator","GroupOperator","QueryError","PagingError","Condition","attr1","operator","comparison","and","condition","or","not","NOT","hasErrors","exceptions","conditionCheck","invalidOpMessage","values","errors","isAsync","resolve","condition1","condition2","group","AND","OR","Builder","eq","setOp","EQUAL","dif","DIFFERENT","gt","BIGGER","lt","SMALLER","gte","BIGGER_EQ","lte","SMALLER_EQ","arr","IN","regexp","REGEXP","RegExp","source","op","builder","required","Repository","Rep","adapter","_adapter","_tableName","class","pkProps","register","DecorationKeys","FLAVOUR","uses","wrapMethodWithContext","override","conf","createPrefix","contextArgs","CREATE","_overrides","enforceDBDecorators","ON","ValidationError","c","createSuffix","prepared","ids","records","r","createAllPrefix","opts","getSequenceOptions","range","async","generated","ignoredProps","errorMessages","readPrefix","readAllPrefix","updatePrefix","UPDATE","oldModel","merge","relations","getMetadata","setMetadata","u","updateAllPrefix","oldModels","deletePrefix","DELETE","deleteAllPrefix","select","selector","Statement","from","query","orderBy","order","ASC","limit","skip","sort","where","offset","execute","prop","Array","isArray","forModel","repo","ADAPTER","registryName","DefaultSeparator","getOwnPropertyDescriptor","removeMetadata","pkName","DBKeys","ID","indexes","indexDecorators","INDEX","acum","t","column","generateInjectableNameForRepository","sf","INJECTABLE","InjectablesRegistry","InjectableRegistryImp","injectable","modelCtor","metaKey","resolvedFlavour","aliasToUse","f","Injectables","message","repoCtor","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","method","proto","getPrototypeOf","apply","thisArg","argArray","bulkToSingle","then","catch","prefixMethod","after","prefix","afterName","wrapped","results","call","AbsMigration","transaction","meta","MIGRATION","enforceRules","qr","l","rules","rule","qrOrAdapter","getQueryRunner","define","decorator","original","Symbol","inject","ModelKeys","ANCHOR","REPOSITORY","constr","callback","instance","CLASS","noValidation","NO_VALIDATE","includes","shouldValidateNestedHandler","property","RELATIONS","relation","RELATION","relationName","relationClassName","isPropertyModel","ObserverError","NoneSequenceOptions","startWith","incrementBy","cycle","DefaultSequenceOptions","NumericSequence","BigIntSequence","createOrUpdate","NotFoundError","oneToOneOnCreate","data","propertyValue","innerRepo","repositoryFromTypeMetadata","cacheModelForPopulate","isClass","created","oneToOneOnUpdate","cascade","updated","oneToOneOnDelete","deleted","oneToManyOnCreate","propertyValues","arrayType","every","item","uniqueValues","Set","add","oneToManyOnUpdate","oneToManyOnDelete","isInstantiated","v","getPopulateKey","fieldName","POPULATE","parentModel","pkValue","cacheValue","cacheKey","populate","nested","isArr","res","propName","propKeyValues","proKeyValue","fetchPopulateValues","commomTypes","allowedTypes","customTypes","ValidationKeys","REFLECT","LIST","getPropDesignTypes","designTypes","find","toLowerCase","columnName","propMetadata","directions","compositions","d","DSC","uniqueOnCreateUpdate","ConflictError","unique","UNIQUE","onCreateUpdate","createdByOnCreateUpdate","createdBy","CREATED_BY","onCreate","updatedBy","UPDATED_BY","onUpdate","createdAt","updatedAt","oneToOne","cascadeOptions","joinColumnOpts","fk","ONE_TO_ONE","joinTable","String","Number","onDelete","afterAny","pop","oneToMany","joinTableOpts","ONE_TO_MANY","list","manyToOne","MANY_TO_ONE","manyToMany","MANY_TO_MANY","noValidateOn","ops","currentMeta","newMeta","newApply","newMetadata","noValidateOnCreate","noValidateOnUpdate","noValidateOnCreateUpdate","relationKey","pkOnCreate","sequence","next","groupsort","readonly","priority","BaseModel","arg","Paginator","_currentPage","total","_totalPages","_recordCount","statement","_statement","size","page","previous","validatePage","isInteger","QueryClause","distinct","distinctSelector","max","maxSelector","min","minSelector","countSelector","fromSelector","whereCondition","orderBySelector","groupBy","groupBySelector","limitSelector","offsetSelector","raw","rawInput","selectSelector","pkAttr","processor","__metadata","_a","S","_b","_c","_d","OperatorsMap","Equals","Diff","LessThan","LessThanEqual","GreaterThan","GreaterThanEqual","Between","v1","v2","In","in","Matches","lowerFirst","str","charAt","slice","MethodQueryBuilder","methodName","startsWith","FIND_BY","core","extractCore","extractSelect","extractGroupBy","buildWhere","extractOrderLimitOffset","action","afterFindBy","substring","match","selectIndex","SELECT","afterSelect","Boolean","groupByIndex","GROUP_BY","ORDER_BY","THEN_BY","conditions","operators","token","idx","field","parseFieldAndOperator","parser","conditionValue","endsWith","conditionCount","extraArgs","stmt","allowLimit","allowOffset","allowOrderBy","throws","params","allowed","param","toUpperCase","RamPaginator","rawStatement","Math","ceil","RamStatement","getSort","el1","el2","direction","designType","localeCompare","valueOf","parseCondition","el","paginate","op1","op2","RamContext","RamSequenceModel","seq","RamSequence","parse","increment","toIncrementBy","createdByOnRamCreateUpdate","uuid","RamFlavour","RamAdapter","lock","Lock","UUID","user","now","acquire","has","Map","release","natived","tableFor","collection","props","acc","parseError","err","BaseError","createdByKey","updatedByKey","setRegistry","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}