@decaf-ts/core 0.5.47 → 0.7.0

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.
Files changed (142) hide show
  1. package/README.md +1 -1
  2. package/dist/core.cjs +1 -1
  3. package/dist/core.cjs.map +1 -1
  4. package/dist/core.js +1 -1
  5. package/dist/core.js.map +1 -1
  6. package/lib/esm/identity/decorators.js +6 -5
  7. package/lib/esm/identity/decorators.js.map +1 -1
  8. package/lib/esm/identity/utils.d.ts +3 -2
  9. package/lib/esm/identity/utils.js +7 -7
  10. package/lib/esm/identity/utils.js.map +1 -1
  11. package/lib/esm/index.d.ts +2 -1
  12. package/lib/esm/index.js +2 -1
  13. package/lib/esm/index.js.map +1 -1
  14. package/lib/esm/model/construction.d.ts +2 -11
  15. package/lib/esm/model/construction.js +21 -33
  16. package/lib/esm/model/construction.js.map +1 -1
  17. package/lib/esm/model/decorators.d.ts +11 -2
  18. package/lib/esm/model/decorators.js +91 -69
  19. package/lib/esm/model/decorators.js.map +1 -1
  20. package/lib/esm/model/types.d.ts +6 -2
  21. package/lib/esm/overrides/Metadata.d.ts +16 -2
  22. package/lib/esm/overrides/overrides.js +40 -1
  23. package/lib/esm/overrides/overrides.js.map +1 -1
  24. package/lib/esm/persistence/Adapter.d.ts +6 -10
  25. package/lib/esm/persistence/Adapter.js +43 -46
  26. package/lib/esm/persistence/Adapter.js.map +1 -1
  27. package/lib/esm/persistence/Sequence.d.ts +2 -1
  28. package/lib/esm/persistence/Sequence.js.map +1 -1
  29. package/lib/esm/persistence/constants.d.ts +3 -1
  30. package/lib/esm/persistence/constants.js +2 -0
  31. package/lib/esm/persistence/constants.js.map +1 -1
  32. package/lib/esm/persistence/errors.d.ts +6 -0
  33. package/lib/esm/persistence/errors.js +10 -0
  34. package/lib/esm/persistence/errors.js.map +1 -1
  35. package/lib/esm/persistence/index.d.ts +1 -1
  36. package/lib/esm/persistence/index.js +1 -1
  37. package/lib/esm/persistence/index.js.map +1 -1
  38. package/lib/esm/persistence/migrations.d.ts +21 -0
  39. package/lib/esm/persistence/migrations.js +103 -0
  40. package/lib/esm/persistence/migrations.js.map +1 -0
  41. package/lib/esm/persistence/types.d.ts +7 -1
  42. package/lib/esm/query/Paginator.d.ts +4 -2
  43. package/lib/esm/query/Paginator.js +3 -1
  44. package/lib/esm/query/Paginator.js.map +1 -1
  45. package/lib/esm/query/Statement.d.ts +2 -1
  46. package/lib/esm/query/Statement.js +2 -2
  47. package/lib/esm/query/Statement.js.map +1 -1
  48. package/lib/esm/query/options.d.ts +2 -1
  49. package/lib/esm/query/selectors.d.ts +2 -1
  50. package/lib/esm/ram/RamAdapter.d.ts +2 -1
  51. package/lib/esm/ram/RamAdapter.js +7 -5
  52. package/lib/esm/ram/RamAdapter.js.map +1 -1
  53. package/lib/esm/ram/RamPaginator.d.ts +2 -1
  54. package/lib/esm/ram/RamPaginator.js +1 -1
  55. package/lib/esm/ram/RamPaginator.js.map +1 -1
  56. package/lib/esm/ram/RamStatement.js +3 -3
  57. package/lib/esm/ram/RamStatement.js.map +1 -1
  58. package/lib/esm/ram/types.d.ts +2 -1
  59. package/lib/esm/repository/Repository.d.ts +2 -1
  60. package/lib/esm/repository/Repository.js +30 -40
  61. package/lib/esm/repository/Repository.js.map +1 -1
  62. package/lib/esm/repository/decorators.d.ts +2 -1
  63. package/lib/esm/repository/decorators.js +7 -8
  64. package/lib/esm/repository/decorators.js.map +1 -1
  65. package/lib/esm/repository/injectables.d.ts +1 -2
  66. package/lib/esm/repository/injectables.js +6 -6
  67. package/lib/esm/repository/injectables.js.map +1 -1
  68. package/lib/esm/repository/utils.d.ts +2 -2
  69. package/lib/esm/repository/utils.js +4 -5
  70. package/lib/esm/repository/utils.js.map +1 -1
  71. package/lib/identity/decorators.cjs +6 -5
  72. package/lib/identity/decorators.js.map +1 -1
  73. package/lib/identity/utils.cjs +5 -5
  74. package/lib/identity/utils.d.ts +3 -2
  75. package/lib/identity/utils.js.map +1 -1
  76. package/lib/index.cjs +2 -1
  77. package/lib/index.d.ts +2 -1
  78. package/lib/index.js.map +1 -1
  79. package/lib/model/construction.cjs +19 -31
  80. package/lib/model/construction.d.ts +2 -11
  81. package/lib/model/construction.js.map +1 -1
  82. package/lib/model/decorators.cjs +99 -76
  83. package/lib/model/decorators.d.ts +11 -2
  84. package/lib/model/decorators.js.map +1 -1
  85. package/lib/model/types.d.ts +6 -2
  86. package/lib/overrides/Metadata.d.ts +16 -2
  87. package/lib/overrides/overrides.cjs +39 -0
  88. package/lib/overrides/overrides.js.map +1 -1
  89. package/lib/persistence/Adapter.cjs +41 -44
  90. package/lib/persistence/Adapter.d.ts +6 -10
  91. package/lib/persistence/Adapter.js.map +1 -1
  92. package/lib/persistence/Sequence.d.ts +2 -1
  93. package/lib/persistence/Sequence.js.map +1 -1
  94. package/lib/persistence/constants.cjs +2 -0
  95. package/lib/persistence/constants.d.ts +3 -1
  96. package/lib/persistence/constants.js.map +1 -1
  97. package/lib/persistence/errors.cjs +13 -1
  98. package/lib/persistence/errors.d.ts +6 -0
  99. package/lib/persistence/errors.js.map +1 -1
  100. package/lib/persistence/index.cjs +1 -1
  101. package/lib/persistence/index.d.ts +1 -1
  102. package/lib/persistence/index.js.map +1 -1
  103. package/lib/persistence/migrations.cjs +109 -0
  104. package/lib/persistence/migrations.d.ts +21 -0
  105. package/lib/persistence/migrations.js.map +1 -0
  106. package/lib/persistence/types.d.ts +7 -1
  107. package/lib/query/Paginator.cjs +3 -1
  108. package/lib/query/Paginator.d.ts +4 -2
  109. package/lib/query/Paginator.js.map +1 -1
  110. package/lib/query/Statement.cjs +1 -1
  111. package/lib/query/Statement.d.ts +2 -1
  112. package/lib/query/Statement.js.map +1 -1
  113. package/lib/query/options.d.ts +2 -1
  114. package/lib/query/selectors.d.ts +2 -1
  115. package/lib/ram/RamAdapter.cjs +9 -7
  116. package/lib/ram/RamAdapter.d.ts +2 -1
  117. package/lib/ram/RamAdapter.js.map +1 -1
  118. package/lib/ram/RamPaginator.cjs +1 -1
  119. package/lib/ram/RamPaginator.d.ts +2 -1
  120. package/lib/ram/RamPaginator.js.map +1 -1
  121. package/lib/ram/RamStatement.cjs +3 -3
  122. package/lib/ram/RamStatement.js.map +1 -1
  123. package/lib/ram/types.d.ts +2 -1
  124. package/lib/repository/Repository.cjs +29 -39
  125. package/lib/repository/Repository.d.ts +2 -1
  126. package/lib/repository/Repository.js.map +1 -1
  127. package/lib/repository/decorators.cjs +5 -6
  128. package/lib/repository/decorators.d.ts +2 -1
  129. package/lib/repository/decorators.js.map +1 -1
  130. package/lib/repository/injectables.cjs +5 -5
  131. package/lib/repository/injectables.d.ts +1 -2
  132. package/lib/repository/injectables.js.map +1 -1
  133. package/lib/repository/utils.cjs +4 -5
  134. package/lib/repository/utils.d.ts +2 -2
  135. package/lib/repository/utils.js.map +1 -1
  136. package/package.json +2 -4
  137. package/lib/esm/persistence/decorators.d.ts +0 -11
  138. package/lib/esm/persistence/decorators.js +0 -19
  139. package/lib/esm/persistence/decorators.js.map +0 -1
  140. package/lib/persistence/decorators.cjs +0 -22
  141. package/lib/persistence/decorators.d.ts +0 -11
  142. package/lib/persistence/decorators.js.map +0 -1
package/README.md CHANGED
@@ -27,7 +27,7 @@ Decaf Core provides the foundational building blocks for the Decaf TypeScript ec
27
27
 
