@decaf-ts/for-typeorm 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -34,7 +34,7 @@ A thin, focused TypeORM-backed adapter that plugs Decaf.ts models, repositories
34
34
 
35
35
  Documentation available [here](https://decaf-ts.github.io/ts-workspace/)
36
36
 
37
- Minimal size: 11.3 KB kb gzipped
37
+ Minimal size: 11.4 KB kb gzipped
38
38
 
39
39
 
40
40
  # Decaf.ts for TypeORM — Detailed Description
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,a,n,o,s,i){"use strict";const c=/^(select|from|where|and|or|insert|update|delete|drop|create|table|index|primary|key|foreign|references|constraint|unique|check|default|null|not|as|order|by|group|having|limit|offset|join|inner|outer|left|right|full|on|using|values|returning|set|into|case|when|then|else|end|cast|coalesce|exists|any|all|some|in|between|like|ilike|similar|to|is|true|false|asc|desc|distinct|union|intersect|except|natural|lateral|window|over|partition|range|rows|unbounded|preceding|following|current|row|with|recursive|materialized|view|function|trigger|procedure|language|returns|return|declare|begin|commit|rollback|savepoint|transaction|temporary|temp|if|loop|while|for|continue|exit|raise|exception|notice|info|log|debug|assert|execute|perform|get|diagnostics|call|do|alias|comment|vacuum|analyze|explain|copy|grant|revoke|privileges|public|usage|schema|sequence|owned|owner|tablespace|storage|inherits|type|operator|collate|collation|cascade|restrict|add|alter|column|rename|to|enable|disable|force|no|instead|of|before|after|each|statement|row|execute|also|only|exclude|nulls|others|ordinality|ties|nothing|cache|cycle|increment|minvalue|maxvalue|start|restart|by|called|returns|language|immutable|stable|volatile|strict|security|definer|invoker|cost|rows|support|handler|inline|validator|options|storage|inheritance|oids|without|data|dictionary|encoding|lc_collate|lc_ctype|connection|limit|password|valid|until|superuser|nosuperuser|createdb|nocreatedb|createrole|nocreaterole|inherit|noinherit|login|nologin|replication|noreplication|bypassrls|nobypassrls|encrypted|unencrypted|new|old|session_user|current_user|current_role|current_schema|current_catalog|current_date|current_time|current_timestamp|localtime|localtimestamp|current_database|inet|cidr|macaddr|macaddr8|bit|varbit|tsvector|tsquery|uuid|xml|json|jsonb|int|integer|smallint|bigint|decimal|numeric|real|double|precision|float|boolean|bool|char|character|varchar|text|bytea|date|time|timestamp|interval|point|line|lseg|box|path|polygon|circle|money|void)$/i,l="type-orm",d={SEPARATOR:".",ID:"id",VERSION:"version",DELETED:"deleted_at",TABLE:"table_name",SCHEMA:"schema_name",SEQUENCE:"sequence_name",INDEX:"index"};class p extends n.BaseError{constructor(e){super(p.name,e,404)}}var u;e.SQLOperator=void 0,(u=e.SQLOperator||(e.SQLOperator={})).EQUAL="=",u.NOT_EQUAL="<>",u.LESS_THAN="<",u.LESS_THAN_OR_EQUAL="<=",u.GREATER_THAN=">",u.GREATER_THAN_OR_EQUAL=">=",u.IN="IN",u.NOT_IN="NOT IN",u.LIKE="LIKE",u.ILIKE="ILIKE",u.BETWEEN="BETWEEN",u.IS_NULL="IS NULL",u.IS_NOT_NULL="IS NOT NULL",u.EXISTS="EXISTS",u.NOT_EXISTS="NOT EXISTS",u.ANY="ANY",u.ALL="ALL",u.SOME="SOME";const y={EQUAL:e.SQLOperator.EQUAL,DIFFERENT:e.SQLOperator.NOT_EQUAL,BIGGER:e.SQLOperator.GREATER_THAN,BIGGER_EQ:e.SQLOperator.GREATER_THAN_OR_EQUAL,SMALLER:e.SQLOperator.LESS_THAN,SMALLER_EQ:e.SQLOperator.LESS_THAN_OR_EQUAL,BETWEEN:e.SQLOperator.BETWEEN,NOT:"NOT",IN:e.SQLOperator.IN,IS_NULL:e.SQLOperator.IS_NULL,IS_NOT_NULL:e.SQLOperator.IS_NOT_NULL,REGEXP:"~",IREGEXP:"~*",LIKE:e.SQLOperator.LIKE,ILIKE:e.SQLOperator.ILIKE},h={AND:"AND",OR:"OR"};class E extends a.Paginator{get total(){return this._totalPages}get count(){return this._recordCount}get repo(){return this.__repo||(this.__repo=this.adapter.client.getRepository(t.Metadata.constr(this.clazz))),this.__repo}constructor(e,t,r,a){super(e,t,r,a)}prepare(e){return{...e}}async page(e=1,...t){const r=(await n.Context.args(n.OperationKeys.READ,this.clazz,t,this.adapter,{})).context,o={...this.statement};this._recordCount&&this._totalPages||(this._totalPages=this._recordCount=0);const i=Object.assign(o,{skip:(this.current||0)*this.size,take:this.size}),c=await this.repo.findAndCount(i);if(this._recordCount=c[1],this._totalPages=Math.ceil(this._recordCount/this.size),!this.clazz)throw new a.PagingError("No statement target defined");const l=s.Model.pk(this.clazz),d=(c[0]||[]).map(e=>this.adapter.revert(e,this.clazz,e[l],void 0,r));return this._currentPage=e,d}}function g(e){for(const t of[y,h]){const r=Object.keys(t).find(t=>t===e);if(r)return t[r]}throw new a.QueryError("Could not find adapter translation for operator "+e)}function f(e){const t=RegExp(/^\/(.+)\/(\w+)$/g);if("string"==typeof e){const r=t.exec(e);if(r){const[,t]=r;e=t}}return("string"==typeof e?RegExp(e):e).source}function m(e,r={}){const a=s.Model.relations(e);if(r[e.name]=r[e.name]||void 0,r[e.name])return r[e.name];const i=a.reduce((a,s)=>{const i=t.Metadata.relations(e,s),c=i.populate;let l=i.class;if(o.isClass(l)||(l=l()),!l)throw new n.InternalError(`Could not find class for property ${s} on model ${e.name}`);if(c?a.relations.push(s):a.nonEager.push(s),a.relations.includes(s)){const{nonEager:e,relations:t}=m(l,r);if(e.length&&a.relations.includes(s)){const t=e.map(e=>`${s}.${e}`);a.nonEager.push(...t)}if(t.length){const e=t.map(e=>`${s}.${e}`);a.relations.push(...e)}}return a},{nonEager:[],relations:[]});return r[e.name]=i,i}class A extends a.Statement{constructor(e){super(e)}build(){const e=this.log.for(this.build),r=s.Model.tableName(this.fromSelector),n={query:this.adapter.client.getRepository(t.Metadata.constr(this.fromSelector)).createQueryBuilder(r)};let o;return this.selectSelector?n.query=n.query.select(this.selectSelector.map(e=>`${r}.${e}`)):n.query=n.query.select(),this.whereCondition&&(n.query=this.parseCondition(this.whereCondition,r,n.query).query),o=this.orderBySelector?[`${r}.${this.orderBySelector[0]}`,this.orderBySelector[1].toUpperCase()]:[`${r}.${s.Model.pk(this.fromSelector)}`,a.OrderDirection.ASC.toUpperCase()],n.query=n.query.orderBy(...o),this.limitSelector?n.query=n.query.limit(this.limitSelector):(e.debug("No limit selector defined. Using default limit of 250"),n.query=n.query.limit(250)),this.offsetSelector&&(n.query=n.query.skip(this.offsetSelector)),n}async paginate(e){try{const t={};return this.whereCondition&&(t.where=this.parseConditionForPagination(this.whereCondition,s.Model.tableName(this.fromSelector))),this.orderBySelector&&(t.order={[this.orderBySelector[0]]:this.orderBySelector[1].toString()}),new E(this.adapter,t,e,this.fromSelector)}catch(e){throw new n.InternalError(e)}}async raw(e,...t){const{nonEager:r}=m(this.fromSelector);return e.query=e.query.setFindOptions({loadEagerRelations:!0,loadRelationIds:{relations:r}}),await e.query.getMany()}parseConditionForPagination(e,t,r=0,a){throw new n.InternalError("Not implemented")}parseCondition(e,t,r,n=0,o){const{attr1:s,operator:i,comparison:c}=e;if(-1===[a.GroupOperator.AND,a.GroupOperator.OR,a.Operator.NOT].indexOf(i))return(()=>{const e=g(i),l=`${s}${n}`,d=`${t}.${s} ${e} :${l}`,p={[l]:c};switch(o){case a.GroupOperator.AND:return{query:r.andWhere(d,p)};case a.GroupOperator.OR:return{query:r.orWhere(d,p)};case a.Operator.NOT:throw Error("NOT operator not implemented");default:return{query:r.where(d,p)}}})();if(i===a.Operator.NOT)throw Error("NOT operator not implemented");return r=this.parseCondition(s,t,r,++n).query,this.parseCondition(c,t,r,++n,i)}}class w extends a.Sequence{constructor(e,t){super(e,t)}async current(...e){const t=(await n.Context.args(n.OperationKeys.READ,s.Model,e,this.adapter)).context,{name:r}=this.options;try{const e=await this.adapter.raw({query:"SELECT sequence_name, start_value, minimum_value, increment FROM information_schema.sequences WHERE sequence_name = $1",values:[r]},t);if(!Array.isArray(e)||0===e.length)throw new n.InternalError(`Sequence ${r} not found`);const a=e[0],o=a.current_value??a.last_value??a.start_value;return this.parse(o)}catch(e){throw this.adapter.parseError(e)}}async increment(e,t,r){const{type:a,incrementBy:o,name:s,startWith:i}=this.options;if("Number"!==a&&"BigInt"!==a)throw new n.InternalError(`Cannot increment sequence of type ${a} with ${t}`);try{const e=await this.adapter.raw({query:"SELECT nextval($1) AS nextval;",values:[s]},r);return Array.isArray(e)&&e[0]?e[0].nextval:e}catch(e){if(!(e instanceof n.NotFoundError))throw e;if(!s)throw new n.InternalError("Cannot increment sequence without a name: "+s);const t=`"${s.replace(/"/g,'""')}"`;await this.adapter.raw({query:`CREATE SEQUENCE IF NOT EXISTS ${t} START WITH ${i} INCREMENT BY ${o} NO CYCLE;`,values:[]},r);const a=await this.adapter.raw({query:"SELECT nextval($1) AS nextval;",values:[s]},r);return Array.isArray(a)&&a[0]?a[0].nextval:a}}async next(...e){const t=await n.Context.args(n.OperationKeys.UPDATE,s.Model,e,this.adapter),{context:r,args:a}=t,o=await this.current(...a);return this.increment(o,void 0,r)}async range(e,...t){const r=await n.Context.args(n.OperationKeys.UPDATE,s.Model,t,this.adapter),{context:a}=r,o=await this.current(),i=this.parse(this.options.incrementBy),c=await this.increment(o,this.parse(e)*i,a),l=[];for(let t=1;e>=t;t++)l.push(o+i*this.parse(t));if(l[l.length-1]!==c)throw new n.InternalError("Miscalculation of range");return l}}function O(e){const t=((e,t,r,a=n.DefaultSeparator)=>[...e.map(e=>e===d.TABLE?"table":e),...r||[],...t?[t]:[],d.INDEX].join(a))([d.TABLE]),r={};return r[t]={query:"",values:[]},e.forEach(e=>{const t=s.Model.indexes(e);Object.entries(t).forEach(([t,o])=>{const i=Object.keys(o)[0];let{compositions:c}=o[i];const l=s.Model.tableName(e);c=c||[],(()=>{const e=[t,...c,a.PersistenceKeys.INDEX].join(n.DefaultSeparator);r[e]={query:"CREATE INDEX $1 ON $2 ($3);",values:[e,l,t]}})()})}),Object.values(r)}async function N(e,r,o,i,c,l){async function d(e,t){const o=a.Repository.forModel(e.constructor);await N(o,r,e,t||i!==n.OperationKeys.UPDATE?i:n.OperationKeys.CREATE,c,t)}await n.enforceDBDecorators(e,r,o,i,c,l);for(const e of Object.keys(o))s.Model.isPropertyModel(o,e)&&void 0!==o[e]?await d(o[e],l?l[e]:void 0):t.Metadata.validationFor(o.constructor,e,s.ValidationKeys.LIST)&&o[e]&&Array.isArray(o[e])&&await Promise.all(o[e].map((t,r)=>d(t,l&&l[e]?l[e][r]:void 0)))}class T extends a.Repository{constructor(e,t,...r){super(e,t,...r)}queryBuilder(){return this.nativeRepo().createQueryBuilder()}nativeRepo(){const e=t.Metadata.constr(this.class);return this.adapter.dataSource.getRepository(e)}async createPrefix(e,...t){const r=await n.Context.args(n.OperationKeys.CREATE,this.class,t,this.adapter,this._overrides||{}),a=!1!==r.context.get("ignoreHandlers"),o=!r.context.get("ignoreValidation");if(e=new this.class(e),a&&await N(this,r.context,e,n.OperationKeys.CREATE,n.OperationKeys.ON),o){const t=await Promise.resolve(e.hasErrors(...r.context.get("ignoredValidationProperties")||[]));if(t)throw new n.ValidationError(t.toString())}return[e,...r.args]}async create(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);n.debug(`Creating new ${this.class.name} in table ${s.Model.tableName(this.class)}`);let{record:i,id:c,transient:l}=this.adapter.prepare(e,!1,a);return i=await this.adapter.create(t.Metadata.constr(this.class),c,e,...o),this.adapter.revert(i,this.class,c,l,a)}async read(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);n.debug(`reading ${this.class.name} from table ${s.Model.tableName(this.class)} with pk ${this.pk}`);const i=await this.adapter.read(t.Metadata.constr(this.class),e,...o);return this.adapter.revert(i,this.class,e,void 0,a)}async updatePrefix(e,...t){const r=await n.Context.args(n.OperationKeys.UPDATE,this.class,t,this.adapter,this._overrides||{}),a=!1!==r.context.get("ignoreHandlers"),o=!r.context.get("ignoreValidation"),i=e[this.pk];if(!i)throw new n.InternalError("No value for the Id is defined under the property "+this.pk);const c=await this.read(i,...r.args);if(e=s.Model.merge(c,e,this.class),a&&await N(this,r.context,e,n.OperationKeys.UPDATE,n.OperationKeys.ON,c),o){const t=await Promise.resolve(e.hasErrors(c,...s.Model.relations(this.class),...r.context.get("ignoredValidationProperties")||[]));if(t)throw new n.ValidationError(t.toString())}return[e,...r.args]}async update(e,...r){const{ctxArgs:a,log:n,ctx:o}=this.logCtx(r,this.create);let{record:i,id:c,transient:l}=this.adapter.prepare(e,!1,o);return n.debug(`updating ${this.class.name} in table ${s.Model.tableName(this.class)} with id ${c}`),i=await this.adapter.update(t.Metadata.constr(this.class),c,e,...a),this.adapter.revert(i,this.class,c,l,o)}async delete(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);n.debug(`deleting new ${this.class.name} in table ${s.Model.tableName(this.class)} with pk ${e}`);const i=await this.adapter.delete(t.Metadata.constr(this.class),e,...o);return this.adapter.revert(i,this.class,e,void 0,a)}async createAllPrefix(e,...t){const r=await n.Context.args(n.OperationKeys.CREATE,this.class,t,this.adapter,this._overrides||{}),a=!1!==r.context.get("ignoreHandlers"),o=!r.context.get("ignoreValidation");if(!e.length)return[e,...r.args];if(e=await Promise.all(e.map(async e=>(e=new this.class(e),a&&await N(this,r.context,e,n.OperationKeys.CREATE,n.OperationKeys.ON),e))),o){const t=r.context.get("ignoredValidationProperties")||[],a=await Promise.all(e.map(e=>Promise.resolve(e.hasErrors(...t)))),o=n.reduceErrorsToPrint(a);if(o)throw new n.ValidationError(o)}return[e,...r.args]}async createAll(e,...r){if(!e.length)return e;const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);n.debug(`Creating ${e.length} new ${this.class.name} in table ${s.Model.tableName(this.class)}`);const i=e.map(e=>this.adapter.prepare(e,!1,a)),c=i.map(e=>e.id);let l=i.map(e=>e.record);return l=await this.adapter.createAll(t.Metadata.constr(this.class),c,e,...o),l.map((e,t)=>this.adapter.revert(e,this.class,c[t],a.get("rebuildWithTransient")?i[t].transient:void 0,a))}async readAll(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);return n.debug(`reading ${e.length} ${this.class.name} in table ${s.Model.tableName(this.class)}`),(await this.adapter.readAll(t.Metadata.constr(this.class),e,...o)).map((t,r)=>this.adapter.revert(t,this.class,e[r],void 0,a))}async updateAllPrefix(e,...t){const r=await n.Context.args(n.OperationKeys.UPDATE,this.class,t,this.adapter,this._overrides||{}),a=!1!==r.context.get("ignoreHandlers"),o=!r.context.get("ignoreValidation"),i=e.map(e=>{const t=e[this.pk];if(!t)throw new n.InternalError("missing id on update operation");return t}),c=await this.readAll(i,...r.args);if(e=e.map((e,t)=>s.Model.merge(c[t],e,this.class)),a&&await Promise.all(e.map((e,t)=>N(this,r.context,e,n.OperationKeys.UPDATE,n.OperationKeys.ON,c[t]))),o){const t=r.context.get("ignoredValidationProperties")||[],a=await Promise.all(e.map((e,r)=>Promise.resolve(e.hasErrors(c[r],e,...t)))),o=n.reduceErrorsToPrint(a);if(o)throw new n.ValidationError(o)}return[e,...r.args]}async updateAll(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);n.debug(`Updating ${e.length} new ${this.class.name} in table ${s.Model.tableName(this.class)}`);const i=e.map(e=>this.adapter.prepare(e,!1,a));return(await this.adapter.updateAll(t.Metadata.constr(this.class),i.map(e=>e.id),e,...o)).map((e,t)=>this.adapter.revert(e,this.class,i[t].id,a.get("rebuildWithTransient")?i[t].transient:void 0,a))}async deleteAll(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);return n.debug(`deleting ${e.length} ${this.class.name} in table ${s.Model.tableName(this.class)}`),(await this.adapter.deleteAll(t.Metadata.constr(this.class),e,...o)).map((t,r)=>this.adapter.revert(t,this.class,e[r],void 0,a))}}let S=class{constructor(e,t){if(this.adapter=e,this.handler=t,!this.adapter)throw new n.InternalError("Missing adapter. Should not be possible")}async afterInsert(e){const t=e.entity.constructor,r=await this.adapter.context(n.OperationKeys.CREATE,{},t);this.handler(t,n.OperationKeys.CREATE,e.entityId,e.entity,r)}async afterRemove(e){const t=e.metadata.target,r=await this.adapter.context(n.OperationKeys.DELETE,{},t);this.handler(t,n.OperationKeys.DELETE,"",{},r)}async afterUpdate(e){const t=e.databaseEntity.constructor,r=await this.adapter.context(n.OperationKeys.UPDATE,{},t);return this.handler(t,n.OperationKeys.UPDATE,e.entity[s.Model.pk(t)],e.entity,r)}};S=r.__decorate([i.EventSubscriber(),r.__metadata("design:paramtypes",[a.Adapter,Function])],S);class b extends a.Dispatch{constructor(){super()}async notificationHandler(e,t,r,...a){const{log:n,ctxArgs:o}=this.logCtx(a,this.notificationHandler);try{await this.updateObservers(e,t,r,...o),n.verbose(`Observer refresh dispatched by ${t} for ${e}`),n.debug("pks: "+r)}catch(e){n.error("Failed to process notification: "+e)}}async initialize(){(async function(){if(!this.adapter)throw new n.InternalError("No adapter/native observed for dispatch");try{this.adapter.client.isInitialized||await this.adapter.client.initialize(),this.adapter.client.subscribers.push(new S(this.adapter,this.notificationHandler.bind(this)))}catch(e){throw new n.InternalError(e)}}).call(this).then(()=>{this.log.info("Subscribed to TypeORM notifications")}).catch(e=>{throw new n.InternalError("Failed to subscribe to TypeORM notifications: "+e)})}async updateObservers(e,t,r,...a){if(this.adapter)return super.updateObservers(e,t,r,...a);this.log.verbose(`No adapter observed for dispatch; skipping observer update for ${e}:${t}`)}}function M(e,t,r){let n=0;const o=r.filter((r,a)=>(n=a,r.target===e&&r.propertyName===t));return o.length?(r.splice(n,1),Object.entries(o[0].options).reduce((e,[t,r])=>{switch(t){case"nullable":e[t]=r;break;case s.ValidationKeys.TYPE:break;default:throw new a.UnsupportedError("Unsupported option for a relation: "+t)}return e},{})):{}}function R(e,t,r,a={},o="regular",s,i){const c=r.filter(r=>r.target===e&&r.propertyName===t),l=s.filter(r=>r.target===e&&r.propertyName===t);if(i&&i.filter(r=>r.target===e&&r.columns.includes(t)).forEach(e=>{Object.assign(e,a)}),c.length>1)throw new n.InternalError(`Multiple columns for ${t} found for given target: ${r.map(e=>e.propertyName).join(", ")}`);if(l.length>1)throw new n.InternalError(`Multiple relations for ${t} found for given target: ${l.map(e=>e.propertyName).join(", ")}`);let d;0!==c.length||l.length?(l.length||(d=c[0],"regular"!==o&&Object.defineProperty(d,"mode",{value:o,writable:!0,enumerable:!0,configurable:!0})),l.length&&(a=Object.entries(a).reduce((e,[t,r])=>("nullable"===t&&(e[t]=r),e),{})),d=d||l[0],Object.defineProperty(d,"options",{value:{...d.options,...a},writable:!0,enumerable:!0,configurable:!0})):r.push({target:e,propertyName:t,mode:o,options:a})}function C(e,r){return(a,n)=>{let o;"string"==typeof e||"function"==typeof e?o=e:e&&(r=e,o=e.type),r||(r={});let s=Reflect&&Reflect.getMetadata?Reflect.getMetadata("design:type",a,n):void 0;!o&&s&&(o=s);const c=t.Metadata.allowedTypes(a.constructor,n)[0];if(c!==s&&(o=c,s=c),!r.type&&o&&(r.type=o),"hstore"!==r.type||r.hstoreType||(r.hstoreType=s===Object?"object":"string"),"function"==typeof e)i.getMetadataArgsStorage().embeddeds.push({target:a.constructor,propertyName:n,isArray:s===Array||!0===r.array,prefix:void 0!==r.prefix?r.prefix:void 0,type:e});else{if(!r.type)throw new i.ColumnTypeUndefinedError(a,n);!0===r.unique&&i.getMetadataArgsStorage().uniques.push({target:a.constructor,columns:[n]});const e=i.getMetadataArgsStorage();R(a.constructor,n,e.columns,r,"regular",e.relations,r.unique?e.indices:void 0),r.generated&&i.getMetadataArgsStorage().generations.push({target:a.constructor,propertyName:n,strategy:"string"==typeof r.generated?r.generated:"increment"})}}}class L{static isObject(e){return null!==e&&"object"==typeof e}static isObjectWithName(e){return null!==e&&"object"==typeof e&&void 0!==e.name}static assign(e,...t){for(const r of t)for(const t of Object.getOwnPropertyNames(r))e[t]=r[t]}}function _(e,t){const r={};let a;return e?("string"==typeof e&&(a=e),L.isObject(e)&&(a="increment",Object.assign(r,e))):a="increment",L.isObject(t)&&Object.assign(r,t),(e,t)=>{r.type||("increment"===a||"identity"===a?r.type=Number:"uuid"===a?r.type="uuid":"rowid"===a&&(r.type="int")),r.primary=!0;const n=i.getMetadataArgsStorage();R(e.constructor,t,n.columns,r,"regular",n.relations),i.getMetadataArgsStorage().generations.push({target:e.constructor,propertyName:t,strategy:a})}}function I(e,t){const r=(L.isObject(e)?e:t)||{},a="string"==typeof e?e:r.name;return e=>{i.getMetadataArgsStorage().tables.push({target:e,name:a,type:"regular",orderBy:r.orderBy?r.orderBy:void 0,engine:r.engine?r.engine:void 0,database:r.database?r.database:void 0,schema:r.schema?r.schema:void 0,synchronize:r.synchronize,withoutRowid:r.withoutRowid,comment:r.comment?r.comment:void 0})}}async function v(e,t,r,a){try{const t=e.get("user");a[r]=t}catch(e){throw new n.InternalError("No User found in context. Please provide a user in the context")}}class D extends a.Adapter{getClient(){const e=a.Adapter.models(this.alias).map(t.Metadata.constr);return new i.DataSource(Object.assign({},this.config,{entities:e}))}constructor(e,t){super(e,l,t)}async shutdown(){await super.shutdown(),this._client&&await this._client.destroy()}async flags(e,t,r){return Object.assign(await super.flags(e,t,r),{user:this.config.username})}Dispatch(){return new b}repository(){return T}Statement(){return new A(this)}async Sequence(e){return new w(e,this)}async initialize(){const e=this.client;try{await e.initialize()}catch(e){throw this.parseError(e)}this.log.for(this.initialize).verbose(this.toString()+" initialized")}async index(...e){const t=O(e);try{await this.client.query("BEGIN");for(const e of t)await this.client.query(e.query,e.values);await this.client.query("COMMIT")}catch(e){throw await this.client.query("ROLLBACK"),this.parseError(e)}}async raw(e,...t){const{log:r}=this.logCtx(t,this.raw);try{this.client.isInitialized||await this.client.initialize()}catch(e){throw this.parseError(e)}try{const{query:t,values:a}=e;return r.debug("executing query: "+("string"!=typeof t?t.getSql():t)),await this.client.query(t,a)}catch(e){throw this.parseError(e)}}prepare(e,r=!1,o){const i=super.prepare(e,o);i.record=Object.entries(i.record).reduce((e,[t,r])=>(t===a.PersistenceKeys.METADATA||this.isReserved(t)||void 0===r||(r instanceof Date?r=new Date(r.getTime()):s.Model.isModel(r)?r=this.prepare(r,!0,o).record:"string"==typeof r&&(r=""+r),e[t]=r),e),{});const c=s.Model.get(e.constructor.name);if(!c)throw new n.InternalError(`Model ${e.constructor.name} not found in registry`);const l=r?new(t.Metadata.constr(c)):new c;return r&&Object.defineProperty(l,"constructor",{configurable:!1,enumerable:!1,value:t.Metadata,writable:!1}),Object.entries(i.record).forEach(([e,t])=>l[e]=t),i.record=l,i}revert(e,t,r,a,o){const s=o.logger.for(this.revert);return a&&(s.verbose("re-adding transient properties: "+Object.keys(a).join(", ")),Object.entries(a).forEach(([r,a])=>{if(r in e)throw new n.InternalError(`Transient property ${r} already exists on model ${"string"==typeof t?t:t.name}. should be impossible`);e[r]=a})),new t(e)}async create(e,t,r,...a){const o=this.client.getRepository(e);if(void 0!==t){const r=s.Model.pk(e);if(await o.findOne({where:{[r]:t}}))throw new n.ConflictError(`Record already exists in table ${s.Model.tableName(e)} with id: ${t}`)}try{return await o.save(r)}catch(e){throw this.parseError(e)}}async read(e,t,...r){let a;try{const r=this.client.getRepository(e),{nonEager:n,relations:o}=m(e),i=s.Model.pk(e),c={where:{[i]:t},relations:o,loadRelationIds:{relations:n}};a=await r.findOneOrFail(c)}catch(e){throw this.parseError(e)}return a}async update(e,t,r,...a){const{ctx:n}=this.logCtx(a,this.update);await this.read(e,t,n);try{return this.client.getRepository(e).save(r)}catch(e){throw this.parseError(e)}}async delete(e,t,...r){const{ctx:a}=this.logCtx(r,this.delete),n=await this.read(e,t,a);try{const r=this.client.getRepository(e);return await r.delete(t),n}catch(e){throw this.parseError(e)}}async createAll(e,t,r,...a){const{ctx:n}=this.logCtx(a,this.createAll);try{const t=this.client.getRepository(e),a=await t.insert(r);return this.readAll(e,a.identifiers.map(e=>e.id),n)}catch(e){throw this.parseError(e)}}async readAll(e,t,...r){if(!t.length)return[];try{const r=s.Model.pk(e);return this.client.getRepository(e).findBy({[r]:i.In(t)})}catch(e){throw this.parseError(e)}}async updateAll(e,t,r,...a){const n=[],o=s.Model.pk(e);for(const t of r)n.push(await this.update(e,t[o],t,...a));return n}async deleteAll(e,t,...r){if(!t.length)return[];const{ctx:a}=this.logCtx(r,this.deleteAll);try{const r=this.client.getRepository(e),n=await this.readAll(e,t,a),o=s.Model.pk(e);return await r.delete({[o]:i.In(t)}),n}catch(e){throw this.parseError(e)}}parseError(e,t){return D.parseError(e,t)}isReserved(e){return!!e.match(c)}static parseError(e,t){if(e instanceof n.BaseError)return e;const r="string"==typeof e?e:e.message;if(r.match(/duplicate key|already exists/g))return new n.ConflictError(r);if(r.match(/does not exist|not found|Could not find/g))return new n.NotFoundError(r);switch(r.toString()){case"23505":case"23503":case"42P07":return new n.ConflictError(t);case"42P01":case"42703":return new n.NotFoundError(t);case"42P16":return new p(e);default:return r.toString().match(/ECONNREFUSED/g)?new a.ConnectionError(e):new n.InternalError(e)}}static async connect(e){const t=new i.DataSource(e);return t.isInitialized||await t.initialize(),t}static async createDatabase(e,t){const r=o.Logging.for(this.createDatabase);r.verbose("Creating database "+t);try{await e.query("CREATE DATABASE "+t),r.info("Created database "+t)}catch(e){throw this.parseError(e)}}static async createNotifyFunction(e,t){const r=o.Logging.for(this.createNotifyFunction);r.verbose("Creating notify function");try{await e.query("CREATE OR REPLACE FUNCTION notify_table_changes()\nRETURNS trigger AS $$\nBEGIN\n PERFORM pg_notify(\n 'table_changes',\n json_build_object(\n 'table', TG_TABLE_NAME,\n 'action', TG_OP,\n 'data', row_to_json(NEW),\n 'old_data', row_to_json(OLD)\n )::text\n );\n RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql SECURITY DEFINER\n;"),await e.query(`ALTER FUNCTION notify_table_changes() OWNER TO ${t};`),await e.query("\n GRANT EXECUTE ON FUNCTION notify_table_changes() TO public;\n "),r.info("Created notify function")}catch(e){throw this.parseError(e)}}static async deleteDatabase(e,t,r){try{r&&await e.query(`DROP OWNED BY ${r} CASCADE;`),await e.query("DROP DATABASE "+t)}catch(e){throw this.parseError(e)}}static async createUser(e,t,r,a){try{await e.query(`CREATE USER ${r} WITH PASSWORD '${a}'`),await e.query(`GRANT CONNECT ON DATABASE ${t} TO ${r}`),await e.query("GRANT USAGE ON SCHEMA public TO "+r),await e.query("GRANT CREATE ON SCHEMA public TO "+r),await e.query("GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "+r),await e.query("GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO "+r),await e.query("GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO "+r),await e.query("ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO "+r),await e.query("ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO "+r)}catch(e){throw this.parseError(e)}}static async deleteUser(e,t,r){try{await e.query(`REASSIGN OWNED BY ${t} TO ${r}`),await e.query("REVOKE ALL ON ALL TABLES IN SCHEMA public FROM "+t),await e.query("REVOKE ALL ON SCHEMA public FROM "+t),await e.query("REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM "+t),await e.query("REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM "+t),await e.query(`ALTER DEFAULT PRIVILEGES FOR ROLE ${r} IN SCHEMA public REVOKE ALL ON TABLES FROM ${t}`),await e.query(`ALTER DEFAULT PRIVILEGES FOR ROLE ${r} IN SCHEMA public REVOKE ALL ON SEQUENCES FROM ${t};`),await e.query(`ALTER DEFAULT PRIVILEGES FOR ROLE ${r} IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM ${t}`),await e.query(`DROP OWNED BY ${t} CASCADE`),await e.query(`DROP USER IF EXISTS "${t}"`)}catch(e){throw this.parseError(e)}}static parseTypeToPostgres(e,r,a=!1){switch(e.toLowerCase()){case"string":return r?"TEXT PRIMARY KEY":a?"TEXT":"VARCHAR";case"number":return r?"SERIAL PRIMARY KEY":"INTEGER";case"boolean":return"BOOLEAN";case"date":return"TIMESTAMP";case"bigint":return r?"BIGINT PRIMARY KEY":"BIGINT";default:{const r=s.Model.get(e);if(r)return{model:r,pkType:t.Metadata.type(r,s.Model.pk(r))};throw new n.InternalError("Unsupported type: "+e)}}}static parseValidationToPostgres(e,t,r,a,o){switch(a){case s.ValidationKeys.REQUIRED:return"NOT NULL";case s.ValidationKeys.MAX_LENGTH:return r||!o||"string"!==t.toLowerCase()?"":`(${o[s.ValidationKeys.MAX_LENGTH]})`;case s.ValidationKeys.MIN_LENGTH:return`CONSTRAINT ${e}_min_length_check CHECK (LENGTH(${e}) >= ${o[s.ValidationKeys.MIN_LENGTH]})`;case s.ValidationKeys.PATTERN:case s.ValidationKeys.URL:case s.ValidationKeys.EMAIL:return`CONSTRAINT ${e}_pattern_check CHECK (${e} ~ '${f(o[s.ValidationKeys.PATTERN])}')`;case s.ValidationKeys.TYPE:case s.ValidationKeys.DATE:return"";case s.ValidationKeys.MIN:return`CONSTRAINT ${e}_${a}_check CHECK (${e} >= ${o[s.ValidationKeys.MIN]})`;case s.ValidationKeys.MAX:return`CONSTRAINT ${e}_${a}_check CHECK (${e} <= ${o[s.ValidationKeys.MAX]})`;case s.ValidationKeys.PASSWORD:default:throw new n.InternalError("Unsupported type: "+a)}}static parseRelationsToPostgres(e,t,r,o,i){const c=s.Model.tableName(t),{cascade:l}=i,d=`${l.update?" ON UPDATE CASCADE":""}${l.delete?" ON DELETE CASCADE":""}`;if("relations"+o===a.PersistenceKeys.ONE_TO_ONE)return`FOREIGN KEY (${e}) REFERENCES ${c}(${r})${d}`;throw new n.InternalError("Unsupported operation: "+o)}static async getCurrentUser(e){try{return(await e.query("SELECT CURRENT_USER;"))[0].current_user}catch(e){throw this.parseError(e)}}static decoration(){super.decoration(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.TABLE).extend({decorator:e=>r=>{const a=t.Metadata.constr(r),n=i.getMetadataArgsStorage().tables.find(e=>e.target===a);return n?(e&&(n.name=e),r):(I(e||(()=>{try{return s.Model.tableName(a)}catch{return a?.name}})())(a),r)}}).apply(),t.Decoration.flavouredAs(l).for(n.DBKeys.ID).define({decorator:e=>(r,o)=>{const c=t.Metadata.constr(r.constructor);i.getMetadataArgsStorage().tables.find(e=>e.target===c)||I((()=>{try{return s.Model.tableName(c)}catch{return c?.name}})()||c?.name)(c),t.prop()(r,o);const l=[s.required(),n.readonly(),t.propMetadata(t.Metadata.key(n.DBKeys.ID,o),e)];let d=e.type||t.Metadata.type(r.constructor,o);switch(d){case String.name||String.name.toLowerCase():case String:e.generated=!1;break;case Number.name||String.name.toLowerCase():case BigInt.name||BigInt.name.toLowerCase():case BigInt:case Number:case"uuid":case"serial":e.generated=!0;break;case!d:throw new n.InternalError(`Missing type information for property ${o} of ${r.name}`);default:throw Error("Unsupported type")}if(void 0===e.generated&&(e.generated=!0),e.generated){const t={name:e.name||s.Model.sequenceName(r.constructor,"pk")};"serial"===e.type||"uuid"===e.type?l.push(_("uuid"===e.type?e.type:"identity",t)):l.push(_(t)),l.push(a.noValidateOnCreate())}else{switch("function"==typeof d&&d?.name?d.name:d){case Number.name||Number.name.toLowerCase():d="numeric";break;case"serial":case"uuid":break;case String.name||String.name.toLowerCase():d="varchar";break;case BigInt.name||BigInt.name.toLowerCase():d="bigint";break;default:throw new n.InternalError("Unsupported type: "+d)}l.push(((e,t)=>(r,a)=>{let n;e===String||e===Boolean||e===Number?n=e:t=Object.assign({},e),t||(t={});const o=Reflect&&Reflect.getMetadata?Reflect.getMetadata("design:type",r,a):void 0;if(!n&&o&&(n=o),!t.type&&n&&(t.type=n),!t.type)throw new i.ColumnTypeUndefinedError(r,a);if(t.nullable)throw new i.PrimaryColumnCannotBeNullableError(r,a);t.primary=!0;const s=i.getMetadataArgsStorage();R(r.constructor,a,s.columns,t,"regular",s.relations),t.generated&&i.getMetadataArgsStorage().generations.push({target:r.constructor,propertyName:a,strategy:"string"==typeof t.generated?t.generated:"increment"})})({type:d,unique:!0}))}return t.apply(...l)(r,o)}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.COLUMN).extend({decorator:e=>(t,r)=>{const a={};let n;e&&(a.name=e);try{n=s.Model.pk(t.constructor)}catch(e){n=void 0}return n!==r&&(a.nullable=!0),C(a)(t,r)}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.UNIQUE).define(t.propMetadata(a.PersistenceKeys.UNIQUE,{})).extend(C({unique:!0})).apply();const e=s.Validation.key(s.ValidationKeys.REQUIRED);t.Decoration.flavouredAs(l).for(e).extend(C({nullable:!1})).apply(),t.Decoration.flavouredAs(l).for(n.DBKeys.VERSION).define(s.type(Number),i.VersionColumn(),a.noValidateOnCreate()).apply();const r=n.DBKeys.TIMESTAMP,o=(c=n.DBKeys.TIMESTAMP,n.UpdateValidationKeys.REFLECT+c);var c;t.Decoration.flavouredAs(l).for(r).define({decorator:(e,r)=>{const i=[s.date(r,n.DEFAULT_ERROR_MESSAGES.TIMESTAMP.DATE),s.required(n.DEFAULT_ERROR_MESSAGES.TIMESTAMP.REQUIRED),t.propMetadata(s.Validation.key(n.DBKeys.TIMESTAMP),{operation:e,format:r}),a.noValidateOnCreate()];return-1!==e.indexOf(n.OperationKeys.UPDATE)?i.push(t.propMetadata(o,{message:n.DEFAULT_ERROR_MESSAGES.TIMESTAMP.INVALID}),a.noValidateOnCreateUpdate()):i.push(n.readonly()),t.apply(...i)}}).extend({decorator:(e,t)=>(t,r)=>-1!==e.indexOf(n.OperationKeys.UPDATE)?((e,t)=>{const r=i.getMetadataArgsStorage();R(e.constructor,t,r.columns,{},"updateDate",r.relations)})(t,r):((e,t)=>{const r=i.getMetadataArgsStorage();R(e.constructor,t,r.columns,{},"createDate",r.relations)})(t,r)}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.ONE_TO_ONE).define({decorator:(e,r,o,c,l)=>{const d={class:e,cascade:r,populate:o};c&&(d.joinTable=c),l&&(d.name=l);const p={cascade:r.update===a.Cascade.CASCADE||r.delete===a.Cascade.CASCADE,onDelete:r.delete?"CASCADE":"DEFAULT",onUpdate:r.update?"CASCADE":"DEFAULT",nullable:!0,eager:o};return t.apply(t.prop(),a.relation(a.PersistenceKeys.ONE_TO_ONE,d),s.type([e,String,Number,BigInt]),t.propMetadata(a.PersistenceKeys.ONE_TO_ONE,d),((e,t,r)=>{let a;return L.isObject(t)?r=t:a=t,(t,n)=>{r||(r={});let o=!(!r||!0!==r.lazy);if(!o&&Reflect&&Reflect.getMetadata){const e=Reflect.getMetadata("design:type",t,n);e&&"string"==typeof e.name&&"promise"===e.name.toLowerCase()&&(o=!0)}const s=i.getMetadataArgsStorage();r=Object.assign(r,M(t.constructor,n,s.columns)),s.relations.push({target:t.constructor,propertyName:n,isLazy:o,relationType:"one-to-one",type:e,inverseSideProperty:a,options:r})}})(()=>{"function"!=typeof e||e.name||(e=e());const r=t.Metadata.constr(e);if(r===e)throw new n.InternalError("Original Model not found in constructor");return r},t=>("function"!=typeof e||e.name||(e=e()),t[s.Model.pk(e)]),p),i.JoinColumn(c||d.name?{foreignKeyConstraintName:d.name}:void 0))}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.ONE_TO_MANY).define({decorator:(e,r,o,c,l)=>{const d={class:e,cascade:r,populate:o};c&&(d.joinTable=c),l&&(d.name=l);const p=[t.prop(),a.relation(a.PersistenceKeys.ONE_TO_MANY,d),s.list(e),t.propMetadata(a.PersistenceKeys.ONE_TO_MANY,d),(c,l)=>{const d={cascade:r.update===a.Cascade.CASCADE||r.delete===a.Cascade.CASCADE,onDelete:r.delete?"CASCADE":"DEFAULT",onUpdate:r.update?"CASCADE":"DEFAULT",nullable:!0,eager:o};return(p=()=>{"function"!=typeof e||e.name||(e=e());const r=t.Metadata.constr(e);if(r===e)throw new n.InternalError("Original Model not found in constructor");return r},u=r=>{"function"!=typeof e||e.name||(e=e());const o=t.Metadata.relations(e);if(!o)throw new n.InternalError("No relations found on model "+e.name);const i=o.find(r=>{const n=s.Model.relations(e,r);if(n.key!==a.PersistenceKeys.MANY_TO_ONE)return!1;const o="function"!=typeof n.class||n.class.name?n.class:n.class(),i=t.Metadata.constr(c.constructor);return o.name===i.name});if(!i)throw new n.InternalError(`Cross relation not found. Did you use @manyToOne on the ${e.name}?`);return r[i]},y=d,(e,t)=>{y||(y={});let r=y&&!0===y.lazy;if(!r&&Reflect&&Reflect.getMetadata){const a=Reflect.getMetadata("design:type",e,t);a&&"string"==typeof a.name&&"promise"===a.name.toLowerCase()&&(r=!0)}const a=i.getMetadataArgsStorage();y=Object.assign(y,M(e.constructor,t,a.columns)),a.relations.push({target:e.constructor,propertyName:t,isLazy:r,relationType:"one-to-many",type:p,inverseSideProperty:u,options:y})})(c,l);var p,u,y}];return t.apply(...p)}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.MANY_TO_ONE).define({decorator:(e,r,o,c,l)=>{const d={class:e,cascade:r,populate:o};c&&(d.joinTable=c),l&&(d.name=l);const p={cascade:r.update===a.Cascade.CASCADE||r.delete===a.Cascade.CASCADE,onDelete:r.delete?"CASCADE":"NO ACTION",onUpdate:r.update?"CASCADE":"NO ACTION",nullable:!0,eager:o};return t.apply(a.relation(a.PersistenceKeys.MANY_TO_ONE,d),s.type([e,String,Number,BigInt]),t.propMetadata(a.PersistenceKeys.MANY_TO_ONE,d),(r,o)=>((e,t,r)=>{let a;return L.isObject(t)?r=t:a=t,(t,n)=>{r||(r={});let o=r&&!0===r.lazy;if(!o&&Reflect&&Reflect.getMetadata){const e=Reflect.getMetadata("design:type",t,n);e&&"string"==typeof e.name&&"promise"===e.name.toLowerCase()&&(o=!0)}const s=i.getMetadataArgsStorage();r=Object.assign(r,M(t.constructor,n,s.columns)),s.relations.push({target:t.constructor,propertyName:n,relationType:"many-to-one",isLazy:o,type:e,inverseSideProperty:a,options:r})}})(()=>{"function"!=typeof e||e.name||(e=e());const r=t.Metadata.constr(e);if(r===e)throw new n.InternalError("Original Model not found in constructor");return r},n=>{"function"!=typeof e||e.name||(e=e());const o=t.Metadata.relations(e);let i=s.Model.pk(e);return o?(i=o.find(n=>{const o=s.Model.relations(e,n);if(o.key!==a.PersistenceKeys.ONE_TO_MANY)return!1;const i="function"!=typeof o.class||o.class.name?o.class:o.class(),c=t.Metadata.constr(r.constructor);return i.name===c.name})||i,n[i]):n[i]},p)(r,o))}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.MANY_TO_MANY).define({decorator:(e,r,o,c,l)=>{const d={class:e,cascade:r,populate:o};c&&(d.joinTable=c),l&&(d.name=l);const p={cascade:r.update===a.Cascade.CASCADE||r.delete===a.Cascade.CASCADE,onDelete:r.delete?"CASCADE":"DEFAULT",onUpdate:r.update?"CASCADE":"DEFAULT",nullable:!0,eager:o};return t.apply(a.relation(a.PersistenceKeys.MANY_TO_MANY,d),s.list(e),t.propMetadata(a.PersistenceKeys.MANY_TO_MANY,d),((e,t,r)=>{let a;return L.isObject(t)?r=t:a=t,(t,n)=>{r||(r={});let o=!0===r.lazy;if(!o&&Reflect&&Reflect.getMetadata){const e=Reflect.getMetadata("design:type",t,n);e&&"string"==typeof e.name&&"promise"===e.name.toLowerCase()&&(o=!0)}const s=i.getMetadataArgsStorage();r=Object.assign(r,M(t.constructor,n,s.columns)),s.relations.push({target:t.constructor,propertyName:n,relationType:"many-to-many",isLazy:o,type:e,inverseSideProperty:a,options:r})}})(()=>{"function"!=typeof e||e.name||(e=e());const r=t.Metadata.constr(e);if(r===e)throw new n.InternalError("Original Model not found in constructor");return r},t=>("function"!=typeof e||e.name||(e=e()),t[s.Model.pk(e)]),p),i.JoinTable(c))}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.INDEX).extend({decorator:(e,t,r)=>(r,n)=>("string"==typeof e&&(e=void 0,t=void 0),"string"==typeof t&&(t=void 0),!t&&e&&e.find(e=>![a.OrderDirection.ASC,a.OrderDirection.DSC].includes(e))&&(t=e,e=void 0),t&&t.length?i.Index([n,...t])(r):i.Index()(r,n))}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.CREATED_BY).define(n.onCreate(v,{}),s.required(),t.propMetadata(a.PersistenceKeys.CREATED_BY,{}),a.noValidateOnCreate()).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.UPDATED_BY).define(n.onCreateUpdate(v,{}),s.required(),t.propMetadata(a.PersistenceKeys.UPDATED_BY,{}),a.noValidateOnCreateUpdate()).apply()}}r.__decorate([o.final(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[]),r.__metadata("design:returntype",b)],D.prototype,"Dispatch",null),r.__decorate([o.final(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[]),r.__metadata("design:returntype",Object)],D.prototype,"repository",null),r.__decorate([o.final(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[]),r.__metadata("design:returntype",A)],D.prototype,"Statement",null),r.__decorate([o.final(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",Promise)],D.prototype,"Sequence",null),r.__decorate([o.final(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",Promise)],D.prototype,"index",null),D.decoration(),a.Adapter.setCurrent(l);const x="##VERSION##",P="##PACKAGE##";t.Metadata.registerLibrary(P,x),e.IndexError=p,e.PACKAGE_NAME=P,e.TypeORMAdapter=D,e.TypeORMConst={NULL:"NULL"},e.TypeORMDispatch=b,e.TypeORMFlavour=l,e.TypeORMGroupOperator=h,e.TypeORMKeys=d,e.TypeORMOperator=y,e.TypeORMPaginator=E,e.TypeORMQueryLimit=250,e.TypeORMRepository=T,e.TypeORMSequence=w,e.TypeORMStatement=A,e.VERSION=x,e.convertJsRegexToPostgres=f,e.enforceDbDecoratorsRecursive=N,e.generateIndexes=O,e.reservedAttributes=c,e.splitEagerRelations=m,e.translateOperators=g},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("tslib"),require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("@decaf-ts/logging"),require("@decaf-ts/decorator-validation"),require("typeorm")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","tslib","@decaf-ts/core","@decaf-ts/db-decorators","@decaf-ts/logging","@decaf-ts/decorator-validation","typeorm"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-typeorm"]={},e.decafTsDecoration,e.tslib,e.decafTsCore,e.decafTsDbDecorators,e.decafTsLogging,e.decafTsDecoratorValidation,e.typeorm);
1
+ var e,t;e=this,t=function(e,t,r,a,n,o,s,i){"use strict";const c=/^(select|from|where|and|or|insert|update|delete|drop|create|table|index|primary|key|foreign|references|constraint|unique|check|default|null|not|as|order|by|group|having|limit|offset|join|inner|outer|left|right|full|on|using|values|returning|set|into|case|when|then|else|end|cast|coalesce|exists|any|all|some|in|between|like|ilike|similar|to|is|true|false|asc|desc|distinct|union|intersect|except|natural|lateral|window|over|partition|range|rows|unbounded|preceding|following|current|row|with|recursive|materialized|view|function|trigger|procedure|language|returns|return|declare|begin|commit|rollback|savepoint|transaction|temporary|temp|if|loop|while|for|continue|exit|raise|exception|notice|info|log|debug|assert|execute|perform|get|diagnostics|call|do|alias|comment|vacuum|analyze|explain|copy|grant|revoke|privileges|public|usage|schema|sequence|owned|owner|tablespace|storage|inherits|type|operator|collate|collation|cascade|restrict|add|alter|column|rename|to|enable|disable|force|no|instead|of|before|after|each|statement|row|execute|also|only|exclude|nulls|others|ordinality|ties|nothing|cache|cycle|increment|minvalue|maxvalue|start|restart|by|called|returns|language|immutable|stable|volatile|strict|security|definer|invoker|cost|rows|support|handler|inline|validator|options|storage|inheritance|oids|without|data|dictionary|encoding|lc_collate|lc_ctype|connection|limit|password|valid|until|superuser|nosuperuser|createdb|nocreatedb|createrole|nocreaterole|inherit|noinherit|login|nologin|replication|noreplication|bypassrls|nobypassrls|encrypted|unencrypted|new|old|session_user|current_user|current_role|current_schema|current_catalog|current_date|current_time|current_timestamp|localtime|localtimestamp|current_database|inet|cidr|macaddr|macaddr8|bit|varbit|tsvector|tsquery|uuid|xml|json|jsonb|int|integer|smallint|bigint|decimal|numeric|real|double|precision|float|boolean|bool|char|character|varchar|text|bytea|date|time|timestamp|interval|point|line|lseg|box|path|polygon|circle|money|void)$/i,l="type-orm",d={SEPARATOR:".",ID:"id",VERSION:"version",DELETED:"deleted_at",TABLE:"table_name",SCHEMA:"schema_name",SEQUENCE:"sequence_name",INDEX:"index"};class p extends n.BaseError{constructor(e){super(p.name,e,404)}}var u;e.SQLOperator=void 0,(u=e.SQLOperator||(e.SQLOperator={})).EQUAL="=",u.NOT_EQUAL="<>",u.LESS_THAN="<",u.LESS_THAN_OR_EQUAL="<=",u.GREATER_THAN=">",u.GREATER_THAN_OR_EQUAL=">=",u.IN="IN",u.NOT_IN="NOT IN",u.LIKE="LIKE",u.ILIKE="ILIKE",u.BETWEEN="BETWEEN",u.IS_NULL="IS NULL",u.IS_NOT_NULL="IS NOT NULL",u.EXISTS="EXISTS",u.NOT_EXISTS="NOT EXISTS",u.ANY="ANY",u.ALL="ALL",u.SOME="SOME";const y={EQUAL:e.SQLOperator.EQUAL,DIFFERENT:e.SQLOperator.NOT_EQUAL,BIGGER:e.SQLOperator.GREATER_THAN,BIGGER_EQ:e.SQLOperator.GREATER_THAN_OR_EQUAL,SMALLER:e.SQLOperator.LESS_THAN,SMALLER_EQ:e.SQLOperator.LESS_THAN_OR_EQUAL,BETWEEN:e.SQLOperator.BETWEEN,NOT:"NOT",IN:e.SQLOperator.IN,IS_NULL:e.SQLOperator.IS_NULL,IS_NOT_NULL:e.SQLOperator.IS_NOT_NULL,REGEXP:"~",IREGEXP:"~*",LIKE:e.SQLOperator.LIKE,ILIKE:e.SQLOperator.ILIKE},h={AND:"AND",OR:"OR"};class E extends a.Paginator{get total(){return this._totalPages}get count(){return this._recordCount}get repo(){return this.__repo||(this.__repo=this.adapter.client.getRepository(t.Metadata.constr(this.clazz))),this.__repo}constructor(e,t,r,a){super(e,t,r,a)}prepare(e){return{...e}}async page(e=1,...t){const r=(await n.Context.args(n.OperationKeys.READ,this.clazz,t,this.adapter,{})).context,o={...this.statement};this._recordCount&&this._totalPages||(this._totalPages=this._recordCount=0);const i=Object.assign(o,{skip:(this.current||0)*this.size,take:this.size}),c=await this.repo.findAndCount(i);if(this._recordCount=c[1],this._totalPages=Math.ceil(this._recordCount/this.size),!this.clazz)throw new a.PagingError("No statement target defined");const l=s.Model.pk(this.clazz),d=(c[0]||[]).map((e=>this.adapter.revert(e,this.clazz,e[l],void 0,r)));return this._currentPage=e,d}}function g(e){for(const t of[y,h]){const r=Object.keys(t).find((t=>t===e));if(r)return t[r]}throw new a.QueryError("Could not find adapter translation for operator "+e)}function f(e){const t=RegExp(/^\/(.+)\/(\w+)$/g);if("string"==typeof e){const r=t.exec(e);if(r){const[,t]=r;e=t}}return("string"==typeof e?RegExp(e):e).source}function m(e,r={}){const a=s.Model.relations(e);if(r[e.name]=r[e.name]||void 0,r[e.name])return r[e.name];const i=a.reduce(((a,s)=>{const i=t.Metadata.relations(e,s),c=i.populate;let l=i.class;if(o.isClass(l)||(l=l()),!l)throw new n.InternalError(`Could not find class for property ${s} on model ${e.name}`);if(c?a.relations.push(s):a.nonEager.push(s),a.relations.includes(s)){const{nonEager:e,relations:t}=m(l,r);if(e.length&&a.relations.includes(s)){const t=e.map((e=>`${s}.${e}`));a.nonEager.push(...t)}if(t.length){const e=t.map((e=>`${s}.${e}`));a.relations.push(...e)}}return a}),{nonEager:[],relations:[]});return r[e.name]=i,i}class A extends a.Statement{constructor(e){super(e)}build(){const e=this.log.for(this.build),r=s.Model.tableName(this.fromSelector),n={query:this.adapter.client.getRepository(t.Metadata.constr(this.fromSelector)).createQueryBuilder(r)};let o;return this.selectSelector?n.query=n.query.select(this.selectSelector.map((e=>`${r}.${e}`))):n.query=n.query.select(),this.whereCondition&&(n.query=this.parseCondition(this.whereCondition,r,n.query).query),o=this.orderBySelector?[`${r}.${this.orderBySelector[0]}`,this.orderBySelector[1].toUpperCase()]:[`${r}.${s.Model.pk(this.fromSelector)}`,a.OrderDirection.ASC.toUpperCase()],n.query=n.query.orderBy(...o),this.limitSelector?n.query=n.query.limit(this.limitSelector):(e.debug("No limit selector defined. Using default limit of 250"),n.query=n.query.limit(250)),this.offsetSelector&&(n.query=n.query.skip(this.offsetSelector)),n}async paginate(e){try{const t={};return this.whereCondition&&(t.where=this.parseConditionForPagination(this.whereCondition,s.Model.tableName(this.fromSelector))),this.orderBySelector&&(t.order={[this.orderBySelector[0]]:this.orderBySelector[1].toString()}),new E(this.adapter,t,e,this.fromSelector)}catch(e){throw new n.InternalError(e)}}async raw(e,...t){const{nonEager:r}=m(this.fromSelector);return e.query=e.query.setFindOptions({loadEagerRelations:!0,loadRelationIds:{relations:r}}),await e.query.getMany()}parseConditionForPagination(e,t,r=0,a){throw new n.InternalError("Not implemented")}parseCondition(e,t,r,n=0,o){const{attr1:s,operator:i,comparison:c}=e;if(-1===[a.GroupOperator.AND,a.GroupOperator.OR,a.Operator.NOT].indexOf(i))return(()=>{const e=g(i),l=`${s}${n}`,d=`${t}.${s} ${e} :${l}`,p={[l]:c};switch(o){case a.GroupOperator.AND:return{query:r.andWhere(d,p)};case a.GroupOperator.OR:return{query:r.orWhere(d,p)};case a.Operator.NOT:throw Error("NOT operator not implemented");default:return{query:r.where(d,p)}}})();if(i===a.Operator.NOT)throw Error("NOT operator not implemented");return r=this.parseCondition(s,t,r,++n).query,this.parseCondition(c,t,r,++n,i)}}class w extends a.Sequence{constructor(e,t){super(e,t)}async current(...e){const t=(await n.Context.args(n.OperationKeys.READ,s.Model,e,this.adapter)).context,{name:r}=this.options;try{const e=await this.adapter.raw({query:"SELECT sequence_name, start_value, minimum_value, increment FROM information_schema.sequences WHERE sequence_name = $1",values:[r]},t);if(!Array.isArray(e)||0===e.length)throw new n.InternalError(`Sequence ${r} not found`);const a=e[0],o=a.current_value??a.last_value??a.start_value;return this.parse(o)}catch(e){throw this.adapter.parseError(e)}}async increment(e,t,r){const{type:a,incrementBy:o,name:s,startWith:i}=this.options;if("Number"!==a&&"BigInt"!==a)throw new n.InternalError(`Cannot increment sequence of type ${a} with ${t}`);try{const e=await this.adapter.raw({query:"SELECT nextval($1) AS nextval;",values:[s]},r);return Array.isArray(e)&&e[0]?e[0].nextval:e}catch(e){if(!(e instanceof n.NotFoundError))throw e;if(!s)throw new n.InternalError("Cannot increment sequence without a name: "+s);const t=`"${s.replace(/"/g,'""')}"`;await this.adapter.raw({query:`CREATE SEQUENCE IF NOT EXISTS ${t} START WITH ${i} INCREMENT BY ${o} NO CYCLE;`,values:[]},r);const a=await this.adapter.raw({query:"SELECT nextval($1) AS nextval;",values:[s]},r);return Array.isArray(a)&&a[0]?a[0].nextval:a}}async next(...e){const t=await n.Context.args(n.OperationKeys.UPDATE,s.Model,e,this.adapter),{context:r,args:a}=t,o=await this.current(...a);return this.increment(o,void 0,r)}async range(e,...t){const r=await n.Context.args(n.OperationKeys.UPDATE,s.Model,t,this.adapter),{context:a}=r,o=await this.current(),i=this.parse(this.options.incrementBy),c=await this.increment(o,this.parse(e)*i,a),l=[];for(let t=1;e>=t;t++)l.push(o+i*this.parse(t));if(l[l.length-1]!==c)throw new n.InternalError("Miscalculation of range");return l}}function O(e){const t=((e,t,r,a=n.DefaultSeparator)=>[...e.map((e=>e===d.TABLE?"table":e)),...r||[],...t?[t]:[],d.INDEX].join(a))([d.TABLE]),r={};return r[t]={query:"",values:[]},e.forEach((e=>{const t=s.Model.indexes(e);Object.entries(t).forEach((([t,o])=>{const i=Object.keys(o)[0];let{compositions:c}=o[i];const l=s.Model.tableName(e);c=c||[],(()=>{const e=[t,...c,a.PersistenceKeys.INDEX].join(n.DefaultSeparator);r[e]={query:"CREATE INDEX $1 ON $2 ($3);",values:[e,l,t]}})()}))})),Object.values(r)}async function N(e,r,o,i,c,l){async function d(e,t){const o=a.Repository.forModel(e.constructor);await N(o,r,e,t||i!==n.OperationKeys.UPDATE?i:n.OperationKeys.CREATE,c,t)}await n.enforceDBDecorators(e,r,o,i,c,l);for(const e of Object.keys(o))s.Model.isPropertyModel(o,e)&&void 0!==o[e]?await d(o[e],l?l[e]:void 0):t.Metadata.validationFor(o.constructor,e,s.ValidationKeys.LIST)&&o[e]&&Array.isArray(o[e])&&await Promise.all(o[e].map(((t,r)=>d(t,l&&l[e]?l[e][r]:void 0))))}class T extends a.Repository{constructor(e,t,...r){super(e,t,...r)}queryBuilder(){return this.nativeRepo().createQueryBuilder()}nativeRepo(){const e=t.Metadata.constr(this.class);return this.adapter.dataSource.getRepository(e)}async createPrefix(e,...t){const r=await n.Context.args(n.OperationKeys.CREATE,this.class,t,this.adapter,this._overrides||{}),a=r.context.get("ignoreHandlers"),o=r.context.get("ignoreValidation");if(e=new this.class(e),a||await N(this,r.context,e,n.OperationKeys.CREATE,n.OperationKeys.ON),!o){const t=await Promise.resolve(e.hasErrors(...r.context.get("ignoredValidationProperties")||[]));if(t)throw new n.ValidationError(t.toString())}return[e,...r.args]}async create(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);n.debug(`Creating new ${this.class.name} in table ${s.Model.tableName(this.class)}`);let{record:i,id:c,transient:l}=this.adapter.prepare(e,!1,a);return i=await this.adapter.create(t.Metadata.constr(this.class),c,e,...o),this.adapter.revert(i,this.class,c,l,a)}async read(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);n.debug(`reading ${this.class.name} from table ${s.Model.tableName(this.class)} with pk ${this.pk}`);const i=await this.adapter.read(t.Metadata.constr(this.class),e,...o);return this.adapter.revert(i,this.class,e,void 0,a)}async updatePrefix(e,...t){const r=await n.Context.args(n.OperationKeys.UPDATE,this.class,t,this.adapter,this._overrides||{}),a=r.context.get("ignoreHandlers"),o=r.context.get("ignoreValidation"),i=e[this.pk];if(!i)throw new n.InternalError("No value for the Id is defined under the property "+this.pk);const c=await this.read(i,...r.args);if(e=s.Model.merge(c,e,this.class),a&&await N(this,r.context,e,n.OperationKeys.UPDATE,n.OperationKeys.ON,c),o){const t=await Promise.resolve(e.hasErrors(c,...s.Model.relations(this.class),...r.context.get("ignoredValidationProperties")||[]));if(t)throw new n.ValidationError(t.toString())}return[e,...r.args]}async update(e,...r){const{ctxArgs:a,log:n,ctx:o}=this.logCtx(r,this.create);let{record:i,id:c,transient:l}=this.adapter.prepare(e,!1,o);return n.debug(`updating ${this.class.name} in table ${s.Model.tableName(this.class)} with id ${c}`),i=await this.adapter.update(t.Metadata.constr(this.class),c,e,...a),this.adapter.revert(i,this.class,c,l,o)}async delete(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);n.debug(`deleting new ${this.class.name} in table ${s.Model.tableName(this.class)} with pk ${e}`);const i=await this.adapter.delete(t.Metadata.constr(this.class),e,...o);return this.adapter.revert(i,this.class,e,void 0,a)}async createAllPrefix(e,...t){const r=await n.Context.args(n.OperationKeys.CREATE,this.class,t,this.adapter,this._overrides||{}),a=r.context.get("ignoreHandlers"),o=r.context.get("ignoreValidation");if(!e.length)return[e,...r.args];if(e=await Promise.all(e.map((async e=>(e=new this.class(e),a||await N(this,r.context,e,n.OperationKeys.CREATE,n.OperationKeys.ON),e)))),!o){const t=r.context.get("ignoredValidationProperties")||[],a=await Promise.all(e.map((e=>Promise.resolve(e.hasErrors(...t))))),o=n.reduceErrorsToPrint(a);if(o)throw new n.ValidationError(o)}return[e,...r.args]}async createAll(e,...r){if(!e.length)return e;const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);n.debug(`Creating ${e.length} new ${this.class.name} in table ${s.Model.tableName(this.class)}`);const i=e.map((e=>this.adapter.prepare(e,!1,a))),c=i.map((e=>e.id));let l=i.map((e=>e.record));return l=await this.adapter.createAll(t.Metadata.constr(this.class),c,e,...o),l.map(((e,t)=>this.adapter.revert(e,this.class,c[t],a.get("rebuildWithTransient")?i[t].transient:void 0,a)))}async readAll(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);return n.debug(`reading ${e.length} ${this.class.name} in table ${s.Model.tableName(this.class)}`),(await this.adapter.readAll(t.Metadata.constr(this.class),e,...o)).map(((t,r)=>this.adapter.revert(t,this.class,e[r],void 0,a)))}async updateAllPrefix(e,...t){const r=await n.Context.args(n.OperationKeys.UPDATE,this.class,t,this.adapter,this._overrides||{}),a=r.context.get("ignoreHandlers"),o=r.context.get("ignoreValidation"),i=e.map((e=>{const t=e[this.pk];if(!t)throw new n.InternalError("missing id on update operation");return t})),c=await this.readAll(i,...r.args);if(e=e.map(((e,t)=>s.Model.merge(c[t],e,this.class))),a||await Promise.all(e.map(((e,t)=>N(this,r.context,e,n.OperationKeys.UPDATE,n.OperationKeys.ON,c[t])))),!o){const t=r.context.get("ignoredValidationProperties")||[],a=await Promise.all(e.map(((e,r)=>Promise.resolve(e.hasErrors(c[r],e,...t))))),o=n.reduceErrorsToPrint(a);if(o)throw new n.ValidationError(o)}return[e,...r.args]}async updateAll(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);n.debug(`Updating ${e.length} new ${this.class.name} in table ${s.Model.tableName(this.class)}`);const i=e.map((e=>this.adapter.prepare(e,!1,a)));return(await this.adapter.updateAll(t.Metadata.constr(this.class),i.map((e=>e.id)),e,...o)).map(((e,t)=>this.adapter.revert(e,this.class,i[t].id,a.get("rebuildWithTransient")?i[t].transient:void 0,a)))}async deleteAll(e,...r){const{ctx:a,log:n,ctxArgs:o}=this.logCtx(r,this.create);return n.debug(`deleting ${e.length} ${this.class.name} in table ${s.Model.tableName(this.class)}`),(await this.adapter.deleteAll(t.Metadata.constr(this.class),e,...o)).map(((t,r)=>this.adapter.revert(t,this.class,e[r],void 0,a)))}}let S=class{constructor(e,t){if(this.adapter=e,this.handler=t,!this.adapter)throw new n.InternalError("Missing adapter. Should not be possible")}async afterInsert(e){const t=e.entity.constructor,r=await this.adapter.context(n.OperationKeys.CREATE,{},t);this.handler(t,n.OperationKeys.CREATE,e.entityId,e.entity,r)}async afterRemove(e){const t=e.metadata.target,r=await this.adapter.context(n.OperationKeys.DELETE,{},t);this.handler(t,n.OperationKeys.DELETE,"",{},r)}async afterUpdate(e){const t=e.databaseEntity.constructor,r=await this.adapter.context(n.OperationKeys.UPDATE,{},t);return this.handler(t,n.OperationKeys.UPDATE,e.entity[s.Model.pk(t)],e.entity,r)}};S=r.__decorate([i.EventSubscriber(),r.__metadata("design:paramtypes",[a.Adapter,Function])],S);class b extends a.Dispatch{constructor(){super()}async notificationHandler(e,t,r,...a){const{log:n,ctxArgs:o}=this.logCtx(a,this.notificationHandler);try{await this.updateObservers(e,t,r,...o),n.verbose(`Observer refresh dispatched by ${t} for ${e}`),n.debug("pks: "+r)}catch(e){n.error("Failed to process notification: "+e)}}async initialize(){(async function(){if(!this.adapter)throw new n.InternalError("No adapter/native observed for dispatch");try{this.adapter.client.isInitialized||await this.adapter.client.initialize(),this.adapter.client.subscribers.push(new S(this.adapter,this.notificationHandler.bind(this)))}catch(e){throw new n.InternalError(e)}}).call(this).then((()=>{this.log.info("Subscribed to TypeORM notifications")})).catch((e=>{throw new n.InternalError("Failed to subscribe to TypeORM notifications: "+e)}))}async updateObservers(e,t,r,...a){if(this.adapter)return super.updateObservers(e,t,r,...a);this.log.verbose(`No adapter observed for dispatch; skipping observer update for ${e}:${t}`)}}function M(e,t,r){let n=0;const o=r.filter(((r,a)=>(n=a,r.target===e&&r.propertyName===t)));return o.length?(r.splice(n,1),Object.entries(o[0].options).reduce(((e,[t,r])=>{switch(t){case"nullable":e[t]=r;break;case s.ValidationKeys.TYPE:break;default:throw new a.UnsupportedError("Unsupported option for a relation: "+t)}return e}),{})):{}}function R(e,t,r,a={},o="regular",s,i){const c=r.filter((r=>r.target===e&&r.propertyName===t)),l=s.filter((r=>r.target===e&&r.propertyName===t));if(i&&i.filter((r=>r.target===e&&r.columns.includes(t))).forEach((e=>{Object.assign(e,a)})),c.length>1)throw new n.InternalError(`Multiple columns for ${t} found for given target: ${r.map((e=>e.propertyName)).join(", ")}`);if(l.length>1)throw new n.InternalError(`Multiple relations for ${t} found for given target: ${l.map((e=>e.propertyName)).join(", ")}`);let d;0!==c.length||l.length?(l.length||(d=c[0],"regular"!==o&&Object.defineProperty(d,"mode",{value:o,writable:!0,enumerable:!0,configurable:!0})),l.length&&(a=Object.entries(a).reduce(((e,[t,r])=>("nullable"===t&&(e[t]=r),e)),{})),d=d||l[0],Object.defineProperty(d,"options",{value:{...d.options,...a},writable:!0,enumerable:!0,configurable:!0})):r.push({target:e,propertyName:t,mode:o,options:a})}function C(e,r){return(a,n)=>{let o;"string"==typeof e||"function"==typeof e?o=e:e&&(r=e,o=e.type),r||(r={});let s=Reflect&&Reflect.getMetadata?Reflect.getMetadata("design:type",a,n):void 0;!o&&s&&(o=s);const c=t.Metadata.allowedTypes(a.constructor,n)[0];if(c!==s&&(o=c,s=c),!r.type&&o&&(r.type=o),"hstore"!==r.type||r.hstoreType||(r.hstoreType=s===Object?"object":"string"),"function"==typeof e)i.getMetadataArgsStorage().embeddeds.push({target:a.constructor,propertyName:n,isArray:s===Array||!0===r.array,prefix:void 0!==r.prefix?r.prefix:void 0,type:e});else{if(!r.type)throw new i.ColumnTypeUndefinedError(a,n);!0===r.unique&&i.getMetadataArgsStorage().uniques.push({target:a.constructor,columns:[n]});const e=i.getMetadataArgsStorage();R(a.constructor,n,e.columns,r,"regular",e.relations,r.unique?e.indices:void 0),r.generated&&i.getMetadataArgsStorage().generations.push({target:a.constructor,propertyName:n,strategy:"string"==typeof r.generated?r.generated:"increment"})}}}class L{static isObject(e){return null!==e&&"object"==typeof e}static isObjectWithName(e){return null!==e&&"object"==typeof e&&void 0!==e.name}static assign(e,...t){for(const r of t)for(const t of Object.getOwnPropertyNames(r))e[t]=r[t]}}function _(e,t){const r={};let a;return e?("string"==typeof e&&(a=e),L.isObject(e)&&(a="increment",Object.assign(r,e))):a="increment",L.isObject(t)&&Object.assign(r,t),(e,t)=>{r.type||("increment"===a||"identity"===a?r.type=Number:"uuid"===a?r.type="uuid":"rowid"===a&&(r.type="int")),r.primary=!0;const n=i.getMetadataArgsStorage();R(e.constructor,t,n.columns,r,"regular",n.relations),i.getMetadataArgsStorage().generations.push({target:e.constructor,propertyName:t,strategy:a})}}function I(e,t){const r=(L.isObject(e)?e:t)||{},a="string"==typeof e?e:r.name;return e=>{i.getMetadataArgsStorage().tables.push({target:e,name:a,type:"regular",orderBy:r.orderBy?r.orderBy:void 0,engine:r.engine?r.engine:void 0,database:r.database?r.database:void 0,schema:r.schema?r.schema:void 0,synchronize:r.synchronize,withoutRowid:r.withoutRowid,comment:r.comment?r.comment:void 0})}}async function v(e,t,r,a){try{const t=e.get("user");a[r]=t}catch(e){throw new n.InternalError("No User found in context. Please provide a user in the context")}}class D extends a.Adapter{getClient(){const e=a.Adapter.models(this.alias).map(t.Metadata.constr);return new i.DataSource(Object.assign({},this.config,{entities:e}))}constructor(e,t){super(e,l,t)}async shutdown(){await super.shutdown(),this._client&&await this._client.destroy()}async flags(e,t,r){return Object.assign(await super.flags(e,t,r),{user:this.config.username})}Dispatch(){return new b}repository(){return T}Statement(){return new A(this)}async Sequence(e){return new w(e,this)}async initialize(){const e=this.client;try{await e.initialize()}catch(e){throw this.parseError(e)}this.log.for(this.initialize).verbose(this.toString()+" initialized")}async index(...e){const t=O(e);try{await this.client.query("BEGIN");for(const e of t)await this.client.query(e.query,e.values);await this.client.query("COMMIT")}catch(e){throw await this.client.query("ROLLBACK"),this.parseError(e)}}async raw(e,...t){const{log:r}=this.logCtx(t,this.raw);try{this.client.isInitialized||await this.client.initialize()}catch(e){throw this.parseError(e)}try{const{query:t,values:a}=e;return r.debug("executing query: "+("string"!=typeof t?t.getSql():t)),await this.client.query(t,a)}catch(e){throw this.parseError(e)}}prepare(e,r=!1,o){const i=super.prepare(e,o);i.record=Object.entries(i.record).reduce(((e,[t,r])=>(t===a.PersistenceKeys.METADATA||this.isReserved(t)||void 0===r||(r instanceof Date?r=new Date(r.getTime()):s.Model.isModel(r)?r=this.prepare(r,!0,o).record:"string"==typeof r&&(r=""+r),e[t]=r),e)),{});const c=s.Model.get(e.constructor.name);if(!c)throw new n.InternalError(`Model ${e.constructor.name} not found in registry`);const l=r?new(t.Metadata.constr(c)):new c;return r&&Object.defineProperty(l,"constructor",{configurable:!1,enumerable:!1,value:t.Metadata,writable:!1}),Object.entries(i.record).forEach((([e,t])=>l[e]=t)),i.record=l,i}revert(e,t,r,a,o){const s=o.logger.for(this.revert);return a&&(s.verbose("re-adding transient properties: "+Object.keys(a).join(", ")),Object.entries(a).forEach((([r,a])=>{if(r in e)throw new n.InternalError(`Transient property ${r} already exists on model ${"string"==typeof t?t:t.name}. should be impossible`);e[r]=a}))),new t(e)}async create(e,t,r,...a){const o=this.client.getRepository(e);if(void 0!==t){const r=s.Model.pk(e);if(await o.findOne({where:{[r]:t}}))throw new n.ConflictError(`Record already exists in table ${s.Model.tableName(e)} with id: ${t}`)}try{return await o.save(r)}catch(e){throw this.parseError(e)}}async read(e,t,...r){let a;try{const r=this.client.getRepository(e),{nonEager:n,relations:o}=m(e),i=s.Model.pk(e),c={where:{[i]:t},relations:o,loadRelationIds:{relations:n}};a=await r.findOneOrFail(c)}catch(e){throw this.parseError(e)}return a}async update(e,t,r,...a){const{ctx:n}=this.logCtx(a,this.update);await this.read(e,t,n);try{return this.client.getRepository(e).save(r)}catch(e){throw this.parseError(e)}}async delete(e,t,...r){const{ctx:a}=this.logCtx(r,this.delete),n=await this.read(e,t,a);try{const r=this.client.getRepository(e);return await r.delete(t),n}catch(e){throw this.parseError(e)}}async createAll(e,t,r,...a){const{ctx:n}=this.logCtx(a,this.createAll);try{const t=this.client.getRepository(e),a=await t.insert(r);return this.readAll(e,a.identifiers.map((e=>e.id)),n)}catch(e){throw this.parseError(e)}}async readAll(e,t,...r){if(!t.length)return[];try{const r=s.Model.pk(e);return this.client.getRepository(e).findBy({[r]:i.In(t)})}catch(e){throw this.parseError(e)}}async updateAll(e,t,r,...a){const n=[],o=s.Model.pk(e);for(const t of r)n.push(await this.update(e,t[o],t,...a));return n}async deleteAll(e,t,...r){if(!t.length)return[];const{ctx:a}=this.logCtx(r,this.deleteAll);try{const r=this.client.getRepository(e),n=await this.readAll(e,t,a),o=s.Model.pk(e);return await r.delete({[o]:i.In(t)}),n}catch(e){throw this.parseError(e)}}parseError(e,t){return D.parseError(e,t)}isReserved(e){return!!e.match(c)}static parseError(e,t){if(e instanceof n.BaseError)return e;const r="string"==typeof e?e:e.message;if(r.match(/duplicate key|already exists/g))return new n.ConflictError(r);if(r.match(/does not exist|not found|Could not find/g))return new n.NotFoundError(r);switch(r.toString()){case"23505":case"23503":case"42P07":return new n.ConflictError(t);case"42P01":case"42703":return new n.NotFoundError(t);case"42P16":return new p(e);default:return r.toString().match(/ECONNREFUSED/g)?new a.ConnectionError(e):new n.InternalError(e)}}static async connect(e){const t=new i.DataSource(e);return t.isInitialized||await t.initialize(),t}static async createDatabase(e,t){const r=o.Logging.for(this.createDatabase);r.verbose("Creating database "+t);try{await e.query("CREATE DATABASE "+t),r.info("Created database "+t)}catch(e){throw this.parseError(e)}}static async createNotifyFunction(e,t){const r=o.Logging.for(this.createNotifyFunction);r.verbose("Creating notify function");try{await e.query("CREATE OR REPLACE FUNCTION notify_table_changes()\nRETURNS trigger AS $$\nBEGIN\n PERFORM pg_notify(\n 'table_changes',\n json_build_object(\n 'table', TG_TABLE_NAME,\n 'action', TG_OP,\n 'data', row_to_json(NEW),\n 'old_data', row_to_json(OLD)\n )::text\n );\n RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql SECURITY DEFINER\n;"),await e.query(`ALTER FUNCTION notify_table_changes() OWNER TO ${t};`),await e.query("\n GRANT EXECUTE ON FUNCTION notify_table_changes() TO public;\n "),r.info("Created notify function")}catch(e){throw this.parseError(e)}}static async deleteDatabase(e,t,r){try{r&&await e.query(`DROP OWNED BY ${r} CASCADE;`),await e.query("DROP DATABASE "+t)}catch(e){throw this.parseError(e)}}static async createUser(e,t,r,a){try{await e.query(`CREATE USER ${r} WITH PASSWORD '${a}'`),await e.query(`GRANT CONNECT ON DATABASE ${t} TO ${r}`),await e.query("GRANT USAGE ON SCHEMA public TO "+r),await e.query("GRANT CREATE ON SCHEMA public TO "+r),await e.query("GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "+r),await e.query("GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO "+r),await e.query("GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO "+r),await e.query("ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO "+r),await e.query("ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO "+r)}catch(e){throw this.parseError(e)}}static async deleteUser(e,t,r){try{await e.query(`REASSIGN OWNED BY ${t} TO ${r}`),await e.query("REVOKE ALL ON ALL TABLES IN SCHEMA public FROM "+t),await e.query("REVOKE ALL ON SCHEMA public FROM "+t),await e.query("REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM "+t),await e.query("REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM "+t),await e.query(`ALTER DEFAULT PRIVILEGES FOR ROLE ${r} IN SCHEMA public REVOKE ALL ON TABLES FROM ${t}`),await e.query(`ALTER DEFAULT PRIVILEGES FOR ROLE ${r} IN SCHEMA public REVOKE ALL ON SEQUENCES FROM ${t};`),await e.query(`ALTER DEFAULT PRIVILEGES FOR ROLE ${r} IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM ${t}`),await e.query(`DROP OWNED BY ${t} CASCADE`),await e.query(`DROP USER IF EXISTS "${t}"`)}catch(e){throw this.parseError(e)}}static parseTypeToPostgres(e,r,a=!1){switch(e.toLowerCase()){case"string":return r?"TEXT PRIMARY KEY":a?"TEXT":"VARCHAR";case"number":return r?"SERIAL PRIMARY KEY":"INTEGER";case"boolean":return"BOOLEAN";case"date":return"TIMESTAMP";case"bigint":return r?"BIGINT PRIMARY KEY":"BIGINT";default:{const r=s.Model.get(e);if(r)return{model:r,pkType:t.Metadata.type(r,s.Model.pk(r))};throw new n.InternalError("Unsupported type: "+e)}}}static parseValidationToPostgres(e,t,r,a,o){switch(a){case s.ValidationKeys.REQUIRED:return"NOT NULL";case s.ValidationKeys.MAX_LENGTH:return r||!o||"string"!==t.toLowerCase()?"":`(${o[s.ValidationKeys.MAX_LENGTH]})`;case s.ValidationKeys.MIN_LENGTH:return`CONSTRAINT ${e}_min_length_check CHECK (LENGTH(${e}) >= ${o[s.ValidationKeys.MIN_LENGTH]})`;case s.ValidationKeys.PATTERN:case s.ValidationKeys.URL:case s.ValidationKeys.EMAIL:return`CONSTRAINT ${e}_pattern_check CHECK (${e} ~ '${f(o[s.ValidationKeys.PATTERN])}')`;case s.ValidationKeys.TYPE:case s.ValidationKeys.DATE:return"";case s.ValidationKeys.MIN:return`CONSTRAINT ${e}_${a}_check CHECK (${e} >= ${o[s.ValidationKeys.MIN]})`;case s.ValidationKeys.MAX:return`CONSTRAINT ${e}_${a}_check CHECK (${e} <= ${o[s.ValidationKeys.MAX]})`;case s.ValidationKeys.PASSWORD:default:throw new n.InternalError("Unsupported type: "+a)}}static parseRelationsToPostgres(e,t,r,o,i){const c=s.Model.tableName(t),{cascade:l}=i,d=`${l.update?" ON UPDATE CASCADE":""}${l.delete?" ON DELETE CASCADE":""}`;if("relations"+o===a.PersistenceKeys.ONE_TO_ONE)return`FOREIGN KEY (${e}) REFERENCES ${c}(${r})${d}`;throw new n.InternalError("Unsupported operation: "+o)}static async getCurrentUser(e){try{return(await e.query("SELECT CURRENT_USER;"))[0].current_user}catch(e){throw this.parseError(e)}}static decoration(){super.decoration(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.TABLE).extend({decorator:e=>r=>{const a=t.Metadata.constr(r),n=i.getMetadataArgsStorage().tables.find((e=>e.target===a));return n?(e&&(n.name=e),r):(I(e||(()=>{try{return s.Model.tableName(a)}catch{return a?.name}})())(a),r)}}).apply(),t.Decoration.flavouredAs(l).for(n.DBKeys.ID).define({decorator:e=>(r,o)=>{const c=t.Metadata.constr(r.constructor);i.getMetadataArgsStorage().tables.find((e=>e.target===c))||I((()=>{try{return s.Model.tableName(c)}catch{return c?.name}})()||c?.name)(c),t.prop()(r,o);const l=[s.required(),n.readonly(),t.propMetadata(t.Metadata.key(n.DBKeys.ID,o),e)];let d=e.type||t.Metadata.type(r.constructor,o);switch(d){case String.name||String.name.toLowerCase():case String:e.generated=!1;break;case Number.name||String.name.toLowerCase():case BigInt.name||BigInt.name.toLowerCase():case BigInt:case Number:case"uuid":case"serial":e.generated=!0;break;case!d:throw new n.InternalError(`Missing type information for property ${o} of ${r.name}`);default:throw Error("Unsupported type")}if(void 0===e.generated&&(e.generated=!0),e.generated){const t={name:e.name||s.Model.sequenceName(r.constructor,"pk")};"serial"===e.type||"uuid"===e.type?l.push(_("uuid"===e.type?e.type:"identity",t)):l.push(_(t)),l.push(a.noValidateOnCreate())}else{switch("function"==typeof d&&d?.name?d.name:d){case Number.name||Number.name.toLowerCase():d="numeric";break;case"serial":case"uuid":break;case String.name||String.name.toLowerCase():d="varchar";break;case BigInt.name||BigInt.name.toLowerCase():d="bigint";break;default:throw new n.InternalError("Unsupported type: "+d)}l.push(((e,t)=>(r,a)=>{let n;e===String||e===Boolean||e===Number?n=e:t=Object.assign({},e),t||(t={});const o=Reflect&&Reflect.getMetadata?Reflect.getMetadata("design:type",r,a):void 0;if(!n&&o&&(n=o),!t.type&&n&&(t.type=n),!t.type)throw new i.ColumnTypeUndefinedError(r,a);if(t.nullable)throw new i.PrimaryColumnCannotBeNullableError(r,a);t.primary=!0;const s=i.getMetadataArgsStorage();R(r.constructor,a,s.columns,t,"regular",s.relations),t.generated&&i.getMetadataArgsStorage().generations.push({target:r.constructor,propertyName:a,strategy:"string"==typeof t.generated?t.generated:"increment"})})({type:d,unique:!0}))}return t.apply(...l)(r,o)}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.COLUMN).extend({decorator:e=>(t,r)=>{const a={};let n;e&&(a.name=e);try{n=s.Model.pk(t.constructor)}catch(e){n=void 0}return n!==r&&(a.nullable=!0),C(a)(t,r)}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.UNIQUE).define(t.propMetadata(a.PersistenceKeys.UNIQUE,{})).extend(C({unique:!0})).apply();const e=s.Validation.key(s.ValidationKeys.REQUIRED);t.Decoration.flavouredAs(l).for(e).extend(C({nullable:!1})).apply(),t.Decoration.flavouredAs(l).for(n.DBKeys.VERSION).define(s.type(Number),i.VersionColumn(),a.noValidateOnCreate()).apply();const r=n.DBKeys.TIMESTAMP,o=(c=n.DBKeys.TIMESTAMP,n.UpdateValidationKeys.REFLECT+c);var c;t.Decoration.flavouredAs(l).for(r).define({decorator:(e,r)=>{const i=[s.date(r,n.DEFAULT_ERROR_MESSAGES.TIMESTAMP.DATE),s.required(n.DEFAULT_ERROR_MESSAGES.TIMESTAMP.REQUIRED),t.propMetadata(s.Validation.key(n.DBKeys.TIMESTAMP),{operation:e,format:r}),a.noValidateOnCreate()];return-1!==e.indexOf(n.OperationKeys.UPDATE)?i.push(t.propMetadata(o,{message:n.DEFAULT_ERROR_MESSAGES.TIMESTAMP.INVALID}),a.noValidateOnCreateUpdate()):i.push(n.readonly()),t.apply(...i)}}).extend({decorator:(e,t)=>(t,r)=>-1!==e.indexOf(n.OperationKeys.UPDATE)?((e,t)=>{const r=i.getMetadataArgsStorage();R(e.constructor,t,r.columns,{},"updateDate",r.relations)})(t,r):((e,t)=>{const r=i.getMetadataArgsStorage();R(e.constructor,t,r.columns,{},"createDate",r.relations)})(t,r)}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.ONE_TO_ONE).define({decorator:(e,r,o,c,l)=>{const d={class:e,cascade:r,populate:o};c&&(d.joinTable=c),l&&(d.name=l);const p={cascade:r.update===a.Cascade.CASCADE||r.delete===a.Cascade.CASCADE,onDelete:r.delete?"CASCADE":"DEFAULT",onUpdate:r.update?"CASCADE":"DEFAULT",nullable:!0,eager:o};return t.apply(t.prop(),a.relation(a.PersistenceKeys.ONE_TO_ONE,d),s.type([e,String,Number,BigInt]),t.propMetadata(a.PersistenceKeys.ONE_TO_ONE,d),((e,t,r)=>{let a;return L.isObject(t)?r=t:a=t,(t,n)=>{r||(r={});let o=!(!r||!0!==r.lazy);if(!o&&Reflect&&Reflect.getMetadata){const e=Reflect.getMetadata("design:type",t,n);e&&"string"==typeof e.name&&"promise"===e.name.toLowerCase()&&(o=!0)}const s=i.getMetadataArgsStorage();r=Object.assign(r,M(t.constructor,n,s.columns)),s.relations.push({target:t.constructor,propertyName:n,isLazy:o,relationType:"one-to-one",type:e,inverseSideProperty:a,options:r})}})((()=>{"function"!=typeof e||e.name||(e=e());const r=t.Metadata.constr(e);if(r===e)throw new n.InternalError("Original Model not found in constructor");return r}),(t=>("function"!=typeof e||e.name||(e=e()),t[s.Model.pk(e)])),p),i.JoinColumn(c||d.name?{foreignKeyConstraintName:d.name}:void 0))}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.ONE_TO_MANY).define({decorator:(e,r,o,c,l)=>{const d={class:e,cascade:r,populate:o};c&&(d.joinTable=c),l&&(d.name=l);const p=[t.prop(),a.relation(a.PersistenceKeys.ONE_TO_MANY,d),s.list(e),t.propMetadata(a.PersistenceKeys.ONE_TO_MANY,d),(c,l)=>{const d={cascade:r.update===a.Cascade.CASCADE||r.delete===a.Cascade.CASCADE,onDelete:r.delete?"CASCADE":"DEFAULT",onUpdate:r.update?"CASCADE":"DEFAULT",nullable:!0,eager:o};return(p=()=>{"function"!=typeof e||e.name||(e=e());const r=t.Metadata.constr(e);if(r===e)throw new n.InternalError("Original Model not found in constructor");return r},u=r=>{"function"!=typeof e||e.name||(e=e());const o=t.Metadata.relations(e);if(!o)throw new n.InternalError("No relations found on model "+e.name);const i=o.find((r=>{const n=s.Model.relations(e,r);if(n.key!==a.PersistenceKeys.MANY_TO_ONE)return!1;const o="function"!=typeof n.class||n.class.name?n.class:n.class(),i=t.Metadata.constr(c.constructor);return o.name===i.name}));if(!i)throw new n.InternalError(`Cross relation not found. Did you use @manyToOne on the ${e.name}?`);return r[i]},y=d,(e,t)=>{y||(y={});let r=y&&!0===y.lazy;if(!r&&Reflect&&Reflect.getMetadata){const a=Reflect.getMetadata("design:type",e,t);a&&"string"==typeof a.name&&"promise"===a.name.toLowerCase()&&(r=!0)}const a=i.getMetadataArgsStorage();y=Object.assign(y,M(e.constructor,t,a.columns)),a.relations.push({target:e.constructor,propertyName:t,isLazy:r,relationType:"one-to-many",type:p,inverseSideProperty:u,options:y})})(c,l);var p,u,y}];return t.apply(...p)}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.MANY_TO_ONE).define({decorator:(e,r,o,c,l)=>{const d={class:e,cascade:r,populate:o};c&&(d.joinTable=c),l&&(d.name=l);const p={cascade:r.update===a.Cascade.CASCADE||r.delete===a.Cascade.CASCADE,onDelete:r.delete?"CASCADE":"NO ACTION",onUpdate:r.update?"CASCADE":"NO ACTION",nullable:!0,eager:o};return t.apply(a.relation(a.PersistenceKeys.MANY_TO_ONE,d),s.type([e,String,Number,BigInt]),t.propMetadata(a.PersistenceKeys.MANY_TO_ONE,d),((r,o)=>((e,t,r)=>{let a;return L.isObject(t)?r=t:a=t,(t,n)=>{r||(r={});let o=r&&!0===r.lazy;if(!o&&Reflect&&Reflect.getMetadata){const e=Reflect.getMetadata("design:type",t,n);e&&"string"==typeof e.name&&"promise"===e.name.toLowerCase()&&(o=!0)}const s=i.getMetadataArgsStorage();r=Object.assign(r,M(t.constructor,n,s.columns)),s.relations.push({target:t.constructor,propertyName:n,relationType:"many-to-one",isLazy:o,type:e,inverseSideProperty:a,options:r})}})((()=>{"function"!=typeof e||e.name||(e=e());const r=t.Metadata.constr(e);if(r===e)throw new n.InternalError("Original Model not found in constructor");return r}),(n=>{"function"!=typeof e||e.name||(e=e());const o=t.Metadata.relations(e);let i=s.Model.pk(e);return o?(i=o.find((n=>{const o=s.Model.relations(e,n);if(o.key!==a.PersistenceKeys.ONE_TO_MANY)return!1;const i="function"!=typeof o.class||o.class.name?o.class:o.class(),c=t.Metadata.constr(r.constructor);return i.name===c.name}))||i,n[i]):n[i]}),p)(r,o)))}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.MANY_TO_MANY).define({decorator:(e,r,o,c,l)=>{const d={class:e,cascade:r,populate:o};c&&(d.joinTable=c),l&&(d.name=l);const p={cascade:r.update===a.Cascade.CASCADE||r.delete===a.Cascade.CASCADE,onDelete:r.delete?"CASCADE":"DEFAULT",onUpdate:r.update?"CASCADE":"DEFAULT",nullable:!0,eager:o};return t.apply(a.relation(a.PersistenceKeys.MANY_TO_MANY,d),s.list(e),t.propMetadata(a.PersistenceKeys.MANY_TO_MANY,d),((e,t,r)=>{let a;return L.isObject(t)?r=t:a=t,(t,n)=>{r||(r={});let o=!0===r.lazy;if(!o&&Reflect&&Reflect.getMetadata){const e=Reflect.getMetadata("design:type",t,n);e&&"string"==typeof e.name&&"promise"===e.name.toLowerCase()&&(o=!0)}const s=i.getMetadataArgsStorage();r=Object.assign(r,M(t.constructor,n,s.columns)),s.relations.push({target:t.constructor,propertyName:n,relationType:"many-to-many",isLazy:o,type:e,inverseSideProperty:a,options:r})}})((()=>{"function"!=typeof e||e.name||(e=e());const r=t.Metadata.constr(e);if(r===e)throw new n.InternalError("Original Model not found in constructor");return r}),(t=>("function"!=typeof e||e.name||(e=e()),t[s.Model.pk(e)])),p),i.JoinTable(c))}}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.INDEX).extend({decorator:(e,t,r)=>(r,n)=>("string"==typeof e&&(e=void 0,t=void 0),"string"==typeof t&&(t=void 0),!t&&e&&e.find((e=>![a.OrderDirection.ASC,a.OrderDirection.DSC].includes(e)))&&(t=e,e=void 0),t&&t.length?i.Index([n,...t])(r):i.Index()(r,n))}).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.CREATED_BY).define(n.onCreate(v,{}),s.required(),t.propMetadata(a.PersistenceKeys.CREATED_BY,{}),a.noValidateOnCreate()).apply(),t.Decoration.flavouredAs(l).for(a.PersistenceKeys.UPDATED_BY).define(n.onCreateUpdate(v,{}),s.required(),t.propMetadata(a.PersistenceKeys.UPDATED_BY,{}),a.noValidateOnCreateUpdate()).apply()}}r.__decorate([o.final(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[]),r.__metadata("design:returntype",b)],D.prototype,"Dispatch",null),r.__decorate([o.final(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[]),r.__metadata("design:returntype",Object)],D.prototype,"repository",null),r.__decorate([o.final(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[]),r.__metadata("design:returntype",A)],D.prototype,"Statement",null),r.__decorate([o.final(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",Promise)],D.prototype,"Sequence",null),r.__decorate([o.final(),r.__metadata("design:type",Function),r.__metadata("design:paramtypes",[Object]),r.__metadata("design:returntype",Promise)],D.prototype,"index",null),D.decoration(),a.Adapter.setCurrent(l);const x="##VERSION##",P="##PACKAGE##";t.Metadata.registerLibrary(P,x),e.IndexError=p,e.PACKAGE_NAME=P,e.TypeORMAdapter=D,e.TypeORMConst={NULL:"NULL"},e.TypeORMDispatch=b,e.TypeORMFlavour=l,e.TypeORMGroupOperator=h,e.TypeORMKeys=d,e.TypeORMOperator=y,e.TypeORMPaginator=E,e.TypeORMQueryLimit=250,e.TypeORMRepository=T,e.TypeORMSequence=w,e.TypeORMStatement=A,e.VERSION=x,e.convertJsRegexToPostgres=f,e.enforceDbDecoratorsRecursive=N,e.generateIndexes=O,e.reservedAttributes=c,e.splitEagerRelations=m,e.translateOperators=g},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("tslib"),require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("@decaf-ts/logging"),require("@decaf-ts/decorator-validation"),require("typeorm")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","tslib","@decaf-ts/core","@decaf-ts/db-decorators","@decaf-ts/logging","@decaf-ts/decorator-validation","typeorm"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-typeorm"]={},e.decafTsDecoration,e.tslib,e.decafTsCore,e.decafTsDbDecorators,e.decafTsLogging,e.decafTsDecoratorValidation,e.typeorm);
2
2
  //# sourceMappingURL=for-typeorm.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-typeorm.cjs","sources":["../src/constants.ts","../src/errors.ts","../src/types.ts","../src/query/constants.ts","../src/query/Paginator.ts","../src/query/translate.ts","../src/utils.ts","../src/query/Statement.ts","../src/sequences/Sequence.ts","../src/indexes/generator.ts","../src/TypeORMRepository.ts","../src/TypeORMEventSubscriber.ts","../src/TypeORMDispatch.ts","../src/overrides/utils.ts","../src/overrides/Column.ts","../src/overrides/ObjectUtils.ts","../src/overrides/PrimaryGeneratedColumn.ts","../src/overrides/Entity.ts","../src/TypeORMAdapter.ts","../src/overrides/PrimaryColumn.ts","../src/overrides/UpdateDateColumn.ts","../src/overrides/CreateDateColumn.ts","../src/overrides/OneToOne.ts","../src/overrides/OneToMany.ts","../src/overrides/ManyToOne.ts","../src/overrides/ManyToMany.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["reservedAttributes","TypeORMFlavour","TypeORMKeys","SEPARATOR","ID","VERSION","DELETED","TABLE","SCHEMA","SEQUENCE","INDEX","IndexError","BaseError","constructor","msg","super","name","SQLOperator","exports","TypeORMOperator","EQUAL","DIFFERENT","NOT_EQUAL","BIGGER","GREATER_THAN","BIGGER_EQ","GREATER_THAN_OR_EQUAL","SMALLER","LESS_THAN","SMALLER_EQ","LESS_THAN_OR_EQUAL","BETWEEN","NOT","IN","IS_NULL","IS_NOT_NULL","REGEXP","IREGEXP","LIKE","ILIKE","TypeORMGroupOperator","AND","OR","TypeORMPaginator","Paginator","total","this","_totalPages","count","_recordCount","repo","__repo","adapter","client","getRepository","Metadata","constr","clazz","query","size","prepare","rawStatement","page","args","ctx","Context","OperationKeys","READ","context","statement","opts","Object","assign","skip","current","take","result","findAndCount","Math","ceil","PagingError","pkDef","Model","pk","results","map","row","revert","undefined","_currentPage","translateOperators","operator","operators","el","keys","find","k","QueryError","convertJsRegexToPostgres","jsRegex","rxp","RegExp","match","exec","p","source","splitEagerRelations","m","cache","rels","relations","reduce","accum","attr","decorator","eager","populate","class","isClass","InternalError","push","nonEager","includes","length","nonEagerRelations","ne","TypeORMStatement","Statement","build","log","for","tableName","fromSelector","q","createQueryBuilder","orderByArgs","selectSelector","select","s","whereCondition","parseCondition","orderBySelector","toUpperCase","OrderDirection","ASC","orderBy","limitSelector","limit","debug","offsetSelector","paginate","transformedQuery","where","parseConditionForPagination","order","toString","e","raw","rawInput","setFindOptions","loadEagerRelations","loadRelationIds","getMany","condition","counter","conditionalOp","qb","attr1","comparison","GroupOperator","Operator","indexOf","sqlOperator","attrRef","queryStr","values","andWhere","orWhere","Error","parse","TypeORMSequence","Sequence","options","rows","Array","isArray","candidate","parseError","increment","type","incrementBy","startWith","NotFoundError","quoted","replace","next","argz","contextArgs","UPDATE","range","i","generateIndexes","models","direction","compositions","separator","DefaultSeparator","n","join","generateIndexName","indexes","forEach","ind","entries","key","value","PersistenceKeys","generate","async","enforceDbDecoratorsRecursive","model","operation","prefix","oldModel","innerLoop","r","Repository","forModel","CREATE","enforceDBDecorators","isPropertyModel","validationFor","ValidationKeys","LIST","Promise","all","TypeORMRepository","queryBuilder","nativeRepo","dataSource","createPrefix","_overrides","shouldRunHandlers","get","shouldValidate","ON","errors","resolve","hasErrors","ValidationError","create","ctxArgs","logCtx","record","id","transient","read","updatePrefix","merge","update","delete","createAllPrefix","ignoredProps","errorMessages","reduceErrorsToPrint","createAll","prepared","ids","records","readAll","updateAllPrefix","oldModels","updateAll","u","deleteAll","TypeORMEventSubscriber","handler","afterInsert","event","entity","entityId","afterRemove","metadata","target","DELETE","afterUpdate","databaseEntity","__decorate","EventSubscriber","Adapter","Function","TypeORMDispatch","Dispatch","notificationHandler","table","updateObservers","verbose","error","initialize","isInitialized","subscribers","bind","call","then","info","catch","extractForRelations","property","columns","index","cols","filter","c","propertyName","splice","val","TYPE","UnsupportedError","aggregateOrNewColumn","mode","column","defineProperty","writable","enumerable","configurable","Column","typeOrOptions","object","reflectMetadataType","Reflect","getMetadata","primaryType","allowedTypes","hstoreType","getMetadataArgsStorage","embeddeds","array","ColumnTypeUndefinedError","unique","uniques","indices","generated","generations","strategy","ObjectUtils","isObject","isObjectWithName","sources","prop","getOwnPropertyNames","PrimaryGeneratedColumn","strategyOrOptions","maybeOptions","Number","primary","Entity","nameOrOptions","tables","engine","database","schema","synchronize","withoutRowid","comment","createdByOnTypeORMCreateUpdate","data","user","TypeORMAdapter","getClient","entities","alias","DataSource","config","shutdown","_client","destroy","flags","username","repository","ds","getSql","child","METADATA","isReserved","Date","getTime","isModel","obj","logger","findOne","ConflictError","save","findOneOrFail","insert","identifiers","findBy","In","err","reason","code","message","ConnectionError","connect","con","createDatabase","dbName","Logging","createNotifyFunction","deleteDatabase","createUser","password","deleteUser","admin","parseTypeToPostgres","isPk","isFk","toLowerCase","pkType","parseValidationToPostgres","REQUIRED","MAX_LENGTH","MIN_LENGTH","PATTERN","URL","EMAIL","DATE","MIN","MAX","PASSWORD","parseRelationsToPostgres","cascade","cascadeStr","ONE_TO_ONE","getCurrentUser","current_user","decoration","Decoration","flavouredAs","extend","ctor","existing","apply","DBKeys","define","original","propertyKey","decorators","required","readonly","propMetadata","String","BigInt","conf","sequenceName","noValidateOnCreate","Boolean","nullable","PrimaryColumnCannotBeNullableError","PrimaryColumn","COLUMN","UNIQUE","requiredKey","Validation","VersionColumn","timestampDecorationKey","TIMESTAMP","timestampUpdateKey","UpdateValidationKeys","REFLECT","format","date","DB_DEFAULT_ERROR_MESSAGES","INVALID","noValidateOnCreateUpdate","ops","UpdateDateColumn","CreateDateColumn","joinColumnOpts","fk","joinTable","ormMeta","Cascade","CASCADE","onDelete","onUpdate","relation","typeFunctionOrTarget","inverseSideOrOptions","inverseSideProperty","isLazy","lazy","reflectedType","meta","relationType","OneToOne","JoinColumn","foreignKeyConstraintName","ONE_TO_MANY","joinTableOpts","list","inverseSide","crossRelationKey","MANY_TO_ONE","ref","ManyToOne","MANY_TO_MANY","ManyToMany","JoinTable","directions","d","DSC","Index","CREATED_BY","onCreate","UPDATED_BY","onCreateUpdate","final","prototype","setCurrent","PACKAGE_NAME","registerLibrary","NULL"],"mappings":"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"}
1
+ {"version":3,"file":"for-typeorm.cjs","sources":["../src/constants.ts","../src/errors.ts","../src/types.ts","../src/query/constants.ts","../src/query/Paginator.ts","../src/query/translate.ts","../src/utils.ts","../src/query/Statement.ts","../src/sequences/Sequence.ts","../src/indexes/generator.ts","../src/TypeORMRepository.ts","../src/TypeORMEventSubscriber.ts","../src/TypeORMDispatch.ts","../src/overrides/utils.ts","../src/overrides/Column.ts","../src/overrides/ObjectUtils.ts","../src/overrides/PrimaryGeneratedColumn.ts","../src/overrides/Entity.ts","../src/TypeORMAdapter.ts","../src/overrides/PrimaryColumn.ts","../src/overrides/UpdateDateColumn.ts","../src/overrides/CreateDateColumn.ts","../src/overrides/OneToOne.ts","../src/overrides/OneToMany.ts","../src/overrides/ManyToOne.ts","../src/overrides/ManyToMany.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["reservedAttributes","TypeORMFlavour","TypeORMKeys","SEPARATOR","ID","VERSION","DELETED","TABLE","SCHEMA","SEQUENCE","INDEX","IndexError","BaseError","constructor","msg","super","name","SQLOperator","exports","TypeORMOperator","EQUAL","DIFFERENT","NOT_EQUAL","BIGGER","GREATER_THAN","BIGGER_EQ","GREATER_THAN_OR_EQUAL","SMALLER","LESS_THAN","SMALLER_EQ","LESS_THAN_OR_EQUAL","BETWEEN","NOT","IN","IS_NULL","IS_NOT_NULL","REGEXP","IREGEXP","LIKE","ILIKE","TypeORMGroupOperator","AND","OR","TypeORMPaginator","Paginator","total","this","_totalPages","count","_recordCount","repo","__repo","adapter","client","getRepository","Metadata","constr","clazz","query","size","prepare","rawStatement","page","args","ctx","Context","OperationKeys","READ","context","statement","opts","Object","assign","skip","current","take","result","findAndCount","Math","ceil","PagingError","pkDef","Model","pk","results","map","row","revert","undefined","_currentPage","translateOperators","operator","operators","el","keys","find","k","QueryError","convertJsRegexToPostgres","jsRegex","rxp","RegExp","match","exec","p","source","splitEagerRelations","m","cache","rels","relations","reduce","accum","attr","decorator","eager","populate","class","isClass","InternalError","push","nonEager","includes","length","nonEagerRelations","ne","TypeORMStatement","Statement","build","log","for","tableName","fromSelector","q","createQueryBuilder","orderByArgs","selectSelector","select","s","whereCondition","parseCondition","orderBySelector","toUpperCase","OrderDirection","ASC","orderBy","limitSelector","limit","debug","offsetSelector","paginate","transformedQuery","where","parseConditionForPagination","order","toString","e","raw","rawInput","setFindOptions","loadEagerRelations","loadRelationIds","getMany","condition","counter","conditionalOp","qb","attr1","comparison","GroupOperator","Operator","indexOf","sqlOperator","attrRef","queryStr","values","andWhere","orWhere","Error","parse","TypeORMSequence","Sequence","options","rows","Array","isArray","candidate","parseError","increment","type","incrementBy","startWith","NotFoundError","quoted","replace","next","argz","contextArgs","UPDATE","range","i","generateIndexes","models","direction","compositions","separator","DefaultSeparator","n","join","generateIndexName","indexes","forEach","ind","entries","key","value","PersistenceKeys","generate","async","enforceDbDecoratorsRecursive","model","operation","prefix","oldModel","innerLoop","r","Repository","forModel","CREATE","enforceDBDecorators","isPropertyModel","validationFor","ValidationKeys","LIST","Promise","all","TypeORMRepository","queryBuilder","nativeRepo","dataSource","createPrefix","_overrides","ignoreHandlers","get","ignoreValidate","ON","errors","resolve","hasErrors","ValidationError","create","ctxArgs","logCtx","record","id","transient","read","updatePrefix","merge","update","delete","createAllPrefix","ignoredProps","errorMessages","reduceErrorsToPrint","createAll","prepared","ids","records","readAll","updateAllPrefix","oldModels","updateAll","u","deleteAll","TypeORMEventSubscriber","handler","afterInsert","event","entity","entityId","afterRemove","metadata","target","DELETE","afterUpdate","databaseEntity","__decorate","EventSubscriber","Adapter","Function","TypeORMDispatch","Dispatch","notificationHandler","table","updateObservers","verbose","error","initialize","isInitialized","subscribers","bind","call","then","info","catch","extractForRelations","property","columns","index","cols","filter","c","propertyName","splice","val","TYPE","UnsupportedError","aggregateOrNewColumn","mode","column","defineProperty","writable","enumerable","configurable","Column","typeOrOptions","object","reflectMetadataType","Reflect","getMetadata","primaryType","allowedTypes","hstoreType","getMetadataArgsStorage","embeddeds","array","ColumnTypeUndefinedError","unique","uniques","indices","generated","generations","strategy","ObjectUtils","isObject","isObjectWithName","sources","prop","getOwnPropertyNames","PrimaryGeneratedColumn","strategyOrOptions","maybeOptions","Number","primary","Entity","nameOrOptions","tables","engine","database","schema","synchronize","withoutRowid","comment","createdByOnTypeORMCreateUpdate","data","user","TypeORMAdapter","getClient","entities","alias","DataSource","config","shutdown","_client","destroy","flags","username","repository","ds","getSql","child","METADATA","isReserved","Date","getTime","isModel","obj","logger","findOne","ConflictError","save","findOneOrFail","insert","identifiers","findBy","In","err","reason","code","message","ConnectionError","connect","con","createDatabase","dbName","Logging","createNotifyFunction","deleteDatabase","createUser","password","deleteUser","admin","parseTypeToPostgres","isPk","isFk","toLowerCase","pkType","parseValidationToPostgres","REQUIRED","MAX_LENGTH","MIN_LENGTH","PATTERN","URL","EMAIL","DATE","MIN","MAX","PASSWORD","parseRelationsToPostgres","cascade","cascadeStr","ONE_TO_ONE","getCurrentUser","current_user","decoration","Decoration","flavouredAs","extend","ctor","existing","apply","DBKeys","define","original","propertyKey","decorators","required","readonly","propMetadata","String","BigInt","conf","sequenceName","noValidateOnCreate","Boolean","nullable","PrimaryColumnCannotBeNullableError","PrimaryColumn","COLUMN","UNIQUE","requiredKey","Validation","VersionColumn","timestampDecorationKey","TIMESTAMP","timestampUpdateKey","UpdateValidationKeys","REFLECT","format","date","DB_DEFAULT_ERROR_MESSAGES","INVALID","noValidateOnCreateUpdate","ops","UpdateDateColumn","CreateDateColumn","joinColumnOpts","fk","joinTable","ormMeta","Cascade","CASCADE","onDelete","onUpdate","relation","typeFunctionOrTarget","inverseSideOrOptions","inverseSideProperty","isLazy","lazy","reflectedType","meta","relationType","OneToOne","JoinColumn","foreignKeyConstraintName","ONE_TO_MANY","joinTableOpts","list","inverseSide","crossRelationKey","MANY_TO_ONE","ref","ManyToOne","MANY_TO_MANY","ManyToMany","JoinTable","directions","d","DSC","Index","CREATED_BY","onCreate","UPDATED_BY","onCreateUpdate","final","prototype","setCurrent","PACKAGE_NAME","registerLibrary","NULL"],"mappings":"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"}