@decaf-ts/for-couchdb 0.4.33 → 0.4.35

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.
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,i,o,n,a){"use strict";const s=/^_.*$/g,c={SEPARATOR:"__",ID:"_id",REV:"_rev",DELETED:"_deleted",TABLE:"??table",SEQUENCE:"??sequence",DDOC:"ddoc",NATIVE:"__native",INDEX:"index",VIEW:"view"},u={EQUAL:"$eq",DIFFERENT:"$ne",BIGGER:"$gt",BIGGER_EQ:"$gte",SMALLER:"$lt",SMALLER_EQ:"$lte",NOT:"$not",IN:"$in",REGEXP:"$regex"},l={AND:"$and",OR:"$or"};async function d(e,t,r){return e.auth(t,r)}function p(e,t,o,n,a=i.DefaultSeparator){const s=[r.PersistenceKeys.INDEX,t,e];return o&&s.push(...o),n&&s.push(n),s.join(a)}function g(e,t,r,o,n=i.DefaultSeparator){const a={};let s;if(a[c.TABLE]={},a[c.TABLE][u.EQUAL]=t,o){const t={};t[e]=o;const i=(r||[]).map(e=>{const t={};return t[e]=o,t}),n={};n[c.TABLE]=o,s=[t,...i,n]}else s=[e,...r||[],c.TABLE];const l=p(e,t,r,o,n);return{index:{fields:s},ddoc:[l,c.DDOC].join(n),name:l}}function f(e){return e instanceof Date?JSON.stringify(e.toISOString()):e instanceof RegExp?`new RegExp(${JSON.stringify(e.source)}, ${JSON.stringify(e.flags)})`:JSON.stringify(e)}function h(e,t){const{attr1:i,operator:o,comparison:n}=e;if(i instanceof r.Condition){const e=h(i,t);if(o===r.Operator.NOT)return`!(${e})`;const a=h(n,t);return o===r.GroupOperator.AND?`(${e} && ${a})`:o===r.GroupOperator.OR?`(${e} || ${a})`:e}const a=`${t}[${JSON.stringify(i)}]`;switch(o){case r.Operator.EQUAL:return`${a} === ${f(n)}`;case r.Operator.DIFFERENT:return`${a} !== ${f(n)}`;case r.Operator.BIGGER:return`${a} > ${f(n)}`;case r.Operator.BIGGER_EQ:return`${a} >= ${f(n)}`;case r.Operator.SMALLER:return`${a} < ${f(n)}`;case r.Operator.SMALLER_EQ:return`${a} <= ${f(n)}`;case r.Operator.IN:return`(${f(n)}).indexOf(${a}) !== -1`;case r.Operator.REGEXP:return`${n instanceof RegExp?f(n):`new RegExp(${JSON.stringify(n)})`}.test(${a})`;case r.Operator.NOT:return`!(${a} === ${f(n)})`;default:return"true"}}function m(e,t,r){return e?Array.isArray(e)?e:[e]:t?[t,...r||[]]:r||[]}function y(e,t,r,o,n=i.DefaultSeparator){return o.name?o.name:[e,t,r,"view"].join(n).replace(/\s+/g,"_")}function A(e,t,r=i.DefaultSeparator){return[e,t,c.DDOC].join(r)}function O(e,i,o){const n={view:r.Operator.VIEW,groupBy:r.Operator.GROUP_BY,count:r.Operator.COUNT,sum:r.Operator.SUM,max:r.Operator.MAX,min:r.Operator.MIN,distinct:r.Operator.DISTINCT}[i];if(!n)return[];const a=t.Metadata.get(e,n)||{};return Object.entries(a).flatMap(([e,t])=>t&&"object"==typeof t?Object.values(t).map(t=>({...t,kind:i,attribute:t.attribute||e})).filter(e=>!o||e.attribute===o):[])}function b(e,r,i){const o=t.Metadata.get(e,r)||{};return Object.entries(o).flatMap(([e,t])=>t&&"object"==typeof t?Object.values(t).map(t=>{const r=t;return{...r,kind:i,attribute:r.attribute||e}}):[])}function E(e){const t={},i=[[c.VIEW,"view"],[r.Operator.GROUP_BY,"groupBy"],[r.Operator.COUNT,"count"],[r.Operator.SUM,"sum"],[r.Operator.MAX,"max"],[r.Operator.MIN,"min"],[r.Operator.DISTINCT,"distinct"]];return e.forEach(e=>{const n=o.Model.tableName(e);i.flatMap(([t,r])=>b(e,t,r)).forEach(e=>{const i=m(e.key,e.attribute,e.compositions);if(!i.length)return;const o=i[0],a=i.slice(1),s=e.directions||[r.OrderDirection.ASC,r.OrderDirection.DSC],c=g(o,n,a);t[c.name||""]=c,s.forEach(e=>{const r=g(o,n,a,e);t[r.name||""]=r})})}),Object.values(t)}function w(e,t){Object.defineProperty(e,r.PersistenceKeys.METADATA,{enumerable:!1,configurable:!0,writable:!0,value:t})}function v(e){const t=Object.getOwnPropertyDescriptor(e,r.PersistenceKeys.METADATA);return t?t.value:void 0}function D(e){Object.getOwnPropertyDescriptor(e,r.PersistenceKeys.METADATA)&&delete e[r.PersistenceKeys.METADATA]}class S extends r.Repository{constructor(e,t){super(e,t)}assignMetadata(e,t){const r=(e,t)=>{const r=v(t??e);return r&&w(e,r),e};return Array.isArray(e)?e.map((e,i)=>{const o=Array.isArray(t)?t[i]:t;return r(e,o)}):r(e,Array.isArray(t)?t?.[0]:t)}async create(e,...t){const r=await super.create(e,...t);return this.assignMetadata(r),this.assignMetadata(e,r),r}async createAll(e,...t){const r=await super.createAll(e,...t);return this.assignMetadata(r),this.assignMetadata(e,r),r}async read(e,...t){const r=await super.read(e,...t);return this.assignMetadata(r)}async readAll(e,...t){const r=await super.readAll(e,...t);return this.assignMetadata(r)}async update(e,...t){const r=await super.update(e,...t);return this.assignMetadata(r),this.assignMetadata(e,r),r}async updateAll(e,...t){const r=await super.updateAll(e,...t);return this.assignMetadata(r),this.assignMetadata(e,r),r}async delete(e,...t){const r=await super.delete(e,...t);return this.assignMetadata(r)}async deleteAll(e,...t){const r=await super.deleteAll(e,...t);return this.assignMetadata(r)}async updatePrefix(e,...t){const{ctx:r,ctxArgs:n,log:a}=(await this.logCtx(t,i.OperationKeys.UPDATE,!0)).for(this.updatePrefix),s=r.get("ignoreHandlers"),c=r.get("ignoreValidation");a.silly(`handlerSetting: ${s}, validationSetting: ${c}`);const u=e[this.pk];if(!u)throw new i.InternalError("No value for the Id is defined under the property "+this.pk);let l,d;if(r.get("applyUpdateValidation")&&(l=await this.read(u),d=l?v(l):void 0,r.get("mergeForUpdate")&&(e=o.Model.merge(l,e,this.class))),s||await i.enforceDBDecorators(this,r,e,i.OperationKeys.UPDATE,i.OperationKeys.ON,l),!c){const t=r.get("ignoredValidationProperties")||[];a.silly("ignored validation properties: "+t);const o=await Promise.resolve(e.hasErrors(l,...t));if(o)throw new i.ValidationError(o.toString())}return d&&w(e,d),[e,...n,l]}async updateAllPrefix(e,...t){const{ctx:r,ctxArgs:n,log:a}=(await this.logCtx(t,i.BulkCrudOperationKeys.UPDATE_ALL,!0)).for(this.updateAllPrefix),s=r.get("ignoreHandlers"),c=r.get("ignoreValidation");a.silly(`handlerSetting: ${s}, ignoredValidation: ${c}`);const u=e.map(e=>{const t=e[this.pk];if(!t)throw new i.InternalError("missing id on update operation");return t});let l;if(r.get("applyUpdateValidation")&&(l=await this.readAll(u,r),e=e.map((e,t)=>{r.get("mergeForUpdate")&&(e=o.Model.merge(l[t],e,this.class));const i=v(l[t]);return i&&w(e,i),e})),s||await Promise.all(e.map((e,t)=>i.enforceDBDecorators(this,r,e,i.OperationKeys.UPDATE,i.OperationKeys.ON,l?l[t]:void 0))),!c){const t=r.get("ignoredValidationProperties")||[];let o;a.silly("ignored validation properties: "+t),o=r.get("applyUpdateValidation")?await Promise.all(e.map((e,r)=>Promise.resolve(e.hasErrors(l[r],...t)))):await Promise.resolve(e.map(e=>e.hasErrors(...t)));const n=i.reduceErrorsToPrint(o);if(n)throw new i.ValidationError(n)}return[e,...n,l]}}class N extends i.BaseError{constructor(e){super(N.name,e,404)}}class M extends r.Paginator{constructor(e,t,r,i){super(e,t,r,i)}prepare(e){const t=Object.assign({},e);return t.limit&&(this.limit=t.limit),t.limit=this.size,t}async page(e=1,n,...a){const{log:s,ctxArgs:c,ctx:u}=this.adapter.logCtx([n,...a],this.page);if(this.isPreparedStatement())return await this.pagePrepared(e,...c);const l=Object.assign({},this.statement);if(this._recordCount&&this._totalPages)e=this.validatePage(e),l.skip=(e-1)*this.size;else{this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...l,limit:Number.MAX_VALUE},!0,...c)||[];if(this._recordCount=t.length,this._recordCount>0){const t=l?.limit||this.size;return this._totalPages=Math.ceil(this._recordCount/t),await this.page(e,...c)}}if(1!==e){if(!this._bookmark)throw new r.PagingError("No bookmark. Did you start in the first page?");l.bookmark=this._bookmark}const d=await this.adapter.raw(l,!1,...c),{docs:p,bookmark:g,warning:f}=d;if(f&&s.warn(f),!this.clazz)throw new r.PagingError("No statement target defined");const h=o.Model.pk(this.clazz),m=t.Metadata.get(this.clazz,t.Metadata.key(i.DBKeys.ID,h))?.type,y=l.fields&&l.fields.length?p:p.map(e=>this.adapter.revert(e,this.clazz,r.Sequence.parseValue(m,e[h]),void 0,u));return this._bookmark=g,this._currentPage=e,y}}function x(e){for(const t of[u,l]){const r=Object.keys(t).find(t=>t===e);if(r)return t[r]}throw new r.QueryError("Could not find adapter translation for operator "+e)}class T extends r.Statement{constructor(e){super(e),this.attributeTypeCache=new Map}build(){const e=this.log.for(this.build);this.manualAggregation=void 0;const t=this.buildAggregateInfo();if(t){if(!this.shouldUseManualAggregation())return this.createAggregateQuery(t);this.manualAggregation=t}const i={};i[c.TABLE]={},i[c.TABLE]=o.Model.tableName(this.fromSelector);const n={selector:i};if(this.selectSelector&&(n.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(r.Condition.and(this.whereCondition,r.Condition.attribute(c.TABLE).eq(n.selector[c.TABLE]))).selector,i=Object.keys(t);if(1===i.length&&-1!==Object.values(l).indexOf(i[0]))switch(i[0]){case l.AND:t[l.AND]=[...Object.values(t[l.AND]).reduce((e,t)=>{const r=Object.keys(t);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const i=r[0];return i===l.AND?e.push(...t[i]):e.push(t),e},[])],n.selector=t;break;case l.OR:{const e={};e[l.AND]=[t,...Object.entries(n.selector).map(([e,t])=>{const r={};return r[e]=t,r})],n.selector=e;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,r])=>{n.selector[t]&&e.warn(`A ${t} query param is about to be overridden: ${n.selector[t]} by ${r}`),n.selector[t]=r})}if(this.orderBySelectors?.length){n.sort=n.sort||[],n.selector=n.selector||{};for(const[e,t]of this.orderBySelectors){const r=e,i={};i[r]=t,n.sort.push(i),n.selector[r]||(n.selector[r]={},n.selector[r][u.BIGGER]=null)}}const a=!!this.manualAggregation;return this.limitSelector?n.limit=this.limitSelector:a||(e.warn("No limit selector defined. Using default couchdb limit of 250"),n.limit=250),this.offsetSelector&&(n.skip=this.offsetSelector),n}processRecord(e,t,i,o){if(e[c.ID]){const[,...t]=e[c.ID].split(c.SEPARATOR),n=t.join("_");return this.adapter.revert(e,this.fromSelector,r.Sequence.parseValue(i,n),void 0,o)}return e}async raw(e,...r){const{ctx:n}=this.logCtx(r,this.raw),a=e?.aggregateInfo;if(e?.aggregate&&a)return this.executeAggregate(a,n);const s=await this.adapter.raw(e,!0,n),c=o.Model.pk(this.fromSelector),u=t.Metadata.get(this.fromSelector,t.Metadata.key(i.DBKeys.ID,c))?.type,l=s.map(e=>this.processRecord(e,c,u,n));if(this.manualAggregation){const e=this.executeManualAggregation(l,this.manualAggregation,n);return this.manualAggregation=void 0,e}return!this.selectSelector&&this.groupBySelectors?.length?this.groupSelectResults(l):this.selectSelector?s:l}buildAggregateInfo(){if(this.fromSelector){if(this.avgSelector){const e=this.avgSelector+"",t=this.createAggregateDescriptor("sum",e);if(!t)throw this.missingDecorator("sum",e);const r=this.createAggregateDescriptor("count",e);if(!r)throw this.missingDecorator("count",e);return{kind:"avg",attribute:e,sumDescriptor:t.descriptor,countDescriptor:r.descriptor}}if(void 0!==this.countDistinctSelector){const e=this.resolveSelectorAttribute(this.countDistinctSelector),t=this.createAggregateDescriptor("distinct",e);if(!t)throw this.missingDecorator("distinct",e);return t.countDistinct=!0,t}if(void 0!==this.countSelector){const e=this.resolveSelectorAttribute(this.countSelector),t=this.createAggregateDescriptor("count",e);if(!t)throw this.missingDecorator("count",e);return t}if(this.maxSelector){const e=this.resolveSelectorAttribute(this.maxSelector),t=this.createAggregateDescriptor("max",e);if(!t)throw this.missingDecorator("max",e);return t}if(this.minSelector){const e=this.resolveSelectorAttribute(this.minSelector),t=this.createAggregateDescriptor("min",e);if(!t)throw this.missingDecorator("min",e);return t}if(this.sumSelector){const e=this.resolveSelectorAttribute(this.sumSelector),t=this.createAggregateDescriptor("sum",e);if(!t)throw this.missingDecorator("sum",e);return t}if(this.distinctSelector){const e=this.resolveSelectorAttribute(this.distinctSelector),t=this.createAggregateDescriptor("distinct",e);if(!t)throw this.missingDecorator("distinct",e);return t}}}createAggregateDescriptor(e,t){if(!this.fromSelector)return;const r=O(this.fromSelector,e,t);if(!r.length)return;const i=r[0],n=o.Model.tableName(this.fromSelector),a=y(n,i.attribute,e,i),s=i.ddoc||A(n,a),c={reduce:void 0!==i.reduce||!i.returnDocs};return"distinct"!==e&&"groupBy"!==e||(c.group=!0),{kind:e,meta:i,descriptor:{ddoc:s,view:a,options:c}}}createAggregateQuery(e){return{selector:{},aggregate:!0,aggregateInfo:e}}shouldUseManualAggregation(){return!!this.whereCondition}async executeAggregate(e,t){if(!this.isViewAggregate(e))return this.handleAverage(e,t);const r=this.getCouchAdapter(),i=e,o=await r.view(i.descriptor.ddoc,i.descriptor.view,i.descriptor.options,t);return this.processViewResponse(e,o)}async handleAverage(e,t){if("avg"!==e.kind)throw new r.QueryError("Average descriptor is not valid");const[i,o]=[e.sumDescriptor,e.countDescriptor],n=this.getCouchAdapter(),[a,s]=await Promise.all([n.view(i.ddoc,i.view,i.options,t),n.view(o.ddoc,o.view,o.options,t)]),c=a.rows?.[0]?.value??0,u=s.rows?.[0]?.value??0;return u?c/u:0}executeManualAggregation(e,t,i){if(!this.fromSelector)throw new r.QueryError("Manual aggregation requires a target model");if("avg"===t.kind)return this.computeAverage(e,t.attribute);if("groupBy"===t.kind)return this.computeGroupBy(e,t.meta.attribute);const o=t.meta.attribute;switch(t.kind){case"count":return t.countDistinct?this.computeDistinctCount(e,o):this.computeCount(e,o);case"distinct":return t.countDistinct?this.computeDistinctCount(e,o):this.computeDistinctValues(e,o);case"sum":return this.computeSum(e,o);case"min":return this.computeMinMax(e,o,"min");case"max":return this.computeMinMax(e,o,"max");default:throw new r.QueryError("Unsupported manual aggregation "+t.kind)}}computeCount(e,t){return t?this.collectValues(e,t).filter(e=>null!=e).length:e.length}computeDistinctCount(e,t){const r=t?this.collectValues(e,t).filter(e=>null!=e):e,i=new Set;return r.forEach(e=>i.add(JSON.stringify(e))),i.size}computeDistinctValues(e,t){if(!t)return[];const r=this.collectValues(e,t),i=new Set,o=[];return r.forEach(e=>{const t=JSON.stringify(e);i.has(t)||(i.add(t),o.push(e))}),o}computeSum(e,t){return t?this.collectValues(e,t).filter(e=>null!=e).reduce((e,r)=>e+this.toNumericValue(r,t,"SUM operation"),0):e.length}computeAverage(e,t){if(!t)return 0;const r=this.collectValues(e,t).filter(e=>null!=e);return r.length?r.reduce((e,r)=>e+this.toNumericValue(r,t,"AVG operation"),0)/r.length:0}computeMinMax(e,t,r){if(!t)return null;const i=this.collectValues(e,t).filter(e=>null!=e);let o=null,n=null;for(const e of i){const t=this.normalizeComparable(e);null!==t&&(null!==n?("min"===r&&n>t||"max"===r&&t>n)&&(n=t,o=e):(n=t,o=e))}return o}computeGroupBy(e,t){const r={},i=this.collectValues(e,t);return e.forEach((e,t)=>{const o=this.groupKey(i[t]);r[o]||(r[o]=[]),r[o].push(e)}),r}groupSelectResults(e){if(!this.groupBySelectors?.length)return{};const t=this.resolveSelectorAttribute(this.groupBySelectors[0]);if(!t)return{};const r={};return e.forEach(e=>{const i=this.groupKey(this.convertValueByAttribute(t,e[t]));r[i]||(r[i]=[]),r[i].push(e)}),r}collectValues(e,t){return e.map(e=>{if(e&&"object"==typeof e)return this.convertValueByAttribute(t,e[t])})}convertValueByAttribute(e,t){if(!this.fromSelector)return t;if("date"===this.getAttributeType(e)){if(t instanceof Date)return t;const e=new Date(t);if(!Number.isNaN(e.getTime()))return e}if("string"==typeof t&&e.toLowerCase().includes("date")){const e=new Date(t);if(!Number.isNaN(e.getTime()))return e}return t}getAttributeType(e){if(!e||!this.fromSelector)return;if(this.attributeTypeCache.has(e))return this.attributeTypeCache.get(e);const r=t.Metadata.type(this.fromSelector,e)??t.Metadata.getPropDesignTypes?.(this.fromSelector,e)?.designType,i=this.normalizeMetaType(r);return this.attributeTypeCache.set(e,i),i}normalizeMetaType(e){if(e)return"string"==typeof e?e.toLowerCase():"function"==typeof e&&e.name?e.name.toLowerCase():void 0}normalizeComparable(e){return"number"==typeof e?e:"bigint"==typeof e?Number(e):e instanceof Date?e.getTime():"string"!=typeof e||isNaN(Number(e))?null:Number(e)}groupKey(e){if(void 0===e)return"undefined";if(null===e)return"null";if("symbol"==typeof e)return e.toString();if("object"==typeof e)try{return JSON.stringify(e)}catch{return e+""}return e+""}toNumericValue(e,t,i){if("number"==typeof e)return e;if("bigint"==typeof e)return Number(e);if(e instanceof Date)return e.getTime();if("string"==typeof e&&!isNaN(Number(e)))return Number(e);throw new r.QueryError(`${i} on "${t}" requires numeric values, but got ${typeof e}`)}convertAggregateValue(e,t){return e?this.convertValueByAttribute(e,t):t}resolveSelectorAttribute(e){if(null!=e)return e+""}missingDecorator(e,t){const i=this.decoratorForKind(e),n=this.fromSelector?o.Model.tableName(this.fromSelector):"<unknown table>",a=t?` on "${t}"`:"";return new r.UnsupportedError(`${i} decorator is required for CouchDB ${e} aggregation${a} on table "${n}".`)}decoratorForKind(e){return{count:"@count",sum:"@sum",min:"@min",max:"@max",distinct:"@distinct",groupBy:"@groupBy",view:"@view",avg:"@avg"}[e]||"@"+e}processViewResponse(e,t){if("avg"===e.kind)throw new r.QueryError("Average results should be handled before processing rows");const i=t.rows||[],o=e,n=o.meta;return o.countDistinct?i.length||0:"distinct"===o.kind||"groupBy"===o.kind?i.map(e=>this.convertAggregateValue(o.meta.attribute,e.key??e.value)):n.returnDocs?i.map(e=>e.value??e.doc??e):i.length?this.convertAggregateValue(o.meta.attribute,i[0].value??i[0].key??null):"count"===o.kind?0:null}isViewAggregate(e){return"avg"!==e.kind}getCouchAdapter(){return this.adapter}parseCondition(e){const{attr1:t,operator:i,comparison:o}=e;if(i===r.Operator.BETWEEN){const e=t;if(!Array.isArray(o)||2!==o.length)throw new r.QueryError("BETWEEN operator requires [min, max] comparison");const[i,n]=o,a={};return a[e]={},a[e][x(r.Operator.BIGGER_EQ)]=i,a[e][x(r.Operator.SMALLER_EQ)]=n,{selector:a}}let n={};if(-1===[r.GroupOperator.AND,r.GroupOperator.OR,r.Operator.NOT].indexOf(i))n[t]={},n[t][x(i)]=o;else if(i===r.Operator.NOT)n=this.parseCondition(t).selector,n[x(r.Operator.NOT)]={},n[x(r.Operator.NOT)][t.attr1]=o;else{const e=this.parseCondition(t).selector,r=this.parseCondition(o).selector;n=((e,t,r)=>{const i={selector:{}};return i.selector[e]=[t,r],i})(x(i),e,r).selector}return{selector:n}}}class _ extends r.Adapter{constructor(e,t,r){super(e,t,r),[this.create,this.createAll,this.update,this.updateAll].forEach(e=>{const t=e.name;i.prefixMethod(this,e,this[t+"Prefix"])})}Statement(){return new T(this)}Paginator(e,t,r){return new M(this,e,t,r)}async initialize(){const e=r.Adapter.models(this.flavour);return this.index(...e)}repository(){return S}assignMetadata(e,t){return t?(w(e,t),e):e}assignMultipleMetadata(e,t){return e.forEach((e,r)=>(w(e,t[r]),e)),e}prepare(e,...t){const{log:n}=this.logCtx(t,this.prepare),a=e.segregate(),s=Object.entries(a.model).reduce((t,[r,n])=>{if(void 0===n)return t;const a=o.Model.columnName(e.constructor,r);if(this.isReserved(a))throw new i.InternalError(`Property name ${a} is reserved`);return n=n instanceof Date?new Date(n):n,t[a]=n,t},{});return e[r.PersistenceKeys.METADATA]&&(n.silly("Passing along persistence metadata for "+e[r.PersistenceKeys.METADATA]),Object.defineProperty(s,r.PersistenceKeys.METADATA,{enumerable:!1,writable:!0,configurable:!0,value:e[r.PersistenceKeys.METADATA]})),{record:s,id:e[o.Model.pk(e.constructor)],transient:a.transient}}createPrefix(e,t,r,...i){const{ctxArgs:n}=this.logCtx(i,this.createPrefix),a=o.Model.tableName(e),s={};return s[c.TABLE]=a,s[c.ID]=this.generateId(a,t),Object.assign(s,r),[e,t,s,...n]}createAllPrefix(e,t,r,...n){const a=o.Model.tableName(e);if(t.length!==r.length)throw new i.InternalError("Ids and models must have the same length");const{ctxArgs:s}=this.logCtx(n,this.createAllPrefix),u=t.map((e,t)=>{const i={};return i[c.TABLE]=a,i[c.ID]=this.generateId(a,e),Object.assign(i,r[t]),i});return[e,t,u,...s]}updatePrefix(e,t,n,...a){const s=o.Model.tableName(e),{ctxArgs:u}=this.logCtx(a,this.updatePrefix),l={};l[c.TABLE]=s,l[c.ID]=this.generateId(s,t);const d=n[r.PersistenceKeys.METADATA];if(!d)throw new i.InternalError("No revision number found for record with id "+t);return Object.assign(l,n),l[c.REV]=d,[e,t,l,...u]}updateAllPrefix(e,t,n,...a){const s=o.Model.tableName(e);if(t.length!==n.length)throw new i.InternalError("Ids and models must have the same length");const{ctxArgs:u}=this.logCtx(a,this.updateAllPrefix),l=t.map((e,t)=>{const o={};o[c.TABLE]=s,o[c.ID]=this.generateId(s,e);const a=n[t][r.PersistenceKeys.METADATA];if(!a)throw new i.InternalError("No revision number found for record with id "+e);return Object.assign(o,n[t]),o[c.REV]=a,o});return[e,t,l,...u]}generateId(e,t){return[e,t].join(c.SEPARATOR)}parseError(e,t){return _.parseError(e,t)}isReserved(e){return!!e.match(s)}static parseError(e,t){if(e instanceof i.BaseError)return e;let o="";if("string"==typeof e){if(o=e,o.match(/already exist|update conflict/g))return new i.ConflictError(o);if(o.match(/missing|deleted/g))return new i.NotFoundError(o)}else e.code?(o=e.code,t=t||e.message):e.statusCode?(o=e.statusCode,t=t||e.message):o=e.message;switch(o.toString()){case"401":case"412":case"409":return new i.ConflictError(t);case"404":return new i.NotFoundError(t);case"400":return o.toString().match(/No\sindex\sexists/g)?new N(e):new i.InternalError(e);default:return o.toString().match(/ECONNREFUSED/g)?new r.ConnectionError(e):new i.InternalError(e)}}static setMetadata(e,t){w(e,t)}static getMetadata(e){return v(e)}static removeMetadata(e){D(e)}}n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[]),n.__metadata("design:returntype",T)],_.prototype,"Statement",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,String]),n.__metadata("design:returntype",Object)],_.prototype,"assignMetadata",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Array,Array]),n.__metadata("design:returntype",Array)],_.prototype,"assignMultipleMetadata",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,Object,Object,Object]),n.__metadata("design:returntype",Array)],_.prototype,"createPrefix",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,Array,Array,Object]),n.__metadata("design:returntype",void 0)],_.prototype,"createAllPrefix",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,Object,Object,Object]),n.__metadata("design:returntype",void 0)],_.prototype,"updatePrefix",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,Array,Array,Object]),n.__metadata("design:returntype",void 0)],_.prototype,"updateAllPrefix",null);const C="##VERSION##",$="##PACKAGE##";t.Metadata.registerLibrary($,C),e.CouchDBAdapter=_,e.CouchDBConst={NULL:"null"},e.CouchDBGroupOperator=l,e.CouchDBKeys=c,e.CouchDBOperator=u,e.CouchDBPaginator=M,e.CouchDBQueryLimit=250,e.CouchDBRepository=S,e.CouchDBStatement=T,e.IndexError=N,e.PACKAGE_NAME=$,e.VERSION=C,e.collectViewMetadata=b,e.count=(e,i)=>{let o={};return e instanceof r.Condition?o.condition=e:"object"==typeof e&&e?o=e:void 0!==e&&(o.value=e),i&&(o=Object.assign({},o,i)),t.Decoration.for(r.Operator.COUNT).define({decorator:e=>r.applyViewDecorator(r.Operator.COUNT,"count",e),args:[o]}).apply()},e.distinct=(e,i)=>{let o={};return e instanceof r.Condition?o.condition=e:e&&(o=e),i&&(o=Object.assign({},o,i)),t.Decoration.for(r.Operator.DISTINCT).define({decorator:e=>r.applyViewDecorator(r.Operator.DISTINCT,"distinct",e),args:[o]}).apply()},e.findViewMetadata=O,e.generateDesignDocName=A,e.generateIndexDoc=g,e.generateIndexName=p,e.generateIndexes=e=>{const t=((e,t,r,o=i.DefaultSeparator)=>[...e.map(e=>e===c.TABLE?"table":e),...r||[],...t?[t]:[],c.INDEX].join(o))([c.TABLE]),n={};return n[t]={index:{fields:[c.TABLE]},name:t,ddoc:t,type:"json"},e.forEach(e=>{const t=o.Model.indexes(e);Object.entries(t).forEach(([t,a])=>{const s=[];Object.entries(a||{}).forEach(([,e])=>{if(!e)return;const r=e;void 0===r.directions&&void 0===r.compositions?"object"!=typeof e||Array.isArray(e)||Object.entries(e).forEach(([e,t])=>{t&&s.push([e,t])}):s.push([t,r])}),s.forEach(([t,a])=>{if(!a)return;let{directions:s,compositions:l}=a;const d=o.Model.tableName(e);l=l||[];const p=[t,...l],g={[c.TABLE]:{[u.EQUAL]:d}};function f(e,o){const a=[d,t,...l,...o?[o]:[],r.PersistenceKeys.INDEX].join(i.DefaultSeparator),s=[c.TABLE,...p],u=e?[{[c.TABLE]:e},...p.map(t=>({[t]:e}))]:s;n[a]={index:{fields:u},name:a,ddoc:a,type:"json"},e||(n[a].index.partial_filter_selector=g)}f(),Array.from(new Set((s||[r.OrderDirection.ASC]).map(e=>(e+"").toLowerCase()))).filter(e=>e===r.OrderDirection.ASC||e===r.OrderDirection.DSC).forEach(e=>{f(e,e)})})})}),E(e).forEach(e=>{e.name&&(n[e.name]=e)}),Object.values(n)},e.generateViewIndexes=E,e.generateViewName=y,e.generateViews=e=>{const t={},i=[[c.VIEW,"view"],[r.Operator.GROUP_BY,"groupBy"],[r.Operator.COUNT,"count"],[r.Operator.SUM,"sum"],[r.Operator.MAX,"max"],[r.Operator.MIN,"min"],[r.Operator.DISTINCT,"distinct"]];return e.forEach(e=>{const n=o.Model.tableName(e);i.flatMap(([t,r])=>b(e,t,r)).forEach(e=>{const i=e.attribute,o=y(n,i,e.kind,e),a="_design/"+(e.ddoc||A(n,o)),s=((e,t,i,o)=>{const n=((e,t,i)=>{if(i.map)return"function"==typeof i.map?i.map.toString():i.map;const o=[];if(o.push(`doc[${JSON.stringify(c.TABLE)}] === ${JSON.stringify(e)}`),i.condition)if(i.condition instanceof r.Condition)o.push(h(i.condition,"doc"));else if("string"==typeof i.condition)o.push(i.condition);else{const e=r.Condition.from(i.condition);o.push(h(e,"doc"))}"count"===i.kind&&void 0!==i.value&&o.push(`doc[${JSON.stringify(t)}] === ${f(i.value)}`);const n=((e,t="doc")=>{if(!e)return;if("string"==typeof e)return e;const r=e.field||"roles",i=e.roles||[];if(!i.length)return e.expression;const o=`${t}[${JSON.stringify(r)}] || []`;return"all"===(e.mode||"any")?i.map(e=>`${o}.indexOf(${JSON.stringify(e)}) !== -1`).join(" && "):i.map(e=>`${o}.indexOf(${JSON.stringify(e)}) !== -1`).join(" || ")})(i.auth,"doc");n&&o.push(n);const a=o.length?o.join(" && "):"true",s=((e,t,r)=>{const i=m(e,t,r);return 1===i.length?`doc[${JSON.stringify(i[0])}]`:`[${i.map(e=>`doc[${JSON.stringify(e)}]`).join(", ")}]`})(i.key,t,i.compositions),u=((e,t)=>"doc"===e?"doc":e?Array.isArray(e)?`[${e.map(e=>`doc[${JSON.stringify(e)}]`).join(", ")}]`:"string"==typeof e?`doc[${JSON.stringify(e)}]`:f(e):`doc[${JSON.stringify(t)}]`)(i.value??(i.returnDocs&&"sum"!==i.kind?"doc":void 0),t);return`function (doc) {\n if (!(${a})) return;\n emit(${s}, ${u});\n}`})(o,t,i),a=i.reduce?"function"==typeof i.reduce?i.reduce.toString():i.reduce:(e=>{switch(e){case"count":case"groupBy":case"distinct":return"_count";case"sum":return"_sum";case"max":return"function (keys, values, rereduce) {\n var maxVal = null;\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (rereduce && val && typeof val === 'object' && 'value' in val) val = val.value;\n if (maxVal === null || val > maxVal) maxVal = val;\n }\n return maxVal;\n}";case"min":return"function (keys, values, rereduce) {\n var minVal = null;\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (rereduce && val && typeof val === 'object' && 'value' in val) val = val.value;\n if (minVal === null || val < minVal) minVal = val;\n }\n return minVal;\n}";default:return}})(e);return{map:n,reduce:a}})(e.kind,i,e,n);t[a]||(t[a]={_id:a,language:"javascript",views:{}}),t[a].views[o]=s})}),Object.values(t)},e.getMetadata=v,e.groupBy=(e,i)=>{let o={};return Array.isArray(e)?o.compositions=e:"string"==typeof e?o.name=e:e&&(o=e),"string"==typeof i?o.name=i:i&&(o=Object.assign({},o,i)),void 0===o.returnDocs&&(o.returnDocs=!0),t.Decoration.for(r.Operator.GROUP_BY).define({decorator:e=>r.applyViewDecorator(r.Operator.GROUP_BY,"groupBy",e),args:[o]}).apply()},e.max=(e,i)=>{let o={};return e instanceof r.Condition?o.condition=e:e&&(o=e),i&&(o=Object.assign({},o,i)),t.Decoration.for(r.Operator.MAX).define({decorator:e=>r.applyViewDecorator(r.Operator.MAX,"max",e),args:[o]}).apply()},e.min=(e,i)=>{let o={};return e instanceof r.Condition?o.condition=e:e&&(o=e),i&&(o=Object.assign({},o,i)),t.Decoration.for(r.Operator.MIN).define({decorator:e=>r.applyViewDecorator(r.Operator.MIN,"min",e),args:[o]}).apply()},e.reAuth=d,e.removeMetadata=D,e.reservedAttributes=s,e.setMetadata=w,e.sum=(e,i)=>{let o={};return e instanceof r.Condition?o.condition=e:e&&(o=e),i&&(o=Object.assign({},o,i)),t.Decoration.for(r.Operator.SUM).define({decorator:e=>r.applyViewDecorator(r.Operator.SUM,"sum",e),args:[o]}).apply()},e.testReservedAttributes=e=>e.match(/^_.*$/g),e.translateOperators=x,e.viewIndexDefinition=e=>{const t=m(e.key,e.attribute);return{attribute:t[0],compositions:t.slice(1).concat(e.compositions||[]),directions:e.directions}},e.wrapDocumentScope=(e,t,r,i)=>{const o=e.use?e.use(t):e;return["insert","get","put","destroy","find","view"].forEach(t=>{const n=o[t];Object.defineProperty(o,t,{enumerable:!1,configurable:!0,value:async(...t)=>(await d(e,r,i),n.call(o,...t))})}),Object.defineProperty(o,c.NATIVE,{enumerable:!1,configurable:!1,writable:!1,value:e}),o}},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decorator-validation"),require("tslib"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/core","@decaf-ts/db-decorators","@decaf-ts/decorator-validation","tslib","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-couchdb"]={},e.decafTsDecoration,e.decafTsCore,e.decafTsDbDecorators,e.decafTsDecoratorValidation,e.tslib,e.decafTsLogging);
1
+ var e,t;e=this,t=function(e,t,r,i,o,n,a){"use strict";const s=/^_.*$/g,c={SEPARATOR:"__",ID:"_id",REV:"_rev",DELETED:"_deleted",TABLE:"??table",SEQUENCE:"??sequence",DDOC:"ddoc",NATIVE:"__native",INDEX:"index",VIEW:"view"},u={EQUAL:"$eq",DIFFERENT:"$ne",BIGGER:"$gt",BIGGER_EQ:"$gte",SMALLER:"$lt",SMALLER_EQ:"$lte",NOT:"$not",IN:"$in",REGEXP:"$regex"},l={AND:"$and",OR:"$or"};async function d(e,t,r){return e.auth(t,r)}function p(e,t,o,n,a=i.DefaultSeparator){const s=[r.PersistenceKeys.INDEX,t,e];return o&&s.push(...o),n&&s.push(n),s.join(a)}function g(e,t,r,o,n=i.DefaultSeparator){const a={};let s;if(a[c.TABLE]={},a[c.TABLE][u.EQUAL]=t,o){const t={};t[e]=o;const i=(r||[]).map((e=>{const t={};return t[e]=o,t})),n={};n[c.TABLE]=o,s=[t,...i,n]}else s=[e,...r||[],c.TABLE];const l=p(e,t,r,o,n);return{index:{fields:s},ddoc:[l,c.DDOC].join(n),name:l}}function f(e){return e instanceof Date?JSON.stringify(e.toISOString()):e instanceof RegExp?`new RegExp(${JSON.stringify(e.source)}, ${JSON.stringify(e.flags)})`:JSON.stringify(e)}function h(e,t){const{attr1:i,operator:o,comparison:n}=e;if(i instanceof r.Condition){const e=h(i,t);if(o===r.Operator.NOT)return`!(${e})`;const a=h(n,t);return o===r.GroupOperator.AND?`(${e} && ${a})`:o===r.GroupOperator.OR?`(${e} || ${a})`:e}const a=`${t}[${JSON.stringify(i)}]`;switch(o){case r.Operator.EQUAL:return`${a} === ${f(n)}`;case r.Operator.DIFFERENT:return`${a} !== ${f(n)}`;case r.Operator.BIGGER:return`${a} > ${f(n)}`;case r.Operator.BIGGER_EQ:return`${a} >= ${f(n)}`;case r.Operator.SMALLER:return`${a} < ${f(n)}`;case r.Operator.SMALLER_EQ:return`${a} <= ${f(n)}`;case r.Operator.IN:return`(${f(n)}).indexOf(${a}) !== -1`;case r.Operator.REGEXP:return`${n instanceof RegExp?f(n):`new RegExp(${JSON.stringify(n)})`}.test(${a})`;case r.Operator.NOT:return`!(${a} === ${f(n)})`;default:return"true"}}function m(e,t,r){return e?Array.isArray(e)?e:[e]:t?[t,...r||[]]:r||[]}function y(e,t,r,o,n=i.DefaultSeparator){return o.name?o.name:[e,t,r,"view"].join(n).replace(/\s+/g,"_")}function A(e,t,r=i.DefaultSeparator){return[e,t,c.DDOC].join(r)}function E(e,i,o){const n={view:r.Operator.VIEW,groupBy:r.Operator.GROUP_BY,count:r.Operator.COUNT,sum:r.Operator.SUM,max:r.Operator.MAX,min:r.Operator.MIN,distinct:r.Operator.DISTINCT}[i];if(!n)return[];const a=t.Metadata.get(e,n)||{};return Object.entries(a).flatMap((([e,t])=>t&&"object"==typeof t?Object.values(t).map((t=>({...t,kind:i,attribute:t.attribute||e}))).filter((e=>!o||e.attribute===o)):[]))}function O(e,r,i){const o=t.Metadata.get(e,r)||{};return Object.entries(o).flatMap((([e,t])=>t&&"object"==typeof t?Object.values(t).map((t=>{const r=t;return{...r,kind:i,attribute:r.attribute||e}})):[]))}function b(e){const t={},i=[[c.VIEW,"view"],[r.Operator.GROUP_BY,"groupBy"],[r.Operator.COUNT,"count"],[r.Operator.SUM,"sum"],[r.Operator.MAX,"max"],[r.Operator.MIN,"min"],[r.Operator.DISTINCT,"distinct"]];return e.forEach((e=>{const n=o.Model.tableName(e);i.flatMap((([t,r])=>O(e,t,r))).forEach((e=>{const i=m(e.key,e.attribute,e.compositions);if(!i.length)return;const o=i[0],a=i.slice(1),s=e.directions||[r.OrderDirection.ASC,r.OrderDirection.DSC],c=g(o,n,a);t[c.name||""]=c,s.forEach((e=>{const r=g(o,n,a,e);t[r.name||""]=r}))}))})),Object.values(t)}function w(e,t,r,o=i.DefaultSeparator){return[...e.map((e=>e===c.TABLE?"table":e)),...r||[],...t?[t]:[],c.INDEX].join(o)}function D(e,t){Object.defineProperty(e,r.PersistenceKeys.METADATA,{enumerable:!1,configurable:!0,writable:!0,value:t})}function v(e){const t=Object.getOwnPropertyDescriptor(e,r.PersistenceKeys.METADATA);return t?t.value:void 0}function S(e){Object.getOwnPropertyDescriptor(e,r.PersistenceKeys.METADATA)&&delete e[r.PersistenceKeys.METADATA]}class N extends r.Repository{constructor(e,t){super(e,t)}assignMetadata(e,t){const r=(e,t)=>{const r=v(t??e);return r&&D(e,r),e};return Array.isArray(e)?e.map(((e,i)=>{const o=Array.isArray(t)?t[i]:t;return r(e,o)})):r(e,Array.isArray(t)?t?.[0]:t)}async create(e,...t){const r=await super.create(e,...t);return this.assignMetadata(r),this.assignMetadata(e,r),r}async createAll(e,...t){const r=await super.createAll(e,...t);return this.assignMetadata(r),this.assignMetadata(e,r),r}async read(e,...t){const r=await super.read(e,...t);return this.assignMetadata(r)}async readAll(e,...t){const r=await super.readAll(e,...t);return this.assignMetadata(r)}async update(e,...t){const r=await super.update(e,...t);return this.assignMetadata(r),this.assignMetadata(e,r),r}async updateAll(e,...t){const r=await super.updateAll(e,...t);return this.assignMetadata(r),this.assignMetadata(e,r),r}async delete(e,...t){const r=await super.delete(e,...t);return this.assignMetadata(r)}async deleteAll(e,...t){const r=await super.deleteAll(e,...t);return this.assignMetadata(r)}async updatePrefix(e,...t){const{ctx:r,ctxArgs:n,log:a}=(await this.logCtx(t,i.OperationKeys.UPDATE,!0)).for(this.updatePrefix),s=r.get("ignoreHandlers"),c=r.get("ignoreValidation");a.silly(`handlerSetting: ${s}, validationSetting: ${c}`);const u=e[this.pk];if(!u)throw new i.InternalError("No value for the Id is defined under the property "+this.pk);let l,d;if(r.get("applyUpdateValidation")&&(l=await this.read(u),d=l?v(l):void 0,r.get("mergeForUpdate")&&(e=o.Model.merge(l,e,this.class))),s||await i.enforceDBDecorators(this,r,e,i.OperationKeys.UPDATE,i.OperationKeys.ON,l),!c){const t=r.get("ignoredValidationProperties")||[];a.silly("ignored validation properties: "+t);const o=await Promise.resolve(e.hasErrors(l,...t));if(o)throw new i.ValidationError(o.toString())}return d&&D(e,d),[e,...n,l]}async updateAllPrefix(e,...t){const{ctx:r,ctxArgs:n,log:a}=(await this.logCtx(t,i.BulkCrudOperationKeys.UPDATE_ALL,!0)).for(this.updateAllPrefix),s=r.get("ignoreHandlers"),c=r.get("ignoreValidation");a.silly(`handlerSetting: ${s}, ignoredValidation: ${c}`);const u=e.map((e=>{const t=e[this.pk];if(!t)throw new i.InternalError("missing id on update operation");return t}));let l;if(r.get("applyUpdateValidation")&&(l=await this.readAll(u,r),e=e.map(((e,t)=>{r.get("mergeForUpdate")&&(e=o.Model.merge(l[t],e,this.class));const i=v(l[t]);return i&&D(e,i),e}))),s||await Promise.all(e.map(((e,t)=>i.enforceDBDecorators(this,r,e,i.OperationKeys.UPDATE,i.OperationKeys.ON,l?l[t]:void 0)))),!c){const t=r.get("ignoredValidationProperties")||[];let o;a.silly("ignored validation properties: "+t),o=r.get("applyUpdateValidation")?await Promise.all(e.map(((e,r)=>Promise.resolve(e.hasErrors(l[r],...t))))):await Promise.resolve(e.map((e=>e.hasErrors(...t))));const n=i.reduceErrorsToPrint(o);if(n)throw new i.ValidationError(n)}return[e,...n,l]}}class T extends i.BaseError{constructor(e){super(T.name,e,404)}}class M extends r.Paginator{constructor(e,t,r,i){super(e,t,r,i)}prepare(e){const t=Object.assign({},e);return t.limit&&(this.limit=t.limit),t.limit=this.size,t}async page(e=1,n,...a){const{log:s,ctxArgs:c,ctx:u}=this.adapter.logCtx([n,...a],this.page);if(this.isPreparedStatement())return await this.pagePrepared(e,...c);const l=Object.assign({},this.statement);if(this._recordCount&&this._totalPages)e=this.validatePage(e),l.skip=(e-1)*this.size;else{this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...l,limit:Number.MAX_VALUE},!0,...c)||[];if(this._recordCount=t.length,this._recordCount>0){const t=l?.limit||this.size;return this._totalPages=Math.ceil(this._recordCount/t),await this.page(e,...c)}}if(1!==e){if(!this._bookmark)throw new r.PagingError("No bookmark. Did you start in the first page?");l.bookmark=this._bookmark}const d=await this.adapter.raw(l,!1,...c),{docs:p,bookmark:g,warning:f}=d;if(f&&s.warn(f),!this.clazz)throw new r.PagingError("No statement target defined");const h=o.Model.pk(this.clazz),m=t.Metadata.get(this.clazz,t.Metadata.key(i.DBKeys.ID,h))?.type,y=l.fields&&l.fields.length?p:p.map((e=>this.adapter.revert(e,this.clazz,r.Sequence.parseValue(m,e[h]),void 0,u)));return this._bookmark=g,this._currentPage=e,y}}function _(e){for(const t of[u,l]){const r=Object.keys(t).find((t=>t===e));if(r)return t[r]}throw new r.QueryError("Could not find adapter translation for operator "+e)}function x(e){if(!e)return"\0";const t=Array.from(e);for(let e=t.length-1;e>=0;e-=1){const r=t[e].codePointAt(0);if(void 0!==r&&1114111>r)return t[e]=String.fromCodePoint(r+1),t.slice(0,e+1).join("")}return e+"\0"}class C extends r.Statement{constructor(e){super(e),this.attributeTypeCache=new Map}build(){const e=this.log.for(this.build);this.manualAggregation=void 0;const t=this.buildAggregateInfo();if(t){if(!this.shouldUseManualAggregation())return this.createAggregateQuery(t);this.manualAggregation=t}const i={};i[c.TABLE]={},i[c.TABLE]=o.Model.tableName(this.fromSelector);const n={selector:i};if(this.selectSelector&&(n.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(r.Condition.and(this.whereCondition,r.Condition.attribute(c.TABLE).eq(n.selector[c.TABLE]))).selector,i=Object.keys(t);if(1===i.length&&-1!==Object.values(l).indexOf(i[0]))switch(i[0]){case l.AND:t[l.AND]=[...Object.values(t[l.AND]).reduce(((e,t)=>{const r=Object.keys(t);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const i=r[0];return i===l.AND?e.push(...t[i]):e.push(t),e}),[])],n.selector=t;break;case l.OR:{const e={};e[l.AND]=[t,...Object.entries(n.selector).map((([e,t])=>{const r={};return r[e]=t,r}))],n.selector=e;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach((([t,r])=>{n.selector[t]&&e.warn(`A ${t} query param is about to be overridden: ${n.selector[t]} by ${r}`),n.selector[t]=r}))}if(this.orderBySelectors?.length){n.sort=n.sort||[],n.selector=n.selector||{};for(const[e,t]of this.orderBySelectors){const r=e,i={};i[r]=t,n.sort.push(i),n.selector[r]||(n.selector[r]={},n.selector[r][u.BIGGER]=null)}}const a=!!this.manualAggregation;return this.limitSelector?n.limit=this.limitSelector:a||(e.warn("No limit selector defined. Using default couchdb limit of 250"),n.limit=250),this.offsetSelector&&(n.skip=this.offsetSelector),n}processRecord(e,t,i,o){if(e[c.ID]){const[,...t]=e[c.ID].split(c.SEPARATOR),n=t.join("_");return this.adapter.revert(e,this.fromSelector,r.Sequence.parseValue(i,n),void 0,o)}return e}async raw(e,...r){const{ctx:n}=this.logCtx(r,this.raw),a=e?.aggregateInfo;if(e?.aggregate&&a)return this.executeAggregate(a,n);const s=await this.adapter.raw(e,!0,n),c=o.Model.pk(this.fromSelector),u=t.Metadata.get(this.fromSelector,t.Metadata.key(i.DBKeys.ID,c))?.type,l=s.map((e=>this.processRecord(e,c,u,n)));if(this.manualAggregation){const e=this.executeManualAggregation(l,this.manualAggregation,n);return this.manualAggregation=void 0,e}return!this.selectSelector&&this.groupBySelectors?.length?this.groupSelectResults(l):this.selectSelector?s:l}buildAggregateInfo(){if(this.fromSelector){if(this.avgSelector){const e=this.avgSelector+"",t=this.createAggregateDescriptor("sum",e);if(!t)throw this.missingDecorator("sum",e);const r=this.createAggregateDescriptor("count",e);if(!r)throw this.missingDecorator("count",e);return{kind:"avg",attribute:e,sumDescriptor:t.descriptor,countDescriptor:r.descriptor}}if(void 0!==this.countDistinctSelector){const e=this.resolveSelectorAttribute(this.countDistinctSelector),t=this.createAggregateDescriptor("distinct",e);if(!t)throw this.missingDecorator("distinct",e);return t.countDistinct=!0,t}if(void 0!==this.countSelector){const e=this.resolveSelectorAttribute(this.countSelector),t=this.createAggregateDescriptor("count",e);if(!t)throw this.missingDecorator("count",e);return t}if(this.maxSelector){const e=this.resolveSelectorAttribute(this.maxSelector),t=this.createAggregateDescriptor("max",e);if(!t)throw this.missingDecorator("max",e);return t}if(this.minSelector){const e=this.resolveSelectorAttribute(this.minSelector),t=this.createAggregateDescriptor("min",e);if(!t)throw this.missingDecorator("min",e);return t}if(this.sumSelector){const e=this.resolveSelectorAttribute(this.sumSelector),t=this.createAggregateDescriptor("sum",e);if(!t)throw this.missingDecorator("sum",e);return t}if(this.distinctSelector){const e=this.resolveSelectorAttribute(this.distinctSelector),t=this.createAggregateDescriptor("distinct",e);if(!t)throw this.missingDecorator("distinct",e);return t}}}createAggregateDescriptor(e,t){if(!this.fromSelector)return;const r=E(this.fromSelector,e,t);if(!r.length)return;const i=r[0],n=o.Model.tableName(this.fromSelector),a=y(n,i.attribute,e,i),s=i.ddoc||A(n,a),c={reduce:void 0!==i.reduce||!i.returnDocs};return"distinct"!==e&&"groupBy"!==e||(c.group=!0),{kind:e,meta:i,descriptor:{ddoc:s,view:a,options:c}}}createAggregateQuery(e){return{selector:{},aggregate:!0,aggregateInfo:e}}shouldUseManualAggregation(){return!!this.whereCondition}async executeAggregate(e,t){if(!this.isViewAggregate(e))return this.handleAverage(e,t);const r=this.getCouchAdapter(),i=e,o=await r.view(i.descriptor.ddoc,i.descriptor.view,i.descriptor.options,t);return this.processViewResponse(e,o)}async handleAverage(e,t){if("avg"!==e.kind)throw new r.QueryError("Average descriptor is not valid");const[i,o]=[e.sumDescriptor,e.countDescriptor],n=this.getCouchAdapter(),[a,s]=await Promise.all([n.view(i.ddoc,i.view,i.options,t),n.view(o.ddoc,o.view,o.options,t)]),c=a.rows?.[0]?.value??0,u=s.rows?.[0]?.value??0;return u?c/u:0}executeManualAggregation(e,t,i){if(!this.fromSelector)throw new r.QueryError("Manual aggregation requires a target model");if("avg"===t.kind)return this.computeAverage(e,t.attribute);if("groupBy"===t.kind)return this.computeGroupBy(e,t.meta.attribute);const o=t.meta.attribute;switch(t.kind){case"count":return t.countDistinct?this.computeDistinctCount(e,o):this.computeCount(e,o);case"distinct":return t.countDistinct?this.computeDistinctCount(e,o):this.computeDistinctValues(e,o);case"sum":return this.computeSum(e,o);case"min":return this.computeMinMax(e,o,"min");case"max":return this.computeMinMax(e,o,"max");default:throw new r.QueryError("Unsupported manual aggregation "+t.kind)}}computeCount(e,t){return t?this.collectValues(e,t).filter((e=>null!=e)).length:e.length}computeDistinctCount(e,t){const r=t?this.collectValues(e,t).filter((e=>null!=e)):e,i=new Set;return r.forEach((e=>i.add(JSON.stringify(e)))),i.size}computeDistinctValues(e,t){if(!t)return[];const r=this.collectValues(e,t),i=new Set,o=[];return r.forEach((e=>{const t=JSON.stringify(e);i.has(t)||(i.add(t),o.push(e))})),o}computeSum(e,t){return t?this.collectValues(e,t).filter((e=>null!=e)).reduce(((e,r)=>e+this.toNumericValue(r,t,"SUM operation")),0):e.length}computeAverage(e,t){if(!t)return 0;const r=this.collectValues(e,t).filter((e=>null!=e));return r.length?r.reduce(((e,r)=>e+this.toNumericValue(r,t,"AVG operation")),0)/r.length:0}computeMinMax(e,t,r){if(!t)return null;const i=this.collectValues(e,t).filter((e=>null!=e));let o=null,n=null;for(const e of i){const t=this.normalizeComparable(e);null!==t&&(null!==n?("min"===r&&n>t||"max"===r&&t>n)&&(n=t,o=e):(n=t,o=e))}return o}computeGroupBy(e,t){const r={},i=this.collectValues(e,t);return e.forEach(((e,t)=>{const o=this.groupKey(i[t]);r[o]||(r[o]=[]),r[o].push(e)})),r}groupSelectResults(e){if(!this.groupBySelectors?.length)return{};const t=this.resolveSelectorAttribute(this.groupBySelectors[0]);if(!t)return{};const r={};return e.forEach((e=>{const i=this.groupKey(this.convertValueByAttribute(t,e[t]));r[i]||(r[i]=[]),r[i].push(e)})),r}collectValues(e,t){return e.map((e=>{if(e&&"object"==typeof e)return this.convertValueByAttribute(t,e[t])}))}convertValueByAttribute(e,t){if(!this.fromSelector)return t;if("date"===this.getAttributeType(e)){if(t instanceof Date)return t;const e=new Date(t);if(!Number.isNaN(e.getTime()))return e}if("string"==typeof t&&e.toLowerCase().includes("date")){const e=new Date(t);if(!Number.isNaN(e.getTime()))return e}return t}getAttributeType(e){if(!e||!this.fromSelector)return;if(this.attributeTypeCache.has(e))return this.attributeTypeCache.get(e);const r=t.Metadata.type(this.fromSelector,e)??t.Metadata.getPropDesignTypes?.(this.fromSelector,e)?.designType,i=this.normalizeMetaType(r);return this.attributeTypeCache.set(e,i),i}normalizeMetaType(e){if(e)return"string"==typeof e?e.toLowerCase():"function"==typeof e&&e.name?e.name.toLowerCase():void 0}normalizeComparable(e){return"number"==typeof e?e:"bigint"==typeof e?Number(e):e instanceof Date?e.getTime():"string"!=typeof e||isNaN(Number(e))?null:Number(e)}groupKey(e){if(void 0===e)return"undefined";if(null===e)return"null";if("symbol"==typeof e)return e.toString();if("object"==typeof e)try{return JSON.stringify(e)}catch{return e+""}return e+""}toNumericValue(e,t,i){if("number"==typeof e)return e;if("bigint"==typeof e)return Number(e);if(e instanceof Date)return e.getTime();if("string"==typeof e&&!isNaN(Number(e)))return Number(e);throw new r.QueryError(`${i} on "${t}" requires numeric values, but got ${typeof e}`)}convertAggregateValue(e,t){return e?this.convertValueByAttribute(e,t):t}resolveSelectorAttribute(e){if(null!=e)return e+""}missingDecorator(e,t){const i=this.decoratorForKind(e),n=this.fromSelector?o.Model.tableName(this.fromSelector):"<unknown table>",a=t?` on "${t}"`:"";return new r.UnsupportedError(`${i} decorator is required for CouchDB ${e} aggregation${a} on table "${n}".`)}decoratorForKind(e){return{count:"@count",sum:"@sum",min:"@min",max:"@max",distinct:"@distinct",groupBy:"@groupBy",view:"@view",avg:"@avg"}[e]||"@"+e}processViewResponse(e,t){if("avg"===e.kind)throw new r.QueryError("Average results should be handled before processing rows");const i=t.rows||[],o=e,n=o.meta;return o.countDistinct?i.length||0:"distinct"===o.kind||"groupBy"===o.kind?i.map((e=>this.convertAggregateValue(o.meta.attribute,e.key??e.value))):n.returnDocs?i.map((e=>e.value??e.doc??e)):i.length?this.convertAggregateValue(o.meta.attribute,i[0].value??i[0].key??null):"count"===o.kind?0:null}isViewAggregate(e){return"avg"!==e.kind}getCouchAdapter(){return this.adapter}parseCondition(e){const{attr1:t,operator:i,comparison:o}=e;if(i===r.Operator.STARTS_WITH){if("string"!=typeof t)throw new r.QueryError("STARTS_WITH requires an attribute name");if("string"!=typeof o)throw new r.QueryError("STARTS_WITH requires a string comparison");const e={start:n=o,end:x(n)};return{selector:{[t]:{[u.BIGGER_EQ]:e.start,[u.SMALLER]:e.end}}}}var n,a;if(i===r.Operator.ENDS_WITH){if("string"!=typeof t)throw new r.QueryError("ENDS_WITH requires an attribute name");if("string"!=typeof o)throw new r.QueryError("ENDS_WITH requires a string comparison");return{selector:{[t]:{[u.REGEXP]:(a=o,a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"$")}}}}if(i===r.Operator.BETWEEN){const e=t;if(!Array.isArray(o)||2!==o.length)throw new r.QueryError("BETWEEN operator requires [min, max] comparison");const[i,n]=o,a={};return a[e]={},a[e][_(r.Operator.BIGGER_EQ)]=i,a[e][_(r.Operator.SMALLER_EQ)]=n,{selector:a}}let s={};if(-1===[r.GroupOperator.AND,r.GroupOperator.OR,r.Operator.NOT].indexOf(i))s[t]={},s[t][_(i)]=o;else if(i===r.Operator.NOT)s=this.parseCondition(t).selector,s[_(r.Operator.NOT)]={},s[_(r.Operator.NOT)][t.attr1]=o;else{const e=this.parseCondition(t).selector,r=this.parseCondition(o).selector;s=((e,t,r)=>{const i={selector:{}};return i.selector[e]=[t,r],i})(_(i),e,r).selector}return{selector:s}}}class I extends r.Adapter{constructor(e,t,r){super(e,t,r),[this.create,this.createAll,this.update,this.updateAll].forEach((e=>{const t=e.name;i.prefixMethod(this,e,this[t+"Prefix"])}))}Statement(){return new C(this)}Paginator(e,t,r){return new M(this,e,t,r)}async initialize(){const e=r.Adapter.models(this.flavour);return this.index(...e)}repository(){return N}assignMetadata(e,t){return t?(D(e,t),e):e}assignMultipleMetadata(e,t){return e.forEach(((e,r)=>(D(e,t[r]),e))),e}prepare(e,...t){const{log:n}=this.logCtx(t,this.prepare),a=e.segregate(),s=Object.entries(a.model).reduce(((t,[r,n])=>{if(void 0===n)return t;const a=o.Model.columnName(e.constructor,r);if(this.isReserved(a))throw new i.InternalError(`Property name ${a} is reserved`);return n=n instanceof Date?new Date(n):n,t[a]=n,t}),{});return e[r.PersistenceKeys.METADATA]&&(n.silly("Passing along persistence metadata for "+e[r.PersistenceKeys.METADATA]),Object.defineProperty(s,r.PersistenceKeys.METADATA,{enumerable:!1,writable:!0,configurable:!0,value:e[r.PersistenceKeys.METADATA]})),{record:s,id:e[o.Model.pk(e.constructor)],transient:a.transient}}createPrefix(e,t,r,...i){const{ctxArgs:n}=this.logCtx(i,this.createPrefix),a=o.Model.tableName(e),s={};return s[c.TABLE]=a,s[c.ID]=this.generateId(a,t),Object.assign(s,r),[e,t,s,...n]}createAllPrefix(e,t,r,...n){const a=o.Model.tableName(e);if(t.length!==r.length)throw new i.InternalError("Ids and models must have the same length");const{ctxArgs:s}=this.logCtx(n,this.createAllPrefix),u=t.map(((e,t)=>{const i={};return i[c.TABLE]=a,i[c.ID]=this.generateId(a,e),Object.assign(i,r[t]),i}));return[e,t,u,...s]}updatePrefix(e,t,n,...a){const s=o.Model.tableName(e),{ctxArgs:u}=this.logCtx(a,this.updatePrefix),l={};l[c.TABLE]=s,l[c.ID]=this.generateId(s,t);const d=n[r.PersistenceKeys.METADATA];if(!d)throw new i.InternalError("No revision number found for record with id "+t);return Object.assign(l,n),l[c.REV]=d,[e,t,l,...u]}updateAllPrefix(e,t,n,...a){const s=o.Model.tableName(e);if(t.length!==n.length)throw new i.InternalError("Ids and models must have the same length");const{ctxArgs:u}=this.logCtx(a,this.updateAllPrefix),l=t.map(((e,t)=>{const o={};o[c.TABLE]=s,o[c.ID]=this.generateId(s,e);const a=n[t][r.PersistenceKeys.METADATA];if(!a)throw new i.InternalError("No revision number found for record with id "+e);return Object.assign(o,n[t]),o[c.REV]=a,o}));return[e,t,l,...u]}generateId(e,t){return[e,t].join(c.SEPARATOR)}parseError(e,t){return I.parseError(e,t)}isReserved(e){return!!e.match(s)}static parseError(e,t){if(e instanceof i.BaseError)return e;let o="";if("string"==typeof e){if(o=e,o.match(/already exist|update conflict/g))return new i.ConflictError(o);if(o.match(/missing|deleted/g))return new i.NotFoundError(o)}else e.code?(o=e.code,t=t||e.message):e.statusCode?(o=e.statusCode,t=t||e.message):o=e.message;switch(o.toString()){case"401":case"412":case"409":return new i.ConflictError(t);case"404":return new i.NotFoundError(t);case"400":return o.toString().match(/No\sindex\sexists/g)?new T(e):new i.InternalError(e);default:return o.toString().match(/ECONNREFUSED/g)?new r.ConnectionError(e):new i.InternalError(e)}}static setMetadata(e,t){D(e,t)}static getMetadata(e){return v(e)}static removeMetadata(e){S(e)}}n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[]),n.__metadata("design:returntype",C)],I.prototype,"Statement",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,String]),n.__metadata("design:returntype",Object)],I.prototype,"assignMetadata",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Array,Array]),n.__metadata("design:returntype",Array)],I.prototype,"assignMultipleMetadata",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,Object,Object,Object]),n.__metadata("design:returntype",Array)],I.prototype,"createPrefix",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,Array,Array,Object]),n.__metadata("design:returntype",void 0)],I.prototype,"createAllPrefix",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,Object,Object,Object]),n.__metadata("design:returntype",void 0)],I.prototype,"updatePrefix",null),n.__decorate([a.final(),n.__metadata("design:type",Function),n.__metadata("design:paramtypes",[Object,Array,Array,Object]),n.__metadata("design:returntype",void 0)],I.prototype,"updateAllPrefix",null);const $="##VERSION##",j="##PACKAGE##";t.Metadata.registerLibrary(j,$),e.CouchDBAdapter=I,e.CouchDBConst={NULL:"null"},e.CouchDBGroupOperator=l,e.CouchDBKeys=c,e.CouchDBOperator=u,e.CouchDBPaginator=M,e.CouchDBQueryLimit=250,e.CouchDBRepository=N,e.CouchDBStatement=C,e.IndexError=T,e.PACKAGE_NAME=j,e.VERSION=$,e.collectViewMetadata=O,e.count=(e,i)=>{let o={};return e instanceof r.Condition?o.condition=e:"object"==typeof e&&e?o=e:void 0!==e&&(o.value=e),i&&(o=Object.assign({},o,i)),t.Decoration.for(r.Operator.COUNT).define({decorator:e=>r.applyViewDecorator(r.Operator.COUNT,"count",e),args:[o]}).apply()},e.distinct=(e,i)=>{let o={};return e instanceof r.Condition?o.condition=e:e&&(o=e),i&&(o=Object.assign({},o,i)),t.Decoration.for(r.Operator.DISTINCT).define({decorator:e=>r.applyViewDecorator(r.Operator.DISTINCT,"distinct",e),args:[o]}).apply()},e.findViewMetadata=E,e.generateDesignDocName=A,e.generateIndexDoc=g,e.generateIndexName=p,e.generateIndexes=e=>{const t=w([c.TABLE]),n={};return n[t]={index:{fields:[c.TABLE]},name:t,ddoc:t,type:"json"},e.forEach((e=>{const t=o.Model.tableName(e);let a=[];try{a=o.Model.defaultQueryAttributes(e)}catch(e){a=[]}a.forEach((e=>{const i=w([t,e,"defaultQuery"]),o={[c.TABLE]:{[u.EQUAL]:t}};n[i]={index:{fields:[c.TABLE,e]},name:i,ddoc:i,type:"json"},n[i].index.partial_filter_selector=o,[r.OrderDirection.ASC,r.OrderDirection.DSC].forEach((r=>{const i=w([t,e,"defaultQuery"],r);n[i]={index:{fields:[{[c.TABLE]:r},{[e]:r}]},name:i,ddoc:i,type:"json"}}))}));const s=o.Model.indexes(e);Object.entries(s).forEach((([e,o])=>{const a=[];Object.entries(o||{}).forEach((([,t])=>{if(!t)return;const r=t;void 0===r.directions&&void 0===r.compositions?"object"!=typeof t||Array.isArray(t)||Object.entries(t).forEach((([e,t])=>{t&&a.push([e,t])})):a.push([e,r])})),a.forEach((([e,o])=>{if(!o)return;let{directions:a,compositions:s}=o;const l=t;s=s||[];const d=[e,...s],p={[c.TABLE]:{[u.EQUAL]:l}};function g(t,o){const a=[l,e,...s,...o?[o]:[],r.PersistenceKeys.INDEX].join(i.DefaultSeparator),u=[c.TABLE,...d],g=t?[{[c.TABLE]:t},...d.map((e=>({[e]:t})))]:u;n[a]={index:{fields:g},name:a,ddoc:a,type:"json"},t||(n[a].index.partial_filter_selector=p)}g(),Array.from(new Set((a||[r.OrderDirection.ASC]).map((e=>(e+"").toLowerCase())))).filter((e=>e===r.OrderDirection.ASC||e===r.OrderDirection.DSC)).forEach((e=>{g(e,e)}))}))}))})),b(e).forEach((e=>{e.name&&(n[e.name]=e)})),Object.values(n)},e.generateViewIndexes=b,e.generateViewName=y,e.generateViews=e=>{const t={},i=[[c.VIEW,"view"],[r.Operator.GROUP_BY,"groupBy"],[r.Operator.COUNT,"count"],[r.Operator.SUM,"sum"],[r.Operator.MAX,"max"],[r.Operator.MIN,"min"],[r.Operator.DISTINCT,"distinct"]];return e.forEach((e=>{const n=o.Model.tableName(e);i.flatMap((([t,r])=>O(e,t,r))).forEach((e=>{const i=e.attribute,o=y(n,i,e.kind,e),a="_design/"+(e.ddoc||A(n,o)),s=((e,t,i,o)=>{const n=((e,t,i)=>{if(i.map)return"function"==typeof i.map?i.map.toString():i.map;const o=[];if(o.push(`doc[${JSON.stringify(c.TABLE)}] === ${JSON.stringify(e)}`),i.condition)if(i.condition instanceof r.Condition)o.push(h(i.condition,"doc"));else if("string"==typeof i.condition)o.push(i.condition);else{const e=r.Condition.from(i.condition);o.push(h(e,"doc"))}"count"===i.kind&&void 0!==i.value&&o.push(`doc[${JSON.stringify(t)}] === ${f(i.value)}`);const n=((e,t="doc")=>{if(!e)return;if("string"==typeof e)return e;const r=e.field||"roles",i=e.roles||[];if(!i.length)return e.expression;const o=`${t}[${JSON.stringify(r)}] || []`;return"all"===(e.mode||"any")?i.map((e=>`${o}.indexOf(${JSON.stringify(e)}) !== -1`)).join(" && "):i.map((e=>`${o}.indexOf(${JSON.stringify(e)}) !== -1`)).join(" || ")})(i.auth,"doc");n&&o.push(n);const a=o.length?o.join(" && "):"true",s=((e,t,r)=>{const i=m(e,t,r);return 1===i.length?`doc[${JSON.stringify(i[0])}]`:`[${i.map((e=>`doc[${JSON.stringify(e)}]`)).join(", ")}]`})(i.key,t,i.compositions),u=((e,t)=>"doc"===e?"doc":e?Array.isArray(e)?`[${e.map((e=>`doc[${JSON.stringify(e)}]`)).join(", ")}]`:"string"==typeof e?`doc[${JSON.stringify(e)}]`:f(e):`doc[${JSON.stringify(t)}]`)(i.value??(i.returnDocs&&"sum"!==i.kind?"doc":void 0),t);return`function (doc) {\n if (!(${a})) return;\n emit(${s}, ${u});\n}`})(o,t,i),a=i.reduce?"function"==typeof i.reduce?i.reduce.toString():i.reduce:(e=>{switch(e){case"count":case"groupBy":case"distinct":return"_count";case"sum":return"_sum";case"max":return"function (keys, values, rereduce) {\n var maxVal = null;\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (rereduce && val && typeof val === 'object' && 'value' in val) val = val.value;\n if (maxVal === null || val > maxVal) maxVal = val;\n }\n return maxVal;\n}";case"min":return"function (keys, values, rereduce) {\n var minVal = null;\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (rereduce && val && typeof val === 'object' && 'value' in val) val = val.value;\n if (minVal === null || val < minVal) minVal = val;\n }\n return minVal;\n}";default:return}})(e);return{map:n,reduce:a}})(e.kind,i,e,n);t[a]||(t[a]={_id:a,language:"javascript",views:{}}),t[a].views[o]=s}))})),Object.values(t)},e.getMetadata=v,e.groupBy=(e,i)=>{let o={};return Array.isArray(e)?o.compositions=e:"string"==typeof e?o.name=e:e&&(o=e),"string"==typeof i?o.name=i:i&&(o=Object.assign({},o,i)),void 0===o.returnDocs&&(o.returnDocs=!0),t.Decoration.for(r.Operator.GROUP_BY).define({decorator:e=>r.applyViewDecorator(r.Operator.GROUP_BY,"groupBy",e),args:[o]}).apply()},e.max=(e,i)=>{let o={};return e instanceof r.Condition?o.condition=e:e&&(o=e),i&&(o=Object.assign({},o,i)),t.Decoration.for(r.Operator.MAX).define({decorator:e=>r.applyViewDecorator(r.Operator.MAX,"max",e),args:[o]}).apply()},e.min=(e,i)=>{let o={};return e instanceof r.Condition?o.condition=e:e&&(o=e),i&&(o=Object.assign({},o,i)),t.Decoration.for(r.Operator.MIN).define({decorator:e=>r.applyViewDecorator(r.Operator.MIN,"min",e),args:[o]}).apply()},e.reAuth=d,e.removeMetadata=S,e.reservedAttributes=s,e.setMetadata=D,e.sum=(e,i)=>{let o={};return e instanceof r.Condition?o.condition=e:e&&(o=e),i&&(o=Object.assign({},o,i)),t.Decoration.for(r.Operator.SUM).define({decorator:e=>r.applyViewDecorator(r.Operator.SUM,"sum",e),args:[o]}).apply()},e.testReservedAttributes=e=>e.match(/^_.*$/g),e.translateOperators=_,e.viewIndexDefinition=e=>{const t=m(e.key,e.attribute);return{attribute:t[0],compositions:t.slice(1).concat(e.compositions||[]),directions:e.directions}},e.wrapDocumentScope=(e,t,r,i)=>{const o=e.use?e.use(t):e;return["insert","get","put","destroy","find","view"].forEach((t=>{const n=o[t];Object.defineProperty(o,t,{enumerable:!1,configurable:!0,value:async(...t)=>(await d(e,r,i),n.call(o,...t))})})),Object.defineProperty(o,c.NATIVE,{enumerable:!1,configurable:!1,writable:!1,value:e}),o}},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("@decaf-ts/decorator-validation"),require("tslib"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/core","@decaf-ts/db-decorators","@decaf-ts/decorator-validation","tslib","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-couchdb"]={},e.decafTsDecoration,e.decafTsCore,e.decafTsDbDecorators,e.decafTsDecoratorValidation,e.tslib,e.decafTsLogging);
2
2
  //# sourceMappingURL=for-couchdb.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-couchdb.cjs","sources":["../src/constants.ts","../src/query/constants.ts","../src/utils.ts","../src/views/generator.ts","../src/metadata.ts","../src/repository.ts","../src/errors.ts","../src/query/Paginator.ts","../src/query/translate.ts","../src/query/Statement.ts","../src/adapter.ts","../src/index.ts","../src/decorators.ts","../src/indexes/generator.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["reservedAttributes","CouchDBKeys","SEPARATOR","ID","REV","DELETED","TABLE","SEQUENCE","DDOC","NATIVE","INDEX","VIEW","CouchDBOperator","EQUAL","DIFFERENT","BIGGER","BIGGER_EQ","SMALLER","SMALLER_EQ","NOT","IN","REGEXP","CouchDBGroupOperator","AND","OR","async","reAuth","con","user","pass","auth","generateIndexName","attribute","tableName","compositions","order","separator","DefaultSeparator","attr","PersistenceKeys","push","join","generateIndexDoc","partialFilterSelector","fields","orderProp","sortedCompositions","map","c","r","sortedTable","name","index","ddoc","toJsLiteral","value","Date","JSON","stringify","toISOString","RegExp","source","flags","conditionToJs","condition","docVar","attr1","operator","comparison","Condition","left","Operator","right","GroupOperator","attrExpr","normalizeKey","key","Array","isArray","generateViewName","kind","meta","replace","generateDesignDocName","viewName","findViewMetadata","model","view","groupBy","GROUP_BY","count","COUNT","sum","SUM","max","MAX","min","MIN","distinct","DISTINCT","Metadata","get","Object","entries","flatMap","values","entry","filter","collectViewMetadata","generateViewIndexes","models","indexes","viewKeys","forEach","m","Model","length","slice","directions","OrderDirection","ASC","DSC","baseIndex","direction","dirIndex","setMetadata","metadata","defineProperty","METADATA","enumerable","configurable","writable","getMetadata","descriptor","getOwnPropertyDescriptor","undefined","removeMetadata","CouchDBRepository","Repository","constructor","adapter","super","assignMetadata","target","apply","instance","carrier","create","args","result","this","createAll","results","read","id","readAll","ids","update","updateAll","delete","deleteAll","updatePrefix","ctx","ctxArgs","log","logCtx","OperationKeys","UPDATE","for","ignoreHandlers","ignoreValidate","silly","pk","InternalError","oldModel","oldMetadata","merge","class","enforceDBDecorators","ON","propsToIgnore","errors","Promise","resolve","hasErrors","ValidationError","toString","updateAllPrefix","BulkCrudOperationKeys","UPDATE_ALL","oldModels","i","all","ignoredProps","modelsValidation","errorMessages","reduceErrorsToPrint","IndexError","BaseError","msg","CouchDBPaginator","Paginator","query","size","clazz","prepare","rawStatement","assign","limit","page","bookmark","isPreparedStatement","pagePrepared","statement","_recordCount","_totalPages","validatePage","skip","countResults","raw","Number","MAX_VALUE","Math","ceil","_bookmark","PagingError","rawResult","docs","nextBookmark","warning","warn","type","DBKeys","pageResults","d","revert","Sequence","parseValue","_currentPage","translateOperators","operators","el","keys","find","k","QueryError","CouchDBStatement","Statement","attributeTypeCache","Map","build","manualAggregation","aggregateInfo","buildAggregateInfo","shouldUseManualAggregation","createAggregateQuery","selectors","fromSelector","selector","selectSelector","whereCondition","parseCondition","and","eq","selectorKeys","indexOf","reduce","accum","val","Error","s","orderBySelectors","sort","selectorKey","rec","hasManualAggregate","limitSelector","offsetSelector","processRecord","pkAttr","sequenceType","keyArgs","split","rawInput","aggregator","aggregate","executeAggregate","processed","manualResult","executeManualAggregation","groupBySelectors","groupSelectResults","avgSelector","String","sumInfo","createAggregateDescriptor","missingDecorator","countInfo","sumDescriptor","countDescriptor","countDistinctSelector","resolveSelectorAttribute","info","countDistinct","countSelector","maxSelector","minSelector","sumSelector","distinctSelector","metas","options","returnDocs","group","isViewAggregate","handleAverage","couchAdapter","getCouchAdapter","viewInfo","response","processViewResponse","sumDesc","countDesc","sumResponse","countResponse","rows","computeAverage","computeGroupBy","computeDistinctCount","computeCount","computeDistinctValues","computeSum","computeMinMax","collectValues","seen","Set","add","unique","has","acc","toNumericValue","mode","currentValue","currentComparable","normalized","normalizeComparable","grouped","doc","groupKey","convertValueByAttribute","getAttributeType","parsed","isNaN","getTime","toLowerCase","includes","metaType","getPropDesignTypes","designType","normalizeMetaType","set","field","context","convertAggregateValue","decorator","decoratorForKind","table","attributeDesc","UnsupportedError","avg","row","BETWEEN","opBetween","op","op1","op2","obj1","obj2","CouchDBAdapter","Adapter","scope","flavour","alias","prefixMethod","initialize","managedModels","repository","rev","assignMultipleMetadata","revs","segregate","mappedProp","columnName","isReserved","record","transient","createPrefix","generateId","createAllPrefix","records","parseError","err","reason","match","code","ConflictError","NotFoundError","message","statusCode","ConnectionError","__decorate","final","prototype","VERSION","PACKAGE_NAME","registerLibrary","NULL","valueOrCondition","opts","Decoration","define","o","applyViewDecorator","conditionOrOptions","n","ind","metadataEntries","metadataValue","candidate","fieldKey","fieldKeys","tableFilter","generate","suffix","baseFields","sortField","partial_filter_selector","from","dir","viewDocs","ddocId","viewDef","guards","resolved","authGuard","roles","expression","listExpr","buildAuthGuard","guard","emitKey","buildEmitKey","emitValue","v","buildEmitValue","buildMapFunction","defaultReduce","normalizeViewMetadata","_id","language","views","compositionsOrOptions","nameOrOptions","concat","dbName","db","use","original","call"],"mappings":"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"}
1
+ {"version":3,"file":"for-couchdb.cjs","sources":["../src/constants.ts","../src/query/constants.ts","../src/utils.ts","../src/views/generator.ts","../src/indexes/generator.ts","../src/metadata.ts","../src/repository.ts","../src/errors.ts","../src/query/Paginator.ts","../src/query/translate.ts","../src/query/Statement.ts","../src/adapter.ts","../src/index.ts","../src/decorators.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["reservedAttributes","CouchDBKeys","SEPARATOR","ID","REV","DELETED","TABLE","SEQUENCE","DDOC","NATIVE","INDEX","VIEW","CouchDBOperator","EQUAL","DIFFERENT","BIGGER","BIGGER_EQ","SMALLER","SMALLER_EQ","NOT","IN","REGEXP","CouchDBGroupOperator","AND","OR","async","reAuth","con","user","pass","auth","generateIndexName","attribute","tableName","compositions","order","separator","DefaultSeparator","attr","PersistenceKeys","push","join","generateIndexDoc","partialFilterSelector","fields","orderProp","sortedCompositions","map","c","r","sortedTable","name","index","ddoc","toJsLiteral","value","Date","JSON","stringify","toISOString","RegExp","source","flags","conditionToJs","condition","docVar","attr1","operator","comparison","Condition","left","Operator","right","GroupOperator","attrExpr","normalizeKey","key","Array","isArray","generateViewName","kind","meta","replace","generateDesignDocName","viewName","findViewMetadata","model","view","groupBy","GROUP_BY","count","COUNT","sum","SUM","max","MAX","min","MIN","distinct","DISTINCT","Metadata","get","Object","entries","flatMap","values","entry","filter","collectViewMetadata","generateViewIndexes","models","indexes","viewKeys","forEach","m","Model","length","slice","directions","OrderDirection","ASC","DSC","baseIndex","direction","dirIndex","n","setMetadata","metadata","defineProperty","METADATA","enumerable","configurable","writable","getMetadata","descriptor","getOwnPropertyDescriptor","undefined","removeMetadata","CouchDBRepository","Repository","constructor","adapter","super","assignMetadata","target","apply","instance","carrier","create","args","result","this","createAll","results","read","id","readAll","ids","update","updateAll","delete","deleteAll","updatePrefix","ctx","ctxArgs","log","logCtx","OperationKeys","UPDATE","for","ignoreHandlers","ignoreValidate","silly","pk","InternalError","oldModel","oldMetadata","merge","class","enforceDBDecorators","ON","propsToIgnore","errors","Promise","resolve","hasErrors","ValidationError","toString","updateAllPrefix","BulkCrudOperationKeys","UPDATE_ALL","oldModels","i","all","ignoredProps","modelsValidation","errorMessages","reduceErrorsToPrint","IndexError","BaseError","msg","CouchDBPaginator","Paginator","query","size","clazz","prepare","rawStatement","assign","limit","page","bookmark","isPreparedStatement","pagePrepared","statement","_recordCount","_totalPages","validatePage","skip","countResults","raw","Number","MAX_VALUE","Math","ceil","_bookmark","PagingError","rawResult","docs","nextBookmark","warning","warn","type","DBKeys","pageResults","d","revert","Sequence","parseValue","_currentPage","translateOperators","operators","el","keys","find","k","QueryError","nextLexicographicString","chars","from","code","codePointAt","String","fromCodePoint","CouchDBStatement","Statement","attributeTypeCache","Map","build","manualAggregation","aggregateInfo","buildAggregateInfo","shouldUseManualAggregation","createAggregateQuery","selectors","fromSelector","selector","selectSelector","whereCondition","parseCondition","and","eq","selectorKeys","indexOf","reduce","accum","val","Error","s","orderBySelectors","sort","selectorKey","rec","hasManualAggregate","limitSelector","offsetSelector","processRecord","pkAttr","sequenceType","keyArgs","split","rawInput","aggregator","aggregate","executeAggregate","processed","manualResult","executeManualAggregation","groupBySelectors","groupSelectResults","avgSelector","sumInfo","createAggregateDescriptor","missingDecorator","countInfo","sumDescriptor","countDescriptor","countDistinctSelector","resolveSelectorAttribute","info","countDistinct","countSelector","maxSelector","minSelector","sumSelector","distinctSelector","metas","options","returnDocs","group","isViewAggregate","handleAverage","couchAdapter","getCouchAdapter","viewInfo","response","processViewResponse","sumDesc","countDesc","sumResponse","countResponse","rows","computeAverage","computeGroupBy","computeDistinctCount","computeCount","computeDistinctValues","computeSum","computeMinMax","collectValues","seen","Set","add","unique","has","acc","toNumericValue","mode","currentValue","currentComparable","normalized","normalizeComparable","grouped","doc","groupKey","convertValueByAttribute","getAttributeType","parsed","isNaN","getTime","toLowerCase","includes","metaType","getPropDesignTypes","designType","normalizeMetaType","set","field","context","convertAggregateValue","decorator","decoratorForKind","table","attributeDesc","UnsupportedError","avg","row","STARTS_WITH","range","start","prefix","end","ENDS_WITH","BETWEEN","opBetween","op","op1","op2","obj1","obj2","CouchDBAdapter","Adapter","scope","flavour","alias","prefixMethod","initialize","managedModels","repository","rev","assignMultipleMetadata","revs","segregate","mappedProp","columnName","isReserved","record","transient","createPrefix","generateId","createAllPrefix","records","parseError","err","reason","match","ConflictError","NotFoundError","message","statusCode","ConnectionError","__decorate","final","prototype","VERSION","PACKAGE_NAME","registerLibrary","NULL","valueOrCondition","opts","Decoration","define","o","applyViewDecorator","conditionOrOptions","modelTableName","defaultQueryAttrs","defaultQueryAttributes","baseName","defaultFilter","partial_filter_selector","sortedName","ind","metadataEntries","metadataValue","candidate","fieldKey","fieldKeys","tableFilter","generate","suffix","baseFields","sortField","dir","viewDocs","ddocId","viewDef","guards","resolved","authGuard","roles","expression","listExpr","buildAuthGuard","guard","emitKey","buildEmitKey","emitValue","v","buildEmitValue","buildMapFunction","defaultReduce","normalizeViewMetadata","_id","language","views","compositionsOrOptions","nameOrOptions","concat","dbName","db","use","original","call"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{Metadata as t,Decoration as e}from"@decaf-ts/decoration";import{PersistenceKeys as r,Operator as i,OrderDirection as n,Condition as s,GroupOperator as o,Repository as a,Paginator as c,PagingError as u,Sequence as l,QueryError as g,Statement as d,UnsupportedError as p,Adapter as h,ConnectionError as f,applyViewDecorator as m}from"@decaf-ts/core";import{DefaultSeparator as y,OperationKeys as A,InternalError as b,enforceDBDecorators as v,ValidationError as w,BulkCrudOperationKeys as E,reduceErrorsToPrint as S,BaseError as O,DBKeys as N,prefixMethod as D,ConflictError as x,NotFoundError as T}from"@decaf-ts/db-decorators";import{Model as $}from"@decaf-ts/decorator-validation";import{__decorate as j,__metadata as M}from"tslib";import{final as C}from"@decaf-ts/logging";const I=/^_.*$/g,P={SEPARATOR:"__",ID:"_id",REV:"_rev",DELETED:"_deleted",TABLE:"??table",SEQUENCE:"??sequence",DDOC:"ddoc",NATIVE:"__native",INDEX:"index",VIEW:"view"},V=250,k={EQUAL:"$eq",DIFFERENT:"$ne",BIGGER:"$gt",BIGGER_EQ:"$gte",SMALLER:"$lt",SMALLER_EQ:"$lte",NOT:"$not",IN:"$in",REGEXP:"$regex"},B={AND:"$and",OR:"$or"},R={NULL:"null"};async function L(t,e,r){return t.auth(e,r)}function _(t,e,r,i){const n=t.use?t.use(e):t;return["insert","get","put","destroy","find","view"].forEach(e=>{const s=n[e];Object.defineProperty(n,e,{enumerable:!1,configurable:!0,value:async(...e)=>(await L(t,r,i),s.call(n,...e))})}),Object.defineProperty(n,P.NATIVE,{enumerable:!1,configurable:!1,writable:!1,value:t}),n}function U(t){return t.match(/^_.*$/g)}function G(t,e,i,n,s=y){const o=[r.INDEX,e,t];return i&&o.push(...i),n&&o.push(n),o.join(s)}function J(t,e,r,i,n=y){const s={};let o;if(s[P.TABLE]={},s[P.TABLE].$eq=e,i){const e={};e[t]=i;const n=(r||[]).map(t=>{const e={};return e[t]=i,e}),s={};s[P.TABLE]=i,o=[e,...n,s]}else o=[t,...r||[],P.TABLE];const a=G(t,e,r,i,n);return{index:{fields:o},ddoc:[a,P.DDOC].join(n),name:a}}function z(t){return t instanceof Date?JSON.stringify(t.toISOString()):t instanceof RegExp?`new RegExp(${JSON.stringify(t.source)}, ${JSON.stringify(t.flags)})`:JSON.stringify(t)}function F(t,e){const{attr1:r,operator:n,comparison:a}=t;if(r instanceof s){const t=F(r,e);if(n===i.NOT)return`!(${t})`;const s=F(a,e);return n===o.AND?`(${t} && ${s})`:n===o.OR?`(${t} || ${s})`:t}const c=`${e}[${JSON.stringify(r)}]`;switch(n){case i.EQUAL:return`${c} === ${z(a)}`;case i.DIFFERENT:return`${c} !== ${z(a)}`;case i.BIGGER:return`${c} > ${z(a)}`;case i.BIGGER_EQ:return`${c} >= ${z(a)}`;case i.SMALLER:return`${c} < ${z(a)}`;case i.SMALLER_EQ:return`${c} <= ${z(a)}`;case i.IN:return`(${z(a)}).indexOf(${c}) !== -1`;case i.REGEXP:return`${a instanceof RegExp?z(a):`new RegExp(${JSON.stringify(a)})`}.test(${c})`;case i.NOT:return`!(${c} === ${z(a)})`;default:return"true"}}function X(t,e,r){return t?Array.isArray(t)?t:[t]:e?[e,...r||[]]:r||[]}function q(t,e,r,i,n=y){return i.name?i.name:[t,e,r,"view"].join(n).replace(/\s+/g,"_")}function Q(t,e,r=y){return[t,e,P.DDOC].join(r)}function K(e,r,n){const s={view:i.VIEW,groupBy:i.GROUP_BY,count:i.COUNT,sum:i.SUM,max:i.MAX,min:i.MIN,distinct:i.DISTINCT}[r];if(!s)return[];const o=t.get(e,s)||{};return Object.entries(o).flatMap(([t,e])=>e&&"object"==typeof e?Object.values(e).map(e=>({...e,kind:r,attribute:e.attribute||t})).filter(t=>!n||t.attribute===n):[])}function W(e,r,i){const n=t.get(e,r)||{};return Object.entries(n).flatMap(([t,e])=>e&&"object"==typeof e?Object.values(e).map(e=>{const r=e;return{...r,kind:i,attribute:r.attribute||t}}):[])}function Y(t){const e={},r=[[P.VIEW,"view"],[i.GROUP_BY,"groupBy"],[i.COUNT,"count"],[i.SUM,"sum"],[i.MAX,"max"],[i.MIN,"min"],[i.DISTINCT,"distinct"]];return t.forEach(t=>{const i=$.tableName(t);r.flatMap(([e,r])=>W(t,e,r)).forEach(t=>{const r=t.attribute,n=q(i,r,t.kind,t),o="_design/"+(t.ddoc||Q(i,n)),a=((t,e,r,i)=>{const n=((t,e,r)=>{if(r.map)return"function"==typeof r.map?r.map.toString():r.map;const i=[];if(i.push(`doc[${JSON.stringify(P.TABLE)}] === ${JSON.stringify(t)}`),r.condition)if(r.condition instanceof s)i.push(F(r.condition,"doc"));else if("string"==typeof r.condition)i.push(r.condition);else{const t=s.from(r.condition);i.push(F(t,"doc"))}"count"===r.kind&&void 0!==r.value&&i.push(`doc[${JSON.stringify(e)}] === ${z(r.value)}`);const n=((t,e="doc")=>{if(!t)return;if("string"==typeof t)return t;const r=t.field||"roles",i=t.roles||[];if(!i.length)return t.expression;const n=`${e}[${JSON.stringify(r)}] || []`;return"all"===(t.mode||"any")?i.map(t=>`${n}.indexOf(${JSON.stringify(t)}) !== -1`).join(" && "):i.map(t=>`${n}.indexOf(${JSON.stringify(t)}) !== -1`).join(" || ")})(r.auth,"doc");n&&i.push(n);const o=i.length?i.join(" && "):"true",a=((t,e,r)=>{const i=X(t,e,r);return 1===i.length?`doc[${JSON.stringify(i[0])}]`:`[${i.map(t=>`doc[${JSON.stringify(t)}]`).join(", ")}]`})(r.key,e,r.compositions),c=((t,e)=>"doc"===t?"doc":t?Array.isArray(t)?`[${t.map(t=>`doc[${JSON.stringify(t)}]`).join(", ")}]`:"string"==typeof t?`doc[${JSON.stringify(t)}]`:z(t):`doc[${JSON.stringify(e)}]`)(r.value??(r.returnDocs&&"sum"!==r.kind?"doc":void 0),e);return`function (doc) {\n if (!(${o})) return;\n emit(${a}, ${c});\n}`})(i,e,r),o=r.reduce?"function"==typeof r.reduce?r.reduce.toString():r.reduce:(t=>{switch(t){case"count":case"groupBy":case"distinct":return"_count";case"sum":return"_sum";case"max":return"function (keys, values, rereduce) {\n var maxVal = null;\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (rereduce && val && typeof val === 'object' && 'value' in val) val = val.value;\n if (maxVal === null || val > maxVal) maxVal = val;\n }\n return maxVal;\n}";case"min":return"function (keys, values, rereduce) {\n var minVal = null;\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (rereduce && val && typeof val === 'object' && 'value' in val) val = val.value;\n if (minVal === null || val < minVal) minVal = val;\n }\n return minVal;\n}";default:return}})(t);return{map:n,reduce:o}})(t.kind,r,t,i);e[o]||(e[o]={_id:o,language:"javascript",views:{}}),e[o].views[n]=a})}),Object.values(e)}function H(t){const e={},r=[[P.VIEW,"view"],[i.GROUP_BY,"groupBy"],[i.COUNT,"count"],[i.SUM,"sum"],[i.MAX,"max"],[i.MIN,"min"],[i.DISTINCT,"distinct"]];return t.forEach(t=>{const i=$.tableName(t);r.flatMap(([e,r])=>W(t,e,r)).forEach(t=>{const r=X(t.key,t.attribute,t.compositions);if(!r.length)return;const s=r[0],o=r.slice(1),a=t.directions||[n.ASC,n.DSC],c=J(s,i,o);e[c.name||""]=c,a.forEach(t=>{const r=J(s,i,o,t);e[r.name||""]=r})})}),Object.values(e)}function Z(t){const e=X(t.key,t.attribute);return{attribute:e[0],compositions:e.slice(1).concat(t.compositions||[]),directions:t.directions}}function tt(t){const e=((t,e,r,i=y)=>[...t.map(t=>t===P.TABLE?"table":t),...r||[],...e?[e]:[],P.INDEX].join(i))([P.TABLE]),i={};return i[e]={index:{fields:[P.TABLE]},name:e,ddoc:e,type:"json"},t.forEach(t=>{const e=$.indexes(t);Object.entries(e).forEach(([e,s])=>{const o=[];Object.entries(s||{}).forEach(([,t])=>{if(!t)return;const r=t;void 0===r.directions&&void 0===r.compositions?"object"!=typeof t||Array.isArray(t)||Object.entries(t).forEach(([t,e])=>{e&&o.push([t,e])}):o.push([e,r])}),o.forEach(([e,s])=>{if(!s)return;let{directions:o,compositions:a}=s;const c=$.tableName(t);a=a||[];const u=[e,...a],l={[P.TABLE]:{$eq:c}};function g(t,n){const s=[c,e,...a,...n?[n]:[],r.INDEX].join(y),o=[P.TABLE,...u],g=t?[{[P.TABLE]:t},...u.map(e=>({[e]:t}))]:o;i[s]={index:{fields:g},name:s,ddoc:s,type:"json"},t||(i[s].index.partial_filter_selector=l)}g(),Array.from(new Set((o||[n.ASC]).map(t=>(t+"").toLowerCase()))).filter(t=>t===n.ASC||t===n.DSC).forEach(t=>{g(t,t)})})})}),H(t).forEach(t=>{t.name&&(i[t.name]=t)}),Object.values(i)}function et(t,e){Object.defineProperty(t,r.METADATA,{enumerable:!1,configurable:!0,writable:!0,value:e})}function rt(t){const e=Object.getOwnPropertyDescriptor(t,r.METADATA);return e?e.value:void 0}function it(t){Object.getOwnPropertyDescriptor(t,r.METADATA)&&delete t[r.METADATA]}class nt extends a{constructor(t,e){super(t,e)}assignMetadata(t,e){const r=(t,e)=>{const r=rt(e??t);return r&&et(t,r),t};return Array.isArray(t)?t.map((t,i)=>{const n=Array.isArray(e)?e[i]:e;return r(t,n)}):r(t,Array.isArray(e)?e?.[0]:e)}async create(t,...e){const r=await super.create(t,...e);return this.assignMetadata(r),this.assignMetadata(t,r),r}async createAll(t,...e){const r=await super.createAll(t,...e);return this.assignMetadata(r),this.assignMetadata(t,r),r}async read(t,...e){const r=await super.read(t,...e);return this.assignMetadata(r)}async readAll(t,...e){const r=await super.readAll(t,...e);return this.assignMetadata(r)}async update(t,...e){const r=await super.update(t,...e);return this.assignMetadata(r),this.assignMetadata(t,r),r}async updateAll(t,...e){const r=await super.updateAll(t,...e);return this.assignMetadata(r),this.assignMetadata(t,r),r}async delete(t,...e){const r=await super.delete(t,...e);return this.assignMetadata(r)}async deleteAll(t,...e){const r=await super.deleteAll(t,...e);return this.assignMetadata(r)}async updatePrefix(t,...e){const{ctx:r,ctxArgs:i,log:n}=(await this.logCtx(e,A.UPDATE,!0)).for(this.updatePrefix),s=r.get("ignoreHandlers"),o=r.get("ignoreValidation");n.silly(`handlerSetting: ${s}, validationSetting: ${o}`);const a=t[this.pk];if(!a)throw new b("No value for the Id is defined under the property "+this.pk);let c,u;if(r.get("applyUpdateValidation")&&(c=await this.read(a),u=c?rt(c):void 0,r.get("mergeForUpdate")&&(t=$.merge(c,t,this.class))),s||await v(this,r,t,A.UPDATE,A.ON,c),!o){const e=r.get("ignoredValidationProperties")||[];n.silly("ignored validation properties: "+e);const i=await Promise.resolve(t.hasErrors(c,...e));if(i)throw new w(i.toString())}return u&&et(t,u),[t,...i,c]}async updateAllPrefix(t,...e){const{ctx:r,ctxArgs:i,log:n}=(await this.logCtx(e,E.UPDATE_ALL,!0)).for(this.updateAllPrefix),s=r.get("ignoreHandlers"),o=r.get("ignoreValidation");n.silly(`handlerSetting: ${s}, ignoredValidation: ${o}`);const a=t.map(t=>{const e=t[this.pk];if(!e)throw new b("missing id on update operation");return e});let c;if(r.get("applyUpdateValidation")&&(c=await this.readAll(a,r),t=t.map((t,e)=>{r.get("mergeForUpdate")&&(t=$.merge(c[e],t,this.class));const i=rt(c[e]);return i&&et(t,i),t})),s||await Promise.all(t.map((t,e)=>v(this,r,t,A.UPDATE,A.ON,c?c[e]:void 0))),!o){const e=r.get("ignoredValidationProperties")||[];let i;n.silly("ignored validation properties: "+e),i=r.get("applyUpdateValidation")?await Promise.all(t.map((t,r)=>Promise.resolve(t.hasErrors(c[r],...e)))):await Promise.resolve(t.map(t=>t.hasErrors(...e)));const s=S(i);if(s)throw new w(s)}return[t,...i,c]}}class st extends O{constructor(t){super(st.name,t,404)}}class ot extends c{constructor(t,e,r,i){super(t,e,r,i)}prepare(t){const e=Object.assign({},t);return e.limit&&(this.limit=e.limit),e.limit=this.size,e}async page(e=1,r,...i){const{log:n,ctxArgs:s,ctx:o}=this.adapter.logCtx([r,...i],this.page);if(this.isPreparedStatement())return await this.pagePrepared(e,...s);const a=Object.assign({},this.statement);if(this._recordCount&&this._totalPages)e=this.validatePage(e),a.skip=(e-1)*this.size;else{this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...a,limit:Number.MAX_VALUE},!0,...s)||[];if(this._recordCount=t.length,this._recordCount>0){const t=a?.limit||this.size;return this._totalPages=Math.ceil(this._recordCount/t),await this.page(e,...s)}}if(1!==e){if(!this._bookmark)throw new u("No bookmark. Did you start in the first page?");a.bookmark=this._bookmark}const c=await this.adapter.raw(a,!1,...s),{docs:g,bookmark:d,warning:p}=c;if(p&&n.warn(p),!this.clazz)throw new u("No statement target defined");const h=$.pk(this.clazz),f=t.get(this.clazz,t.key(N.ID,h))?.type,m=a.fields&&a.fields.length?g:g.map(t=>this.adapter.revert(t,this.clazz,l.parseValue(f,t[h]),void 0,o));return this._bookmark=d,this._currentPage=e,m}}function at(t){for(const e of[k,B]){const r=Object.keys(e).find(e=>e===t);if(r)return e[r]}throw new g("Could not find adapter translation for operator "+t)}class ct extends d{constructor(t){super(t),this.attributeTypeCache=new Map}build(){const t=this.log.for(this.build);this.manualAggregation=void 0;const e=this.buildAggregateInfo();if(e){if(!this.shouldUseManualAggregation())return this.createAggregateQuery(e);this.manualAggregation=e}const r={};r[P.TABLE]={},r[P.TABLE]=$.tableName(this.fromSelector);const i={selector:r};if(this.selectSelector&&(i.fields=this.selectSelector),this.whereCondition){const e=this.parseCondition(s.and(this.whereCondition,s.attribute(P.TABLE).eq(i.selector[P.TABLE]))).selector,r=Object.keys(e);if(1===r.length&&-1!==Object.values(B).indexOf(r[0]))switch(r[0]){case B.AND:e[B.AND]=[...Object.values(e[B.AND]).reduce((t,e)=>{const r=Object.keys(e);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const i=r[0];return i===B.AND?t.push(...e[i]):t.push(e),t},[])],i.selector=e;break;case B.OR:{const t={};t[B.AND]=[e,...Object.entries(i.selector).map(([t,e])=>{const r={};return r[t]=e,r})],i.selector=t;break}default:throw Error("This should be impossible")}else Object.entries(e).forEach(([e,r])=>{i.selector[e]&&t.warn(`A ${e} query param is about to be overridden: ${i.selector[e]} by ${r}`),i.selector[e]=r})}if(this.orderBySelectors?.length){i.sort=i.sort||[],i.selector=i.selector||{};for(const[t,e]of this.orderBySelectors){const r=t,n={};n[r]=e,i.sort.push(n),i.selector[r]||(i.selector[r]={},i.selector[r].$gt=null)}}const n=!!this.manualAggregation;return this.limitSelector?i.limit=this.limitSelector:n||(t.warn("No limit selector defined. Using default couchdb limit of 250"),i.limit=250),this.offsetSelector&&(i.skip=this.offsetSelector),i}processRecord(t,e,r,i){if(t[P.ID]){const[,...e]=t[P.ID].split(P.SEPARATOR),n=e.join("_");return this.adapter.revert(t,this.fromSelector,l.parseValue(r,n),void 0,i)}return t}async raw(e,...r){const{ctx:i}=this.logCtx(r,this.raw),n=e?.aggregateInfo;if(e?.aggregate&&n)return this.executeAggregate(n,i);const s=await this.adapter.raw(e,!0,i),o=$.pk(this.fromSelector),a=t.get(this.fromSelector,t.key(N.ID,o))?.type,c=s.map(t=>this.processRecord(t,o,a,i));if(this.manualAggregation){const t=this.executeManualAggregation(c,this.manualAggregation,i);return this.manualAggregation=void 0,t}return!this.selectSelector&&this.groupBySelectors?.length?this.groupSelectResults(c):this.selectSelector?s:c}buildAggregateInfo(){if(this.fromSelector){if(this.avgSelector){const t=this.avgSelector+"",e=this.createAggregateDescriptor("sum",t);if(!e)throw this.missingDecorator("sum",t);const r=this.createAggregateDescriptor("count",t);if(!r)throw this.missingDecorator("count",t);return{kind:"avg",attribute:t,sumDescriptor:e.descriptor,countDescriptor:r.descriptor}}if(void 0!==this.countDistinctSelector){const t=this.resolveSelectorAttribute(this.countDistinctSelector),e=this.createAggregateDescriptor("distinct",t);if(!e)throw this.missingDecorator("distinct",t);return e.countDistinct=!0,e}if(void 0!==this.countSelector){const t=this.resolveSelectorAttribute(this.countSelector),e=this.createAggregateDescriptor("count",t);if(!e)throw this.missingDecorator("count",t);return e}if(this.maxSelector){const t=this.resolveSelectorAttribute(this.maxSelector),e=this.createAggregateDescriptor("max",t);if(!e)throw this.missingDecorator("max",t);return e}if(this.minSelector){const t=this.resolveSelectorAttribute(this.minSelector),e=this.createAggregateDescriptor("min",t);if(!e)throw this.missingDecorator("min",t);return e}if(this.sumSelector){const t=this.resolveSelectorAttribute(this.sumSelector),e=this.createAggregateDescriptor("sum",t);if(!e)throw this.missingDecorator("sum",t);return e}if(this.distinctSelector){const t=this.resolveSelectorAttribute(this.distinctSelector),e=this.createAggregateDescriptor("distinct",t);if(!e)throw this.missingDecorator("distinct",t);return e}}}createAggregateDescriptor(t,e){if(!this.fromSelector)return;const r=K(this.fromSelector,t,e);if(!r.length)return;const i=r[0],n=$.tableName(this.fromSelector),s=q(n,i.attribute,t,i),o=i.ddoc||Q(n,s),a={reduce:void 0!==i.reduce||!i.returnDocs};return"distinct"!==t&&"groupBy"!==t||(a.group=!0),{kind:t,meta:i,descriptor:{ddoc:o,view:s,options:a}}}createAggregateQuery(t){return{selector:{},aggregate:!0,aggregateInfo:t}}shouldUseManualAggregation(){return!!this.whereCondition}async executeAggregate(t,e){if(!this.isViewAggregate(t))return this.handleAverage(t,e);const r=this.getCouchAdapter(),i=t,n=await r.view(i.descriptor.ddoc,i.descriptor.view,i.descriptor.options,e);return this.processViewResponse(t,n)}async handleAverage(t,e){if("avg"!==t.kind)throw new g("Average descriptor is not valid");const[r,i]=[t.sumDescriptor,t.countDescriptor],n=this.getCouchAdapter(),[s,o]=await Promise.all([n.view(r.ddoc,r.view,r.options,e),n.view(i.ddoc,i.view,i.options,e)]),a=s.rows?.[0]?.value??0,c=o.rows?.[0]?.value??0;return c?a/c:0}executeManualAggregation(t,e,r){if(!this.fromSelector)throw new g("Manual aggregation requires a target model");if("avg"===e.kind)return this.computeAverage(t,e.attribute);if("groupBy"===e.kind)return this.computeGroupBy(t,e.meta.attribute);const i=e.meta.attribute;switch(e.kind){case"count":return e.countDistinct?this.computeDistinctCount(t,i):this.computeCount(t,i);case"distinct":return e.countDistinct?this.computeDistinctCount(t,i):this.computeDistinctValues(t,i);case"sum":return this.computeSum(t,i);case"min":return this.computeMinMax(t,i,"min");case"max":return this.computeMinMax(t,i,"max");default:throw new g("Unsupported manual aggregation "+e.kind)}}computeCount(t,e){return e?this.collectValues(t,e).filter(t=>null!=t).length:t.length}computeDistinctCount(t,e){const r=e?this.collectValues(t,e).filter(t=>null!=t):t,i=new Set;return r.forEach(t=>i.add(JSON.stringify(t))),i.size}computeDistinctValues(t,e){if(!e)return[];const r=this.collectValues(t,e),i=new Set,n=[];return r.forEach(t=>{const e=JSON.stringify(t);i.has(e)||(i.add(e),n.push(t))}),n}computeSum(t,e){return e?this.collectValues(t,e).filter(t=>null!=t).reduce((t,r)=>t+this.toNumericValue(r,e,"SUM operation"),0):t.length}computeAverage(t,e){if(!e)return 0;const r=this.collectValues(t,e).filter(t=>null!=t);return r.length?r.reduce((t,r)=>t+this.toNumericValue(r,e,"AVG operation"),0)/r.length:0}computeMinMax(t,e,r){if(!e)return null;const i=this.collectValues(t,e).filter(t=>null!=t);let n=null,s=null;for(const t of i){const e=this.normalizeComparable(t);null!==e&&(null!==s?("min"===r&&s>e||"max"===r&&e>s)&&(s=e,n=t):(s=e,n=t))}return n}computeGroupBy(t,e){const r={},i=this.collectValues(t,e);return t.forEach((t,e)=>{const n=this.groupKey(i[e]);r[n]||(r[n]=[]),r[n].push(t)}),r}groupSelectResults(t){if(!this.groupBySelectors?.length)return{};const e=this.resolveSelectorAttribute(this.groupBySelectors[0]);if(!e)return{};const r={};return t.forEach(t=>{const i=this.groupKey(this.convertValueByAttribute(e,t[e]));r[i]||(r[i]=[]),r[i].push(t)}),r}collectValues(t,e){return t.map(t=>{if(t&&"object"==typeof t)return this.convertValueByAttribute(e,t[e])})}convertValueByAttribute(t,e){if(!this.fromSelector)return e;if("date"===this.getAttributeType(t)){if(e instanceof Date)return e;const t=new Date(e);if(!Number.isNaN(t.getTime()))return t}if("string"==typeof e&&t.toLowerCase().includes("date")){const t=new Date(e);if(!Number.isNaN(t.getTime()))return t}return e}getAttributeType(e){if(!e||!this.fromSelector)return;if(this.attributeTypeCache.has(e))return this.attributeTypeCache.get(e);const r=t.type(this.fromSelector,e)??t.getPropDesignTypes?.(this.fromSelector,e)?.designType,i=this.normalizeMetaType(r);return this.attributeTypeCache.set(e,i),i}normalizeMetaType(t){if(t)return"string"==typeof t?t.toLowerCase():"function"==typeof t&&t.name?t.name.toLowerCase():void 0}normalizeComparable(t){return"number"==typeof t?t:"bigint"==typeof t?Number(t):t instanceof Date?t.getTime():"string"!=typeof t||isNaN(Number(t))?null:Number(t)}groupKey(t){if(void 0===t)return"undefined";if(null===t)return"null";if("symbol"==typeof t)return t.toString();if("object"==typeof t)try{return JSON.stringify(t)}catch{return t+""}return t+""}toNumericValue(t,e,r){if("number"==typeof t)return t;if("bigint"==typeof t)return Number(t);if(t instanceof Date)return t.getTime();if("string"==typeof t&&!isNaN(Number(t)))return Number(t);throw new g(`${r} on "${e}" requires numeric values, but got ${typeof t}`)}convertAggregateValue(t,e){return t?this.convertValueByAttribute(t,e):e}resolveSelectorAttribute(t){if(null!=t)return t+""}missingDecorator(t,e){const r=this.decoratorForKind(t),i=this.fromSelector?$.tableName(this.fromSelector):"<unknown table>";return new p(`${r} decorator is required for CouchDB ${t} aggregation${e?` on "${e}"`:""} on table "${i}".`)}decoratorForKind(t){return{count:"@count",sum:"@sum",min:"@min",max:"@max",distinct:"@distinct",groupBy:"@groupBy",view:"@view",avg:"@avg"}[t]||"@"+t}processViewResponse(t,e){if("avg"===t.kind)throw new g("Average results should be handled before processing rows");const r=e.rows||[],i=t,n=i.meta;return i.countDistinct?r.length||0:"distinct"===i.kind||"groupBy"===i.kind?r.map(t=>this.convertAggregateValue(i.meta.attribute,t.key??t.value)):n.returnDocs?r.map(t=>t.value??t.doc??t):r.length?this.convertAggregateValue(i.meta.attribute,r[0].value??r[0].key??null):"count"===i.kind?0:null}isViewAggregate(t){return"avg"!==t.kind}getCouchAdapter(){return this.adapter}parseCondition(t){const{attr1:e,operator:r,comparison:n}=t;if(r===i.BETWEEN){const t=e;if(!Array.isArray(n)||2!==n.length)throw new g("BETWEEN operator requires [min, max] comparison");const[r,s]=n,o={};return o[t]={},o[t][at(i.BIGGER_EQ)]=r,o[t][at(i.SMALLER_EQ)]=s,{selector:o}}let s={};if(-1===[o.AND,o.OR,i.NOT].indexOf(r))s[e]={},s[e][at(r)]=n;else if(r===i.NOT)s=this.parseCondition(e).selector,s[at(i.NOT)]={},s[at(i.NOT)][e.attr1]=n;else{const t=this.parseCondition(e).selector,i=this.parseCondition(n).selector;s=((t,e,r)=>{const i={selector:{}};return i.selector[t]=[e,r],i})(at(r),t,i).selector}return{selector:s}}}class ut extends h{constructor(t,e,r){super(t,e,r),[this.create,this.createAll,this.update,this.updateAll].forEach(t=>{const e=t.name;D(this,t,this[e+"Prefix"])})}Statement(){return new ct(this)}Paginator(t,e,r){return new ot(this,t,e,r)}async initialize(){const t=h.models(this.flavour);return this.index(...t)}repository(){return nt}assignMetadata(t,e){return e?(et(t,e),t):t}assignMultipleMetadata(t,e){return t.forEach((t,r)=>(et(t,e[r]),t)),t}prepare(t,...e){const{log:i}=this.logCtx(e,this.prepare),n=t.segregate(),s=Object.entries(n.model).reduce((e,[r,i])=>{if(void 0===i)return e;const n=$.columnName(t.constructor,r);if(this.isReserved(n))throw new b(`Property name ${n} is reserved`);return i=i instanceof Date?new Date(i):i,e[n]=i,e},{});return t[r.METADATA]&&(i.silly("Passing along persistence metadata for "+t[r.METADATA]),Object.defineProperty(s,r.METADATA,{enumerable:!1,writable:!0,configurable:!0,value:t[r.METADATA]})),{record:s,id:t[$.pk(t.constructor)],transient:n.transient}}createPrefix(t,e,r,...i){const{ctxArgs:n}=this.logCtx(i,this.createPrefix),s=$.tableName(t),o={};return o[P.TABLE]=s,o[P.ID]=this.generateId(s,e),Object.assign(o,r),[t,e,o,...n]}createAllPrefix(t,e,r,...i){const n=$.tableName(t);if(e.length!==r.length)throw new b("Ids and models must have the same length");const{ctxArgs:s}=this.logCtx(i,this.createAllPrefix),o=e.map((t,e)=>{const i={};return i[P.TABLE]=n,i[P.ID]=this.generateId(n,t),Object.assign(i,r[e]),i});return[t,e,o,...s]}updatePrefix(t,e,i,...n){const s=$.tableName(t),{ctxArgs:o}=this.logCtx(n,this.updatePrefix),a={};a[P.TABLE]=s,a[P.ID]=this.generateId(s,e);const c=i[r.METADATA];if(!c)throw new b("No revision number found for record with id "+e);return Object.assign(a,i),a[P.REV]=c,[t,e,a,...o]}updateAllPrefix(t,e,i,...n){const s=$.tableName(t);if(e.length!==i.length)throw new b("Ids and models must have the same length");const{ctxArgs:o}=this.logCtx(n,this.updateAllPrefix),a=e.map((t,e)=>{const n={};n[P.TABLE]=s,n[P.ID]=this.generateId(s,t);const o=i[e][r.METADATA];if(!o)throw new b("No revision number found for record with id "+t);return Object.assign(n,i[e]),n[P.REV]=o,n});return[t,e,a,...o]}generateId(t,e){return[t,e].join(P.SEPARATOR)}parseError(t,e){return ut.parseError(t,e)}isReserved(t){return!!t.match(I)}static parseError(t,e){if(t instanceof O)return t;let r="";if("string"==typeof t){if(r=t,r.match(/already exist|update conflict/g))return new x(r);if(r.match(/missing|deleted/g))return new T(r)}else t.code?(r=t.code,e=e||t.message):t.statusCode?(r=t.statusCode,e=e||t.message):r=t.message;switch(r.toString()){case"401":case"412":case"409":return new x(e);case"404":return new T(e);case"400":return r.toString().match(/No\sindex\sexists/g)?new st(t):new b(t);default:return r.toString().match(/ECONNREFUSED/g)?new f(t):new b(t)}}static setMetadata(t,e){et(t,e)}static getMetadata(t){return rt(t)}static removeMetadata(t){it(t)}}function lt(t,r){let n={};return Array.isArray(t)?n.compositions=t:"string"==typeof t?n.name=t:t&&(n=t),"string"==typeof r?n.name=r:r&&(n=Object.assign({},n,r)),void 0===n.returnDocs&&(n.returnDocs=!0),e.for(i.GROUP_BY).define({decorator:t=>m(i.GROUP_BY,"groupBy",t),args:[n]}).apply()}function gt(t,r){let n={};return t instanceof s?n.condition=t:"object"==typeof t&&t?n=t:void 0!==t&&(n.value=t),r&&(n=Object.assign({},n,r)),e.for(i.COUNT).define({decorator:t=>m(i.COUNT,"count",t),args:[n]}).apply()}function dt(t,r){let n={};return t instanceof s?n.condition=t:t&&(n=t),r&&(n=Object.assign({},n,r)),e.for(i.SUM).define({decorator:t=>m(i.SUM,"sum",t),args:[n]}).apply()}function pt(t,r){let n={};return t instanceof s?n.condition=t:t&&(n=t),r&&(n=Object.assign({},n,r)),e.for(i.MAX).define({decorator:t=>m(i.MAX,"max",t),args:[n]}).apply()}function ht(t,r){let n={};return t instanceof s?n.condition=t:t&&(n=t),r&&(n=Object.assign({},n,r)),e.for(i.MIN).define({decorator:t=>m(i.MIN,"min",t),args:[n]}).apply()}function ft(t,r){let n={};return t instanceof s?n.condition=t:t&&(n=t),r&&(n=Object.assign({},n,r)),e.for(i.DISTINCT).define({decorator:t=>m(i.DISTINCT,"distinct",t),args:[n]}).apply()}j([C(),M("design:type",Function),M("design:paramtypes",[]),M("design:returntype",ct)],ut.prototype,"Statement",null),j([C(),M("design:type",Function),M("design:paramtypes",[Object,String]),M("design:returntype",Object)],ut.prototype,"assignMetadata",null),j([C(),M("design:type",Function),M("design:paramtypes",[Array,Array]),M("design:returntype",Array)],ut.prototype,"assignMultipleMetadata",null),j([C(),M("design:type",Function),M("design:paramtypes",[Object,Object,Object,Object]),M("design:returntype",Array)],ut.prototype,"createPrefix",null),j([C(),M("design:type",Function),M("design:paramtypes",[Object,Array,Array,Object]),M("design:returntype",void 0)],ut.prototype,"createAllPrefix",null),j([C(),M("design:type",Function),M("design:paramtypes",[Object,Object,Object,Object]),M("design:returntype",void 0)],ut.prototype,"updatePrefix",null),j([C(),M("design:type",Function),M("design:paramtypes",[Object,Array,Array,Object]),M("design:returntype",void 0)],ut.prototype,"updateAllPrefix",null);const mt="##VERSION##",yt="##PACKAGE##";t.registerLibrary(yt,mt);export{ut as CouchDBAdapter,R as CouchDBConst,B as CouchDBGroupOperator,P as CouchDBKeys,k as CouchDBOperator,ot as CouchDBPaginator,V as CouchDBQueryLimit,nt as CouchDBRepository,ct as CouchDBStatement,st as IndexError,yt as PACKAGE_NAME,mt as VERSION,W as collectViewMetadata,gt as count,ft as distinct,K as findViewMetadata,Q as generateDesignDocName,J as generateIndexDoc,G as generateIndexName,tt as generateIndexes,H as generateViewIndexes,q as generateViewName,Y as generateViews,rt as getMetadata,lt as groupBy,pt as max,ht as min,L as reAuth,it as removeMetadata,I as reservedAttributes,et as setMetadata,dt as sum,U as testReservedAttributes,at as translateOperators,Z as viewIndexDefinition,_ as wrapDocumentScope};
1
+ import{Metadata as t,Decoration as e}from"@decaf-ts/decoration";import{PersistenceKeys as r,Operator as i,OrderDirection as n,Condition as s,GroupOperator as o,Repository as a,Paginator as c,PagingError as u,Sequence as l,QueryError as d,Statement as g,UnsupportedError as f,Adapter as p,ConnectionError as h,applyViewDecorator as m}from"@decaf-ts/core";import{DefaultSeparator as y,OperationKeys as A,InternalError as b,enforceDBDecorators as w,ValidationError as v,BulkCrudOperationKeys as E,reduceErrorsToPrint as S,BaseError as N,DBKeys as O,prefixMethod as D,ConflictError as T,NotFoundError as x}from"@decaf-ts/db-decorators";import{Model as $}from"@decaf-ts/decorator-validation";import{__decorate as j,__metadata as M}from"tslib";import{final as C}from"@decaf-ts/logging";const I=/^_.*$/g,P={SEPARATOR:"__",ID:"_id",REV:"_rev",DELETED:"_deleted",TABLE:"??table",SEQUENCE:"??sequence",DDOC:"ddoc",NATIVE:"__native",INDEX:"index",VIEW:"view"},B=250,V={EQUAL:"$eq",DIFFERENT:"$ne",BIGGER:"$gt",BIGGER_EQ:"$gte",SMALLER:"$lt",SMALLER_EQ:"$lte",NOT:"$not",IN:"$in",REGEXP:"$regex"},k={AND:"$and",OR:"$or"},_={NULL:"null"};async function R(t,e,r){return t.auth(e,r)}function L(t,e,r,i){const n=t.use?t.use(e):t;return["insert","get","put","destroy","find","view"].forEach((e=>{const s=n[e];Object.defineProperty(n,e,{enumerable:!1,configurable:!0,value:async(...e)=>(await R(t,r,i),s.call(n,...e))})})),Object.defineProperty(n,P.NATIVE,{enumerable:!1,configurable:!1,writable:!1,value:t}),n}function U(t){return t.match(/^_.*$/g)}function G(t,e,i,n,s=y){const o=[r.INDEX,e,t];return i&&o.push(...i),n&&o.push(n),o.join(s)}function J(t,e,r,i,n=y){const s={};let o;if(s[P.TABLE]={},s[P.TABLE].$eq=e,i){const e={};e[t]=i;const n=(r||[]).map((t=>{const e={};return e[t]=i,e})),s={};s[P.TABLE]=i,o=[e,...n,s]}else o=[t,...r||[],P.TABLE];const a=G(t,e,r,i,n);return{index:{fields:o},ddoc:[a,P.DDOC].join(n),name:a}}function z(t){return t instanceof Date?JSON.stringify(t.toISOString()):t instanceof RegExp?`new RegExp(${JSON.stringify(t.source)}, ${JSON.stringify(t.flags)})`:JSON.stringify(t)}function q(t,e){const{attr1:r,operator:n,comparison:a}=t;if(r instanceof s){const t=q(r,e);if(n===i.NOT)return`!(${t})`;const s=q(a,e);return n===o.AND?`(${t} && ${s})`:n===o.OR?`(${t} || ${s})`:t}const c=`${e}[${JSON.stringify(r)}]`;switch(n){case i.EQUAL:return`${c} === ${z(a)}`;case i.DIFFERENT:return`${c} !== ${z(a)}`;case i.BIGGER:return`${c} > ${z(a)}`;case i.BIGGER_EQ:return`${c} >= ${z(a)}`;case i.SMALLER:return`${c} < ${z(a)}`;case i.SMALLER_EQ:return`${c} <= ${z(a)}`;case i.IN:return`(${z(a)}).indexOf(${c}) !== -1`;case i.REGEXP:return`${a instanceof RegExp?z(a):`new RegExp(${JSON.stringify(a)})`}.test(${c})`;case i.NOT:return`!(${c} === ${z(a)})`;default:return"true"}}function F(t,e,r){return t?Array.isArray(t)?t:[t]:e?[e,...r||[]]:r||[]}function Q(t,e,r,i,n=y){return i.name?i.name:[t,e,r,"view"].join(n).replace(/\s+/g,"_")}function W(t,e,r=y){return[t,e,P.DDOC].join(r)}function X(e,r,n){const s={view:i.VIEW,groupBy:i.GROUP_BY,count:i.COUNT,sum:i.SUM,max:i.MAX,min:i.MIN,distinct:i.DISTINCT}[r];if(!s)return[];const o=t.get(e,s)||{};return Object.entries(o).flatMap((([t,e])=>e&&"object"==typeof e?Object.values(e).map((e=>({...e,kind:r,attribute:e.attribute||t}))).filter((t=>!n||t.attribute===n)):[]))}function H(e,r,i){const n=t.get(e,r)||{};return Object.entries(n).flatMap((([t,e])=>e&&"object"==typeof e?Object.values(e).map((e=>{const r=e;return{...r,kind:i,attribute:r.attribute||t}})):[]))}function K(t){const e={},r=[[P.VIEW,"view"],[i.GROUP_BY,"groupBy"],[i.COUNT,"count"],[i.SUM,"sum"],[i.MAX,"max"],[i.MIN,"min"],[i.DISTINCT,"distinct"]];return t.forEach((t=>{const i=$.tableName(t);r.flatMap((([e,r])=>H(t,e,r))).forEach((t=>{const r=t.attribute,n=Q(i,r,t.kind,t),o="_design/"+(t.ddoc||W(i,n)),a=((t,e,r,i)=>{const n=((t,e,r)=>{if(r.map)return"function"==typeof r.map?r.map.toString():r.map;const i=[];if(i.push(`doc[${JSON.stringify(P.TABLE)}] === ${JSON.stringify(t)}`),r.condition)if(r.condition instanceof s)i.push(q(r.condition,"doc"));else if("string"==typeof r.condition)i.push(r.condition);else{const t=s.from(r.condition);i.push(q(t,"doc"))}"count"===r.kind&&void 0!==r.value&&i.push(`doc[${JSON.stringify(e)}] === ${z(r.value)}`);const n=((t,e="doc")=>{if(!t)return;if("string"==typeof t)return t;const r=t.field||"roles",i=t.roles||[];if(!i.length)return t.expression;const n=`${e}[${JSON.stringify(r)}] || []`;return"all"===(t.mode||"any")?i.map((t=>`${n}.indexOf(${JSON.stringify(t)}) !== -1`)).join(" && "):i.map((t=>`${n}.indexOf(${JSON.stringify(t)}) !== -1`)).join(" || ")})(r.auth,"doc");n&&i.push(n);const o=i.length?i.join(" && "):"true",a=((t,e,r)=>{const i=F(t,e,r);return 1===i.length?`doc[${JSON.stringify(i[0])}]`:`[${i.map((t=>`doc[${JSON.stringify(t)}]`)).join(", ")}]`})(r.key,e,r.compositions),c=((t,e)=>"doc"===t?"doc":t?Array.isArray(t)?`[${t.map((t=>`doc[${JSON.stringify(t)}]`)).join(", ")}]`:"string"==typeof t?`doc[${JSON.stringify(t)}]`:z(t):`doc[${JSON.stringify(e)}]`)(r.value??(r.returnDocs&&"sum"!==r.kind?"doc":void 0),e);return`function (doc) {\n if (!(${o})) return;\n emit(${a}, ${c});\n}`})(i,e,r),o=r.reduce?"function"==typeof r.reduce?r.reduce.toString():r.reduce:(t=>{switch(t){case"count":case"groupBy":case"distinct":return"_count";case"sum":return"_sum";case"max":return"function (keys, values, rereduce) {\n var maxVal = null;\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (rereduce && val && typeof val === 'object' && 'value' in val) val = val.value;\n if (maxVal === null || val > maxVal) maxVal = val;\n }\n return maxVal;\n}";case"min":return"function (keys, values, rereduce) {\n var minVal = null;\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (rereduce && val && typeof val === 'object' && 'value' in val) val = val.value;\n if (minVal === null || val < minVal) minVal = val;\n }\n return minVal;\n}";default:return}})(t);return{map:n,reduce:o}})(t.kind,r,t,i);e[o]||(e[o]={_id:o,language:"javascript",views:{}}),e[o].views[n]=a}))})),Object.values(e)}function Y(t){const e={},r=[[P.VIEW,"view"],[i.GROUP_BY,"groupBy"],[i.COUNT,"count"],[i.SUM,"sum"],[i.MAX,"max"],[i.MIN,"min"],[i.DISTINCT,"distinct"]];return t.forEach((t=>{const i=$.tableName(t);r.flatMap((([e,r])=>H(t,e,r))).forEach((t=>{const r=F(t.key,t.attribute,t.compositions);if(!r.length)return;const s=r[0],o=r.slice(1),a=t.directions||[n.ASC,n.DSC],c=J(s,i,o);e[c.name||""]=c,a.forEach((t=>{const r=J(s,i,o,t);e[r.name||""]=r}))}))})),Object.values(e)}function Z(t){const e=F(t.key,t.attribute);return{attribute:e[0],compositions:e.slice(1).concat(t.compositions||[]),directions:t.directions}}function tt(t,e,r,i=y){return[...t.map((t=>t===P.TABLE?"table":t)),...r||[],...e?[e]:[],P.INDEX].join(i)}function et(t){const e=tt([P.TABLE]),i={};return i[e]={index:{fields:[P.TABLE]},name:e,ddoc:e,type:"json"},t.forEach((t=>{const e=$.tableName(t);let s=[];try{s=$.defaultQueryAttributes(t)}catch(t){s=[]}s.forEach((t=>{const r=tt([e,t,"defaultQuery"]),s={[P.TABLE]:{$eq:e}};i[r]={index:{fields:[P.TABLE,t]},name:r,ddoc:r,type:"json"},i[r].index.partial_filter_selector=s,[n.ASC,n.DSC].forEach((r=>{const n=tt([e,t,"defaultQuery"],r);i[n]={index:{fields:[{[P.TABLE]:r},{[t]:r}]},name:n,ddoc:n,type:"json"}}))}));const o=$.indexes(t);Object.entries(o).forEach((([t,s])=>{const o=[];Object.entries(s||{}).forEach((([,e])=>{if(!e)return;const r=e;void 0===r.directions&&void 0===r.compositions?"object"!=typeof e||Array.isArray(e)||Object.entries(e).forEach((([t,e])=>{e&&o.push([t,e])})):o.push([t,r])})),o.forEach((([t,s])=>{if(!s)return;let{directions:o,compositions:a}=s;const c=e;a=a||[];const u=[t,...a],l={[P.TABLE]:{$eq:c}};function d(e,n){const s=[c,t,...a,...n?[n]:[],r.INDEX].join(y),o=[P.TABLE,...u],d=e?[{[P.TABLE]:e},...u.map((t=>({[t]:e})))]:o;i[s]={index:{fields:d},name:s,ddoc:s,type:"json"},e||(i[s].index.partial_filter_selector=l)}d(),Array.from(new Set((o||[n.ASC]).map((t=>(t+"").toLowerCase())))).filter((t=>t===n.ASC||t===n.DSC)).forEach((t=>{d(t,t)}))}))}))})),Y(t).forEach((t=>{t.name&&(i[t.name]=t)})),Object.values(i)}function rt(t,e){Object.defineProperty(t,r.METADATA,{enumerable:!1,configurable:!0,writable:!0,value:e})}function it(t){const e=Object.getOwnPropertyDescriptor(t,r.METADATA);return e?e.value:void 0}function nt(t){Object.getOwnPropertyDescriptor(t,r.METADATA)&&delete t[r.METADATA]}class st extends a{constructor(t,e){super(t,e)}assignMetadata(t,e){const r=(t,e)=>{const r=it(e??t);return r&&rt(t,r),t};return Array.isArray(t)?t.map(((t,i)=>{const n=Array.isArray(e)?e[i]:e;return r(t,n)})):r(t,Array.isArray(e)?e?.[0]:e)}async create(t,...e){const r=await super.create(t,...e);return this.assignMetadata(r),this.assignMetadata(t,r),r}async createAll(t,...e){const r=await super.createAll(t,...e);return this.assignMetadata(r),this.assignMetadata(t,r),r}async read(t,...e){const r=await super.read(t,...e);return this.assignMetadata(r)}async readAll(t,...e){const r=await super.readAll(t,...e);return this.assignMetadata(r)}async update(t,...e){const r=await super.update(t,...e);return this.assignMetadata(r),this.assignMetadata(t,r),r}async updateAll(t,...e){const r=await super.updateAll(t,...e);return this.assignMetadata(r),this.assignMetadata(t,r),r}async delete(t,...e){const r=await super.delete(t,...e);return this.assignMetadata(r)}async deleteAll(t,...e){const r=await super.deleteAll(t,...e);return this.assignMetadata(r)}async updatePrefix(t,...e){const{ctx:r,ctxArgs:i,log:n}=(await this.logCtx(e,A.UPDATE,!0)).for(this.updatePrefix),s=r.get("ignoreHandlers"),o=r.get("ignoreValidation");n.silly(`handlerSetting: ${s}, validationSetting: ${o}`);const a=t[this.pk];if(!a)throw new b("No value for the Id is defined under the property "+this.pk);let c,u;if(r.get("applyUpdateValidation")&&(c=await this.read(a),u=c?it(c):void 0,r.get("mergeForUpdate")&&(t=$.merge(c,t,this.class))),s||await w(this,r,t,A.UPDATE,A.ON,c),!o){const e=r.get("ignoredValidationProperties")||[];n.silly("ignored validation properties: "+e);const i=await Promise.resolve(t.hasErrors(c,...e));if(i)throw new v(i.toString())}return u&&rt(t,u),[t,...i,c]}async updateAllPrefix(t,...e){const{ctx:r,ctxArgs:i,log:n}=(await this.logCtx(e,E.UPDATE_ALL,!0)).for(this.updateAllPrefix),s=r.get("ignoreHandlers"),o=r.get("ignoreValidation");n.silly(`handlerSetting: ${s}, ignoredValidation: ${o}`);const a=t.map((t=>{const e=t[this.pk];if(!e)throw new b("missing id on update operation");return e}));let c;if(r.get("applyUpdateValidation")&&(c=await this.readAll(a,r),t=t.map(((t,e)=>{r.get("mergeForUpdate")&&(t=$.merge(c[e],t,this.class));const i=it(c[e]);return i&&rt(t,i),t}))),s||await Promise.all(t.map(((t,e)=>w(this,r,t,A.UPDATE,A.ON,c?c[e]:void 0)))),!o){const e=r.get("ignoredValidationProperties")||[];let i;n.silly("ignored validation properties: "+e),i=r.get("applyUpdateValidation")?await Promise.all(t.map(((t,r)=>Promise.resolve(t.hasErrors(c[r],...e))))):await Promise.resolve(t.map((t=>t.hasErrors(...e))));const s=S(i);if(s)throw new v(s)}return[t,...i,c]}}class ot extends N{constructor(t){super(ot.name,t,404)}}class at extends c{constructor(t,e,r,i){super(t,e,r,i)}prepare(t){const e=Object.assign({},t);return e.limit&&(this.limit=e.limit),e.limit=this.size,e}async page(e=1,r,...i){const{log:n,ctxArgs:s,ctx:o}=this.adapter.logCtx([r,...i],this.page);if(this.isPreparedStatement())return await this.pagePrepared(e,...s);const a=Object.assign({},this.statement);if(this._recordCount&&this._totalPages)e=this.validatePage(e),a.skip=(e-1)*this.size;else{this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...a,limit:Number.MAX_VALUE},!0,...s)||[];if(this._recordCount=t.length,this._recordCount>0){const t=a?.limit||this.size;return this._totalPages=Math.ceil(this._recordCount/t),await this.page(e,...s)}}if(1!==e){if(!this._bookmark)throw new u("No bookmark. Did you start in the first page?");a.bookmark=this._bookmark}const c=await this.adapter.raw(a,!1,...s),{docs:d,bookmark:g,warning:f}=c;if(f&&n.warn(f),!this.clazz)throw new u("No statement target defined");const p=$.pk(this.clazz),h=t.get(this.clazz,t.key(O.ID,p))?.type,m=a.fields&&a.fields.length?d:d.map((t=>this.adapter.revert(t,this.clazz,l.parseValue(h,t[p]),void 0,o)));return this._bookmark=g,this._currentPage=e,m}}function ct(t){for(const e of[V,k]){const r=Object.keys(e).find((e=>e===t));if(r)return e[r]}throw new d("Could not find adapter translation for operator "+t)}function ut(t){if(!t)return"\0";const e=Array.from(t);for(let t=e.length-1;t>=0;t-=1){const r=e[t].codePointAt(0);if(void 0!==r&&1114111>r)return e[t]=String.fromCodePoint(r+1),e.slice(0,t+1).join("")}return t+"\0"}class lt extends g{constructor(t){super(t),this.attributeTypeCache=new Map}build(){const t=this.log.for(this.build);this.manualAggregation=void 0;const e=this.buildAggregateInfo();if(e){if(!this.shouldUseManualAggregation())return this.createAggregateQuery(e);this.manualAggregation=e}const r={};r[P.TABLE]={},r[P.TABLE]=$.tableName(this.fromSelector);const i={selector:r};if(this.selectSelector&&(i.fields=this.selectSelector),this.whereCondition){const e=this.parseCondition(s.and(this.whereCondition,s.attribute(P.TABLE).eq(i.selector[P.TABLE]))).selector,r=Object.keys(e);if(1===r.length&&-1!==Object.values(k).indexOf(r[0]))switch(r[0]){case k.AND:e[k.AND]=[...Object.values(e[k.AND]).reduce(((t,e)=>{const r=Object.keys(e);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const i=r[0];return i===k.AND?t.push(...e[i]):t.push(e),t}),[])],i.selector=e;break;case k.OR:{const t={};t[k.AND]=[e,...Object.entries(i.selector).map((([t,e])=>{const r={};return r[t]=e,r}))],i.selector=t;break}default:throw Error("This should be impossible")}else Object.entries(e).forEach((([e,r])=>{i.selector[e]&&t.warn(`A ${e} query param is about to be overridden: ${i.selector[e]} by ${r}`),i.selector[e]=r}))}if(this.orderBySelectors?.length){i.sort=i.sort||[],i.selector=i.selector||{};for(const[t,e]of this.orderBySelectors){const r=t,n={};n[r]=e,i.sort.push(n),i.selector[r]||(i.selector[r]={},i.selector[r].$gt=null)}}const n=!!this.manualAggregation;return this.limitSelector?i.limit=this.limitSelector:n||(t.warn("No limit selector defined. Using default couchdb limit of 250"),i.limit=250),this.offsetSelector&&(i.skip=this.offsetSelector),i}processRecord(t,e,r,i){if(t[P.ID]){const[,...e]=t[P.ID].split(P.SEPARATOR),n=e.join("_");return this.adapter.revert(t,this.fromSelector,l.parseValue(r,n),void 0,i)}return t}async raw(e,...r){const{ctx:i}=this.logCtx(r,this.raw),n=e?.aggregateInfo;if(e?.aggregate&&n)return this.executeAggregate(n,i);const s=await this.adapter.raw(e,!0,i),o=$.pk(this.fromSelector),a=t.get(this.fromSelector,t.key(O.ID,o))?.type,c=s.map((t=>this.processRecord(t,o,a,i)));if(this.manualAggregation){const t=this.executeManualAggregation(c,this.manualAggregation,i);return this.manualAggregation=void 0,t}return!this.selectSelector&&this.groupBySelectors?.length?this.groupSelectResults(c):this.selectSelector?s:c}buildAggregateInfo(){if(this.fromSelector){if(this.avgSelector){const t=this.avgSelector+"",e=this.createAggregateDescriptor("sum",t);if(!e)throw this.missingDecorator("sum",t);const r=this.createAggregateDescriptor("count",t);if(!r)throw this.missingDecorator("count",t);return{kind:"avg",attribute:t,sumDescriptor:e.descriptor,countDescriptor:r.descriptor}}if(void 0!==this.countDistinctSelector){const t=this.resolveSelectorAttribute(this.countDistinctSelector),e=this.createAggregateDescriptor("distinct",t);if(!e)throw this.missingDecorator("distinct",t);return e.countDistinct=!0,e}if(void 0!==this.countSelector){const t=this.resolveSelectorAttribute(this.countSelector),e=this.createAggregateDescriptor("count",t);if(!e)throw this.missingDecorator("count",t);return e}if(this.maxSelector){const t=this.resolveSelectorAttribute(this.maxSelector),e=this.createAggregateDescriptor("max",t);if(!e)throw this.missingDecorator("max",t);return e}if(this.minSelector){const t=this.resolveSelectorAttribute(this.minSelector),e=this.createAggregateDescriptor("min",t);if(!e)throw this.missingDecorator("min",t);return e}if(this.sumSelector){const t=this.resolveSelectorAttribute(this.sumSelector),e=this.createAggregateDescriptor("sum",t);if(!e)throw this.missingDecorator("sum",t);return e}if(this.distinctSelector){const t=this.resolveSelectorAttribute(this.distinctSelector),e=this.createAggregateDescriptor("distinct",t);if(!e)throw this.missingDecorator("distinct",t);return e}}}createAggregateDescriptor(t,e){if(!this.fromSelector)return;const r=X(this.fromSelector,t,e);if(!r.length)return;const i=r[0],n=$.tableName(this.fromSelector),s=Q(n,i.attribute,t,i),o=i.ddoc||W(n,s),a={reduce:void 0!==i.reduce||!i.returnDocs};return"distinct"!==t&&"groupBy"!==t||(a.group=!0),{kind:t,meta:i,descriptor:{ddoc:o,view:s,options:a}}}createAggregateQuery(t){return{selector:{},aggregate:!0,aggregateInfo:t}}shouldUseManualAggregation(){return!!this.whereCondition}async executeAggregate(t,e){if(!this.isViewAggregate(t))return this.handleAverage(t,e);const r=this.getCouchAdapter(),i=t,n=await r.view(i.descriptor.ddoc,i.descriptor.view,i.descriptor.options,e);return this.processViewResponse(t,n)}async handleAverage(t,e){if("avg"!==t.kind)throw new d("Average descriptor is not valid");const[r,i]=[t.sumDescriptor,t.countDescriptor],n=this.getCouchAdapter(),[s,o]=await Promise.all([n.view(r.ddoc,r.view,r.options,e),n.view(i.ddoc,i.view,i.options,e)]),a=s.rows?.[0]?.value??0,c=o.rows?.[0]?.value??0;return c?a/c:0}executeManualAggregation(t,e,r){if(!this.fromSelector)throw new d("Manual aggregation requires a target model");if("avg"===e.kind)return this.computeAverage(t,e.attribute);if("groupBy"===e.kind)return this.computeGroupBy(t,e.meta.attribute);const i=e.meta.attribute;switch(e.kind){case"count":return e.countDistinct?this.computeDistinctCount(t,i):this.computeCount(t,i);case"distinct":return e.countDistinct?this.computeDistinctCount(t,i):this.computeDistinctValues(t,i);case"sum":return this.computeSum(t,i);case"min":return this.computeMinMax(t,i,"min");case"max":return this.computeMinMax(t,i,"max");default:throw new d("Unsupported manual aggregation "+e.kind)}}computeCount(t,e){return e?this.collectValues(t,e).filter((t=>null!=t)).length:t.length}computeDistinctCount(t,e){const r=e?this.collectValues(t,e).filter((t=>null!=t)):t,i=new Set;return r.forEach((t=>i.add(JSON.stringify(t)))),i.size}computeDistinctValues(t,e){if(!e)return[];const r=this.collectValues(t,e),i=new Set,n=[];return r.forEach((t=>{const e=JSON.stringify(t);i.has(e)||(i.add(e),n.push(t))})),n}computeSum(t,e){return e?this.collectValues(t,e).filter((t=>null!=t)).reduce(((t,r)=>t+this.toNumericValue(r,e,"SUM operation")),0):t.length}computeAverage(t,e){if(!e)return 0;const r=this.collectValues(t,e).filter((t=>null!=t));return r.length?r.reduce(((t,r)=>t+this.toNumericValue(r,e,"AVG operation")),0)/r.length:0}computeMinMax(t,e,r){if(!e)return null;const i=this.collectValues(t,e).filter((t=>null!=t));let n=null,s=null;for(const t of i){const e=this.normalizeComparable(t);null!==e&&(null!==s?("min"===r&&s>e||"max"===r&&e>s)&&(s=e,n=t):(s=e,n=t))}return n}computeGroupBy(t,e){const r={},i=this.collectValues(t,e);return t.forEach(((t,e)=>{const n=this.groupKey(i[e]);r[n]||(r[n]=[]),r[n].push(t)})),r}groupSelectResults(t){if(!this.groupBySelectors?.length)return{};const e=this.resolveSelectorAttribute(this.groupBySelectors[0]);if(!e)return{};const r={};return t.forEach((t=>{const i=this.groupKey(this.convertValueByAttribute(e,t[e]));r[i]||(r[i]=[]),r[i].push(t)})),r}collectValues(t,e){return t.map((t=>{if(t&&"object"==typeof t)return this.convertValueByAttribute(e,t[e])}))}convertValueByAttribute(t,e){if(!this.fromSelector)return e;if("date"===this.getAttributeType(t)){if(e instanceof Date)return e;const t=new Date(e);if(!Number.isNaN(t.getTime()))return t}if("string"==typeof e&&t.toLowerCase().includes("date")){const t=new Date(e);if(!Number.isNaN(t.getTime()))return t}return e}getAttributeType(e){if(!e||!this.fromSelector)return;if(this.attributeTypeCache.has(e))return this.attributeTypeCache.get(e);const r=t.type(this.fromSelector,e)??t.getPropDesignTypes?.(this.fromSelector,e)?.designType,i=this.normalizeMetaType(r);return this.attributeTypeCache.set(e,i),i}normalizeMetaType(t){if(t)return"string"==typeof t?t.toLowerCase():"function"==typeof t&&t.name?t.name.toLowerCase():void 0}normalizeComparable(t){return"number"==typeof t?t:"bigint"==typeof t?Number(t):t instanceof Date?t.getTime():"string"!=typeof t||isNaN(Number(t))?null:Number(t)}groupKey(t){if(void 0===t)return"undefined";if(null===t)return"null";if("symbol"==typeof t)return t.toString();if("object"==typeof t)try{return JSON.stringify(t)}catch{return t+""}return t+""}toNumericValue(t,e,r){if("number"==typeof t)return t;if("bigint"==typeof t)return Number(t);if(t instanceof Date)return t.getTime();if("string"==typeof t&&!isNaN(Number(t)))return Number(t);throw new d(`${r} on "${e}" requires numeric values, but got ${typeof t}`)}convertAggregateValue(t,e){return t?this.convertValueByAttribute(t,e):e}resolveSelectorAttribute(t){if(null!=t)return t+""}missingDecorator(t,e){const r=this.decoratorForKind(t),i=this.fromSelector?$.tableName(this.fromSelector):"<unknown table>";return new f(`${r} decorator is required for CouchDB ${t} aggregation${e?` on "${e}"`:""} on table "${i}".`)}decoratorForKind(t){return{count:"@count",sum:"@sum",min:"@min",max:"@max",distinct:"@distinct",groupBy:"@groupBy",view:"@view",avg:"@avg"}[t]||"@"+t}processViewResponse(t,e){if("avg"===t.kind)throw new d("Average results should be handled before processing rows");const r=e.rows||[],i=t,n=i.meta;return i.countDistinct?r.length||0:"distinct"===i.kind||"groupBy"===i.kind?r.map((t=>this.convertAggregateValue(i.meta.attribute,t.key??t.value))):n.returnDocs?r.map((t=>t.value??t.doc??t)):r.length?this.convertAggregateValue(i.meta.attribute,r[0].value??r[0].key??null):"count"===i.kind?0:null}isViewAggregate(t){return"avg"!==t.kind}getCouchAdapter(){return this.adapter}parseCondition(t){const{attr1:e,operator:r,comparison:n}=t;if(r===i.STARTS_WITH){if("string"!=typeof e)throw new d("STARTS_WITH requires an attribute name");if("string"!=typeof n)throw new d("STARTS_WITH requires a string comparison");const t={start:s=n,end:ut(s)};return{selector:{[e]:{$gte:t.start,$lt:t.end}}}}var s,a;if(r===i.ENDS_WITH){if("string"!=typeof e)throw new d("ENDS_WITH requires an attribute name");if("string"!=typeof n)throw new d("ENDS_WITH requires a string comparison");return{selector:{[e]:{$regex:(a=n,a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"$")}}}}if(r===i.BETWEEN){const t=e;if(!Array.isArray(n)||2!==n.length)throw new d("BETWEEN operator requires [min, max] comparison");const[r,s]=n,o={};return o[t]={},o[t][ct(i.BIGGER_EQ)]=r,o[t][ct(i.SMALLER_EQ)]=s,{selector:o}}let c={};if(-1===[o.AND,o.OR,i.NOT].indexOf(r))c[e]={},c[e][ct(r)]=n;else if(r===i.NOT)c=this.parseCondition(e).selector,c[ct(i.NOT)]={},c[ct(i.NOT)][e.attr1]=n;else{const t=this.parseCondition(e).selector,i=this.parseCondition(n).selector;c=((t,e,r)=>{const i={selector:{}};return i.selector[t]=[e,r],i})(ct(r),t,i).selector}return{selector:c}}}class dt extends p{constructor(t,e,r){super(t,e,r),[this.create,this.createAll,this.update,this.updateAll].forEach((t=>{const e=t.name;D(this,t,this[e+"Prefix"])}))}Statement(){return new lt(this)}Paginator(t,e,r){return new at(this,t,e,r)}async initialize(){const t=p.models(this.flavour);return this.index(...t)}repository(){return st}assignMetadata(t,e){return e?(rt(t,e),t):t}assignMultipleMetadata(t,e){return t.forEach(((t,r)=>(rt(t,e[r]),t))),t}prepare(t,...e){const{log:i}=this.logCtx(e,this.prepare),n=t.segregate(),s=Object.entries(n.model).reduce(((e,[r,i])=>{if(void 0===i)return e;const n=$.columnName(t.constructor,r);if(this.isReserved(n))throw new b(`Property name ${n} is reserved`);return i=i instanceof Date?new Date(i):i,e[n]=i,e}),{});return t[r.METADATA]&&(i.silly("Passing along persistence metadata for "+t[r.METADATA]),Object.defineProperty(s,r.METADATA,{enumerable:!1,writable:!0,configurable:!0,value:t[r.METADATA]})),{record:s,id:t[$.pk(t.constructor)],transient:n.transient}}createPrefix(t,e,r,...i){const{ctxArgs:n}=this.logCtx(i,this.createPrefix),s=$.tableName(t),o={};return o[P.TABLE]=s,o[P.ID]=this.generateId(s,e),Object.assign(o,r),[t,e,o,...n]}createAllPrefix(t,e,r,...i){const n=$.tableName(t);if(e.length!==r.length)throw new b("Ids and models must have the same length");const{ctxArgs:s}=this.logCtx(i,this.createAllPrefix),o=e.map(((t,e)=>{const i={};return i[P.TABLE]=n,i[P.ID]=this.generateId(n,t),Object.assign(i,r[e]),i}));return[t,e,o,...s]}updatePrefix(t,e,i,...n){const s=$.tableName(t),{ctxArgs:o}=this.logCtx(n,this.updatePrefix),a={};a[P.TABLE]=s,a[P.ID]=this.generateId(s,e);const c=i[r.METADATA];if(!c)throw new b("No revision number found for record with id "+e);return Object.assign(a,i),a[P.REV]=c,[t,e,a,...o]}updateAllPrefix(t,e,i,...n){const s=$.tableName(t);if(e.length!==i.length)throw new b("Ids and models must have the same length");const{ctxArgs:o}=this.logCtx(n,this.updateAllPrefix),a=e.map(((t,e)=>{const n={};n[P.TABLE]=s,n[P.ID]=this.generateId(s,t);const o=i[e][r.METADATA];if(!o)throw new b("No revision number found for record with id "+t);return Object.assign(n,i[e]),n[P.REV]=o,n}));return[t,e,a,...o]}generateId(t,e){return[t,e].join(P.SEPARATOR)}parseError(t,e){return dt.parseError(t,e)}isReserved(t){return!!t.match(I)}static parseError(t,e){if(t instanceof N)return t;let r="";if("string"==typeof t){if(r=t,r.match(/already exist|update conflict/g))return new T(r);if(r.match(/missing|deleted/g))return new x(r)}else t.code?(r=t.code,e=e||t.message):t.statusCode?(r=t.statusCode,e=e||t.message):r=t.message;switch(r.toString()){case"401":case"412":case"409":return new T(e);case"404":return new x(e);case"400":return r.toString().match(/No\sindex\sexists/g)?new ot(t):new b(t);default:return r.toString().match(/ECONNREFUSED/g)?new h(t):new b(t)}}static setMetadata(t,e){rt(t,e)}static getMetadata(t){return it(t)}static removeMetadata(t){nt(t)}}function gt(t,r){let n={};return Array.isArray(t)?n.compositions=t:"string"==typeof t?n.name=t:t&&(n=t),"string"==typeof r?n.name=r:r&&(n=Object.assign({},n,r)),void 0===n.returnDocs&&(n.returnDocs=!0),e.for(i.GROUP_BY).define({decorator:t=>m(i.GROUP_BY,"groupBy",t),args:[n]}).apply()}function ft(t,r){let n={};return t instanceof s?n.condition=t:"object"==typeof t&&t?n=t:void 0!==t&&(n.value=t),r&&(n=Object.assign({},n,r)),e.for(i.COUNT).define({decorator:t=>m(i.COUNT,"count",t),args:[n]}).apply()}function pt(t,r){let n={};return t instanceof s?n.condition=t:t&&(n=t),r&&(n=Object.assign({},n,r)),e.for(i.SUM).define({decorator:t=>m(i.SUM,"sum",t),args:[n]}).apply()}function ht(t,r){let n={};return t instanceof s?n.condition=t:t&&(n=t),r&&(n=Object.assign({},n,r)),e.for(i.MAX).define({decorator:t=>m(i.MAX,"max",t),args:[n]}).apply()}function mt(t,r){let n={};return t instanceof s?n.condition=t:t&&(n=t),r&&(n=Object.assign({},n,r)),e.for(i.MIN).define({decorator:t=>m(i.MIN,"min",t),args:[n]}).apply()}function yt(t,r){let n={};return t instanceof s?n.condition=t:t&&(n=t),r&&(n=Object.assign({},n,r)),e.for(i.DISTINCT).define({decorator:t=>m(i.DISTINCT,"distinct",t),args:[n]}).apply()}j([C(),M("design:type",Function),M("design:paramtypes",[]),M("design:returntype",lt)],dt.prototype,"Statement",null),j([C(),M("design:type",Function),M("design:paramtypes",[Object,String]),M("design:returntype",Object)],dt.prototype,"assignMetadata",null),j([C(),M("design:type",Function),M("design:paramtypes",[Array,Array]),M("design:returntype",Array)],dt.prototype,"assignMultipleMetadata",null),j([C(),M("design:type",Function),M("design:paramtypes",[Object,Object,Object,Object]),M("design:returntype",Array)],dt.prototype,"createPrefix",null),j([C(),M("design:type",Function),M("design:paramtypes",[Object,Array,Array,Object]),M("design:returntype",void 0)],dt.prototype,"createAllPrefix",null),j([C(),M("design:type",Function),M("design:paramtypes",[Object,Object,Object,Object]),M("design:returntype",void 0)],dt.prototype,"updatePrefix",null),j([C(),M("design:type",Function),M("design:paramtypes",[Object,Array,Array,Object]),M("design:returntype",void 0)],dt.prototype,"updateAllPrefix",null);const At="##VERSION##",bt="##PACKAGE##";t.registerLibrary(bt,At);export{dt as CouchDBAdapter,_ as CouchDBConst,k as CouchDBGroupOperator,P as CouchDBKeys,V as CouchDBOperator,at as CouchDBPaginator,B as CouchDBQueryLimit,st as CouchDBRepository,lt as CouchDBStatement,ot as IndexError,bt as PACKAGE_NAME,At as VERSION,H as collectViewMetadata,ft as count,yt as distinct,X as findViewMetadata,W as generateDesignDocName,J as generateIndexDoc,G as generateIndexName,et as generateIndexes,Y as generateViewIndexes,Q as generateViewName,K as generateViews,it as getMetadata,gt as groupBy,ht as max,mt as min,R as reAuth,nt as removeMetadata,I as reservedAttributes,rt as setMetadata,pt as sum,U as testReservedAttributes,ct as translateOperators,Z as viewIndexDefinition,L as wrapDocumentScope};
2
2
  //# sourceMappingURL=for-couchdb.js.map