28
28
  Documentation [here](https://decaf-ts.github.io/injectable-decorators/), Test results [here](https://decaf-ts.github.io/injectable-decorators/workdocs/reports/html/test-report.html) and Coverage [here](https://decaf-ts.github.io/injectable-decorators/workdocs/reports/coverage/lcov-report/index.html)
29
29
 
30
- Minimal size: 11.4 KB kb gzipped
30
+ Minimal size: 13.8 KB kb gzipped
31
31
 
32
32
 
33
33
  # Core Package — Detailed Description
package/dist/core.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,a,s,n,o,i){"use strict";var c,d,l;function p(){return(e,t,r)=>{if(!r)throw Error("final decorator can only be used on methods");return r?.configurable&&(r.configurable=!1),r}}e.PersistenceKeys=void 0,(c=e.PersistenceKeys||(e.PersistenceKeys={})).INDEX="index",c.UNIQUE="unique",c.ADAPTER="adapter",c.INJECTABLE="decaf_{0}_adapter_for_{1}",c.TABLE="table",c.COLUMN="column",c.METADATA="__metadata",c.OWNERSHIP="ownership",c.CREATED_BY="ownership.created-by",c.UPDATED_BY="ownership.updated-by",c.RELATIONS="__relations",c.RELATION="relation",c.ONE_TO_ONE="relation.one-to-one",c.ONE_TO_MANY="relation.one-to-many",c.MANY_TO_ONE="relation.many-to-one",c.MANY_TO_MANY="relation.many-to-many",c.POPULATE="populate",c.NO_VALIDATE="no-validate";class u extends a.BadRequestError{constructor(e,t=u.name,r=401){super(e,t,r)}}class h extends u{constructor(e,t=h.name){super(e,t,403)}}class y extends a.InternalError{constructor(e){super(e,y.name,503)}}class f{constructor(){this.observers=[]}count(){return this.observers.length}observe(e,t){if(-1!==this.observers.map(e=>e.observer).indexOf(e))throw new a.InternalError("Observer already registered");this.observers.push({observer:e,filter:t})}unObserve(e){const t=this.observers.map(e=>e.observer).indexOf(e);if(-1===t)throw new a.InternalError("Failed to find Observer");this.observers.splice(t,1)}async updateObservers(e,t,r,a,...s){(await Promise.allSettled(this.observers.filter(s=>{const{filter:n}=s;if(!n)return!0;try{return n(t,r,a)}catch(t){return e.error(`Failed to filter observer ${s.observer.toString()}: ${t}`),!1}}).map(e=>{e.observer.refresh(t,r,a,...s)}))).forEach((t,r)=>{"rejected"===t.status&&e.error(`Failed to update observable ${this.observers[r].toString()}: ${t.reason}`)})}}class g extends a.InternalError{constructor(e){super(e,g.name,500)}}class m extends n.LoggedClass{constructor(){super()}async initialize(){if(!this.adapter)return void this.log.verbose("No adapter observed for dispatch; skipping initialization");const e=this.adapter;[a.OperationKeys.CREATE,a.OperationKeys.UPDATE,a.OperationKeys.DELETE,a.BulkCrudOperationKeys.CREATE_ALL,a.BulkCrudOperationKeys.UPDATE_ALL,a.BulkCrudOperationKeys.DELETE_ALL].forEach(t=>{if(!e[t])throw new a.InternalError(`Method ${t} not found in ${e.alias} adapter to bind Observables Dispatch`);let r=Object.getOwnPropertyDescriptor(e,t),s=e;for(;!r&&s!==Object.prototype;)s=Object.getPrototypeOf(s),r=Object.getOwnPropertyDescriptor(s,t);r&&r.writable?e[t]=new Proxy(e[t],{apply:async(e,r,s)=>{const[n,o]=s,i=await e.apply(r,s);return this.updateObservers(n,(e=>{switch(e){case a.BulkCrudOperationKeys.CREATE_ALL:return a.OperationKeys.CREATE;case a.BulkCrudOperationKeys.UPDATE_ALL:return a.OperationKeys.UPDATE;case a.BulkCrudOperationKeys.DELETE_ALL:return a.OperationKeys.DELETE;default:return e}})(t),o).then(()=>{this.log.verbose(`Observer refresh dispatched by ${t} for ${n}`),this.log.debug("pks: "+o)}).catch(e=>this.log.error(`Failed to dispatch observer refresh for ${t} on ${n}: ${e}`)),i}}):this.log.error(`Could not find method ${t} to bind Observables Dispatch`)})}async close(){}observe(e){if(!(e instanceof E))throw new g("Only Adapters can be observed by dispatch");this.adapter=e,this.models=E.models(this.adapter.alias),this.initialize().then(()=>this.log.verbose(`Dispatch initialized for ${this.adapter.alias} adapter`))}unObserve(e){if(this.adapter!==e)throw new g("Only the adapter that was used to observe can be unobserved");this.adapter=void 0}async updateObservers(e,t,r){if(this.adapter)try{await this.adapter.refresh(e,t,r)}catch(e){throw new a.InternalError("Failed to refresh dispatch: "+e)}else this.log.verbose(`No adapter observed for dispatch; skipping observer update for ${e}:${t}`)}}function b(t){return r=>o.apply(o.metadata(E.key(e.PersistenceKeys.ADAPTER),t))(r)}E&&(E._baseDispatch=m);class O{get log(){return this.logger||(this.logger=n.Logging.for(this)),this.logger}constructor(e){this.options=e}static pk(e){return w(e,"pk")}static parseValue(e,t){switch(e){case"Number":return"string"==typeof t?parseInt(t):"number"==typeof t?t:BigInt(t);case"BigInt":return BigInt(t);case void 0:case"String":return t;default:throw new g(`Unsupported sequence type: ${e} for adapter ${this}`)}}}function _(t){const r=t instanceof s.Model?s.Model.get(t.constructor.name):t;if(!r)throw new a.InternalError("Unable to find model "+t);return Reflect.getOwnMetadata(E.key(e.PersistenceKeys.TABLE),r[s.ModelKeys.MODEL]||r)||(t instanceof s.Model?t.constructor.name:t.name)}function v(t,r){return Reflect.getMetadata(a.Repository.key(e.PersistenceKeys.COLUMN),t,r)||r}function w(e,...t){return[_(e),...t].join("_")}s.Decoration.setFlavourResolver(e=>{try{return E.flavourOf(s.Model.isModel(e)?e.constructor:e)||E.currentFlavour||s.DefaultFlavour}catch(e){}try{return E.currentFlavour||s.DefaultFlavour}catch(e){return s.DefaultFlavour}});class E extends n.LoggedClass{static{this._cache={}}get config(){return this._config}get alias(){return this._alias||this.flavour}repository(){if(!E._baseRepository)throw new a.InternalError("This should be overridden when necessary. Otherwise it will be replaced lazily");return E._baseRepository}async shutdownProxies(e){if(this.proxies){if(e&&!(e in this.proxies))throw new a.InternalError("No proxy found for "+e);if(e)try{await this.proxies[e].shutdown(),delete this.proxies[e]}catch(t){this.log.error(`Failed to shutdown proxied adapter ${e}: ${t}`)}else for(const e in this.proxies){try{await this.proxies[e].shutdown()}catch(t){this.log.error(`Failed to shutdown proxied adapter ${e}: ${t}`);continue}delete this.proxies[e]}}}async shutdown(){await this.shutdownProxies(),this.dispatch&&await this.dispatch.close()}constructor(e,t,r){if(super(),this._config=e,this.flavour=t,this._alias=r,this.Context=a.Context,this.alias in E._cache)throw new a.InternalError(`${this.alias} persistence adapter ${this._alias?`(${this.flavour}) `:""} already registered`);E._cache[this.alias]=this,this.log.info(`Created ${this.alias} persistence adapter ${this._alias?`(${this.flavour}) `:""} persistence adapter`),E._currentFlavour||(this.log.verbose(`Defined ${this.alias} persistence adapter as current`),E._currentFlavour=this.alias)}Dispatch(){return new E._baseDispatch}ObserverHandler(){return new f}isReserved(e){return!e}async initialize(...e){}async flags(e,t,r,...s){return Object.assign({},a.DefaultRepositoryFlags,r,{affectedTables:_(t),writeOperation:e!==a.OperationKeys.READ,timestamp:new Date,operation:e,ignoredValidationProperties:i.Metadata.validationExceptions(t,e)})}async context(e,t,r,...a){this.log.for(this.context).debug(`Creating new context for ${e} operation on ${r.name} model with flag overrides: ${JSON.stringify(t)}`);const s=await this.flags(e,r,t,...a);return(new this.Context).accumulate(s)}prepare(t,r){const s=this.log.for(this.prepare),n=a.modelToTransient(t),o=Object.entries(n.model).reduce((e,[r,s])=>{if(void 0===s)return e;const n=v(t,r);if(this.isReserved(n))throw new a.InternalError(`Property name ${n} is reserved`);return e[n]=s,e},{});return t[e.PersistenceKeys.METADATA]&&(s.silly("Passing along persistence metadata for "+t[e.PersistenceKeys.METADATA]),Object.defineProperty(o,e.PersistenceKeys.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:t[e.PersistenceKeys.METADATA]})),{record:o,id:t[r],transient:n.transient}}revert(t,r,n,o,i){const c=this.log.for(this.revert),d={};d[n]=o;const l="string"==typeof r?s.Model.build(d,r):new r(d);c.silly(`Rebuilding model ${l.constructor.name} id ${o}`);const p=t[e.PersistenceKeys.METADATA],u=Object.keys(l).reduce((e,r)=>(r===n||(e[r]=t[v(e,r)]),e),l);return i&&(c.verbose("re-adding transient properties: "+Object.keys(i).join(", ")),Object.entries(i).forEach(([e,t])=>{if(e in u)throw new a.InternalError(`Transient property ${e} already exists on model ${l.constructor.name}. should be impossible`);u[e]=t})),p&&(c.silly(`Passing along ${this.flavour} persistence metadata for ${l.constructor.name} id ${o}: ${p}`),Object.defineProperty(u,e.PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:p})),u}async createAll(e,t,r,...s){if(t.length!==r.length)throw new a.InternalError("Ids and models must have the same length");const n=this.log.for(this.createAll);return n.verbose(`Creating ${t.length} entries ${e} table`),n.debug("pks: "+t),Promise.all(t.map((t,a)=>this.create(e,t,r[a],...s)))}async readAll(e,t,...r){const a=this.log.for(this.readAll);return a.verbose(`Reading ${t.length} entries ${e} table`),a.debug("pks: "+t),Promise.all(t.map(t=>this.read(e,t,...r)))}async updateAll(e,t,r,...s){if(t.length!==r.length)throw new a.InternalError("Ids and models must have the same length");const n=this.log.for(this.updateAll);return n.verbose(`Updating ${t.length} entries ${e} table`),n.debug("pks: "+t),Promise.all(t.map((t,a)=>this.update(e,t,r[a],...s)))}async deleteAll(e,t,...r){const a=this.log.for(this.createAll);return a.verbose(`Deleting ${t.length} entries ${e} table`),a.debug("pks: "+t),Promise.all(t.map(t=>this.delete(e,t,...r)))}observe(e,t){this.observerHandler||Object.defineProperty(this,"observerHandler",{value:this.ObserverHandler(),writable:!1}),this.observerHandler.observe(e,t),this.log.for(this.observe).verbose("Registering new observer "+e.toString()),this.dispatch||(this.log.for(this.observe).info("Creating dispatch for "+this.alias),this.dispatch=this.Dispatch(),this.dispatch.observe(this))}unObserve(e){if(!this.observerHandler)throw new a.InternalError("ObserverHandler not initialized. Did you register any observables?");this.observerHandler.unObserve(e),this.log.for(this.unObserve).verbose(`Observer ${e.toString()} removed`)}async updateObservers(e,t,r,...s){if(!this.observerHandler)throw new a.InternalError("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,e,t,r,...s)}async refresh(e,t,r,...a){return this.updateObservers(e,t,r,...a)}toString(){return this.flavour+" persistence Adapter"}static flavourOf(t){return Reflect.getMetadata(this.key(e.PersistenceKeys.ADAPTER),t)||this.current?.flavour}static get currentFlavour(){if(!E._currentFlavour)throw new a.InternalError("No persistence flavour set. Please initialize your adapter");return E._currentFlavour}static get current(){return E.get(this.currentFlavour)}static get(e){if(!e)return E.get(this._currentFlavour);if(e in this._cache)return this._cache[e];throw new a.InternalError(`No Adapter registered under ${e}.`)}static setCurrent(e){this._currentFlavour=e}static key(e){return a.Repository.key(e)}static models(t){try{const r=s.Model.getRegistry().cache;return Object.values(r).map(r=>{let s=Reflect.getMetadata(E.key(e.PersistenceKeys.ADAPTER),r);if(s&&s===t)return r;if(!s){if(!Reflect.getMetadata(a.Repository.key(a.DBKeys.REPOSITORY),r))return;const t=this._baseRepository.forModel(r);return s=Reflect.getMetadata(E.key(e.PersistenceKeys.ADAPTER),t),s}}).filter(e=>!!e)}catch(e){throw new a.InternalError(e)}}static decoration(){}get client(){return this._client||(this._client=this.getClient()),this._client}for(e,...t){this.proxies||(this.proxies={});const r=`${this.alias} - ${s.hashObj(e)}`;if(r in this.proxies)return this.proxies[r];let a;const n=new Proxy(this,{get:(t,r,s)=>{if("_config"===r){const a=Reflect.get(t,r,s);return Object.assign({},a,e)}return"_client"===r?a:Reflect.get(t,r,s)},set:(e,t,r,s)=>"_client"===t?(a=r,!0):Reflect.set(e,t,r,s)});return this.proxies[r]=n,n}}r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[String]),r.__metadata("design:returntype",Promise)],E.prototype,"shutdownProxies",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[String,Object,Object,Object]),r.__metadata("design:returntype",Promise)],E.prototype,"context",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object,Function]),r.__metadata("design:returntype",void 0)],E.prototype,"observe",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",void 0)],E.prototype,"unObserve",null),r.__decorate([p(),r.__metadata("design:type",Object),r.__metadata("design:paramtypes",[])],E.prototype,"client",null),e.OrderDirection=void 0,(d=e.OrderDirection||(e.OrderDirection={})).ASC="asc",d.DSC="desc",e.Cascade=void 0,(l=e.Cascade||(e.Cascade={})).CASCADE="cascade",l.NONE="none";const A={update:e.Cascade.CASCADE,delete:e.Cascade.NONE};var D,P;e.Operator=void 0,(D=e.Operator||(e.Operator={})).EQUAL="EQUAL",D.DIFFERENT="DIFFERENT",D.BIGGER="BIGGER",D.BIGGER_EQ="BIGGER_EQ",D.SMALLER="SMALLER",D.SMALLER_EQ="SMALLER_EQ",D.NOT="NOT",D.IN="IN",D.REGEXP="REGEXP",e.GroupOperator=void 0,(P=e.GroupOperator||(e.GroupOperator={})).AND="AND",P.OR="OR";class T extends a.InternalError{constructor(e){super(e,T.name,500)}}class C extends a.InternalError{constructor(e){super(e,C.name,500)}}class N extends s.Model{constructor(e,t,r){super(),this.attr1=void 0,this.operator=void 0,this.comparison=void 0,this.attr1=e,this.operator=t,this.comparison=r}and(e){return N.and(this,e)}or(e){return N.or(this,e)}not(t){return new N(this,e.Operator.NOT,t)}hasErrors(...t){const r=()=>{const t=`Invalid operator ${this.operator}}`;if("string"==typeof this.attr1){if(this.comparison instanceof N)return{comparison:{condition:"Both sides of the comparison must be of the same type"}};if(-1===Object.values(e.Operator).indexOf(this.operator))return{operator:{condition:t}}}if(this.attr1 instanceof N){if(!(this.comparison instanceof N)&&this.operator!==e.Operator.NOT)return{comparison:{condition:t}};if(-1===Object.values(e.GroupOperator).indexOf(this.operator)&&this.operator!==e.Operator.NOT)return{operator:{condition:t}}}},a=super.hasErrors(...t);return this.isAsync()?(async()=>await Promise.resolve(a)??r())():a??r()}static and(t,r){return N.group(t,e.GroupOperator.AND,r)}static or(t,r){return N.group(t,e.GroupOperator.OR,r)}static group(e,t,r){return new N(e,t,r)}static attribute(e){return(new N.Builder).attribute(e)}static attr(e){return this.attribute(e)}static{this.Builder=class{constructor(){this.attr1=void 0,this.operator=void 0,this.comparison=void 0}attribute(e){return this.attr1=e,this}attr(e){return this.attribute(e)}eq(t){return this.setOp(e.Operator.EQUAL,t)}dif(t){return this.setOp(e.Operator.DIFFERENT,t)}gt(t){return this.setOp(e.Operator.BIGGER,t)}lt(t){return this.setOp(e.Operator.SMALLER,t)}gte(t){return this.setOp(e.Operator.BIGGER_EQ,t)}lte(t){return this.setOp(e.Operator.SMALLER_EQ,t)}in(t){return this.setOp(e.Operator.IN,t)}regexp(t){return this.setOp(e.Operator.REGEXP,RegExp(t).source)}setOp(e,t){return this.operator=e,this.comparison=t,this.build()}build(){try{return new N(this.attr1,this.operator,this.comparison)}catch(e){throw new T(e)}}}}static builder(){return new N.Builder}}r.__decorate([s.required(),r.__metadata("design:type",Object)],N.prototype,"attr1",void 0),r.__decorate([s.required(),r.__metadata("design:type",String)],N.prototype,"operator",void 0),r.__decorate([s.required(),r.__metadata("design:type",Object)],N.prototype,"comparison",void 0);class M extends a.Repository{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 a.InternalError("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=M.table(this.class)),this._tableName}get pkProps(){return super.pkProps}constructor(t,r,...s){if(super(r),this.observers=[],t&&(this._adapter=t),r&&(M.register(r,this,this.adapter.alias),t)){const s=Reflect.getMetadata(E.key(e.PersistenceKeys.ADAPTER),r);if(s&&s!==t.flavour)throw new a.InternalError("Incompatible flavours");b(t.flavour)(r)}[this.createAll,this.readAll,this.updateAll,this.deleteAll].forEach(e=>{const t=e.name;a.wrapMethodWithContext(this,this[t+"Prefix"],e,this[t+"Suffix"])})}override(e){return this.log.for(this.override).debug("Overriding repository flags with "+JSON.stringify(e)),new Proxy(this,{get:(t,r,a)=>{const s=Reflect.get(t,r,a);return"_overrides"!==r?s:Object.assign({},s,e)}})}for(e,...t){return new Proxy(this,{get:(r,a,s)=>"adapter"===a?this.adapter.for(e,...t):Reflect.get(r,a,s)})}ObserverHandler(){return new f}async createPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.CREATE,this.class,t,this.adapter,this._overrides||{});e=new this.class(e),await a.enforceDBDecorators(this,r.context,e,a.OperationKeys.CREATE,a.OperationKeys.ON);const s=await Promise.resolve(e.hasErrors(...r.context.get("ignoredValidationProperties")||[]));if(s)throw new a.ValidationError(s.toString());return[e,...r.args]}async create(e,...t){let r,{record:a,id:s,transient:n}=this.adapter.prepare(e,this.pk);return a=await this.adapter.create(this.tableName,s,a,...t),t.length&&(r=t[t.length-1]),this.adapter.revert(a,this.class,this.pk,s,r&&r.get("rebuildWithTransient")?n:void 0)}async createSuffix(e,t){return super.createSuffix(e,t)}async createAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk)),a=r.map(e=>e.id);let s=r.map(e=>e.record);return s=await this.adapter.createAll(this.tableName,a,s,...t),s.map((e,t)=>this.adapter.revert(e,this.class,this.pk,a[t]))}async createAllPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.CREATE,this.class,t,this.adapter,this._overrides||{});if(!e.length)return[e,...r.args];const s=M.getSequenceOptions(e[0]);let n=[];s.type?(s.name||(s.name=O.pk(e[0])),n=await(await this.adapter.Sequence(s)).range(e.length)):n=e.map((e,t)=>{if(void 0===e[this.pk])throw new a.InternalError("Primary key is not defined for model in position "+t);return e[this.pk]}),e=await Promise.all(e.map(async(e,t)=>(e=new this.class(e),s.type&&(e[this.pk]="String"!==s.type||s.generated?n[t]:""+e[this.pk]),await a.enforceDBDecorators(this,r.context,e,a.OperationKeys.CREATE,a.OperationKeys.ON),e)));const o=r.context.get("ignoredValidationProperties")||[],i=(await Promise.all(e.map(e=>Promise.resolve(e.hasErrors(...o))))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(i)throw new a.ValidationError(i);return[e,...r.args]}async readPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.READ,this.class,t,this.adapter,this._overrides||{}),s=new this.class;return s[this.pk]=e,await a.enforceDBDecorators(this,r.context,s,a.OperationKeys.READ,a.OperationKeys.ON),[e,...r.args]}async read(e,...t){const r=await this.adapter.read(this.tableName,e,...t);return this.adapter.revert(r,this.class,this.pk,e)}async readAllPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.READ,this.class,t,this.adapter,this._overrides||{});return await Promise.all(e.map(async e=>{const t=new this.class;return t[this.pk]=e,a.enforceDBDecorators(this,r.context,t,a.OperationKeys.READ,a.OperationKeys.ON)})),[e,...r.args]}async readAll(e,...t){return(await this.adapter.readAll(this.tableName,e,...t)).map((t,r)=>this.adapter.revert(t,this.class,this.pk,e[r]))}async update(e,...t){let{record:r,id:a,transient:s}=this.adapter.prepare(e,this.pk);return r=await this.adapter.update(this.tableName,a,r,...t),this.adapter.revert(r,this.class,this.pk,a,s)}async updatePrefix(e,...t){const r=await a.Context.args(a.OperationKeys.UPDATE,this.class,t,this.adapter,this._overrides||{}),s=e[this.pk];if(!s)throw new a.InternalError("No value for the Id is defined under the property "+this.pk);const n=await this.read(s,...r.args);e=this.merge(n,e),await a.enforceDBDecorators(this,r.context,e,a.OperationKeys.UPDATE,a.OperationKeys.ON,n);const o=await Promise.resolve(e.hasErrors(n,...M.relations(this.class),...r.context.get("ignoredValidationProperties")||[]));if(o)throw new a.ValidationError(o.toString());return M.getMetadata(n)&&(M.getMetadata(e)||M.setMetadata(e,M.getMetadata(n))),[e,...r.args]}async updateAll(e,...t){const r=e.map(e=>this.adapter.prepare(e,this.pk));return(await this.adapter.updateAll(this.tableName,r.map(e=>e.id),r.map(e=>e.record),...t)).map((e,t)=>this.adapter.revert(e,this.class,this.pk,r[t].id))}async updateAllPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.UPDATE,this.class,t,this.adapter,this._overrides||{}),s=e.map(e=>{const t=e[this.pk];if(!t)throw new a.InternalError("missing id on update operation");return t}),n=await this.readAll(s,...r.args);e=e.map((e,t)=>(e=this.merge(n[t],e),M.getMetadata(n[t])&&(M.getMetadata(e)||M.setMetadata(e,M.getMetadata(n[t]))),e)),await Promise.all(e.map((e,t)=>a.enforceDBDecorators(this,r.context,e,a.OperationKeys.UPDATE,a.OperationKeys.ON,n[t])));const o=r.context.get("ignoredValidationProperties")||[],i=(await Promise.all(e.map((e,t)=>Promise.resolve(e.hasErrors(n[t],e,...o))))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(i)throw new a.ValidationError(i);return e.forEach((e,t)=>{M.getMetadata(n[t])&&(M.getMetadata(e)||M.setMetadata(e,M.getMetadata(n[t])))}),[e,...r.args]}async deletePrefix(e,...t){const r=await a.Context.args(a.OperationKeys.DELETE,this.class,t,this.adapter,this._overrides||{}),s=await this.read(e,...r.args);return await a.enforceDBDecorators(this,r.context,s,a.OperationKeys.DELETE,a.OperationKeys.ON),[e,...r.args]}async delete(e,...t){const r=await this.adapter.delete(this.tableName,e,...t);return this.adapter.revert(r,this.class,this.pk,e)}async deleteAllPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.DELETE,this.class,t,this.adapter,this._overrides||{}),s=await this.readAll(e,...r.args);return await Promise.all(s.map(async e=>a.enforceDBDecorators(this,r.context,e,a.OperationKeys.DELETE,a.OperationKeys.ON))),[e,...r.args]}async deleteAll(e,...t){return(await this.adapter.deleteAll(this.tableName,e,...t)).map((t,r)=>this.adapter.revert(t,this.class,this.pk,e[r]))}select(e){return this.adapter.Statement().select(e).from(this.class)}async query(t,r,a=e.OrderDirection.ASC,s,n){const o=[r,a],i=this.select().where(t).orderBy(o);return s&&i.limit(s),n&&i.offset(n),i.execute()}attr(e){return N.attr(e)}observe(e,t){this.observerHandler||Object.defineProperty(this,"observerHandler",{value:this.ObserverHandler(),writable:!1});const r=this.log.for(this.observe),a=M.table(this.class);this.adapter.observe(this,e=>a===e),r.verbose(`now observing ${this.adapter} filtering on table === ${a}`),this.observerHandler.observe(e,t),r.verbose("Registered new observer "+e.toString())}unObserve(e){if(!this.observerHandler)throw new a.InternalError("ObserverHandler not initialized. Did you register any observables?");this.observerHandler.unObserve(e),this.log.for(this.unObserve).verbose(`Observer ${e.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(e,t,r,...s){if(!this.observerHandler)throw new a.InternalError("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,e,t,Array.isArray(r)?r.map(e=>O.parseValue(this.pkProps.type,e)):O.parseValue(this.pkProps.type,r),...s)}async refresh(e,t,r,...a){return this.updateObservers(e,t,r,...a)}static forModel(t,r,...s){let n;const o=r||Reflect.getMetadata(E.key(e.PersistenceKeys.ADAPTER),t)||E.currentFlavour;try{n=this.get(t,o)}catch(e){n=void 0}if(n instanceof M)return n;const i=r||Reflect.getMetadata(E.key(e.PersistenceKeys.ADAPTER),t)||n&&Reflect.getMetadata(E.key(e.PersistenceKeys.ADAPTER),n)||E.currentFlavour,c=i?E.get(i):void 0;if(!c)throw new a.InternalError("No registered persistence adapter found flavour "+i);return n=n||c.repository(),new n(c,t,...s)}static get(e,t){const r=M.table(e);let s=r;if(t&&(s=[r,t].join(a.DefaultSeparator)),s in this._cache)return this._cache[s];if(r in this._cache)return this._cache[r];throw new a.InternalError("Could not find repository registered under "+r)}static register(e,t,r){let s=M.table(e);if(r&&(s=[s,r].join(a.DefaultSeparator)),s in this._cache&&this._cache[s]instanceof M)throw new a.InternalError(s+" already has a registered instance");this._cache[s]=t}static setMetadata(t,r){Object.defineProperty(t,e.PersistenceKeys.METADATA,{enumerable:!1,configurable:!0,writable:!1,value:r})}static getMetadata(t){const r=Object.getOwnPropertyDescriptor(t,e.PersistenceKeys.METADATA);return r?r.value:void 0}static removeMetadata(t){Object.getOwnPropertyDescriptor(t,e.PersistenceKeys.METADATA)&&delete t[e.PersistenceKeys.METADATA]}static getSequenceOptions(e){const t=a.findPrimaryKey(e).id,r=Reflect.getMetadata(M.key(a.DBKeys.ID),e,t);if(!r)throw new a.InternalError("No sequence options defined for model. did you use the @pk decorator?");return r}static indexes(t){const r=o.Reflection.getAllPropertyDecorators(t instanceof s.Model?t:new t,a.DBKeys.REFLECT);return Object.entries(r||{}).reduce((t,[r,a])=>{const s=a.filter(t=>t.key.startsWith(e.PersistenceKeys.INDEX));if(s&&s.length)for(const e of s){const{key:a,props:s}=e;t[r]=t[r]||{},t[r][a]=s}return t},{})}static relations(t){const r=[];let a=t instanceof s.Model?Object.getPrototypeOf(t):t.prototype;for(;null!=a;){const t=a[e.PersistenceKeys.RELATIONS];t&&r.push(...t),a=Object.getPrototypeOf(a)}return r}static table(e){return _(e)}static column(e,t){return v(e,t)}}function R(t,r){if(!r){const n=E.key(e.PersistenceKeys.ADAPTER);if(!(r=Reflect.getMetadata(n,t instanceof s.Model?t.constructor:t)))throw new a.InternalError("Could not retrieve flavour from model "+(t instanceof s.Model?t.constructor.name:t.name))}return s.sf(e.PersistenceKeys.INJECTABLE,r,_(t))}r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object,Function]),r.__metadata("design:returntype",void 0)],M.prototype,"observe",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",void 0)],M.prototype,"unObserve",null),E&&(E._baseRepository=M);class x extends t.InjectableRegistryImp{get log(){return this.logger||(this.logger=n.Logging.for(this)),this.logger}constructor(){super()}get(r,a){const n=this.log.for(this.get);let o;try{o=super.get(r)}catch{}if(!o){let i;if("function"==typeof r?i=r:"symbol"!=typeof r&&"string"!=typeof r||(i=s.Model.get(r.toString())),!i)return;const c=E.key(e.PersistenceKeys.ADAPTER),d=a||Reflect.getMetadata(c,i);try{let e=d;try{d&&E.get(d)}catch{const t=E.current;t&&t.flavour===d&&(e=t.alias)}if(o=M.forModel(i,e),o instanceof M)return o;const r=d||Reflect.getMetadata(c,o.constructor)||Reflect.getMetadata(c,i);t.Injectables.register(o,R(i,r))}catch(e){n.debug("No registered repository or adapter found. falling back to default adapter. Error: "+(e?.message||JSON.stringify(e)));const t=M.get(i,d);if("function"==typeof t){const e=d?E.get(d):E.current;if(!e)return;return new t(e,i)}}}return o}}i.Metadata.validationExceptions=((t,r)=>{const a=i.Metadata.get(t,e.PersistenceKeys.NO_VALIDATE);return a?Object.entries(a).filter(([,e])=>e.includes(r)).map(([e])=>e):[]}).bind(i.Metadata);class I extends a.InternalError{constructor(e){super(e,I.name,500)}}const K={type:void 0,generated:!1,startWith:0,incrementBy:1,cycle:!1},B=K,k={type:"Number",generated:!0,startWith:0,incrementBy:1,cycle:!1},j=Object.assign({},k,{type:"BigInt"});async function L(e,t,r,n){if(!n){const t=s.Model.get(e.constructor.name);if(!t)throw new a.InternalError("Could not find model "+e.constructor.name);n=M.forModel(t,r)}if(void 0===e[n.pk])return n.create(e,t);try{return n.update(e,t)}catch(r){if(!(r instanceof a.NotFoundError))throw r;return n.create(e,t)}}async function $(e,t,r,n){const o=n[r];if(!o)return;if("object"!=typeof o){const t=W(n,r,this.adapter.alias),a=await t.read(o);return await V(e,n,r,o,a),void(n[r]=o)}t.class="string"==typeof t.class?t.class:t.class().name;const i=s.Model.get(t.class);if(!i)throw new a.InternalError("Could not find model "+t.class);const c=M.forModel(i,this.adapter.alias),d=await c.create(o),l=a.findPrimaryKey(d).id;await V(e,n,r,d[l],d),n[r]=d[l]}async function F(t,r,s,n){const o=n[s];if(!o)return;if(r.cascade.update!==e.Cascade.CASCADE)return;if("object"!=typeof o){const e=W(n,s,this.adapter.alias),r=await e.read(o);return await V(t,n,s,o,r),void(n[s]=o)}const i=await L(n[s],t,this.adapter.alias),c=a.findPrimaryKey(i).id;await V(t,n,s,i[c],i),n[s]=i[c]}async function U(t,r,a,n){const o=n[a];if(!o)return;if(r.cascade.update!==e.Cascade.CASCADE)return;const i=W(n,a,this.adapter.alias);let c;c=o instanceof s.Model?await i.delete(n[a][i.pk]):await i.delete(n[a]),await V(t,n,a,c[i.pk],c)}async function q(e,t,r,s){const n=s[r];if(!n||!n.length)return;const o=typeof n[0];if(!n.every(e=>typeof e===o))throw new a.InternalError(`Invalid operation. All elements of property ${r} must match the same type.`);const i=new Set([...n]);if("object"!==o){const t=W(s,r,this.adapter.alias);for(const a of i){const n=await t.read(a);await V(e,s,r,a,n)}return void(s[r]=[...i])}const c=a.findPrimaryKey(n[0]).id,d=new Set;for(const t of n){const a=await L(t,e,this.adapter.alias);await V(e,s,r,a[c],a),d.add(a[c])}s[r]=[...d]}async function G(t,r,a,s){const{cascade:n}=r;if(n.update===e.Cascade.CASCADE)return q.call(this,t,r,a,s)}async function H(t,r,s,n){if(r.cascade.delete!==e.Cascade.CASCADE)return;const o=n[s];if(!o||!o.length)return;const i=typeof o[0];if(!o.every(e=>typeof e===i))throw new a.InternalError(`Invalid operation. All elements of property ${s} must match the same type.`);const c="object"===i,d=c?M.forModel(o[0],this.adapter.alias):W(n,s,this.adapter.alias),l=new Set([...c?o.map(e=>e[d.pk]):o]);for(const e of l.values()){const r=await d.delete(e);await V(t,n,s,e,r)}n[s]=[...l]}function Q(t,r,a){return[e.PersistenceKeys.POPULATE,t,r,a].join(".")}async function V(e,t,r,a,s){const n=Q(t.constructor.name,r,a);return e.accumulate({[n]:s})}async function Y(e,t,r,s){if(!t.populate)return;const n=s[r],o=Array.isArray(n);if(void 0===n||o&&0===n.length)return;const i=await(async(e,t,r,s,n)=>{let o,i;const c=[];for(const d of s){o=Q(t.constructor.name,r,d);try{i=await e.get(o)}catch(e){const s=W(t,r,n);if(!s)throw new a.InternalError("Could not find repo");i=await s.read(d)}c.push(i)}return c})(e,s,r,o?n:[n],this.adapter.alias);s[r]=o?i:i[0]}const z=["array","string","number","boolean","symbol","function","object","undefined","null","bigint"];function W(e,t,r){const n=Reflect.getMetadata(s.Validation.key(Array.isArray(e[t])?s.ValidationKeys.LIST:s.ValidationKeys.TYPE),e,t),o=Array.isArray(e[t])?n.clazz:n.customTypes;if(!n||!o)throw new a.InternalError("Failed to find types decorators for property "+t);const i=(Array.isArray(o)?[...o]:[o]).map(e=>"function"==typeof e?e():e).find(e=>!z.includes((""+e).toLowerCase()));if(!i)throw new a.InternalError(`Property key ${t} does not have a valid constructor type`);const c=s.Model.get(i);if(!c)throw new a.InternalError("No registered model found for "+i);return M.forModel(c,r)}function X(t,r,a){return s.Decoration.for(e.PersistenceKeys.INDEX).define({decorator:(t,r,a)=>("string"==typeof t&&(a=t,t=void 0,r=void 0),"string"==typeof r&&(a=r,r=void 0),!r&&t&&t.find(t=>![e.OrderDirection.ASC,e.OrderDirection.DSC].includes(t))&&(r=t,t=void 0),s.propMetadata(M.key(`${e.PersistenceKeys.INDEX}${r&&r.length?"."+r.join("."):""}`),{directions:t,compositions:r,name:a})),args:[t,r,a]}).apply()}async function J(e,t,r,s){if(s[r]&&(await this.select().where(N.attribute(r).eq(s[r])).execute()).length)throw new a.ConflictError(`model already exists with property ${r} equal to ${JSON.stringify(s[r],void 0,2)}`)}async function Z(e,t,r,a){throw new u("This adapter does not support user identification")}function ee(){return a.timestamp([a.OperationKeys.CREATE])}function te(){return a.timestamp()}function re(...t){return(r,a)=>{const s=i.Metadata.get(r,i.Metadata.key(e.PersistenceKeys.NO_VALIDATE,a))||[],n=[...new Set([...s,...t])];return i.apply(i.metadata(i.Metadata.key(e.PersistenceKeys.NO_VALIDATE,a),n))(r,a)}}async function ae(e,t,r,s){if(!t.type||!t.generated||s[r])return;let n;t.name||(t.name=w(s,"pk"));try{n=await this.adapter.Sequence(t)}catch(e){throw new a.InternalError(`Failed to instantiate Sequence ${t.name}: ${e}`)}const o=await n.next();Object.defineProperty(s,r,{enumerable:!0,writable:!1,configurable:!0,value:o})}class se extends s.Model{constructor(e){super(e)}}var ne,oe,ie,ce,de;r.__decorate([ee(),r.__metadata("design:type",Date)],se.prototype,"createdOn",void 0),r.__decorate([te(),r.__metadata("design:type",Date)],se.prototype,"updatedOn",void 0);class le extends n.LoggedClass{constructor(e){super(),this.adapter=e}get log(){return this.adapter.log.for(le)}select(e){return Object.defineProperty(this,"selectSelector",{value:e,writable:!1}),this}distinct(e){return this.distinctSelector=e,this}max(e){return this.maxSelector=e,this}min(e){return this.minSelector=e,this}count(e){return this.countSelector=e,this}from(e){if(this.fromSelector="string"==typeof e?s.Model.get(e):e,!this.fromSelector)throw new T("Could not find selector model: "+e);return this}where(e){return this.whereCondition=e,this}orderBy(e){return this.orderBySelector=e,this}groupBy(e){return this.groupBySelector=e,this}limit(e){return this.limitSelector=e,this}offset(e){return this.offsetSelector=e,this}async execute(){try{const e=this.build();return await this.raw(e)}catch(e){throw new a.InternalError(e)}}async raw(e){const t=await this.adapter.raw(e);if(!this.selectSelector)return t;const r=a.findPrimaryKey(new this.fromSelector).id,s=function(e){const t=e[r];return this.adapter.revert(e,this.fromSelector,r,t)}.bind(this);return Array.isArray(t)?t.map(s):s(t)}}r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Array]),r.__metadata("design:returntype",Object)],le.prototype,"select",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",["function"==typeof(ne="undefined"!=typeof S&&S)?ne:Object]),r.__metadata("design:returntype",Object)],le.prototype,"distinct",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",["function"==typeof(oe="undefined"!=typeof S&&S)?oe:Object]),r.__metadata("design:returntype",Object)],le.prototype,"max",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",["function"==typeof(ie="undefined"!=typeof S&&S)?ie:Object]),r.__metadata("design:returntype",Object)],le.prototype,"min",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",["function"==typeof(ce="undefined"!=typeof S&&S)?ce:Object]),r.__metadata("design:returntype",Object)],le.prototype,"count",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",Object)],le.prototype,"from",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[N]),r.__metadata("design:returntype",Object)],le.prototype,"where",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Array]),r.__metadata("design:returntype",Object)],le.prototype,"orderBy",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",Object)],le.prototype,"groupBy",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Number]),r.__metadata("design:returntype",Object)],le.prototype,"limit",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Number]),r.__metadata("design:returntype",Object)],le.prototype,"offset",null),r.__decorate([p(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[]),r.__metadata("design:returntype",Promise)],le.prototype,"execute",null),e.QueryClause=void 0,(de=e.QueryClause||(e.QueryClause={})).FIND_BY="findBy",de.SELECT="Select",de.AND="And",de.OR="Or",de.GROUP_BY="GroupBy",de.ORDER_BY="OrderBy",de.THEN="Then",de.THEN_BY="ThenBy";const pe={Equals:(e,t)=>N.attribute(e).eq(t),Diff:(e,t)=>N.attribute(e).dif(t),LessThan:(e,t)=>N.attribute(e).lt(t),LessThanEqual:(e,t)=>N.attribute(e).lte(t),GreaterThan:(e,t)=>N.attribute(e).gt(t),GreaterThanEqual:(e,t)=>N.attribute(e).gte(t),Between:(e,t,r)=>N.attribute(e).gte(t).and(N.attribute(e).lte(r)),In:(e,t)=>N.attribute(e).in(t),Matches:(e,t)=>N.attribute(e).regexp(t)},ue=e=>e.charAt(0).toLowerCase()+e.slice(1);class he{static build(t,...r){if(!t.startsWith(e.QueryClause.FIND_BY))throw Error("Unsupported method "+t);const a=this.extractCore(t),s=this.extractSelect(t),n=this.extractGroupBy(t),o=this.buildWhere(a,r),{orderBy:i,limit:c,offset:d}=this.extractOrderLimitOffset(a,r);return{action:"find",select:s,where:o,groupBy:n,orderBy:i,limit:c,offset:d}}static extractCore(t){const r=t.substring(e.QueryClause.FIND_BY.length),a=r.match(/(Then[A-Z]|OrderBy|GroupBy|Limit|Offset)/);return a?r.substring(0,a.index):r}static extractSelect(t){const r=t.indexOf(e.QueryClause.SELECT);if(-1===r)return;const a=t.substring(r+e.QueryClause.SELECT.length),s=a.match(/(Then[A-Z]|OrderBy|GroupBy|Limit|Offset)/);return(s?a.substring(0,s.index):a).split(e.QueryClause.AND).map(ue).filter(Boolean)}static extractGroupBy(t){const r=t.indexOf(e.QueryClause.GROUP_BY);if(-1!==r)return t.substring(r+e.QueryClause.GROUP_BY.length).split(e.QueryClause.ORDER_BY)[0].split(e.QueryClause.THEN_BY).map(ue).filter(Boolean)}static buildWhere(t,r){const a=(t.split(/OrderBy|GroupBy/)[0]||"").split(/And|Or/),s=t.match(/And|Or/g)||[];let n;if(a.forEach((t,a)=>{const{field:o,operator:i}=this.parseFieldAndOperator(t),c=i?pe[i]:pe.Equals;if(!c)throw Error("Unsupported operator "+i);const d=r[a];if(void 0===d)throw Error("Invalid value for field "+o);const l=c(o,d);n=0===a?l:s[a-1]===e.QueryClause.AND?n.and(l):n.or(l)}),!n)throw Error("No conditions found in method name");return n}static parseFieldAndOperator(e){for(const t of Object.keys(pe))if(e.endsWith(t)){const r=e.slice(0,-t.length);return{field:ue(r),operator:t}}return{field:ue(e)}}static extractOrderLimitOffset(e,t){const r=e.split(/And|Or/).length,a=t.slice(r);let s,n,o;return a.length>=1&&Array.isArray(a[0])&&(s=a[0]),2>a.length||"number"!=typeof a[1]||(n=a[1]),3>a.length||"number"!=typeof a[2]||(o=a[2]),{orderBy:s,limit:n,offset:o}}}t.Injectables.setRegistry(new x);const ye="##VERSION##",fe="##PACKAGE##";i.Metadata.registerLibrary(fe,ye),e.Adapter=E,e.AuthorizationError=u,e.BaseModel=se,e.BigIntSequence=j,e.Condition=N,e.ConnectionError=y,e.DefaultCascade=A,e.DefaultSequenceOptions=B,e.Dispatch=m,e.ForbiddenError=h,e.InjectablesRegistry=x,e.MethodQueryBuilder=he,e.NoneSequenceOptions=K,e.NumericSequence=k,e.ObserverError=I,e.ObserverHandler=f,e.OperatorsMap=pe,e.PACKAGE_NAME=fe,e.Paginator=class{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(e,t,r,a){this.adapter=e,this.query=t,this.size=r,this.clazz=a}async next(){return this.page(this.current+1)}async previous(){return this.page(this.current-1)}validatePage(e){if(1>e||!Number.isInteger(e))throw new C("Page number cannot be under 1 and must be an integer");if(void 0!==this._totalPages&&e>this._totalPages)throw new C(`Only ${this._totalPages} are available. Cannot go to page ${e}`);return e}},e.PagingError=C,e.QueryError=T,e.Repository=M,e.Sequence=O,e.Statement=le,e.UnsupportedError=g,e.VERSION=ye,e.cacheModelForPopulate=V,e.column=t=>{const r=E.key(e.PersistenceKeys.COLUMN);return s.Decoration.for(r).define({decorator:(e,t)=>(r,a)=>s.propMetadata(e,t||a)(r,a),args:[r,t]}).apply()},e.createOrUpdate=L,e.createdAt=ee,e.createdBy=()=>{const t=M.key(e.PersistenceKeys.CREATED_BY);return s.Decoration.for(t).define(a.onCreate(Z),s.propMetadata(t,{})).apply()},e.createdByOnCreateUpdate=Z,e.final=p,e.generateInjectableNameForRepository=R,e.getColumnName=v,e.getPopulateKey=Q,e.getTableName=_,e.index=X,e.manyToMany=(t,r=A,a=!0,n,i)=>{const c=M.key(e.PersistenceKeys.MANY_TO_MANY);return s.Decoration.for(c).define({decorator:(t,r,a,n,i)=>{const d={class:t.name?t.name:t,cascade:r,populate:a};return n&&(d.joinTable=n),i&&(d.name=i),o.apply(s.prop(e.PersistenceKeys.RELATIONS),s.list([t.name?t.name:t,String.name,Number.name,BigInt.name]),s.propMetadata(c,d))},args:[t,r,a,n,i]}).apply()},e.manyToOne=(t,r=A,a=!0,n,i)=>{const c=M.key(e.PersistenceKeys.MANY_TO_ONE);return s.Decoration.for(c).define({decorator:(t,r,a,n,i)=>{const d={class:t?.name?t.name:t,cascade:r,populate:a};return n&&(d.joinTable=n),i&&(d.name=i),o.apply(s.prop(e.PersistenceKeys.RELATIONS),s.type([()=>(t?.name?t:t()).name,String.name,Number.name,BigInt.name]),s.propMetadata(c,d))},args:[t,r,a,n,i]}).apply()},e.noValidateOn=re,e.noValidateOnCreate=()=>re(a.OperationKeys.CREATE),e.noValidateOnCreateUpdate=()=>re(a.OperationKeys.UPDATE,a.OperationKeys.CREATE),e.noValidateOnUpdate=()=>re(a.OperationKeys.UPDATE),e.oneToMany=(t,r=A,n=!0,i,c)=>{const d=M.key(e.PersistenceKeys.ONE_TO_MANY);return s.Decoration.for(d).define({decorator:(t,r,n,i,c)=>{const l={class:t.name?t.name:t,cascade:r,populate:n};return i&&(l.joinTable=i),c&&(l.name=c),o.apply(s.prop(e.PersistenceKeys.RELATIONS),s.list([t,String,Number,BigInt]),a.onCreate(q,l),a.onUpdate(G,l),a.onDelete(H,l),a.afterAny(Y,l),s.propMetadata(d,l))},args:[t,r,n,i,c]}).apply()},e.oneToManyOnCreate=q,e.oneToManyOnDelete=H,e.oneToManyOnUpdate=G,e.oneToOne=(t,r=A,n=!0,i,c)=>{const d=M.key(e.PersistenceKeys.ONE_TO_ONE);return s.Decoration.for(d).define({decorator:(t,r,n,i,c)=>{const l={class:t.name?t.name:t,cascade:r,populate:n};return i&&(l.joinTable=i),c&&(l.name=c),o.apply(s.prop(e.PersistenceKeys.RELATIONS),s.type([t.name?t.name:t,String.name,Number.name,BigInt.name]),a.onCreate($,l),a.onUpdate(F,l),a.onDelete(U,l),a.afterAny(Y,l),s.propMetadata(d,l))},args:[t,r,n,i,c]}).apply()},e.oneToOneOnCreate=$,e.oneToOneOnDelete=U,e.oneToOneOnUpdate=F,e.pk=(t=B)=>{t=Object.assign({},B,t,{generated:!(!t.type||void 0!==t.generated)||t.generated||B.generated});const r=M.key(a.DBKeys.ID);return s.Decoration.for(r).define({decorator:(t,n)=>(i,c)=>o.apply(X([e.OrderDirection.ASC,e.OrderDirection.DSC]),s.required(),a.readonly(),s.propMetadata(r,t),a.onCreate(ae,t,n),s.propMetadata(a.DBKeys.ID,c))(i,c),args:[t,{priority:60}]}).apply()},e.pkOnCreate=ae,e.populate=Y,e.query=function(e={}){return(t,r,a)=>{const s=r.toString();a.value=function(...t){const{select:r,where:a,groupBy:n,orderBy:o,limit:i,offset:c}=he.build(s,...t);let d=this.select(r);a&&(d=d.where(a));const{allowLimit:l,allowOffset:p,allowOrderBy:u,throws:h}={allowLimit:!0,allowOrderBy:!0,allowOffset:!0,throws:!0,...e},y=[{key:"orderBy",value:(o||[])[0],allowed:u},{key:"limit",value:i,allowed:l},{key:"offset",value:c,allowed:p}];for(const e of y)if(void 0!==e.value){if(!e.allowed&&h)throw new T(e.key[0].toUpperCase()+e.key.slice(1)+" is not allowed for this query");e.allowed&&(d=d[e.key](e.value))}return d.execute()}}},e.repository=(r,n)=>(i,c)=>c?t.inject(r[s.ModelKeys.ANCHOR]||r)(i,c):(o.metadata(M.key(a.DBKeys.REPOSITORY),i.name)(r),n=n||Reflect.getMetadata(E.key(e.PersistenceKeys.ADAPTER),i),M.register(r[s.ModelKeys.ANCHOR]||r,i,n),t.injectable(r[s.ModelKeys.ANCHOR]||r,{callback:e=>(Object.defineProperty(e,a.DBKeys.CLASS,{enumerable:!1,configurable:!1,writable:!1,value:r}),e)})(i)),e.repositoryFromTypeMetadata=W,e.sequenceNameForModel=w,e.table=t=>r=>{const a=E.key(e.PersistenceKeys.TABLE);return s.Decoration.for(a).define({decorator:o.metadata,args:[a,t||r.name.toLowerCase()]}).apply()(r)},e.unique=()=>{const t=M.key(e.PersistenceKeys.UNIQUE);return s.Decoration.for(t).define(a.onCreateUpdate(J),s.propMetadata(t,{})).apply()},e.uniqueOnCreateUpdate=J,e.updatedAt=te,e.updatedBy=()=>{const t=M.key(e.PersistenceKeys.UPDATED_BY);return s.Decoration.for(t).define(a.onCreateUpdate(Z),s.propMetadata(t,{})).apply()},e.uses=b},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/injectable-decorators"),require("tslib"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/logging"),require("@decaf-ts/reflection"),require("@decaf-ts/decoration")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/injectable-decorators","tslib","@decaf-ts/db-decorators","@decaf-ts/decorator-validation","@decaf-ts/logging","@decaf-ts/reflection","@decaf-ts/decoration"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).core={},e.decafTsInjectableDecorators,e.tslib,e.decafTsDbDecorators,e.decafTsDecoratorValidation,e.decafTsLogging,e.decafTsReflection,e.decafTsDecoration);
1
+ var e,t;e=this,t=function(e,t,r,a,s,n,o,i){"use strict";var c;function d(){return(e,t,r)=>{if(!r)throw Error("final decorator can only be used on methods");return r?.configurable&&(r.configurable=!1),r}}e.PersistenceKeys=void 0,(c=e.PersistenceKeys||(e.PersistenceKeys={})).INDEX="index",c.UNIQUE="unique",c.ADAPTER="adapter",c.INJECTABLE="decaf_{0}_adapter_for_{1}",c.TABLE="table",c.COLUMN="column",c.METADATA="__metadata",c.OWNERSHIP="ownership",c.CREATED_BY="ownership.created-by",c.UPDATED_BY="ownership.updated-by",c.RELATIONS="__relations",c.RELATION="relation",c.ONE_TO_ONE="relation.one-to-one",c.ONE_TO_MANY="relation.one-to-many",c.MANY_TO_ONE="relation.many-to-one",c.MANY_TO_MANY="relation.many-to-many",c.POPULATE="populate",c.NO_VALIDATE="no-validate",c.MIGRATION="migration";class l extends a.BadRequestError{constructor(e,t=l.name,r=401){super(e,t,r)}}class u extends l{constructor(e,t=u.name){super(e,t,403)}}class p extends a.InternalError{constructor(e){super(e,p.name,503)}}class h{constructor(){this.observers=[]}count(){return this.observers.length}observe(e,t){if(-1!==this.observers.map(e=>e.observer).indexOf(e))throw new a.InternalError("Observer already registered");this.observers.push({observer:e,filter:t})}unObserve(e){const t=this.observers.map(e=>e.observer).indexOf(e);if(-1===t)throw new a.InternalError("Failed to find Observer");this.observers.splice(t,1)}async updateObservers(e,t,r,a,...s){(await Promise.allSettled(this.observers.filter(s=>{const{filter:n}=s;if(!n)return!0;try{return n(t,r,a)}catch(t){return e.error(`Failed to filter observer ${s.observer.toString()}: ${t}`),!1}}).map(e=>{e.observer.refresh(t,r,a,...s)}))).forEach((t,r)=>{"rejected"===t.status&&e.error(`Failed to update observable ${this.observers[r].toString()}: ${t.reason}`)})}}function f(t){if(!(t instanceof s.Model?s.Model.get(t.constructor.name):t))throw new a.InternalError("Unable to find model "+t);return o.Metadata.get(t instanceof s.Model?t.constructor:t,e.PersistenceKeys.TABLE)||(t instanceof s.Model?t.constructor.name:t.name)}function y(t,r){return o.Metadata.get(t instanceof s.Model?t.constructor:t,o.Metadata.key(e.PersistenceKeys.COLUMN,r))||r}function g(e,...t){return[f(e),...t].join("_")}class m extends a.InternalError{constructor(e){super(e,m.name,500)}}class b extends a.InternalError{constructor(e,t=b.name){super(e,t,500)}}class w extends b{constructor(e){super(e,w.name)}}const O=o.Decoration.flavourResolver.bind(o.Decoration);o.Decoration.flavourResolver=e=>{try{const t=O(e);if(t&&t!==o.DefaultFlavour)return t;const r="function"==typeof e?e:e?.constructor,a=r&&"function"==typeof o.Metadata.registeredFlavour?o.Metadata.registeredFlavour(r):void 0;if(a&&a!==o.DefaultFlavour)return a;const s=v._currentFlavour;if(s){const e=v._cache?.[s];return e?.flavour?e.flavour:s}}catch(e){return o.DefaultFlavour}};class v extends n.LoggedClass{static{this._cache={}}get config(){return this._config}get alias(){return this._alias||this.flavour}repository(){if(!v._baseRepository)throw new a.InternalError("This should be overridden when necessary. Otherwise it will be replaced lazily");return v._baseRepository}async shutdownProxies(e){if(this.proxies){if(e&&!(e in this.proxies))throw new a.InternalError("No proxy found for "+e);if(e)try{await this.proxies[e].shutdown(),delete this.proxies[e]}catch(t){this.log.error(`Failed to shutdown proxied adapter ${e}: ${t}`)}else for(const e in this.proxies){try{await this.proxies[e].shutdown()}catch(t){this.log.error(`Failed to shutdown proxied adapter ${e}: ${t}`);continue}delete this.proxies[e]}}}async shutdown(){await this.shutdownProxies(),this.dispatch&&await this.dispatch.close()}constructor(e,t,r){if(super(),this._config=e,this.flavour=t,this._alias=r,this.Context=a.Context,this.alias in v._cache)throw new a.InternalError(`${this.alias} persistence adapter ${this._alias?`(${this.flavour}) `:""} already registered`);v._cache[this.alias]=this,this.log.info(`Created ${this.alias} persistence adapter ${this._alias?`(${this.flavour}) `:""} persistence adapter`),v._currentFlavour||(this.log.verbose(`Defined ${this.alias} persistence adapter as current`),v._currentFlavour=this.alias)}Dispatch(){return new v._baseDispatch}ObserverHandler(){return new h}isReserved(e){return!e}async initialize(...e){}async flags(e,t,r,...s){return Object.assign({},a.DefaultRepositoryFlags,r,{affectedTables:f(t),writeOperation:e!==a.OperationKeys.READ,timestamp:new Date,operation:e,ignoredValidationProperties:o.Metadata.validationExceptions(t,e)})}async context(e,t,r,...a){this.log.for(this.context).debug(`Creating new context for ${e} operation on ${r.name} model with flag overrides: ${JSON.stringify(t)}`);const s=await this.flags(e,r,t,...a);return(new this.Context).accumulate(s)}prepare(t,r){const s=this.log.for(this.prepare),n=t.toTransient(),o=Object.entries(n.model).reduce((e,[r,s])=>{if(void 0===s)return e;const n=y(t,r);if(this.isReserved(n))throw new a.InternalError(`Property name ${n} is reserved`);return e[n]=s,e},{});return t[e.PersistenceKeys.METADATA]&&(s.silly("Passing along persistence metadata for "+t[e.PersistenceKeys.METADATA]),Object.defineProperty(o,e.PersistenceKeys.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:t[e.PersistenceKeys.METADATA]})),{record:o,id:t[r],transient:n.transient}}revert(t,r,n,o,i){const c=this.log.for(this.revert),d={};d[n]=o;const l="string"==typeof r?s.Model.build(d,r):new r(d);c.silly(`Rebuilding model ${l.constructor.name} id ${o}`);const u=t[e.PersistenceKeys.METADATA],p=Object.keys(l).reduce((e,r)=>(r===n||(e[r]=t[y(e,r)]),e),l);return i&&(c.verbose("re-adding transient properties: "+Object.keys(i).join(", ")),Object.entries(i).forEach(([e,t])=>{if(e in p)throw new a.InternalError(`Transient property ${e} already exists on model ${l.constructor.name}. should be impossible`);p[e]=t})),u&&(c.silly(`Passing along ${this.flavour} persistence metadata for ${l.constructor.name} id ${o}: ${u}`),Object.defineProperty(p,e.PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:u})),p}async createAll(e,t,r,...s){if(t.length!==r.length)throw new a.InternalError("Ids and models must have the same length");const n=this.log.for(this.createAll);return n.verbose(`Creating ${t.length} entries ${e} table`),n.debug("pks: "+t),Promise.all(t.map((t,a)=>this.create(e,t,r[a],...s)))}async readAll(e,t,...r){const a=this.log.for(this.readAll);return a.verbose(`Reading ${t.length} entries ${e} table`),a.debug("pks: "+t),Promise.all(t.map(t=>this.read(e,t,...r)))}async updateAll(e,t,r,...s){if(t.length!==r.length)throw new a.InternalError("Ids and models must have the same length");const n=this.log.for(this.updateAll);return n.verbose(`Updating ${t.length} entries ${e} table`),n.debug("pks: "+t),Promise.all(t.map((t,a)=>this.update(e,t,r[a],...s)))}async deleteAll(e,t,...r){const a=this.log.for(this.createAll);return a.verbose(`Deleting ${t.length} entries ${e} table`),a.debug("pks: "+t),Promise.all(t.map(t=>this.delete(e,t,...r)))}observe(e,t){this.observerHandler||Object.defineProperty(this,"observerHandler",{value:this.ObserverHandler(),writable:!1}),this.observerHandler.observe(e,t),this.log.for(this.observe).verbose("Registering new observer "+e.toString()),this.dispatch||(this.log.for(this.observe).info("Creating dispatch for "+this.alias),this.dispatch=this.Dispatch(),this.dispatch.observe(this))}unObserve(e){if(!this.observerHandler)throw new a.InternalError("ObserverHandler not initialized. Did you register any observables?");this.observerHandler.unObserve(e),this.log.for(this.unObserve).verbose(`Observer ${e.toString()} removed`)}async updateObservers(e,t,r,...s){if(!this.observerHandler)throw new a.InternalError("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,e,t,r,...s)}async refresh(e,t,r,...a){return this.updateObservers(e,t,r,...a)}toString(){return this.flavour+" persistence Adapter"}static flavourOf(e){return o.Metadata.flavourOf(e)}static get currentFlavour(){if(!v._currentFlavour)throw new a.InternalError("No persistence flavour set. Please initialize your adapter");return v._currentFlavour}static get current(){return v.get(this.currentFlavour)}static get(e){if(!e)return v.get(this._currentFlavour);if(e in this._cache)return this._cache[e];throw new a.InternalError(`No Adapter registered under ${e}.`)}static setCurrent(e){this._currentFlavour=e}static models(e){try{return o.Metadata.flavouredAs(e)}catch(e){throw new a.InternalError(e)}}static decoration(){}get client(){return this._client||(this._client=this.getClient()),this._client}for(e,...t){this.proxies||(this.proxies={});const r=`${this.alias} - ${s.hashObj(e)}`;if(r in this.proxies)return this.proxies[r];let a;const n=new Proxy(this,{get:(t,r,s)=>{if("_config"===r){const a=Reflect.get(t,r,s);return Object.assign({},a,e)}return"_client"===r?a:Reflect.get(t,r,s)},set:(e,t,r,s)=>"_client"===t?(a=r,!0):Reflect.set(e,t,r,s)});return this.proxies[r]=n,n}migrations(){return o.Metadata.migrationsFor(this)}async migrate(e=this.migrations()){for(const t of e)try{const e=new t;await e.up(this,this,this.log),await e.down(this,this,this.log)}catch(e){throw new b(e)}}}var _,E;r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[String]),r.__metadata("design:returntype",Promise)],v.prototype,"shutdownProxies",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[String,Object,Object,Object]),r.__metadata("design:returntype",Promise)],v.prototype,"context",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object,Function]),r.__metadata("design:returntype",void 0)],v.prototype,"observe",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",void 0)],v.prototype,"unObserve",null),r.__decorate([d(),r.__metadata("design:type",Object),r.__metadata("design:paramtypes",[])],v.prototype,"client",null),e.OrderDirection=void 0,(_=e.OrderDirection||(e.OrderDirection={})).ASC="asc",_.DSC="desc",e.Cascade=void 0,(E=e.Cascade||(e.Cascade={})).CASCADE="cascade",E.NONE="none";const A={update:e.Cascade.CASCADE,delete:e.Cascade.NONE};class D{get log(){return this.logger||(this.logger=n.Logging.for(this)),this.logger}constructor(e){this.options=e}static pk(e){return g(e,"pk")}static parseValue(e,t){switch(e){case"Number":return"string"==typeof t?parseInt(t):"number"==typeof t?t:BigInt(t);case"BigInt":return BigInt(t);case void 0:case"String":return t;default:throw new m(`Unsupported sequence type: ${e} for adapter ${this}`)}}}var M,P;e.Operator=void 0,(M=e.Operator||(e.Operator={})).EQUAL="EQUAL",M.DIFFERENT="DIFFERENT",M.BIGGER="BIGGER",M.BIGGER_EQ="BIGGER_EQ",M.SMALLER="SMALLER",M.SMALLER_EQ="SMALLER_EQ",M.NOT="NOT",M.IN="IN",M.REGEXP="REGEXP",e.GroupOperator=void 0,(P=e.GroupOperator||(e.GroupOperator={})).AND="AND",P.OR="OR";class T extends a.InternalError{constructor(e){super(e,T.name,500)}}class I extends a.InternalError{constructor(e){super(e,I.name,500)}}class C extends s.Model{constructor(e,t,r){super(),this.attr1=void 0,this.operator=void 0,this.comparison=void 0,this.attr1=e,this.operator=t,this.comparison=r}and(e){return C.and(this,e)}or(e){return C.or(this,e)}not(t){return new C(this,e.Operator.NOT,t)}hasErrors(...t){const r=()=>{const t=`Invalid operator ${this.operator}}`;if("string"==typeof this.attr1){if(this.comparison instanceof C)return{comparison:{condition:"Both sides of the comparison must be of the same type"}};if(-1===Object.values(e.Operator).indexOf(this.operator))return{operator:{condition:t}}}if(this.attr1 instanceof C){if(!(this.comparison instanceof C)&&this.operator!==e.Operator.NOT)return{comparison:{condition:t}};if(-1===Object.values(e.GroupOperator).indexOf(this.operator)&&this.operator!==e.Operator.NOT)return{operator:{condition:t}}}},a=super.hasErrors(...t);return this.isAsync()?(async()=>await Promise.resolve(a)??r())():a??r()}static and(t,r){return C.group(t,e.GroupOperator.AND,r)}static or(t,r){return C.group(t,e.GroupOperator.OR,r)}static group(e,t,r){return new C(e,t,r)}static attribute(e){return(new C.Builder).attribute(e)}static attr(e){return this.attribute(e)}static{this.Builder=class{constructor(){this.attr1=void 0,this.operator=void 0,this.comparison=void 0}attribute(e){return this.attr1=e,this}attr(e){return this.attribute(e)}eq(t){return this.setOp(e.Operator.EQUAL,t)}dif(t){return this.setOp(e.Operator.DIFFERENT,t)}gt(t){return this.setOp(e.Operator.BIGGER,t)}lt(t){return this.setOp(e.Operator.SMALLER,t)}gte(t){return this.setOp(e.Operator.BIGGER_EQ,t)}lte(t){return this.setOp(e.Operator.SMALLER_EQ,t)}in(t){return this.setOp(e.Operator.IN,t)}regexp(t){return this.setOp(e.Operator.REGEXP,RegExp(t).source)}setOp(e,t){return this.operator=e,this.comparison=t,this.build()}build(){try{return new C(this.attr1,this.operator,this.comparison)}catch(e){throw new T(e)}}}}static builder(){return new C.Builder}}r.__decorate([s.required(),r.__metadata("design:type",Object)],C.prototype,"attr1",void 0),r.__decorate([s.required(),r.__metadata("design:type",String)],C.prototype,"operator",void 0),r.__decorate([s.required(),r.__metadata("design:type",Object)],C.prototype,"comparison",void 0);class N extends a.Repository{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 a.InternalError("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=N.table(this.class)),this._tableName}get pkProps(){return super.pkProps}constructor(e,t,...r){super(t),this.observers=[],e&&(this._adapter=e),t&&(N.register(t,this,this.adapter.alias),e)&&o.Metadata.get(t,o.DecorationKeys.FLAVOUR)===o.DefaultFlavour&&o.uses(e.flavour)(t),[this.createAll,this.readAll,this.updateAll,this.deleteAll].forEach(e=>{const t=e.name;a.wrapMethodWithContext(this,this[t+"Prefix"],e,this[t+"Suffix"])})}override(e){return this.log.for(this.override).debug("Overriding repository flags with "+JSON.stringify(e)),new Proxy(this,{get:(t,r,a)=>{const s=Reflect.get(t,r,a);return"_overrides"!==r?s:Object.assign({},s,e)}})}for(e,...t){return new Proxy(this,{get:(r,a,s)=>"adapter"===a?this.adapter.for(e,...t):Reflect.get(r,a,s)})}ObserverHandler(){return new h}async createPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.CREATE,this.class,t,this.adapter,this._overrides||{});e=new this.class(e),await a.enforceDBDecorators(this,r.context,e,a.OperationKeys.CREATE,a.OperationKeys.ON);const s=await Promise.resolve(e.hasErrors(...r.context.get("ignoredValidationProperties")||[]));if(s)throw new a.ValidationError(s.toString());return[e,...r.args]}async create(e,...t){let r,{record:a,id:s,transient:n}=this.adapter.prepare(e,this.pk);return a=await this.adapter.create(this.tableName,s,a,...t),t.length&&(r=t[t.length-1]),this.adapter.revert(a,this.class,this.pk,s,r&&r.get("rebuildWithTransient")?n:void 0)}async createSuffix(e,t){return super.createSuffix(e,t)}async createAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk)),a=r.map(e=>e.id);let s=r.map(e=>e.record);return s=await this.adapter.createAll(this.tableName,a,s,...t),s.map((e,t)=>this.adapter.revert(e,this.class,this.pk,a[t]))}async createAllPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.CREATE,this.class,t,this.adapter,this._overrides||{});if(!e.length)return[e,...r.args];const s=N.getSequenceOptions(e[0]);let n=[];s.type?(s.name||(s.name=D.pk(e[0])),n=await(await this.adapter.Sequence(s)).range(e.length)):n=e.map((e,t)=>{if(void 0===e[this.pk])throw new a.InternalError("Primary key is not defined for model in position "+t);return e[this.pk]}),e=await Promise.all(e.map(async(e,t)=>(e=new this.class(e),s.type&&(e[this.pk]="String"!==s.type||s.generated?n[t]:""+e[this.pk]),await a.enforceDBDecorators(this,r.context,e,a.OperationKeys.CREATE,a.OperationKeys.ON),e)));const o=r.context.get("ignoredValidationProperties")||[],i=(await Promise.all(e.map(e=>Promise.resolve(e.hasErrors(...o))))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(i)throw new a.ValidationError(i);return[e,...r.args]}async readPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.READ,this.class,t,this.adapter,this._overrides||{}),s=new this.class;return s[this.pk]=e,await a.enforceDBDecorators(this,r.context,s,a.OperationKeys.READ,a.OperationKeys.ON),[e,...r.args]}async read(e,...t){const r=await this.adapter.read(this.tableName,e,...t);return this.adapter.revert(r,this.class,this.pk,e)}async readAllPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.READ,this.class,t,this.adapter,this._overrides||{});return await Promise.all(e.map(async e=>{const t=new this.class;return t[this.pk]=e,a.enforceDBDecorators(this,r.context,t,a.OperationKeys.READ,a.OperationKeys.ON)})),[e,...r.args]}async readAll(e,...t){return(await this.adapter.readAll(this.tableName,e,...t)).map((t,r)=>this.adapter.revert(t,this.class,this.pk,e[r]))}async update(e,...t){let{record:r,id:a,transient:s}=this.adapter.prepare(e,this.pk);return r=await this.adapter.update(this.tableName,a,r,...t),this.adapter.revert(r,this.class,this.pk,a,s)}async updatePrefix(e,...t){const r=await a.Context.args(a.OperationKeys.UPDATE,this.class,t,this.adapter,this._overrides||{}),s=e[this.pk];if(!s)throw new a.InternalError("No value for the Id is defined under the property "+this.pk);const n=await this.read(s,...r.args);e=this.merge(n,e),await a.enforceDBDecorators(this,r.context,e,a.OperationKeys.UPDATE,a.OperationKeys.ON,n);const o=await Promise.resolve(e.hasErrors(n,...N.relations(this.class),...r.context.get("ignoredValidationProperties")||[]));if(o)throw new a.ValidationError(o.toString());return N.getMetadata(n)&&(N.getMetadata(e)||N.setMetadata(e,N.getMetadata(n))),[e,...r.args]}async updateAll(e,...t){const r=e.map(e=>this.adapter.prepare(e,this.pk));return(await this.adapter.updateAll(this.tableName,r.map(e=>e.id),r.map(e=>e.record),...t)).map((e,t)=>this.adapter.revert(e,this.class,this.pk,r[t].id))}async updateAllPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.UPDATE,this.class,t,this.adapter,this._overrides||{}),s=e.map(e=>{const t=e[this.pk];if(!t)throw new a.InternalError("missing id on update operation");return t}),n=await this.readAll(s,...r.args);e=e.map((e,t)=>(e=this.merge(n[t],e),N.getMetadata(n[t])&&(N.getMetadata(e)||N.setMetadata(e,N.getMetadata(n[t]))),e)),await Promise.all(e.map((e,t)=>a.enforceDBDecorators(this,r.context,e,a.OperationKeys.UPDATE,a.OperationKeys.ON,n[t])));const o=r.context.get("ignoredValidationProperties")||[],i=(await Promise.all(e.map((e,t)=>Promise.resolve(e.hasErrors(n[t],e,...o))))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(i)throw new a.ValidationError(i);return e.forEach((e,t)=>{N.getMetadata(n[t])&&(N.getMetadata(e)||N.setMetadata(e,N.getMetadata(n[t])))}),[e,...r.args]}async deletePrefix(e,...t){const r=await a.Context.args(a.OperationKeys.DELETE,this.class,t,this.adapter,this._overrides||{}),s=await this.read(e,...r.args);return await a.enforceDBDecorators(this,r.context,s,a.OperationKeys.DELETE,a.OperationKeys.ON),[e,...r.args]}async delete(e,...t){const r=await this.adapter.delete(this.tableName,e,...t);return this.adapter.revert(r,this.class,this.pk,e)}async deleteAllPrefix(e,...t){const r=await a.Context.args(a.OperationKeys.DELETE,this.class,t,this.adapter,this._overrides||{}),s=await this.readAll(e,...r.args);return await Promise.all(s.map(async e=>a.enforceDBDecorators(this,r.context,e,a.OperationKeys.DELETE,a.OperationKeys.ON))),[e,...r.args]}async deleteAll(e,...t){return(await this.adapter.deleteAll(this.tableName,e,...t)).map((t,r)=>this.adapter.revert(t,this.class,this.pk,e[r]))}select(e){return this.adapter.Statement().select(e).from(this.class)}async query(t,r,a=e.OrderDirection.ASC,s,n){const o=[r,a],i=this.select().where(t).orderBy(o);return s&&i.limit(s),n&&i.offset(n),i.execute()}attr(e){return C.attr(e)}observe(e,t){this.observerHandler||Object.defineProperty(this,"observerHandler",{value:this.ObserverHandler(),writable:!1});const r=this.log.for(this.observe),a=N.table(this.class);this.adapter.observe(this,e=>a===e),r.verbose(`now observing ${this.adapter} filtering on table === ${a}`),this.observerHandler.observe(e,t),r.verbose("Registered new observer "+e.toString())}unObserve(e){if(!this.observerHandler)throw new a.InternalError("ObserverHandler not initialized. Did you register any observables?");this.observerHandler.unObserve(e),this.log.for(this.unObserve).verbose(`Observer ${e.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(e,t,r,...s){if(!this.observerHandler)throw new a.InternalError("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,e,t,Array.isArray(r)?r.map(e=>D.parseValue(this.pkProps?.type,e)):D.parseValue(this.pkProps?.type,r),...s)}async refresh(e,t,r,...a){return this.updateObservers(e,t,r,...a)}static forModel(t,r,...s){let n;const i=r||o.Metadata.flavourOf(t)||v.currentFlavour;try{n=this.get(t,i)}catch(e){n=void 0}if(n instanceof N)return n;const c=r||o.Metadata.flavourOf(t)||n&&o.Metadata.get(n,e.PersistenceKeys.ADAPTER)||v.currentFlavour,d=c?v.get(c):void 0;if(!d)throw new a.InternalError("No registered persistence adapter found flavour "+c);return n=n||d.repository(),new n(d,t,...s)}static get(e,t){const r=N.table(e);let s=r;if(t&&(s=[r,t].join(a.DefaultSeparator)),s in this._cache)return this._cache[s];if(r in this._cache)return this._cache[r];throw new a.InternalError("Could not find repository registered under "+r)}static register(e,t,r){let s=N.table(e);if(r&&(s=[s,r].join(a.DefaultSeparator)),s in this._cache&&this._cache[s]instanceof N)throw new a.InternalError(s+" already has a registered instance");this._cache[s]=t}static setMetadata(t,r){Object.defineProperty(t,e.PersistenceKeys.METADATA,{enumerable:!1,configurable:!0,writable:!1,value:r})}static getMetadata(t){const r=Object.getOwnPropertyDescriptor(t,e.PersistenceKeys.METADATA);return r?r.value:void 0}static removeMetadata(t){Object.getOwnPropertyDescriptor(t,e.PersistenceKeys.METADATA)&&delete t[e.PersistenceKeys.METADATA]}static getSequenceOptions(e){const t=s.Model.pk(e.constructor),r=o.Metadata.key(a.DBKeys.ID,t),n=o.Metadata.get(e.constructor,r);if(!n)throw new a.InternalError("No sequence options defined for model. did you use the @pk decorator?");return n}static indexes(t){const r=o.Metadata.get(t instanceof s.Model?t.constructor:t,e.PersistenceKeys.INDEX);return Object.keys(r||{}).reduce((t,a)=>(t[a]={[e.PersistenceKeys.INDEX]:r[a]},t),{})}static relations(e){return o.Metadata.relations(e instanceof s.Model?e.constructor:e)||[]}static table(e){return f(e)}static column(e,t){return y(e,t)}}function x(t,r){if(!(r||(r=o.Decoration.flavourResolver(t instanceof s.Model?t.constructor:t))&&r!==o.DefaultFlavour))throw new a.InternalError("Could not retrieve flavour from model "+(t instanceof s.Model?t.constructor.name:t.name));return s.sf(e.PersistenceKeys.INJECTABLE,r,f(t))}r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object,Function]),r.__metadata("design:returntype",void 0)],N.prototype,"observe",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",void 0)],N.prototype,"unObserve",null),v&&(v._baseRepository=N);class R extends t.InjectableRegistryImp{get log(){return this.logger||(this.logger=n.Logging.for(this)),this.logger}constructor(){super()}get(r,a){const n=this.log.for(this.get);let i;try{i=super.get(r)}catch{}if(!i){let c;if("function"==typeof r?c=r:"symbol"!=typeof r&&"string"!=typeof r||(c=s.Model.get(r.toString())),!c)return;const d=e.PersistenceKeys.ADAPTER,l=a||o.Metadata.get(c,d);try{let e=l;try{l&&v.get(l)}catch{const t=v.current;t&&t.flavour===l&&(e=t.alias)}if(i=N.forModel(c,e),i instanceof N)return i;const r=l||o.Metadata.get(i.constructor,d)||o.Metadata.get(c,d);t.Injectables.register(i,x(c,r))}catch(e){n.debug("No registered repository or adapter found. falling back to default adapter. Error: "+(e?.message||JSON.stringify(e)));const t=N.get(c,l);if("function"==typeof t){const e=l?v.get(l):v.current;if(!e)return;return new t(e,c)}}}return i}}class B extends n.LoggedClass{constructor(){super()}async initialize(){if(!this.adapter)return void this.log.verbose("No adapter observed for dispatch; skipping initialization");const e=this.adapter;[a.OperationKeys.CREATE,a.OperationKeys.UPDATE,a.OperationKeys.DELETE,a.BulkCrudOperationKeys.CREATE_ALL,a.BulkCrudOperationKeys.UPDATE_ALL,a.BulkCrudOperationKeys.DELETE_ALL].forEach(t=>{if(!e[t])throw new a.InternalError(`Method ${t} not found in ${e.alias} adapter to bind Observables Dispatch`);let r=Object.getOwnPropertyDescriptor(e,t),s=e;for(;!r&&s!==Object.prototype;)s=Object.getPrototypeOf(s),r=Object.getOwnPropertyDescriptor(s,t);r&&r.writable?e[t]=new Proxy(e[t],{apply:async(e,r,s)=>{const[n,o]=s,i=await e.apply(r,s);return this.updateObservers(n,(e=>{switch(e){case a.BulkCrudOperationKeys.CREATE_ALL:return a.OperationKeys.CREATE;case a.BulkCrudOperationKeys.UPDATE_ALL:return a.OperationKeys.UPDATE;case a.BulkCrudOperationKeys.DELETE_ALL:return a.OperationKeys.DELETE;default:return e}})(t),o).then(()=>{this.log.verbose(`Observer refresh dispatched by ${t} for ${n}`),this.log.debug("pks: "+o)}).catch(e=>this.log.error(`Failed to dispatch observer refresh for ${t} on ${n}: ${e}`)),i}}):this.log.error(`Could not find method ${t} to bind Observables Dispatch`)})}async close(){}observe(e){if(!(e instanceof v))throw new m("Only Adapters can be observed by dispatch");this.adapter=e,this.models=v.models(this.adapter.alias),this.initialize().then(()=>this.log.verbose(`Dispatch initialized for ${this.adapter.alias} adapter`))}unObserve(e){if(this.adapter!==e)throw new m("Only the adapter that was used to observe can be unobserved");this.adapter=void 0}async updateObservers(e,t,r){if(this.adapter)try{await this.adapter.refresh(e,t,r)}catch(e){throw new a.InternalError("Failed to refresh dispatch: "+e)}else this.log.verbose(`No adapter observed for dispatch; skipping observer update for ${e}:${t}`)}}function K(e,t,r,a){const s=async function(...e){let a;try{a=await Promise.resolve(r.call(this,...e))}catch(e){if(e instanceof w)return;throw e}return Promise.resolve(t.apply(this,a))}.bind(e),n=a||t.name;Object.defineProperty(s,"name",{enumerable:!0,configurable:!0,writable:!1,value:n}),e[n]=s}v&&(v._baseDispatch=B);class $ extends n.LoggedClass{constructor(){super(),this.transaction=!0,[this.up,this.down].forEach(e=>{const t=e.name;K(this,e,this.prefix(t))})}get adapter(){const t=o.Metadata.get(this.constructor,e.PersistenceKeys.MIGRATION);if(!t)throw new a.InternalError("No migration metadata for "+this.constructor.name);const r=t.flavour;return v.get(r)}async enforceRules(t,r,a){const s=o.Metadata.get(this.constructor,e.PersistenceKeys.MIGRATION)?.rules;if(!s||!s.length)return!0;let n;for(const e of s)if(n=a.for(e),!await e(t,r,n))return!1;return!0}prefix(e){return async function(t){let r;t instanceof v?r=this.getQueryRunner(t.client):(r=t,t=this.adapter);const a=this.log.for(e);if(!await this.enforceRules(r,t,a))throw a.verbose(`Skipping migration ${this.constructor.name} due to rules`),new w("Migration skipped for rule enforcement");return[r,t,a]}.bind(this)}}o.Metadata.validationExceptions=((t,r)=>{const a=o.Metadata.get(t,e.PersistenceKeys.NO_VALIDATE);return a?Object.entries(a).filter(([,e])=>e.includes(r)).map(([e])=>e):[]}).bind(o.Metadata),s.Model.shouldValidateNestedHandler=((t,r)=>{const a=o.Metadata.get(t.constructor);if(!a)return!1;const n=a[e.PersistenceKeys.RELATIONS],i=a[e.PersistenceKeys.RELATION];if(Array.isArray(n)&&n?.includes(r)){const e=Object.keys(i)[0],a=s.Model.isPropertyModel(t,r);return i[e]?.class!==a}return!0}).bind(s.Model),o.Metadata.migrationsFor=(t=>{if(!(t=t??v.current))throw new a.InternalError("Could not get adapter for migrations");return o.Metadata.innerGet(Symbol.for(e.PersistenceKeys.MIGRATION),t.alias).map(e=>e.class)}).bind(o.Metadata),o.Metadata.relations=((t,r)=>{const s=o.Metadata.get(t,e.PersistenceKeys.RELATIONS);if(s){if(!r)return Object.keys(s);if(!s[r])throw new a.InternalError("No relations metadata found for property "+r);return s[r]}}).bind(o.Metadata),s.Model.relations=(e,t)=>o.Metadata.relations(e,t)||[];class k extends a.InternalError{constructor(e){super(e,k.name,500)}}const j={type:void 0,generated:!1,startWith:0,incrementBy:1,cycle:!1},L=j,F={type:"Number",generated:!0,startWith:0,incrementBy:1,cycle:!1},q=Object.assign({},F,{type:"BigInt"});async function U(e,t,r,n){if(!n){const t=s.Model.get(e.constructor.name);if(!t)throw new a.InternalError("Could not find model "+e.constructor.name);n=N.forModel(t,r)}if(void 0===e[n.pk])return n.create(e,t);try{return n.update(e,t)}catch(r){if(!(r instanceof a.NotFoundError))throw r;return n.create(e,t)}}async function G(e,t,r,o){const i=o[r];if(!i)return;if("object"!=typeof i){const t=ee(o,r,this.adapter.alias),a=await t.read(i);return await X(e,o,r,i,a),void(o[r]=i)}const c=n.isClass(t.class)?t.class:t.class();if(!c)throw new a.InternalError("Could not find model "+t.class);const d=N.forModel(c,this.adapter.alias),l=await d.create(i),u=s.Model.pk(l);await X(e,o,r,l[u],l),o[r]=l[u]}async function H(t,r,a,n){const o=n[a];if(!o)return;if(r.cascade.update!==e.Cascade.CASCADE)return;if("object"!=typeof o){const e=ee(n,a,this.adapter.alias),r=await e.read(o);return await X(t,n,a,o,r),void(n[a]=o)}const i=await U(n[a],t,this.adapter.alias),c=s.Model.pk(i);await X(t,n,a,i[c],i),n[a]=i[c]}async function V(t,r,a,n){const o=n[a];if(!o)return;if(r.cascade.update!==e.Cascade.CASCADE)return;const i=ee(n,a,this.adapter.alias);let c;c=o instanceof s.Model?await i.delete(n[a][i.pk]):await i.delete(n[a]),await X(t,n,a,c[i.pk],c)}async function Q(e,t,r,n){const o=n[r];if(!o||!o.length)return;const i=typeof o[0];if(!o.every(e=>typeof e===i))throw new a.InternalError(`Invalid operation. All elements of property ${r} must match the same type.`);const c=new Set([...o]);if("object"!==i){const t=ee(n,r,this.adapter.alias);for(const a of c){const s=await t.read(a);await X(e,n,r,a,s)}return void(n[r]=[...c])}const d=s.Model.pk(o[0]),l=new Set;for(const t of o){const a=await U(t,e,this.adapter.alias);await X(e,n,r,a[d],a),l.add(a[d])}n[r]=[...l]}async function Y(t,r,a,s){const{cascade:n}=r;if(n.update===e.Cascade.CASCADE)return Q.call(this,t,r,a,s)}async function z(t,r,s,n){if(r.cascade.delete!==e.Cascade.CASCADE)return;const o=n[s];if(!o||!o.length)return;const i=typeof o[0];if(!o.every(e=>typeof e===i))throw new a.InternalError(`Invalid operation. All elements of property ${s} must match the same type.`);const c="object"===i,d=c?N.forModel(o[0],this.adapter.alias):ee(n,s,this.adapter.alias),l=new Set([...c?o.map(e=>e[d.pk]):o]);for(const e of l.values()){const r=await d.delete(e);await X(t,n,s,e,r)}n[s]=[...l]}function W(t,r,a){return[e.PersistenceKeys.POPULATE,t,r,a].join(".")}async function X(e,t,r,a,s){const n=W(t.constructor.name,r,a);return e.accumulate({[n]:s})}async function J(e,t,r,s){if(!t.populate)return;const n=s[r],o=Array.isArray(n);if(void 0===n||o&&0===n.length)return;const i=await(async(e,t,r,s,n)=>{let o,i;const c=[];for(const d of s){o=W(t.constructor.name,r,d);try{i=await e.get(o)}catch(e){const s=ee(t,r,n);if(!s)throw new a.InternalError("Could not find repo");i=await s.read(d)}c.push(i)}return c})(e,s,r,o?n:[n],this.adapter.alias);s[r]=o?i:i[0]}const Z=["array","string","number","boolean","symbol","function","object","undefined","null","bigint"];function ee(e,t,r){if(!e)throw Error("No model was provided to get repository");let n;if(Array.isArray(e[t])||e[t]instanceof Set){const r=o.Metadata.get(e instanceof s.Model?e.constructor:e,o.Metadata.key(s.ValidationKeys.REFLECT,t,s.ValidationKeys.LIST))?.clazz;if(!r)throw new a.InternalError("Failed to find types decorators for property "+t);n=(Array.isArray(r)?[...r]:[r]).map(e=>"function"!=typeof e||e.name?e:e())}else n=o.Metadata.getPropDesignTypes(e instanceof s.Model?e.constructor:e,t)?.designTypes;const i=n?.find(e=>!Z.includes((""+e.name).toLowerCase()));return N.forModel(i,r)}function te(t){return o.Decoration.for(e.PersistenceKeys.TABLE).define({decorator:t=>r=>o.metadata(e.PersistenceKeys.TABLE,t||r.name.toLowerCase())(r),args:[t]}).apply()}function re(t,r,a){return o.Decoration.for(e.PersistenceKeys.INDEX).define({decorator:(t,r,a)=>(s,n)=>("string"==typeof t&&(a=t,t=void 0,r=void 0),"string"==typeof r&&(a=r,r=void 0),!r&&t&&t.find(t=>![e.OrderDirection.ASC,e.OrderDirection.DSC].includes(t))&&(r=t,t=void 0),o.propMetadata(o.Metadata.key(`${e.PersistenceKeys.INDEX}${r&&r?.length?"."+r.join("."):""}`,n),{directions:t,compositions:r,name:a})(s,n)),args:[t,r,a]}).apply()}async function ae(e,t,r,s){if(s[r]&&(await this.select().where(C.attribute(r).eq(s[r])).execute()).length)throw new a.ConflictError(`model already exists with property ${r} equal to ${JSON.stringify(s[r],void 0,2)}`)}async function se(e,t,r,a){throw new l("This adapter does not support user identification")}function ne(){return a.timestamp([a.OperationKeys.CREATE])}function oe(){return a.timestamp()}function ie(...t){return(r,a)=>{const s=o.Metadata.get(r,o.Metadata.key(e.PersistenceKeys.NO_VALIDATE,a))||[],n=[...new Set([...s,...t])];return o.apply(o.metadata(o.Metadata.key(e.PersistenceKeys.NO_VALIDATE,a),n))(r,a)}}function ce(t,r){return o.Decoration.for(e.PersistenceKeys.RELATIONS).define({decorator:(t,r)=>(a,s)=>(o.propMetadata(t,r)(a,s),o.propMetadata(o.Metadata.key(e.PersistenceKeys.RELATIONS,s),Object.assign({},r,{key:t}))(a,s)),args:[t,r]}).apply()}async function de(e,t,r,s){if(!t.type||!t.generated||s[r])return;let n;t.name||(t.name=g(s,"pk"));try{n=await this.adapter.Sequence(t)}catch(e){throw new a.InternalError(`Failed to instantiate Sequence ${t.name}: ${e}`)}const o=await n.next();Object.defineProperty(s,r,{enumerable:!0,writable:!1,configurable:!0,value:o})}function le(t=L){t=Object.assign({},L,t,{generated:!(!t.type||void 0!==t.generated)||t.generated||L.generated});const r=a.DBKeys.ID;return o.Decoration.for(r).define({decorator:(t,r)=>(n,i)=>o.apply(re([e.OrderDirection.ASC,e.OrderDirection.DSC]),s.required(),a.readonly(),o.propMetadata(o.Metadata.key(a.DBKeys.ID,i),t),a.onCreate(de,t,r))(n,i),args:[t,{priority:60}]}).apply()}class ue extends s.Model{constructor(e){super(e)}}r.__decorate([ne(),r.__metadata("design:type",Date)],ue.prototype,"createdOn",void 0),r.__decorate([oe(),r.__metadata("design:type",Date)],ue.prototype,"updatedOn",void 0);class pe extends n.LoggedClass{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(e,t,r,a){super(),this.adapter=e,this.query=t,this.size=r,this.clazz=a}async next(){return this.page(this.current+1)}async previous(){return this.page(this.current-1)}validatePage(e){if(1>e||!Number.isInteger(e))throw new I("Page number cannot be under 1 and must be an integer");if(void 0!==this._totalPages&&e>this._totalPages)throw new I(`Only ${this._totalPages} are available. Cannot go to page ${e}`);return e}}var he,fe,ye,ge,me;class be extends n.LoggedClass{constructor(e){super(),this.adapter=e}get log(){return this.adapter.log.for(be)}select(e){return Object.defineProperty(this,"selectSelector",{value:e,writable:!1}),this}distinct(e){return this.distinctSelector=e,this}max(e){return this.maxSelector=e,this}min(e){return this.minSelector=e,this}count(e){return this.countSelector=e,this}from(e){if(this.fromSelector="string"==typeof e?s.Model.get(e):e,!this.fromSelector)throw new T("Could not find selector model: "+e);return this}where(e){return this.whereCondition=e,this}orderBy(e){return this.orderBySelector=e,this}groupBy(e){return this.groupBySelector=e,this}limit(e){return this.limitSelector=e,this}offset(e){return this.offsetSelector=e,this}async execute(){try{const e=this.build();return await this.raw(e)}catch(e){throw new a.InternalError(e)}}async raw(e){const t=await this.adapter.raw(e);if(!this.selectSelector)return t;const r=s.Model.pk(this.fromSelector),a=function(e){const t=e[r];return this.adapter.revert(e,this.fromSelector,r,t)}.bind(this);return Array.isArray(t)?t.map(a):a(t)}}r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Array]),r.__metadata("design:returntype",Object)],be.prototype,"select",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",["function"==typeof(he="undefined"!=typeof S&&S)?he:Object]),r.__metadata("design:returntype",Object)],be.prototype,"distinct",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",["function"==typeof(fe="undefined"!=typeof S&&S)?fe:Object]),r.__metadata("design:returntype",Object)],be.prototype,"max",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",["function"==typeof(ye="undefined"!=typeof S&&S)?ye:Object]),r.__metadata("design:returntype",Object)],be.prototype,"min",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",["function"==typeof(ge="undefined"!=typeof S&&S)?ge:Object]),r.__metadata("design:returntype",Object)],be.prototype,"count",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",Object)],be.prototype,"from",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[C]),r.__metadata("design:returntype",Object)],be.prototype,"where",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Array]),r.__metadata("design:returntype",Object)],be.prototype,"orderBy",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",Object)],be.prototype,"groupBy",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Number]),r.__metadata("design:returntype",Object)],be.prototype,"limit",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Number]),r.__metadata("design:returntype",Object)],be.prototype,"offset",null),r.__decorate([d(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[]),r.__metadata("design:returntype",Promise)],be.prototype,"execute",null),e.QueryClause=void 0,(me=e.QueryClause||(e.QueryClause={})).FIND_BY="findBy",me.SELECT="Select",me.AND="And",me.OR="Or",me.GROUP_BY="GroupBy",me.ORDER_BY="OrderBy",me.THEN="Then",me.THEN_BY="ThenBy";const we={Equals:(e,t)=>C.attribute(e).eq(t),Diff:(e,t)=>C.attribute(e).dif(t),LessThan:(e,t)=>C.attribute(e).lt(t),LessThanEqual:(e,t)=>C.attribute(e).lte(t),GreaterThan:(e,t)=>C.attribute(e).gt(t),GreaterThanEqual:(e,t)=>C.attribute(e).gte(t),Between:(e,t,r)=>C.attribute(e).gte(t).and(C.attribute(e).lte(r)),In:(e,t)=>C.attribute(e).in(t),Matches:(e,t)=>C.attribute(e).regexp(t)},Oe=e=>e.charAt(0).toLowerCase()+e.slice(1);class ve{static build(t,...r){if(!t.startsWith(e.QueryClause.FIND_BY))throw Error("Unsupported method "+t);const a=this.extractCore(t),s=this.extractSelect(t),n=this.extractGroupBy(t),o=this.buildWhere(a,r),{orderBy:i,limit:c,offset:d}=this.extractOrderLimitOffset(a,r);return{action:"find",select:s,where:o,groupBy:n,orderBy:i,limit:c,offset:d}}static extractCore(t){const r=t.substring(e.QueryClause.FIND_BY.length),a=r.match(/(Then[A-Z]|OrderBy|GroupBy|Limit|Offset)/);return a?r.substring(0,a.index):r}static extractSelect(t){const r=t.indexOf(e.QueryClause.SELECT);if(-1===r)return;const a=t.substring(r+e.QueryClause.SELECT.length),s=a.match(/(Then[A-Z]|OrderBy|GroupBy|Limit|Offset)/);return(s?a.substring(0,s.index):a).split(e.QueryClause.AND).map(Oe).filter(Boolean)}static extractGroupBy(t){const r=t.indexOf(e.QueryClause.GROUP_BY);if(-1!==r)return t.substring(r+e.QueryClause.GROUP_BY.length).split(e.QueryClause.ORDER_BY)[0].split(e.QueryClause.THEN_BY).map(Oe).filter(Boolean)}static buildWhere(t,r){const a=(t.split(/OrderBy|GroupBy/)[0]||"").split(/And|Or/),s=t.match(/And|Or/g)||[];let n;if(a.forEach((t,a)=>{const{field:o,operator:i}=this.parseFieldAndOperator(t),c=i?we[i]:we.Equals;if(!c)throw Error("Unsupported operator "+i);const d=r[a];if(void 0===d)throw Error("Invalid value for field "+o);const l=c(o,d);n=0===a?l:s[a-1]===e.QueryClause.AND?n.and(l):n.or(l)}),!n)throw Error("No conditions found in method name");return n}static parseFieldAndOperator(e){for(const t of Object.keys(we))if(e.endsWith(t)){const r=e.slice(0,-t.length);return{field:Oe(r),operator:t}}return{field:Oe(e)}}static extractOrderLimitOffset(e,t){const r=e.split(/And|Or/).length,a=t.slice(r);let s,n,o;return a.length>=1&&Array.isArray(a[0])&&(s=a[0]),2>a.length||"number"!=typeof a[1]||(n=a[1]),3>a.length||"number"!=typeof a[2]||(o=a[2]),{orderBy:s,limit:n,offset:o}}}class _e extends pe{constructor(e,t,r,a){super(e,t,r,a)}prepare(e){const t=Object.assign({},e);return t.limit=this.size,t}async page(e=1){const t=this.prepare(this.statement);if(!this._recordCount||!this._totalPages){this._totalPages=this._recordCount=0;const e=await this.adapter.raw({...t,limit:void 0})||[];if(this._recordCount=e.length,this._recordCount>0){const e=t?.limit||this.size;this._totalPages=Math.ceil(this._recordCount/e)}}e=this.validatePage(e),t.skip=(e-1)*this.size;const r=await this.adapter.raw(t);return this._currentPage=e,r}}class Ee extends be{constructor(e){super(e)}getSort(){return(e,t)=>{if(!this.orderBySelector)throw new a.InternalError("orderBySelector not set. Should be impossible");const r=this.orderBySelector,[s,n]=r,{designType:i}=o.Metadata.getPropDesignTypes(e.constructor,s);if(!i)throw new T("type not compatible with sorting: "+i);switch(i.name){case"string":case"String":return("asc"===n?1:-1)*e[s].localeCompare(t[s]);case"number":case"Number":return("asc"===n?1:-1)*(e[s]-t[s]);case"object":case"Object":if(e[s]instanceof Date&&t[s]instanceof Date)return("asc"===n?1:-1)*(e[s].valueOf()-t[s].valueOf());throw new T("Sorting not supported for not date classes");default:throw new T("sorting not supported for type "+i)}}}build(){const e={select:this.selectSelector,from:this.fromSelector,where:this.whereCondition?this.parseCondition(this.whereCondition).where:e=>!0,limit:this.limitSelector,skip:this.offsetSelector};return this.orderBySelector&&(e.sort=this.getSort()),e}async paginate(e){try{const t=this.build();return new _e(this.adapter,t,e,this.fromSelector)}catch(e){throw new a.InternalError(e)}}parseCondition(t){return{where:r=>{const{attr1:s,operator:n,comparison:o}=t;if(-1===[e.GroupOperator.AND,e.GroupOperator.OR,e.Operator.NOT].indexOf(n))switch(n){case e.Operator.BIGGER:return r[s]>o;case e.Operator.BIGGER_EQ:return r[s]>=o;case e.Operator.DIFFERENT:return r[s]!==o;case e.Operator.EQUAL:return r[s]===o;case e.Operator.REGEXP:if("string"!=typeof r[s])throw new T("Invalid regexp comparison on a non string attribute: "+r[s]);return!!r[s].match(RegExp(o,"g"));case e.Operator.SMALLER:return r[s]<o;case e.Operator.SMALLER_EQ:return r[s]<=o;default:throw new a.InternalError("Invalid operator for standard comparisons: "+n)}else{if(n===e.Operator.NOT)throw new a.InternalError("Not implemented");{const t=this.parseCondition(s),i=this.parseCondition(o);switch(n){case e.GroupOperator.AND:return t.where(r)&&i.where(r);case e.GroupOperator.OR:return t.where(r)||i.where(r);default:throw new a.InternalError("Invalid operator for And/Or comparisons: "+n)}}}}}}}class Ae extends a.Context{constructor(){super()}}e.RamSequenceModel=class extends ue{constructor(e){super(e)}},r.__decorate([le(),r.__metadata("design:type",String)],e.RamSequenceModel.prototype,"id",void 0),r.__decorate([s.required(),re(),r.__metadata("design:type",Object)],e.RamSequenceModel.prototype,"current",void 0),e.RamSequenceModel=r.__decorate([te("__RamSequence"),s.model(),r.__metadata("design:paramtypes",[Object])],e.RamSequenceModel);class De extends D{constructor(t,r){super(t),this.repo=N.forModel(e.RamSequenceModel,r.alias)}async current(){const{name:e,startWith:t}=this.options;try{const t=await this.repo.read(e);return this.parse(t.current)}catch(r){if(r instanceof a.NotFoundError){if(void 0===t)throw new a.InternalError("Starting value is not defined for a non existing sequence");try{return this.parse(t)}catch(e){throw new a.InternalError(`Failed to parse initial value for sequence ${t}: ${e}`)}}throw new a.InternalError(`Failed to retrieve current value for sequence ${e}: ${r}`)}}parse(e){return D.parseValue(this.options.type,e)}async increment(t,r){const{type:s,incrementBy:n,name:o}=this.options;let i;const c=r||n;if(c%n!==0)throw new a.InternalError("Value to increment does not consider the incrementBy setting: "+n);switch(s){case"Number":i=this.parse(t)+c;break;case"BigInt":i=this.parse(t)+BigInt(c);break;case"String":i=this.parse(t);break;default:throw new a.InternalError("Should never happen")}let d;const l=this.repo.override({ignoredValidationProperties:["updatedOn"]});try{d=await l.update(new e.RamSequenceModel({id:o,current:i}))}catch(t){if(!(t instanceof a.NotFoundError))throw t;d=await l.create(new e.RamSequenceModel({id:o,current:i}))}return d.current}async next(){const e=await this.current();return this.increment(e)}async range(e){const t=await this.current(),r=this.parse(this.options.incrementBy),s=await this.increment(t,this.parse(e)*r),n=[];for(let a=1;e>=a;a++)n.push(t+r*this.parse(a));if(n[n.length-1]!==s&&"String"!==this.options.type)throw new a.InternalError("Miscalculation of range");return n}}async function Me(e,t,r,a){const s=e.get("UUID");if(!s)throw new m("This adapter does not support user identification");a[r]=s}const Pe="ram";class Te extends v{constructor(e={},t){super(e,Pe,t),this.Context=Ae,this.indexes={},this.lock=new i.Lock}repository(){return super.repository()}async flags(e,t,r){return Object.assign(await super.flags(e,t,r),{UUID:this.config.user||""+Date.now()})}Dispatch(){return super.Dispatch()}async index(...e){return Promise.resolve(void 0)}prepare(e,t){const r=super.prepare(e,t);return delete r.record[t],r}revert(e,t,r,a){return super.revert(e,t,r,a)}async create(e,t,r){if(await this.lock.acquire(),this.client.has(e)||this.client.set(e,new Map),this.client.get(e)&&this.client.get(e)?.has(t))throw new a.ConflictError(`Record with id ${t} already exists in table ${e}`);return this.client.get(e)?.set(t,r),this.lock.release(),r}async read(e,t){if(!this.client.has(e))throw new a.NotFoundError(`Table ${e} not found`);if(!this.client.get(e)?.has(t))throw new a.NotFoundError(`Record with id ${t} not found in table ${e}`);return this.client.get(e)?.get(t)}async update(e,t,r){if(await this.lock.acquire(),!this.client.has(e))throw new a.NotFoundError(`Table ${e} not found`);if(!this.client.get(e)?.has(t))throw new a.NotFoundError(`Record with id ${t} not found in table ${e}`);return this.client.get(e)?.set(t,r),this.lock.release(),r}async delete(e,t){if(await this.lock.acquire(),!this.client.has(e))throw new a.NotFoundError(`Table ${e} not found`);if(!this.client.get(e)?.has(t))throw new a.NotFoundError(`Record with id ${t} not found in table ${e}`);const r=this.client.get(e)?.get(t);return this.client.get(e)?.delete(t),this.lock.release(),r}tableFor(e){"string"==typeof e&&(e=s.Model.get(e));const t=N.table(e);return this.client.has(t)||this.client.set(t,new Map),this.client.get(t)}async raw(e){const{where:t,sort:r,limit:n,skip:i,from:c}=e;let{select:d}=e;const l=this.tableFor(c);if(!l)throw new a.InternalError(`Table ${c} not found in RamAdapter`);const u=s.Model.pk(c),p=o.Metadata.get(c,o.Metadata.key(a.DBKeys.ID,u));let h=Array.from(l.entries()).map(([e,t])=>this.revert(t,c,u,D.parseValue(p.type,e)));return h=t?h.filter(t):h,r&&(h=h.sort(r)),i&&(h=h.slice(i)),n&&(h=h.slice(0,n)),d&&(d=Array.isArray(d)?d:[d],h=h.map(e=>Object.entries(e).reduce((e,[t,r])=>(d.includes(t)&&(e[t]=r),e),{}))),h}parseError(e){return e instanceof a.BaseError?e:new a.InternalError(e)}Statement(){return new Ee(this)}async Sequence(e){return new De(e,this)}for(e,...t){this.proxies||(this.proxies={});const r=`${this.alias} - ${s.hashObj(e)}`;if(r in this.proxies)return this.proxies[r];const a=new Proxy(this,{get:(t,r,a)=>{if("_config"===r){const s=Reflect.get(t,r,a);return Object.assign({},s,e)}return Reflect.get(t,r,a)}});return this.proxies[r]=a,a}static decoration(){super.decoration();const t=e.PersistenceKeys.CREATED_BY,r=e.PersistenceKeys.UPDATED_BY;o.Decoration.flavouredAs(Pe).for(t).define(a.onCreate(Me),o.propMetadata(t,{})).apply(),o.Decoration.flavouredAs(Pe).for(r).define(a.onCreateUpdate(Me),o.propMetadata(r,{})).apply()}getClient(){return new Map}}Te.decoration(),t.Injectables.setRegistry(new R);const Ie="##VERSION##",Ce="##PACKAGE##";o.Metadata.registerLibrary(Ce,Ie),e.AbsMigration=$,e.Adapter=v,e.AuthorizationError=l,e.BaseModel=ue,e.BigIntSequence=q,e.Condition=C,e.ConnectionError=p,e.DefaultCascade=A,e.DefaultSequenceOptions=L,e.Dispatch=B,e.ForbiddenError=u,e.InjectablesRegistry=R,e.MethodQueryBuilder=ve,e.MigrationError=b,e.MigrationRuleError=w,e.NoneSequenceOptions=j,e.NumericSequence=F,e.ObserverError=k,e.ObserverHandler=h,e.OperatorsMap=we,e.PACKAGE_NAME=Ce,e.Paginator=pe,e.PagingError=I,e.QueryError=T,e.RamAdapter=Te,e.RamContext=Ae,e.RamFlavour=Pe,e.RamPaginator=_e,e.RamSequence=De,e.RamStatement=Ee,e.Repository=N,e.Sequence=D,e.Statement=be,e.UnsupportedError=m,e.VERSION=Ie,e.cacheModelForPopulate=X,e.column=t=>o.Decoration.for(e.PersistenceKeys.COLUMN).define({decorator:t=>(r,a)=>o.propMetadata(o.Metadata.key(e.PersistenceKeys.COLUMN,a),t||a)(r,a),args:[t]}).apply(),e.createOrUpdate=U,e.createdAt=ne,e.createdBy=()=>{const t=e.PersistenceKeys.CREATED_BY;return o.Decoration.for(t).define({decorator:()=>o.apply(a.onCreate(se),o.propMetadata(t,{})),args:[]}).apply()},e.createdByOnCreateUpdate=se,e.createdByOnRamCreateUpdate=Me,e.final=d,e.generateInjectableNameForRepository=x,e.getColumnName=y,e.getPopulateKey=W,e.getTableName=f,e.index=re,e.manyToMany=(t,r=A,a=!0,n,i)=>{const c=e.PersistenceKeys.MANY_TO_MANY;return o.Decoration.for(c).define({decorator:(e,t,r,a,n)=>{const i={class:e,cascade:t,populate:r};return a&&(i.joinTable=a),n&&(i.name=n),o.apply(o.prop(),ce(c,i),s.list([e,String,Number,BigInt]))},args:[t,r,a,n,i]}).apply()},e.manyToOne=(t,r=A,a=!0,n,i)=>{const c=e.PersistenceKeys.MANY_TO_ONE;return o.Decoration.for(c).define({decorator:(e,t,r,a,n)=>{const i={class:e,cascade:t,populate:r};return a&&(i.joinTable=a),n&&(i.name=n),o.apply(o.prop(),ce(c,i),s.type([e,String,Number,BigInt]))},args:[t,r,a,n,i]}).apply()},e.migration=(t,r)=>o.Decoration.for(e.PersistenceKeys.MIGRATION).define({decorator:(t,r)=>a=>{const s=o.Metadata.innerGet(Symbol.for(e.PersistenceKeys.MIGRATION),t)||[];return o.Metadata.set(e.PersistenceKeys.MIGRATION,t,[...s,{class:a}]),o.metadata(e.PersistenceKeys.MIGRATION,{flavour:t,rules:r})(a)},args:[t,r]}).apply(),e.noValidateOn=ie,e.noValidateOnCreate=()=>ie(a.OperationKeys.CREATE),e.noValidateOnCreateUpdate=()=>ie(a.OperationKeys.UPDATE,a.OperationKeys.CREATE),e.noValidateOnUpdate=()=>ie(a.OperationKeys.UPDATE),e.oneToMany=(t,r=A,n=!0,i,c)=>{const d=e.PersistenceKeys.ONE_TO_MANY;return o.Decoration.for(d).define({decorator:(e,t,r,n,i)=>{const c={class:e,cascade:t,populate:r};return n&&(c.joinTable=n),i&&(c.name=i),o.apply(o.prop(),ce(d,c),s.list([e,String,Number,BigInt]),a.onCreate(Q,c),a.onUpdate(Y,c),a.onDelete(z,c),a.afterAny(J,c))},args:[t,r,n,i,c]}).apply()},e.oneToManyOnCreate=Q,e.oneToManyOnDelete=z,e.oneToManyOnUpdate=Y,e.oneToOne=(t,r=A,n=!0,i,c)=>{const d=e.PersistenceKeys.ONE_TO_ONE;return o.Decoration.for(d).define({decorator:(e,t,r,n,i)=>{const c={class:e,cascade:t,populate:r};return n&&(c.joinTable=n),i&&(c.name=i),o.apply(o.prop(),ce(d,c),s.type([e,String,Number,BigInt]),a.onCreate(G,c),a.onUpdate(H,c),a.onDelete(V,c),a.afterAny(J,c))},args:[t,r,n,i,c]}).apply()},e.oneToOneOnCreate=G,e.oneToOneOnDelete=V,e.oneToOneOnUpdate=H,e.pk=le,e.pkOnCreate=de,e.populate=J,e.prefixMethod=K,e.query=function(e={}){return(t,r,a)=>{const s=r.toString();a.value=function(...t){const{select:r,where:a,groupBy:n,orderBy:o,limit:i,offset:c}=ve.build(s,...t);let d=this.select(r);a&&(d=d.where(a));const{allowLimit:l,allowOffset:u,allowOrderBy:p,throws:h}={allowLimit:!0,allowOrderBy:!0,allowOffset:!0,throws:!0,...e},f=[{key:"orderBy",value:(o||[])[0],allowed:p},{key:"limit",value:i,allowed:l},{key:"offset",value:c,allowed:u}];for(const e of f)if(void 0!==e.value){if(!e.allowed&&h)throw new T(e.key[0].toUpperCase()+e.key.slice(1)+" is not allowed for this query");e.allowed&&(d=d[e.key](e.value))}return d.execute()}}},e.relation=ce,e.repository=(r,n)=>(i,c)=>c?t.inject(r[s.ModelKeys.ANCHOR]||r)(i,c):(o.metadata(a.DBKeys.REPOSITORY,i.name)(r),n=n||o.Metadata.get(i.constructor,e.PersistenceKeys.ADAPTER),N.register(o.Metadata.constr(r),i,n),t.injectable(o.Metadata.constr(r),{callback:e=>(Object.defineProperty(e,a.DBKeys.CLASS,{enumerable:!1,configurable:!1,writable:!1,value:r}),e)})(i)),e.repositoryFromTypeMetadata=ee,e.sequenceNameForModel=g,e.table=te,e.unique=()=>{const t=e.PersistenceKeys.UNIQUE;return o.Decoration.for(t).define(a.onCreateUpdate(ae),o.propMetadata(t,{})).apply()},e.uniqueOnCreateUpdate=ae,e.updatedAt=oe,e.updatedBy=()=>{const t=e.PersistenceKeys.UPDATED_BY;return o.Decoration.for(t).define({decorator:()=>o.apply(a.onUpdate(se),o.propMetadata(t,{})),args:[]}).apply()}},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/injectable-decorators"),require("tslib"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/logging"),require("@decaf-ts/decoration"),require("@decaf-ts/transactional-decorators")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/injectable-decorators","tslib","@decaf-ts/db-decorators","@decaf-ts/decorator-validation","@decaf-ts/logging","@decaf-ts/decoration","@decaf-ts/transactional-decorators"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).core={},e.decafTsInjectableDecorators,e.tslib,e.decafTsDbDecorators,e.decafTsDecoratorValidation,e.decafTsLogging,e.decafTsDecoration,e.decafTsTransactionalDecorators);
2
2
  //# sourceMappingURL=core.cjs.map
package/dist/core.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.cjs","sources":["../src/persistence/constants.ts","../src/repository/constants.ts","../src/utils/decorators.ts","../src/utils/errors.ts","../src/persistence/ObserverHandler.ts","../src/persistence/errors.ts","../src/persistence/Dispatch.ts","../src/persistence/decorators.ts","../src/persistence/Sequence.ts","../src/identity/utils.ts","../src/persistence/Adapter.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/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/types.ts","../src/query/Statement.ts","../src/query/utils.ts","../src/query/MethodQueryBuilder.ts","../src/index.ts","../src/query/Paginator.ts","../src/query/decorators.ts","../src/repository/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["PersistenceKeys","OrderDirection","Cascade","final","target","propertyKey","descriptor","Error","configurable","exports","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","UnsupportedError","Dispatch","LoggedClass","initialize","adapter","verbose","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","method","alias","Object","getOwnPropertyDescriptor","proto","prototype","getPrototypeOf","writable","Proxy","apply","async","thisArg","argArray","tableName","ids","bulkToSingle","then","debug","catch","close","Adapter","models","undefined","uses","flavour","original","metadata","key","ADAPTER","Sequence","logger","Logging","for","options","pk","model","sequenceNameForModel","parseValue","type","value","parseInt","BigInt","getTableName","obj","Model","get","Reflect","getOwnMetadata","TABLE","ModelKeys","MODEL","getColumnName","attribute","getMetadata","Repository","COLUMN","join","Decoration","setFlavourResolver","flavourOf","isModel","currentFlavour","DefaultFlavour","_cache","config","_config","_alias","repository","_baseRepository","shutdownProxies","k","proxies","shutdown","dispatch","Context","info","_currentFlavour","_baseDispatch","isReserved","attr","flags","operation","assign","DefaultRepositoryFlags","affectedTables","writeOperation","READ","timestamp","Date","ignoredValidationProperties","Metadata","validationExceptions","context","overrides","JSON","stringify","accumulate","prepare","split","modelToTransient","entries","reduce","accum","val","mappedProp","METADATA","silly","defineProperty","enumerable","record","transient","revert","clazz","ob","m","build","keys","createAll","all","create","readAll","read","updateAll","update","deleteAll","delete","observerHandler","current","setCurrent","Repo","cache","getRegistry","values","f","DBKeys","REPOSITORY","forModel","decoration","client","_client","getClient","hashObj","proxy","p","receiver","originalConf","set","__decorate","DefaultCascade","CASCADE","NONE","Operator","GroupOperator","QueryError","PagingError","Condition","attr1","operator","comparison","and","condition","or","not","NOT","hasErrors","exceptions","conditionCheck","invalidOpMessage","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","Rep","_adapter","_tableName","class","pkProps","register","wrapMethodWithContext","override","conf","createPrefix","contextArgs","_overrides","enforceDBDecorators","ON","ValidationError","c","createSuffix","prepared","records","r","createAllPrefix","opts","getSequenceOptions","range","generated","ignoredProps","errorMessages","readPrefix","readAllPrefix","updatePrefix","oldModel","merge","relations","setMetadata","u","updateAllPrefix","oldModels","deletePrefix","deleteAllPrefix","select","selector","Statement","from","query","orderBy","order","ASC","limit","skip","sort","where","offset","execute","prop","Array","isArray","repo","registryName","DefaultSeparator","removeMetadata","findPrimaryKey","ID","indexes","indexDecorators","Reflection","getAllPropertyDecorators","REFLECT","decs","v","startsWith","INDEX","dec","props","RELATIONS","column","generateInjectableNameForRepository","sf","INJECTABLE","InjectablesRegistry","InjectableRegistryImp","injectable","modelCtor","metaKey","resolvedFlavour","aliasToUse","Injectables","message","repoCtor","noValidation","NO_VALIDATE","includes","bind","ObserverError","NoneSequenceOptions","startWith","incrementBy","cycle","DefaultSequenceOptions","NumericSequence","BigIntSequence","createOrUpdate","NotFoundError","oneToOneOnCreate","data","propertyValue","innerRepo","repositoryFromTypeMetadata","cacheModelForPopulate","created","oneToOneOnUpdate","cascade","updated","oneToOneOnDelete","deleted","oneToManyOnCreate","propertyValues","arrayType","every","item","uniqueValues","Set","pkName","add","oneToManyOnUpdate","oneToManyOnDelete","isInstantiated","getPopulateKey","fieldName","POPULATE","parentModel","pkValue","cacheValue","cacheKey","populate","nested","isArr","res","propName","propKeyValues","results","proKeyValue","fetchPopulateValues","commomTypes","types","Validation","ValidationKeys","LIST","TYPE","customTypes","constructorName","t","find","toLowerCase","directions","compositions","define","decorator","d","DSC","propMetadata","uniqueOnCreateUpdate","ConflictError","createdByOnCreateUpdate","createdAt","updatedAt","noValidateOn","ops","currentMeta","newMeta","newApply","newMetadata","pkOnCreate","sequence","next","BaseModel","arg","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","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","setRegistry","VERSION","PACKAGE_NAME","registerLibrary","_currentPage","total","_totalPages","_recordCount","statement","_statement","size","page","previous","validatePage","Number","isInteger","columnName","CREATED_BY","onCreate","cascadeOptions","joinTableOpts","fk","MANY_TO_MANY","joinTable","list","String","MANY_TO_ONE","ONE_TO_MANY","onUpdate","onDelete","afterAny","pop","joinColumnOpts","ONE_TO_ONE","meta","groupsort","readonly","priority","stmt","allowLimit","allowOffset","allowOrderBy","throws","params","allowed","param","toUpperCase","inject","ANCHOR","callback","instance","CLASS","UNIQUE","onCreateUpdate","UPDATED_BY"],"mappings":"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"}
1
+ {"version":3,"file":"core.cjs","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/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/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","../src/query/decorators.ts","../src/repository/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["PersistenceKeys","final","target","propertyKey","descriptor","Error","configurable","exports","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","noValidation","NO_VALIDATE","includes","shouldValidateNestedHandler","property","RELATIONS","relation","RELATION","relationName","relationClassName","isPropertyModel","Symbol","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","define","decorator","directions","compositions","d","DSC","propMetadata","uniqueOnCreateUpdate","ConflictError","createdByOnCreateUpdate","createdAt","updatedAt","noValidateOn","ops","currentMeta","newMeta","newApply","newMetadata","relationKey","pkOnCreate","sequence","next","groupsort","readonly","onCreate","priority","BaseModel","arg","Paginator","_currentPage","total","_totalPages","_recordCount","statement","_statement","size","page","previous","validatePage","Number","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","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","CREATED_BY","updatedByKey","UPDATED_BY","onCreateUpdate","setRegistry","VERSION","PACKAGE_NAME","registerLibrary","columnName","cascadeOptions","joinTableOpts","fk","MANY_TO_MANY","joinTable","list","String","MANY_TO_ONE","original","ONE_TO_MANY","onUpdate","onDelete","afterAny","pop","joinColumnOpts","ONE_TO_ONE","stmt","allowLimit","allowOffset","allowOrderBy","throws","params","allowed","param","toUpperCase","inject","ModelKeys","ANCHOR","REPOSITORY","constr","callback","instance","CLASS","UNIQUE"],"mappings":"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"}