@decaf-ts/for-couchdb 0.4.30 → 0.4.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/for-couchdb.cjs +1 -1
  2. package/dist/for-couchdb.cjs.map +1 -1
  3. package/dist/for-couchdb.js +1 -1
  4. package/dist/for-couchdb.js.map +1 -1
  5. package/lib/adapter.d.ts +12 -1
  6. package/lib/adapter.js.map +1 -1
  7. package/lib/decorators.cjs +9 -39
  8. package/lib/decorators.d.ts +2 -5
  9. package/lib/decorators.js.map +1 -1
  10. package/lib/esm/adapter.d.ts +12 -1
  11. package/lib/esm/adapter.js.map +1 -1
  12. package/lib/esm/decorators.d.ts +2 -5
  13. package/lib/esm/decorators.js +5 -33
  14. package/lib/esm/decorators.js.map +1 -1
  15. package/lib/esm/index.d.ts +1 -1
  16. package/lib/esm/index.js +1 -1
  17. package/lib/esm/indexes/generator.js +68 -38
  18. package/lib/esm/indexes/generator.js.map +1 -1
  19. package/lib/esm/query/Statement.d.ts +32 -2
  20. package/lib/esm/query/Statement.js +445 -12
  21. package/lib/esm/query/Statement.js.map +1 -1
  22. package/lib/esm/types.d.ts +11 -0
  23. package/lib/esm/views/generator.d.ts +8 -2
  24. package/lib/esm/views/generator.js +31 -4
  25. package/lib/esm/views/generator.js.map +1 -1
  26. package/lib/esm/views/types.d.ts +6 -20
  27. package/lib/index.cjs +1 -1
  28. package/lib/index.d.ts +1 -1
  29. package/lib/indexes/generator.cjs +67 -37
  30. package/lib/indexes/generator.js.map +1 -1
  31. package/lib/query/Statement.cjs +444 -11
  32. package/lib/query/Statement.d.ts +32 -2
  33. package/lib/query/Statement.js.map +1 -1
  34. package/lib/types.d.ts +11 -0
  35. package/lib/views/generator.cjs +31 -0
  36. package/lib/views/generator.d.ts +8 -2
  37. package/lib/views/generator.js.map +1 -1
  38. package/lib/views/types.d.ts +6 -20
  39. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,a,n,o,i){"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"},d={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 u(e,t,r){return e.auth(t,r)}function p(e,t,n,o,i=a.DefaultSeparator){const s=[r.PersistenceKeys.INDEX,t,e];return n&&s.push(...n),o&&s.push(o),s.join(i)}function f(e,t,r,n,o=a.DefaultSeparator){const i={};let s;if(i[c.TABLE]={},i[c.TABLE][d.EQUAL]=t,n){const t={};t[e]=n;const a=(r||[]).map(e=>{const t={};return t[e]=n,t}),o={};o[c.TABLE]=n,s=[t,...a,o]}else s=[e,...r||[],c.TABLE];const l=p(e,t,r,n,o);return{index:{fields:s},ddoc:[l,c.DDOC].join(o),name:l}}function g(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:a,operator:n,comparison:o}=e;if(a instanceof r.Condition){const e=h(a,t);if(n===r.Operator.NOT)return`!(${e})`;const i=h(o,t);return n===r.GroupOperator.AND?`(${e} && ${i})`:n===r.GroupOperator.OR?`(${e} || ${i})`:e}const i=`${t}[${JSON.stringify(a)}]`;switch(n){case r.Operator.EQUAL:return`${i} === ${g(o)}`;case r.Operator.DIFFERENT:return`${i} !== ${g(o)}`;case r.Operator.BIGGER:return`${i} > ${g(o)}`;case r.Operator.BIGGER_EQ:return`${i} >= ${g(o)}`;case r.Operator.SMALLER:return`${i} < ${g(o)}`;case r.Operator.SMALLER_EQ:return`${i} <= ${g(o)}`;case r.Operator.IN:return`(${g(o)}).indexOf(${i}) !== -1`;case r.Operator.REGEXP:return`${o instanceof RegExp?g(o):`new RegExp(${JSON.stringify(o)})`}.test(${i})`;case r.Operator.NOT:return`!(${i} === ${g(o)})`;default:return"true"}}function m(e,t,r){return e?Array.isArray(e)?e:[e]:t?[t,...r||[]]:r||[]}function y(e,r,a){const n=t.Metadata.get(e,r)||{};return Object.entries(n).flatMap(([e,t])=>t&&"object"==typeof t?Object.values(t).map(t=>{const r=t;return{...r,kind:a,attribute:r.attribute||e}}):[])}function O(e){const t={},a=[[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 o=n.Model.tableName(e);a.flatMap(([t,r])=>y(e,t,r)).forEach(e=>{const a=m(e.key,e.attribute,e.compositions);if(!a.length)return;const n=a[0],i=a.slice(1),s=e.directions||[r.OrderDirection.ASC,r.OrderDirection.DSC],c=f(n,o,i);t[c.name||""]=c,s.forEach(e=>{const r=f(n,o,i,e);t[r.name||""]=r})})}),Object.values(t)}function A(e,t){Object.defineProperty(e,r.PersistenceKeys.METADATA,{enumerable:!1,configurable:!0,writable:!0,value:t})}function E(e){const t=Object.getOwnPropertyDescriptor(e,r.PersistenceKeys.METADATA);return t?t.value:void 0}function b(e){Object.getOwnPropertyDescriptor(e,r.PersistenceKeys.METADATA)&&delete e[r.PersistenceKeys.METADATA]}class v extends r.Repository{constructor(e,t){super(e,t)}assignMetadata(e,t){const r=(e,t)=>{const r=E(t??e);return r&&A(e,r),e};return Array.isArray(e)?e.map((e,a)=>{const n=Array.isArray(t)?t[a]:t;return r(e,n)}):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:o,log:i}=(await this.logCtx(t,a.OperationKeys.UPDATE,!0)).for(this.updatePrefix),s=r.get("ignoreHandlers"),c=r.get("ignoreValidation");i.silly(`handlerSetting: ${s}, validationSetting: ${c}`);const d=e[this.pk];if(!d)throw new a.InternalError("No value for the Id is defined under the property "+this.pk);let l,u;if(r.get("applyUpdateValidation")&&(l=await this.read(d),u=l?E(l):void 0,r.get("mergeForUpdate")&&(e=n.Model.merge(l,e,this.class))),s||await a.enforceDBDecorators(this,r,e,a.OperationKeys.UPDATE,a.OperationKeys.ON,l),!c){const t=r.get("ignoredValidationProperties")||[];i.silly("ignored validation properties: "+t);const n=await Promise.resolve(e.hasErrors(l,...t));if(n)throw new a.ValidationError(n.toString())}return u&&A(e,u),[e,...o,l]}async updateAllPrefix(e,...t){const{ctx:r,ctxArgs:o,log:i}=(await this.logCtx(t,a.BulkCrudOperationKeys.UPDATE_ALL,!0)).for(this.updateAllPrefix),s=r.get("ignoreHandlers"),c=r.get("ignoreValidation");i.silly(`handlerSetting: ${s}, ignoredValidation: ${c}`);const d=e.map(e=>{const t=e[this.pk];if(!t)throw new a.InternalError("missing id on update operation");return t});let l;if(r.get("applyUpdateValidation")&&(l=await this.readAll(d,r),e=e.map((e,t)=>{r.get("mergeForUpdate")&&(e=n.Model.merge(l[t],e,this.class));const a=E(l[t]);return a&&A(e,a),e})),s||await Promise.all(e.map((e,t)=>a.enforceDBDecorators(this,r,e,a.OperationKeys.UPDATE,a.OperationKeys.ON,l?l[t]:void 0))),!c){const t=r.get("ignoredValidationProperties")||[];let n;i.silly("ignored validation properties: "+t),n=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 o=a.reduceErrorsToPrint(n);if(o)throw new a.ValidationError(o)}return[e,...o,l]}}class w extends a.BaseError{constructor(e){super(w.name,e,404)}}class D extends r.Paginator{constructor(e,t,r,a){super(e,t,r,a)}prepare(e){const t=Object.assign({},e);return t.limit&&(this.limit=t.limit),t.limit=this.size,t}async page(e=1,o,...i){const{log:s,ctxArgs:c,ctx:d}=this.adapter.logCtx([o,...i],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 u=await this.adapter.raw(l,!1,...c),{docs:p,bookmark:f,warning:g}=u;if(g&&s.warn(g),!this.clazz)throw new r.PagingError("No statement target defined");const h=n.Model.pk(this.clazz),m=t.Metadata.get(this.clazz,t.Metadata.key(a.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,d));return this._bookmark=f,this._currentPage=e,y}}function _(e){for(const t of[d,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 x extends r.Statement{constructor(e){super(e)}build(){const e=this.log.for(this.build),t={};t[c.TABLE]={},t[c.TABLE]=n.Model.tableName(this.fromSelector);const a={selector:t};if(this.selectSelector&&(a.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(r.Condition.and(this.whereCondition,r.Condition.attribute(c.TABLE).eq(a.selector[c.TABLE]))).selector,n=Object.keys(t);if(1===n.length&&-1!==Object.values(l).indexOf(n[0]))switch(n[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 a=r[0];return a===l.AND?e.push(...t[a]):e.push(t),e},[])],a.selector=t;break;case l.OR:{const e={};e[l.AND]=[t,...Object.entries(a.selector).map(([e,t])=>{const r={};return r[e]=t,r})],a.selector=e;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,r])=>{a.selector[t]&&e.warn(`A ${t} query param is about to be overridden: ${a.selector[t]} by ${r}`),a.selector[t]=r})}if(this.orderBySelector){a.sort=a.sort||[],a.selector=a.selector||{};const[e,t]=this.orderBySelector,r={};r[e]=t,a.sort.push(r),a.selector[e]||(a.selector[e]={},a.selector[e][d.BIGGER]=null)}return this.limitSelector?a.limit=this.limitSelector:(e.warn("No limit selector defined. Using default couchdb limit of 250"),a.limit=250),this.offsetSelector&&(a.skip=this.offsetSelector),a}processRecord(e,t,a,n){if(e[c.ID]){const[,...t]=e[c.ID].split(c.SEPARATOR),o=t.join("_");return this.adapter.revert(e,this.fromSelector,r.Sequence.parseValue(a,o),void 0,n)}return e}async raw(e,...r){const{ctx:o}=this.logCtx(r,this.raw),i=await this.adapter.raw(e,!0,o),s=n.Model.pk(this.fromSelector),c=t.Metadata.get(this.fromSelector,t.Metadata.key(a.DBKeys.ID,s))?.type;return this.selectSelector?i:i.map(e=>this.processRecord(e,s,c,o))}parseCondition(e){const{attr1:t,operator:a,comparison:n}=e;let o={};if(-1===[r.GroupOperator.AND,r.GroupOperator.OR,r.Operator.NOT].indexOf(a))o[t]={},o[t][_(a)]=n;else if(a===r.Operator.NOT)o=this.parseCondition(t).selector,o[_(r.Operator.NOT)]={},o[_(r.Operator.NOT)][t.attr1]=n;else{const e=this.parseCondition(t).selector,r=this.parseCondition(n).selector;o=((e,t,r)=>{const a={selector:{}};return a.selector[e]=[t,r],a})(_(a),e,r).selector}return{selector:o}}}class N 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;a.prefixMethod(this,e,this[t+"Prefix"])})}Statement(){return new x(this)}Paginator(e,t,r){return new D(this,e,t,r)}async initialize(){const e=r.Adapter.models(this.flavour);return this.index(...e)}repository(){return v}assignMetadata(e,t){return t?(A(e,t),e):e}assignMultipleMetadata(e,t){return e.forEach((e,r)=>(A(e,t[r]),e)),e}prepare(e,...t){const{log:o}=this.logCtx(t,this.prepare),i=e.segregate(),s=Object.entries(i.model).reduce((t,[r,o])=>{if(void 0===o)return t;const i=n.Model.columnName(e.constructor,r);if(this.isReserved(i))throw new a.InternalError(`Property name ${i} is reserved`);return o=o instanceof Date?new Date(o):o,t[i]=o,t},{});return e[r.PersistenceKeys.METADATA]&&(o.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[n.Model.pk(e.constructor)],transient:i.transient}}createPrefix(e,t,r,...a){const{ctxArgs:o}=this.logCtx(a,this.createPrefix),i=n.Model.tableName(e),s={};return s[c.TABLE]=i,s[c.ID]=this.generateId(i,t),Object.assign(s,r),[e,t,s,...o]}createAllPrefix(e,t,r,...o){const i=n.Model.tableName(e);if(t.length!==r.length)throw new a.InternalError("Ids and models must have the same length");const{ctxArgs:s}=this.logCtx(o,this.createAllPrefix),d=t.map((e,t)=>{const a={};return a[c.TABLE]=i,a[c.ID]=this.generateId(i,e),Object.assign(a,r[t]),a});return[e,t,d,...s]}updatePrefix(e,t,o,...i){const s=n.Model.tableName(e),{ctxArgs:d}=this.logCtx(i,this.updatePrefix),l={};l[c.TABLE]=s,l[c.ID]=this.generateId(s,t);const u=o[r.PersistenceKeys.METADATA];if(!u)throw new a.InternalError("No revision number found for record with id "+t);return Object.assign(l,o),l[c.REV]=u,[e,t,l,...d]}updateAllPrefix(e,t,o,...i){const s=n.Model.tableName(e);if(t.length!==o.length)throw new a.InternalError("Ids and models must have the same length");const{ctxArgs:d}=this.logCtx(i,this.updateAllPrefix),l=t.map((e,t)=>{const n={};n[c.TABLE]=s,n[c.ID]=this.generateId(s,e);const i=o[t][r.PersistenceKeys.METADATA];if(!i)throw new a.InternalError("No revision number found for record with id "+e);return Object.assign(n,o[t]),n[c.REV]=i,n});return[e,t,l,...d]}generateId(e,t){return[e,t].join(c.SEPARATOR)}parseError(e,t){return N.parseError(e,t)}isReserved(e){return!!e.match(s)}static parseError(e,t){if(e instanceof a.BaseError)return e;let n="";if("string"==typeof e){if(n=e,n.match(/already exist|update conflict/g))return new a.ConflictError(n);if(n.match(/missing|deleted/g))return new a.NotFoundError(n)}else e.code?(n=e.code,t=t||e.message):e.statusCode?(n=e.statusCode,t=t||e.message):n=e.message;switch(n.toString()){case"401":case"412":case"409":return new a.ConflictError(t);case"404":return new a.NotFoundError(t);case"400":return n.toString().match(/No\sindex\sexists/g)?new w(e):new a.InternalError(e);default:return n.toString().match(/ECONNREFUSED/g)?new r.ConnectionError(e):new a.InternalError(e)}}static setMetadata(e,t){A(e,t)}static getMetadata(e){return E(e)}static removeMetadata(e){b(e)}}function M(e,r,a){return(n,o)=>{const i=a?.name||((e,r,a)=>{const n=(t.Metadata.get(e.constructor,r)||{})[a]||{};return Object.keys(n).length+1+""})(n,e,o),s=t.Metadata.key(e,o,i),c={...a||{},kind:r,attribute:o};return t.propMetadata(s,c)(n,o)}}o.__decorate([i.final(),o.__metadata("design:type",Function),o.__metadata("design:paramtypes",[]),o.__metadata("design:returntype",x)],N.prototype,"Statement",null),o.__decorate([i.final(),o.__metadata("design:type",Function),o.__metadata("design:paramtypes",[Object,String]),o.__metadata("design:returntype",Object)],N.prototype,"assignMetadata",null),o.__decorate([i.final(),o.__metadata("design:type",Function),o.__metadata("design:paramtypes",[Array,Array]),o.__metadata("design:returntype",Array)],N.prototype,"assignMultipleMetadata",null),o.__decorate([i.final(),o.__metadata("design:type",Function),o.__metadata("design:paramtypes",[Object,Object,Object,Object]),o.__metadata("design:returntype",Array)],N.prototype,"createPrefix",null),o.__decorate([i.final(),o.__metadata("design:type",Function),o.__metadata("design:paramtypes",[Object,Array,Array,Object]),o.__metadata("design:returntype",void 0)],N.prototype,"createAllPrefix",null),o.__decorate([i.final(),o.__metadata("design:type",Function),o.__metadata("design:paramtypes",[Object,Object,Object,Object]),o.__metadata("design:returntype",void 0)],N.prototype,"updatePrefix",null),o.__decorate([i.final(),o.__metadata("design:type",Function),o.__metadata("design:paramtypes",[Object,Array,Array,Object]),o.__metadata("design:returntype",void 0)],N.prototype,"updateAllPrefix",null);const T="##VERSION##",S="##PACKAGE##";t.Metadata.registerLibrary(S,T),Object.defineProperty(e,"DefaultSeparator",{enumerable:!0,get:()=>a.DefaultSeparator}),e.CouchDBAdapter=N,e.CouchDBConst={NULL:"null"},e.CouchDBGroupOperator=l,e.CouchDBKeys=c,e.CouchDBOperator=d,e.CouchDBPaginator=D,e.CouchDBQueryLimit=250,e.CouchDBRepository=v,e.CouchDBStatement=x,e.IndexError=w,e.PACKAGE_NAME=S,e.VERSION=T,e.count=(e,a)=>{let n={};return e instanceof r.Condition?n.condition=e:"object"==typeof e&&e?n=e:void 0!==e&&(n.value=e),a&&(n=Object.assign({},n,a)),t.Decoration.for(r.Operator.COUNT).define({decorator:e=>M(r.Operator.COUNT,"count",e),args:[n]}).apply()},e.distinct=(e,a)=>{let n={};return e instanceof r.Condition?n.condition=e:e&&(n=e),a&&(n=Object.assign({},n,a)),t.Decoration.for(r.Operator.DISTINCT).define({decorator:e=>M(r.Operator.DISTINCT,"distinct",e),args:[n]}).apply()},e.generateIndexDoc=f,e.generateIndexName=p,e.generateIndexes=e=>{const t=((e,t,r,n=a.DefaultSeparator)=>[...e.map(e=>e===c.TABLE?"table":e),...r||[],...t?[t]:[],c.INDEX].join(n))([c.TABLE]),o={};return o[t]={index:{fields:[c.TABLE]},name:t,ddoc:t,type:"json"},e.forEach(e=>{const t=n.Model.indexes(e);Object.entries(t).forEach(([t,i])=>{const s=Object.keys(i)[0];let{directions:l,compositions:u}=i[s];const p=n.Model.tableName(e);function f(e){const n=[p,t,...u,r.PersistenceKeys.INDEX].join(a.DefaultSeparator);if(o[n]={index:{fields:[c.TABLE,t,...u].reduce((t,r)=>{if(e){const a={};a[r]=e,t.push(a)}else t.push(r);return t},[])},name:n,ddoc:n,type:"json"},!e){const e={};e[c.TABLE]={},e[c.TABLE][d.EQUAL]=p,o[n].index.partial_filter_selector=e}}u=u||[],f(),l&&l.forEach(e=>f(e))})}),O(e).forEach(e=>{e.name&&(o[e.name]=e)}),Object.values(o)},e.generateViewIndexes=O,e.generateViews=e=>{const t={},o=[[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 i=n.Model.tableName(e);o.flatMap(([t,r])=>y(e,t,r)).forEach(e=>{const n=e.attribute,o=((e,t,r,n,o=a.DefaultSeparator)=>n.name?n.name:[e,t,r,"view"].join(o).replace(/\s+/g,"_"))(i,n,e.kind,e),s=e.ddoc||((e,t,r=a.DefaultSeparator)=>[e,t,c.DDOC].join(r))(i,o),d="_design/"+s,l=((e,t,a,n)=>{const o=((e,t,a)=>{if(a.map)return"function"==typeof a.map?a.map.toString():a.map;const n=[];if(n.push(`doc[${JSON.stringify(c.TABLE)}] === ${JSON.stringify(e)}`),a.condition)if(a.condition instanceof r.Condition)n.push(h(a.condition,"doc"));else if("string"==typeof a.condition)n.push(a.condition);else{const e=r.Condition.from(a.condition);n.push(h(e,"doc"))}"count"===a.kind&&void 0!==a.value&&n.push(`doc[${JSON.stringify(t)}] === ${g(a.value)}`);const o=((e,t="doc")=>{if(!e)return;if("string"==typeof e)return e;const r=e.field||"roles",a=e.roles||[];if(!a.length)return e.expression;const n=`${t}[${JSON.stringify(r)}] || []`;return"all"===(e.mode||"any")?a.map(e=>`${n}.indexOf(${JSON.stringify(e)}) !== -1`).join(" && "):a.map(e=>`${n}.indexOf(${JSON.stringify(e)}) !== -1`).join(" || ")})(a.auth,"doc");o&&n.push(o);const i=n.length?n.join(" && "):"true",s=((e,t,r)=>{const a=m(e,t,r);return 1===a.length?`doc[${JSON.stringify(a[0])}]`:`[${a.map(e=>`doc[${JSON.stringify(e)}]`).join(", ")}]`})(a.key,t,a.compositions),d=((e,t)=>"doc"===e?"doc":e?Array.isArray(e)?`[${e.map(e=>`doc[${JSON.stringify(e)}]`).join(", ")}]`:"string"==typeof e?`doc[${JSON.stringify(e)}]`:g(e):`doc[${JSON.stringify(t)}]`)(a.value??(a.returnDocs&&"sum"!==a.kind?"doc":void 0),t);return`function (doc) {\n if (!(${i})) return;\n emit(${s}, ${d});\n}`})(n,t,a),i=a.reduce?"function"==typeof a.reduce?a.reduce.toString():a.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:o,reduce:i}})(e.kind,n,e,i);t[d]||(t[d]={_id:d,language:"javascript",views:{}}),t[d].views[o]=l})}),Object.values(t)},e.getMetadata=E,e.groupBy=(e,a)=>{let n={};return Array.isArray(e)?n.compositions=e:"string"==typeof e?n.name=e:e&&(n=e),"string"==typeof a?n.name=a:a&&(n=Object.assign({},n,a)),t.Decoration.for(r.Operator.GROUP_BY).define({decorator:e=>M(r.Operator.GROUP_BY,"groupBy",e),args:[n]}).apply()},e.max=(e,a)=>{let n={};return e instanceof r.Condition?n.condition=e:e&&(n=e),a&&(n=Object.assign({},n,a)),t.Decoration.for(r.Operator.MAX).define({decorator:e=>M(r.Operator.MAX,"max",e),args:[n]}).apply()},e.min=(e,a)=>{let n={};return e instanceof r.Condition?n.condition=e:e&&(n=e),a&&(n=Object.assign({},n,a)),t.Decoration.for(r.Operator.MIN).define({decorator:e=>M(r.Operator.MIN,"min",e),args:[n]}).apply()},e.reAuth=u,e.removeMetadata=b,e.reservedAttributes=s,e.setMetadata=A,e.sum=(e,a)=>{let n={};return e instanceof r.Condition?n.condition=e:e&&(n=e),a&&(n=Object.assign({},n,a)),t.Decoration.for(r.Operator.SUM).define({decorator:e=>M(r.Operator.SUM,"sum",e),args:[n]}).apply()},e.testReservedAttributes=e=>e.match(/^_.*$/g),e.translateOperators=_,e.view=e=>t.Decoration.for(c.VIEW).define({decorator:e=>M(c.VIEW,"view",e),args:[e]}).apply(),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,a)=>{const n=e.use?e.use(t):e;return["insert","get","put","destroy","find","view"].forEach(t=>{const o=n[t];Object.defineProperty(n,t,{enumerable:!1,configurable:!0,value:async(...t)=>(await u(e,r,a),o.call(n,...t))})}),Object.defineProperty(n,c.NATIVE,{enumerable:!1,configurable:!1,writable:!1,value:e}),n}},"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 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);
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/decorators.ts","../src/index.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","collectViewMetadata","model","kind","meta","Metadata","get","Object","entries","flatMap","values","entry","generateViewIndexes","models","indexes","viewKeys","GROUP_BY","COUNT","SUM","MAX","MIN","DISTINCT","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","build","selectors","fromSelector","selector","selectSelector","whereCondition","parseCondition","and","eq","selectorKeys","indexOf","reduce","accum","val","Error","s","orderBySelector","sort","rec","limitSelector","offsetSelector","processRecord","pkAttr","sequenceType","keyArgs","split","rawInput","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","count","parseError","err","reason","match","code","ConflictError","NotFoundError","message","statusCode","ConnectionError","applyViewDecorator","metaKey","opts","slot","attrBucket","String","nextViewSlot","propMetadata","__decorate","final","prototype","VERSION","PACKAGE_NAME","registerLibrary","NULL","valueOrCondition","options","Decoration","define","decorator","o","conditionOrOptions","n","ind","generate","res","tableFilter","partial_filter_selector","viewDocs","viewName","replace","generateViewName","ddocName","generateDesignDocName","ddocId","viewDef","guards","resolved","from","authGuard","field","roles","expression","listExpr","mode","buildAuthGuard","guard","emitKey","buildEmitKey","emitValue","v","buildEmitValue","returnDocs","buildMapFunction","defaultReduce","normalizeViewMetadata","_id","language","views","compositionsOrOptions","nameOrOptions","concat","dbName","db","use","original","call"],"mappings":"sDAMa,MAAAA,EAAqB,SAyBrBC,EAAc,CACzBC,UAAW,KACXC,GAAI,MACJC,IAAK,OACLC,QAAS,WACTC,MAAO,UACPC,SAAU,aACVC,KAAM,OACNC,OAAQ,WACRC,MAAO,QAGPC,KAAM,QChBKC,EAAiD,CAC5DC,MAAO,MACPC,UAAW,MACXC,OAAQ,MACRC,UAAW,OACXC,QAAS,MACTC,WAAY,OAEZC,IAAK,OACLC,GAAI,MAEJC,OAAQ,UAaGC,EAAsD,CACjEC,IAAK,OACLC,GAAI,OCrCCC,eAAeC,EAAOC,EAAUC,EAAcC,GACnD,OAAOF,EAAIG,KAAKF,EAAMC,EACxB,CA0FgB,SAAAE,EACdC,EACAC,EACAC,EACAC,EACAC,EAAYC,oBAEZ,MAAMC,EAAO,CAACC,EAAeA,gBAAC7B,MAAOuB,EAAWD,GAGhD,OAFIE,GAAcI,EAAKE,QAAQN,GAC3BC,GAAOG,EAAKE,KAAKL,GACdG,EAAKG,KAAKL,EACnB,CAyCgB,SAAAM,EACdV,EACAC,EACAC,EACAC,EACAC,EAAYC,oBAEZ,MAAMM,EAAuC,CAAA,EAK7C,IAAIC,EACJ,GALAD,EAAsB1C,EAAYK,OAAS,GAC1CqC,EAAsB1C,EAAYK,OACjCM,EAAgBC,OACdoB,EAEAE,EAAO,CACT,MAAMU,EAAuB,CAAA,EAC7BA,EAAUb,GAAaG,EACvB,MAAMW,GAAmCZ,GAAgB,IAAIa,IAAKC,IAChE,MAAMC,EAAe,CAAA,EAErB,OADAA,EAAED,GAAKb,EACAc,IAEHC,EAAyB,CAAA,EAC/BA,EAAYjD,EAAYK,OAAS6B,EACjCS,EAAS,CAACC,KAAcC,EAAoBI,EAC7C,MACCN,EAAS,CAACZ,KAAeE,GAAgB,GAAKjC,EAAYK,OAE5D,MAAM6C,EAAOpB,EACXC,EACAC,EACAC,EACAC,EACAC,GAEF,MAAO,CACLgB,MAAO,CACLR,OAAQA,GAGVS,KAAM,CAACF,EAAMlD,EAAYO,MAAMiC,KAAKL,GACpCe,KAAMA,EAEV,CCvLA,SAASG,EAAYC,GACnB,OAAIA,aAAiBC,KAAaC,KAAKC,UAAUH,EAAMI,eACnDJ,aAAiBK,OACZ,cAAcH,KAAKC,UAAUH,EAAMM,YAAYJ,KAAKC,UACzDH,EAAMO,UAEHL,KAAKC,UAAUH,EACxB,CAEA,SAASQ,EAAcC,EAA2BC,GAChD,MAAMC,MAAEA,EAAKC,SAAEA,EAAQC,WAAEA,GAAeJ,EAMxC,GAAIE,aAAiBG,EAAAA,UAAW,CAC9B,MAAMC,EAAOP,EAAcG,EAAOD,GAClC,GAAIE,IAAaI,EAAAA,SAASpD,IAAK,MAAO,KAAKmD,KAC3C,MAAME,EAAQT,EAAcK,EAA8BH,GAC1D,OAAIE,IAAaM,EAAAA,cAAclD,IAAY,IAAI+C,QAAWE,KACtDL,IAAaM,EAAAA,cAAcjD,GAAW,IAAI8C,QAAWE,KAClDF,CACR,CAED,MAAMI,EAAW,GAAGT,KAAUR,KAAKC,UAAUQ,MAC7C,OAAQC,GACN,KAAKI,EAAQA,SAAC1D,MACZ,MAAO,GAAG6D,SAAgBpB,EAAYc,KACxC,KAAKG,EAAQA,SAACzD,UACZ,MAAO,GAAG4D,SAAgBpB,EAAYc,KACxC,KAAKG,EAAQA,SAACxD,OACZ,MAAO,GAAG2D,OAAcpB,EAAYc,KACtC,KAAKG,EAAQA,SAACvD,UACZ,MAAO,GAAG0D,QAAepB,EAAYc,KACvC,KAAKG,EAAQA,SAACtD,QACZ,MAAO,GAAGyD,OAAcpB,EAAYc,KACtC,KAAKG,EAAQA,SAACrD,WACZ,MAAO,GAAGwD,QAAepB,EAAYc,KACvC,KAAKG,EAAQA,SAACnD,GACZ,MAAO,IAAIkC,EAAYc,eAAwBM,YACjD,KAAKH,EAAAA,SAASlD,OAKZ,MAAO,GAHL+C,aAAsBR,OAClBN,EAAYc,GACZ,cAAcX,KAAKC,UAAUU,cACXM,KAE1B,KAAKH,EAAQA,SAACpD,IACZ,MAAO,KAAKuD,SAAgBpB,EAAYc,MAC1C,QACE,MAAO,OAEb,CAsBA,SAASO,EACPC,EACAtC,EACAJ,GAEA,OAAK0C,EACEC,MAAMC,QAAQF,GAAOA,EAAM,CAACA,GADlBtC,EAAO,CAACA,KAAUJ,GAAgB,IAAOA,GAAgB,EAE5E,CAiHA,SAAS6C,EACPC,EACAJ,EACAK,GAEA,MAAMC,EAAOC,EAAAA,SAASC,IAAIJ,EAAOJ,IAAQ,GACzC,OAAOS,OAAOC,QAAQJ,GAA6BK,QACjD,EAAEjD,EAAMgD,KACDA,GAA8B,iBAAZA,EAChBD,OAAOG,OAAOF,GAAgCvC,IAAK0C,IACxD,MAAMlC,EAAQkC,EACd,MAAO,IACFlC,EACH0B,OACAjD,UAAWuB,EAAMvB,WAAaM,KANkB,GAW1D,CA4CM,SAAUoD,EACdC,GAEA,MAAMC,EAA8C,CAAA,EAE9CC,EAA8B,CAClC,CAAC5F,EAAYU,KAAM,QACnB,CAAC4D,EAAQA,SAACuB,SAAU,WACpB,CAACvB,EAAQA,SAACwB,MAAO,SACjB,CAACxB,EAAQA,SAACyB,IAAK,OACf,CAACzB,EAAQA,SAAC0B,IAAK,OACf,CAAC1B,EAAQA,SAAC2B,IAAK,OACf,CAAC3B,EAAQA,SAAC4B,SAAU,aAkCtB,OA/BAR,EAAOS,QAASC,IACd,MAAMpE,EAAYqE,EAAAA,MAAMrE,UAAUoE,GACpBR,EAASN,QAAQ,EAAEX,EAAKK,KACpCF,EAAoBsB,EAAGzB,EAAKK,IAGxBmB,QAASlB,IACb,MAAMN,EAAMD,EAAaO,EAAKN,IAAKM,EAAKlD,UAAWkD,EAAKhD,cACxD,IAAK0C,EAAI2B,OAAQ,OACjB,MAAMvE,EAAY4C,EAAI,GAChB1C,EAAe0C,EAAI4B,MAAM,GACzBC,EAAavB,EAAKuB,YAAc,CACpCC,EAAAA,eAAeC,IACfD,EAAAA,eAAeE,KAGXC,EAAYnE,EAAiBV,EAAWC,EAAWC,GACzD0D,EAAQiB,EAAU1D,MAAQ,IAAM0D,EAEhCJ,EAAWL,QAASU,IAClB,MAAMC,EAAWrE,EACfV,EACAC,EACAC,EACA4E,GAEFlB,EAAQmB,EAAS5D,MAAQ,IAAM4D,QAK9B1B,OAAOG,OAAOI,EACvB,CCjUgB,SAAAoB,EAA6BhC,EAAUiC,GACrD5B,OAAO6B,eAAelC,EAAOzC,EAAAA,gBAAgB4E,SAAU,CACrDC,YAAY,EACZC,cAAc,EACdC,UAAU,EACV/D,MAAO0D,GAEX,CAEM,SAAUM,EAA6BvC,GAC3C,MAAMwC,EAAanC,OAAOoC,yBACxBzC,EACAzC,EAAAA,gBAAgB4E,UAElB,OAAOK,EAAaA,EAAWjE,WAAQmE,CACzC,CAEM,SAAUC,EAAgC3C,GAC3BK,OAAOoC,yBACxBzC,EACAzC,EAAAA,gBAAgB4E,kBAEMnC,EAAczC,kBAAgB4E,SACxD,CCVM,MAAOS,UAGHC,EAAAA,WACR,WAAAC,CAAYC,EAAY/C,GACtBgD,MAAMD,EAAS/C,EAChB,CAIS,cAAAiD,CAAeC,EAAiBrE,GACxC,MAAMsE,EAAQ,CAACC,EAAaC,KAC1B,MACMpB,EAAWM,EADMc,GAAWD,GAGlC,OADInB,GAAUD,EAAYoB,EAAUnB,GAC7BmB,GAGT,OAAIvD,MAAMC,QAAQoD,GACTA,EAAOnF,IAAI,CAACiC,EAAO5B,KACxB,MAAMiF,EAAUxD,MAAMC,QAAQjB,GAAUA,EAAOT,GAASS,EACxD,OAAOsE,EAAMnD,EAAOqD,KAKjBF,EAAMD,EADGrD,MAAMC,QAAQjB,GAAUA,IAAS,GAAKA,EAEvD,CAEQ,YAAMyE,CACbtD,KACGuD,GAEH,MAAMC,QAAeR,MAAMM,OAAOtD,KAAUuD,GAG5C,OAFAE,KAAKR,eAAeO,GACpBC,KAAKR,eAAejD,EAAOwD,GACpBA,CACR,CAEQ,eAAME,CACb/C,KACG4C,GAEH,MAAMI,QAAgBX,MAAMU,UAAU/C,KAAW4C,GAGjD,OAFAE,KAAKR,eAAeU,GACpBF,KAAKR,eAAetC,EAAQgD,GACrBA,CACR,CAEQ,UAAMC,CACbC,KACGN,GAEH,MAAMC,QAAeR,MAAMY,KAAKC,KAAON,GACvC,OAAOE,KAAKR,eAAeO,EAC5B,CAEQ,aAAMM,CACbC,KACGR,GAEH,MAAMI,QAAgBX,MAAMc,QAAQC,KAAQR,GAC5C,OAAOE,KAAKR,eAAeU,EAC5B,CAEQ,YAAMK,CACbhE,KACGuD,GAEH,MAAMC,QAAeR,MAAMgB,OAAOhE,KAAUuD,GAG5C,OAFAE,KAAKR,eAAeO,GACpBC,KAAKR,eAAejD,EAAOwD,GACpBA,CACR,CAEQ,eAAMS,CACbtD,KACG4C,GAEH,MAAMI,QAAgBX,MAAMiB,UAAUtD,KAAW4C,GAGjD,OAFAE,KAAKR,eAAeU,GACpBF,KAAKR,eAAetC,EAAQgD,GACrBA,CACR,CAEQ,YAAM,CACbE,KACGN,GAEH,MAAMC,QAAeR,MAAMkB,OAAOL,KAAON,GACzC,OAAOE,KAAKR,eAAeO,EAC5B,CAEQ,eAAMW,CACbJ,KACGR,GAEH,MAAMI,QAAgBX,MAAMmB,UAAUJ,KAAQR,GAC9C,OAAOE,KAAKR,eAAeU,EAC5B,CAWkB,kBAAMS,CACvBpE,KACGuD,GAEH,MAAMc,IAAEA,EAAGC,QAAEA,EAAOC,IAAEA,UACdd,KAAKe,OAAOjB,EAAMkB,EAAaA,cAACC,QAAQ,IAC9CC,IAAIlB,KAAKW,cAELQ,EAAiBP,EAAIjE,IAAI,kBACzByE,EAAiBR,EAAIjE,IAAI,oBAC/BmE,EAAIO,MACF,mBAAmBF,yBAAsCC,KAE3D,MAAME,EAAK/E,EAAMyD,KAAKsB,IACtB,IAAKA,EACH,MAAM,IAAIC,EAAaA,cACrB,qDAAqDvB,KAAKsB,IAE9D,IAAIE,EACAC,EAmBJ,GAjBIb,EAAIjE,IAAI,2BACV6E,QAAiBxB,KAAKG,KAAKmB,GAC3BG,EAAcD,EAAW1C,EAAY0C,QAAYvC,EAE7C2B,EAAIjE,IAAI,oBACVJ,EAAQsB,EAAKA,MAAC6D,MAAMF,EAAUjF,EAAOyD,KAAK2B,SAEzCR,SACGS,EAAmBA,oBACvB5B,KACAY,EACArE,EACAyE,gBAAcC,OACdD,EAAaA,cAACa,GACdL,IAGCJ,EAAgB,CACnB,MAAMU,EAAgBlB,EAAIjE,IAAI,gCAAkC,GAChEmE,EAAIO,MAAM,kCAAkCS,GAC5C,MAAMC,QAAeC,QAAQC,QAC3B1F,EAAM2F,UAAUV,KAAaM,IAE/B,GAAIC,EAAQ,MAAM,IAAII,EAAeA,gBAACJ,EAAOK,WAC9C,CAED,OADIX,GAAalD,EAAYhC,EAAOkF,GAC7B,CAAClF,KAAUsE,EAASW,EAC5B,CAWkB,qBAAMa,CACvBnF,KACG4C,GAEH,MAAMc,IAAEA,EAAGC,QAAEA,EAAOC,IAAEA,UACdd,KAAKe,OAAOjB,EAAMwC,EAAqBA,sBAACC,YAAY,IAC1DrB,IAAIlB,KAAKqC,iBAELlB,EAAiBP,EAAIjE,IAAI,kBACzByE,EAAiBR,EAAIjE,IAAI,oBAC/BmE,EAAIO,MACF,mBAAmBF,yBAAsCC,KAE3D,MAAMd,EAAMpD,EAAO5C,IAAKsD,IACtB,MAAMwC,EAAKxC,EAAEoC,KAAKsB,IAClB,IAAKlB,EAAI,MAAM,IAAImB,EAAAA,cAAc,kCACjC,OAAOnB,IAET,IAAIoC,EAyBJ,GAxBI5B,EAAIjE,IAAI,2BACV6F,QAAkBxC,KAAKK,QAAQC,EAAiBM,GAChD1D,EAASA,EAAO5C,IAAI,CAACsD,EAAG6E,KAClB7B,EAAIjE,IAAI,oBACViB,EAAIC,EAAAA,MAAM6D,MAAOc,EAAkBC,GAAI7E,EAAGoC,KAAK2B,QACjD,MAAMF,EAAc3C,EAAa0D,EAAkBC,IAEnD,OADIhB,GAAalD,EAAYX,EAAG6D,GACzB7D,KAGNuD,SACGa,QAAQU,IACZxF,EAAO5C,IAAI,CAACsD,EAAG6E,IACbb,sBACE5B,KACAY,EACAhD,EACAoD,gBAAcC,OACdD,EAAaA,cAACa,GACdW,EAAYA,EAAUC,QAAKxD,MAK9BmC,EAAgB,CACnB,MAAMuB,EAAe/B,EAAIjE,IAAI,gCAAkC,GAE/D,IAAIiG,EADJ9B,EAAIO,MAAM,kCAAkCsB,GAO1CC,EALGhC,EAAIjE,IAAI,+BAKcqF,QAAQU,IAC/BxF,EAAO5C,IAAI,CAACsD,EAAG6E,IACbT,QAAQC,QACNrE,EAAEsE,UAAWM,EAAkBC,MAAcE,YAP1BX,QAAQC,QAC/B/E,EAAO5C,IAAKsD,GAAMA,EAAEsE,aAAaS,KAYrC,MAAME,EAAgBC,sBAAoBF,GAE1C,GAAIC,EAAe,MAAM,IAAIV,EAAAA,gBAAgBU,EAC9C,CACD,MAAO,CAAC3F,KAAW2D,EAAS2B,EAC7B,ECxOG,MAAOO,UAAmBC,EAAAA,UAC9B,WAAA3D,CAAY4D,GACV1D,MAAMwD,EAAWrI,KAAMuI,EAAK,IAC7B,ECYG,MAAOC,UAA0CC,EAAAA,UAarD,WAAA9D,CACEC,EACA8D,EACAC,EACAC,GAEA/D,MAAMD,EAAS8D,EAAOC,EAAMC,EAC7B,CAQS,OAAAC,CAAQC,GAChB,MAAMJ,EAAoBxG,OAAO6G,OAAO,CAAE,EAAED,GAK5C,OAJIJ,EAAMM,QAAO1D,KAAK0D,MAAQN,EAAMM,OAEpCN,EAAMM,MAAQ1D,KAAKqD,KAEZD,CACR,CA6DQ,UAAMO,CACbA,EAA2B,EAC3BC,KACG9D,GAEH,MAAMgB,IAAEA,EAAGD,QAAEA,EAAOD,IAAEA,GAAQZ,KAAKV,QAAgB,OACjD,CAACsE,KAAa9D,GACdE,KAAK2D,MAEP,GAAI3D,KAAK6D,sBACP,aAAa7D,KAAK8D,aAAaH,KAAS9C,GAC1C,MAAMkD,EAAYnH,OAAO6G,OAAO,CAAA,EAAIzD,KAAK+D,WAEzC,GAAK/D,KAAKgE,cAAiBhE,KAAKiE,YAe9BN,EAAO3D,KAAKkE,aAAaP,GACzBI,EAAUI,MAAQR,EAAO,GAAK3D,KAAKqD,SAhBQ,CAC3CrD,KAAKiE,YAAcjE,KAAKgE,aAAe,EACvC,MAAMI,QACGpE,KAAKV,QAAQ+E,IAClB,IAAKN,EAAWL,MAAOY,OAAOC,YAC9B,KACG1D,IACC,GAER,GADAb,KAAKgE,aAAeI,EAAatG,OAC7BkC,KAAKgE,aAAe,EAAG,CACzB,MAAMX,EAAOU,GAAWL,OAAS1D,KAAKqD,KAEtC,OADArD,KAAKiE,YAAcO,KAAKC,KAAKzE,KAAKgE,aAAeX,SACpCrD,KAAK2D,KAAKA,KAAS9C,EACjC,CACF,CAKD,GAAa,IAAT8C,EAAY,CACd,IAAK3D,KAAK0E,UACR,MAAM,IAAIC,EAAAA,YAAY,iDACxBZ,EAAoB,SAAI/D,KAAK0E,SAC9B,CACD,MAAME,QAAuC5E,KAAKV,QAAQ+E,IACxDN,GACA,KACGlD,IAGCgE,KAAEA,EAAMjB,SAAUkB,EAAYC,QAAEA,GAAYH,EAElD,GADIG,GAASjE,EAAIkE,KAAKD,IACjB/E,KAAKsD,MAAO,MAAM,IAAIqB,EAAAA,YAAY,+BACvC,MAAMvE,EAAKvC,EAAKA,MAACyD,GAAGtB,KAAKsD,OACnB2B,EAAOvI,EAAQA,SAACC,IACpBqD,KAAKsD,MACL5G,EAAAA,SAASP,IAAI+I,EAAMA,OAACxN,GAAI0I,KACvB6E,KACGE,EACJpB,EAAU5J,QAAU4J,EAAU5J,OAAO2D,OACjC+G,EACAA,EAAKvK,IAAK8K,GACDpF,KAAKV,QAAQ+F,OAClBD,EACApF,KAAKsD,MACLgC,EAAAA,SAASC,WAAWN,EAAMG,EAAEhF,SAC5BnB,EACA2B,IAKV,OAFAZ,KAAK0E,UAAYI,EACjB9E,KAAKwF,aAAe7B,EACbwB,CACR,EChKG,SAAUM,EACd/J,GAEA,IAAK,MAAMgK,IAAa,CAACvN,EAAiBU,GAAuB,CAC/D,MAAM8M,EAAK/I,OAAOgJ,KAAKF,GAAWG,KAAMC,GAAMA,IAAMpK,GACpD,GAAIiK,EAAI,OAAOD,EAAUC,EAC1B,CACD,MAAM,IAAII,EAAAA,WACR,mDAAmDrK,EAEvD,CCJM,MAAOsK,UAIHC,EAAAA,UACR,WAAA5G,CAAYC,GACVC,MAAMD,EACP,CA0DS,KAAA4G,GACR,MAAMpF,EAAMd,KAAKc,IAAII,IAAIlB,KAAKkG,OACxBC,EAA2B,CAAA,EACjCA,EAAU3O,EAAYK,OAAS,GAC/BsO,EAAU3O,EAAYK,OAASgG,EAAKA,MAACrE,UAAUwG,KAAKoG,cACpD,MAAMhD,EAAoB,CAAEiD,SAAUF,GAGtC,GAFInG,KAAKsG,iBAAgBlD,EAAMjJ,OAAS6F,KAAKsG,gBAEzCtG,KAAKuG,eAAgB,CACvB,MAAMhL,EAA2ByE,KAAKwG,eACpC5K,EAAAA,UAAU6K,IACRzG,KAAKuG,eACL3K,EAAAA,UAAUrC,UAAa/B,EAAYK,OAAkB6O,GACnDtD,EAAMiD,SAAS7O,EAAYK,UAG/BwO,SACIM,EAAe/J,OAAOgJ,KAAKrK,GACjC,GAC0B,IAAxBoL,EAAa7I,SACqD,IAAlElB,OAAOG,OAAOlE,GAAsB+N,QAAQD,EAAa,IAEzD,OAAQA,EAAa,IACnB,KAAK9N,EAAqBC,IACxByC,EAAU1C,EAAqBC,KAAO,IACjC8D,OAAOG,OACRxB,EAAU1C,EAAqBC,MAC/B+N,OAAO,CAACC,EAAwBC,KAChC,MAAMnB,EAAOhJ,OAAOgJ,KAAKmB,GACzB,GAAoB,IAAhBnB,EAAK9H,OACP,MAAUkJ,MACR,kDAEJ,MAAMlB,EAAIF,EAAK,GAIf,OAHIE,IAAMjN,EAAqBC,IAC7BgO,EAAM/M,QAASgN,EAAIjB,IAChBgB,EAAM/M,KAAKgN,GACTD,GACN,KAEL1D,EAAMiD,SAAW9K,EACjB,MACF,KAAK1C,EAAqBE,GAAI,CAC5B,MAAMkO,EAAsB,CAAA,EAC5BA,EAAEpO,EAAqBC,KAAO,CAC5ByC,KACGqB,OAAOC,QAAQuG,EAAMiD,UAAU/L,IAAI,EAAE6B,EAAK4K,MAC3C,MAAMhH,EAA2B,CAAA,EAEjC,OADAA,EAAO5D,GAAO4K,EACPhH,KAGXqD,EAAMiD,SAAWY,EACjB,KACD,CACD,QACE,MAAUD,MAAM,kCAGpBpK,OAAOC,QAAQtB,GAAWoC,QAAQ,EAAExB,EAAK4K,MACnC3D,EAAMiD,SAASlK,IACjB2E,EAAIkE,KACF,KAAK7I,4CAA8CiH,EAAMiD,SAASlK,SAAW4K,KAEjF3D,EAAMiD,SAASlK,GAAO4K,GAG3B,CAED,GAAI/G,KAAKkH,gBAAiB,CACxB9D,EAAM+D,KAAO/D,EAAM+D,MAAQ,GAC3B/D,EAAMiD,SAAWjD,EAAMiD,UAAa,CAAA,EACpC,MAAOA,EAAUvL,GAASkF,KAAKkH,gBAIzBE,EAAW,CAAA,EACjBA,EAAIf,GAAYvL,EACfsI,EAAM+D,KAAepN,KAAKqN,GACtBhE,EAAMiD,SAASA,KAClBjD,EAAMiD,SAASA,GAAY,GAC1BjD,EAAMiD,SAASA,GAA4BlO,EAAgBG,QAC1D,KAEL,CAaD,OAXI0H,KAAKqH,cACPjE,EAAMM,MAAQ1D,KAAKqH,eAEnBvG,EAAIkE,KACF,iEAEF5B,EAAMM,MR/LqB,KQkMzB1D,KAAKsH,iBAAgBlE,EAAMe,KAAOnE,KAAKsH,gBAEpClE,CACR,CAUS,aAAAmE,CACR/M,EACAgN,EACAC,EACA7G,GAEA,GAAIpG,EAAEhD,EAAYE,IAAK,CACrB,MAAS,IAAGgQ,GAAWlN,EAAEhD,EAAYE,IAAIiQ,MAAMnQ,EAAYC,WAErD2I,EAAKsH,EAAQ1N,KAAK,KACxB,OAAOgG,KAAKV,QAAQ+F,OAClB7K,EACAwF,KAAKoG,aACLd,WAASC,WAAWkC,EAAcrH,QAClCnB,EACA2B,EAEH,CACD,OAAOpG,CACR,CASQ,SAAM6J,CAAOuD,KAAyB9H,GAC7C,MAAMc,IAAEA,GAAQZ,KAAKe,OAAOjB,EAAME,KAAKqE,KAEjCnE,QAAuBF,KAAKV,QAAQ+E,IAAIuD,GAAU,EAAMhH,GAExD4G,EAAS3J,EAAKA,MAACyD,GAAGtB,KAAKoG,cACvBnB,EAAOvI,EAAQA,SAACC,IACpBqD,KAAKoG,aACL1J,EAAAA,SAASP,IAAI+I,EAAMA,OAACxN,GAAI8P,KACvBvC,KAEH,OAAKjF,KAAKsG,eAEHpG,EADEA,EAAQ5F,IAAKE,GAAMwF,KAAKuH,cAAc/M,EAAGgN,EAAQvC,EAAMrE,GAEjE,CAqCS,cAAA4F,CAAejL,GAmBvB,MAAME,MAAEA,EAAKC,SAAEA,EAAQC,WAAEA,GAAeJ,EAMxC,IAAIsM,EAAoB,CAAA,EACxB,IAGS,IAFP,CAAC7L,EAAaA,cAAClD,IAAKkD,EAAAA,cAAcjD,GAAI+C,EAAAA,SAASpD,KAAKkO,QAClDlL,GAGFmM,EAAGpM,GAAmB,GACrBoM,EAAGpM,GAAmCgK,EAAmB/J,IACxDC,OACG,GAAID,IAAaI,EAAQA,SAACpD,IAC/BmP,EAAK7H,KAAKwG,eAAe/K,GAAuB4K,SAChDwB,EAAGpC,EAAmB3J,EAAAA,SAASpD,MAAQ,CAAA,EACtCmP,EAAGpC,EAAmB3J,EAAAA,SAASpD,MAC7B+C,EAAuCA,OACtCE,MACC,CACL,MAAMmM,EAAW9H,KAAKwG,eAAe/K,GAAuB4K,SACtD0B,EAAW/H,KAAKwG,eAAe7K,GAA4B0K,SACjEwB,EAlCF,EACEA,EACAG,EACAC,KAEA,MAAMlI,EAAqB,CAAEsG,SAAU,CAAA,GAEvC,OADAtG,EAAOsG,SAASwB,GAAM,CAACG,EAAMC,GACtBlI,CACR,EA0BM2B,CAAM+D,EAAmB/J,GAAWoM,EAAKC,GAAK1B,QACpD,CAED,MAAO,CAAEA,SAAUwB,EACpB,EC7QG,MAAgBK,UAIZC,EAAAA,QACR,WAAA9I,CAAsB+I,EAAaC,EAAiBC,GAClD/I,MAAM6I,EAAOC,EAASC,GACtB,CAACtI,KAAKH,OAAQG,KAAKC,UAAWD,KAAKO,OAAQP,KAAKQ,WAAW7C,QAASC,IAClE,MAAMlD,EAAOkD,EAAElD,KACf6N,EAAYA,aAACvI,KAAMpC,EAAIoC,KAAatF,EAAO,YAE9C,CASD,SAAAuL,GAKE,OAAO,IAAID,EAAiBhG,KAC7B,CAEQ,SAAAmD,CACPC,EACAC,EACAC,GAEA,OAAO,IAAIJ,EAAiBlD,KAAMoD,EAAOC,EAAMC,EAChD,CAOQ,gBAAMkF,GACb,MAAMC,EAAgBN,EAAOA,QAACjL,OAAO8C,KAAKqI,SAC1C,OAAOrI,KAAKrF,SAAS8N,EACtB,CAEQ,UAAAC,GAGP,OAAOvJ,CACR,CAoCS,cAAAK,CACRjD,EACAoM,GAEA,OAAKA,GACLpK,EAAYhC,EAAcoM,GACnBpM,GAFUA,CAGlB,CAUS,sBAAAqM,CACR1L,EACA2L,GAMA,OAJA3L,EAAOS,QAAQ,CAACC,EAAG6E,KACjBlE,EAAYX,EAAUiL,EAAKpG,IACpB7E,IAEFV,CACR,CAEQ,OAAAqG,CACPhH,KACGuD,GAEH,MAAMgB,IAAEA,GAAQd,KAAKe,OAAOjB,EAAME,KAAKuD,SACjCoE,EAAQpL,EAAMuM,YACd/I,EAASnD,OAAOC,QAAQ8K,EAAMpL,OAAOsK,OACzC,CAACC,GAA6B3K,EAAK4K,MACjC,QAAmB,IAARA,EAAqB,OAAOD,EACvC,MAAMiC,EAAqBlL,EAAAA,MAAMmL,WAC/BzM,EAAM8C,YACNlD,GAEF,GAAI6D,KAAKiJ,WAAWF,GAClB,MAAM,IAAIxH,EAAaA,cAAC,iBAAiBwH,iBAG3C,OAFAhC,EAAMA,aAAehM,KAAO,IAAIA,KAAKgM,GAAOA,EAC5CD,EAAMiC,GAAchC,EACbD,GAET,CAAE,GAeJ,OAbKvK,EAAczC,kBAAgB4E,YAEjCoC,EAAIO,MACF,0CAA2C9E,EAAczC,EAAAA,gBAAgB4E,WAE3E9B,OAAO6B,eAAesB,EAAQjG,EAAAA,gBAAgB4E,SAAU,CACtDC,YAAY,EACZE,UAAU,EACVD,cAAc,EACd9D,MAAQyB,EAAczC,EAAeA,gBAAC4E,aAInC,CACLwK,OAAQnJ,EACRK,GAAI7D,EAAMsB,EAAKA,MAACyD,GAAG/E,EAAM8C,cACzB8J,UAAWxB,EAAMwB,UAEpB,CAWS,YAAAC,CACR9F,EACAlD,EACA7D,KACGuD,GAEH,MAAMe,QAAEA,GAAYb,KAAKe,OAAOjB,EAAME,KAAKoJ,cACrC5P,EAAYqE,EAAAA,MAAMrE,UAAU8J,GAC5B4F,EAA8B,CAAA,EAIpC,OAHAA,EAAO1R,EAAYK,OAAS2B,EAC5B0P,EAAO1R,EAAYE,IAAMsI,KAAKqJ,WAAW7P,EAAW4G,GACpDxD,OAAO6G,OAAOyF,EAAQ3M,GACf,CAAC+G,EAAOlD,EAAI8I,KAAWrI,EAC/B,CA4BS,eAAAyI,CACRhG,EACAhD,EACApD,KACG4C,GAEH,MAAMtG,EAAYqE,EAAAA,MAAMrE,UAAU8J,GAClC,GAAIhD,EAAIxC,SAAWZ,EAAOY,OACxB,MAAM,IAAIyD,EAAAA,cAAc,4CAC1B,MAAMV,QAAEA,GAAYb,KAAKe,OAAOjB,EAAME,KAAKsJ,iBACrCC,EAAUjJ,EAAIhG,IAAI,CAAC8F,EAAIoJ,KAC3B,MAAMN,EAA8B,CAAA,EAIpC,OAHAA,EAAO1R,EAAYK,OAAS2B,EAC5B0P,EAAO1R,EAAYE,IAAMsI,KAAKqJ,WAAW7P,EAAW4G,GACpDxD,OAAO6G,OAAOyF,EAAQhM,EAAOsM,IACtBN,IAET,MAAO,CAAC5F,EAAOhD,EAAKiJ,KAAY1I,EACjC,CA2BD,YAAAF,CACE2C,EACAlD,EACA7D,KACGuD,GAEH,MAAMtG,EAAYqE,EAAAA,MAAMrE,UAAU8J,IAC5BzC,QAAEA,GAAYb,KAAKe,OAAOjB,EAAME,KAAKW,cACrCuI,EAA8B,CAAA,EACpCA,EAAO1R,EAAYK,OAAS2B,EAC5B0P,EAAO1R,EAAYE,IAAMsI,KAAKqJ,WAAW7P,EAAW4G,GACpD,MAAMuI,EAAMpM,EAAMzC,EAAeA,gBAAC4E,UAClC,IAAKiK,EACH,MAAM,IAAIpH,EAAAA,cACR,+CAA+CnB,GAInD,OAFAxD,OAAO6G,OAAOyF,EAAQ3M,GACtB2M,EAAO1R,EAAYG,KAAOgR,EACnB,CAACrF,EAAOlD,EAAI8I,KAAWrI,EAC/B,CA4BS,eAAAwB,CACRiB,EACAhD,EACApD,KACG4C,GAEH,MAAMtG,EAAYqE,EAAAA,MAAMrE,UAAU8J,GAClC,GAAIhD,EAAIxC,SAAWZ,EAAOY,OACxB,MAAM,IAAIyD,EAAAA,cAAc,4CAC1B,MAAMV,QAAEA,GAAYb,KAAKe,OAAOjB,EAAME,KAAKqC,iBACrCkH,EAAUjJ,EAAIhG,IAAI,CAAC8F,EAAIoJ,KAC3B,MAAMN,EAA8B,CAAA,EACpCA,EAAO1R,EAAYK,OAAS2B,EAC5B0P,EAAO1R,EAAYE,IAAMsI,KAAKqJ,WAAW7P,EAAW4G,GACpD,MAAMuI,EAAMzL,EAAOsM,GAAO1P,EAAeA,gBAAC4E,UAC1C,IAAKiK,EACH,MAAM,IAAIpH,EAAAA,cACR,+CAA+CnB,GAInD,OAFAxD,OAAO6G,OAAOyF,EAAQhM,EAAOsM,IAC7BN,EAAO1R,EAAYG,KAAOgR,EACnBO,IAET,MAAO,CAAC5F,EAAOhD,EAAKiJ,KAAY1I,EACjC,CAuBS,UAAAwI,CAAW7P,EAAmB4G,GACtC,MAAO,CAAC5G,EAAW4G,GAAIpG,KAAKxC,EAAYC,UACzC,CASD,UAAAgS,CAAgCC,EAAqBC,GACnD,OAAOzB,EAAeuB,WAAWC,EAAKC,EACvC,CAQkB,UAAAV,CAAWpP,GAC5B,QAASA,EAAK+P,MAAMrS,EACrB,CA0DS,iBAAOkS,CACfC,EACAC,GAEA,GAAID,aAAe1G,EAASA,UAAE,OAAO0G,EACrC,IAAIG,EAAe,GACnB,GAAmB,iBAARH,EAAkB,CAE3B,GADAG,EAAOH,EACHG,EAAKD,MAAM,kCACb,OAAO,IAAIE,EAAAA,cAAcD,GAC3B,GAAIA,EAAKD,MAAM,oBAAqB,OAAO,IAAIG,EAAAA,cAAcF,EAC9D,MAAWH,EAAYG,MACtBA,EAAQH,EAAYG,KACpBF,EAASA,GAAUD,EAAIM,SACbN,EAAYO,YACtBJ,EAAQH,EAAYO,WACpBN,EAASA,GAAUD,EAAIM,SAEvBH,EAAOH,EAAIM,QAGb,OAAQH,EAAKzH,YACX,IAAK,MACL,IAAK,MACL,IAAK,MACH,OAAO,IAAI0H,EAAAA,cAAcH,GAC3B,IAAK,MACH,OAAO,IAAII,EAAAA,cAAcJ,GAC3B,IAAK,MACH,OAAIE,EAAKzH,WAAWwH,MAAM,sBACjB,IAAI7G,EAAW2G,GACjB,IAAInI,EAAAA,cAAcmI,GAC3B,QACE,OAAIG,EAAKzH,WAAWwH,MAAM,iBACjB,IAAIM,EAAAA,gBAAgBR,GACtB,IAAInI,EAAAA,cAAcmI,GAE9B,CAUD,kBAAOnL,CAA6BhC,EAAUiC,GAC5CD,EAAYhC,EAAOiC,EACpB,CASD,kBAAOM,CAA6BvC,GAClC,OAAOuC,EAAYvC,EACpB,CAQD,qBAAO2C,CAAgC3C,GACrC2C,EAAe3C,EAChB,ECjiBH,SAAS4N,EACPC,EACA5N,EACA6N,GAEA,MAAO,CAAmB5K,EAAa5F,KACrC,MAAMyQ,EAAOD,GAAM3P,MAjBvB,EACE+E,EACAtD,EACAtC,KAEA,MACM0Q,GADW7N,EAAAA,SAASC,IAAI8C,EAAOJ,YAAalD,IAAQ,IAC9BtC,IAAS,CAAA,EAErC,OADa+C,OAAOgJ,KAAK2E,GAAYzM,OAAS,EACvC0M,EACT,EAQ+BC,CAAahL,EAAQ2K,EAASvQ,GACnDsC,EAAMO,EAAAA,SAASP,IAAIiO,EAASvQ,EAAgByQ,GAC5CxP,EAAsB,IACtBuP,GAAQ,CAAA,EACZ7N,OACAjD,UAAWM,GAEb,OAAO6Q,EAAAA,aAAavO,EAAKrB,EAAlB4P,CAAyBjL,EAAQ5F,EAC1C,CACF,CDuDE8Q,EAAAA,WAAA,CADCC,qHAC6B5E,IAM7BkC,EAAA2C,UAAA,YAAA,MA4DSF,EAAAA,WAAA,CADTC,2IAQA1C,EAAA2C,UAAA,iBAAA,MAUSF,EAAAA,WAAA,CADTC,wIAUA1C,EAAA2C,UAAA,yBAAA,MAoDSF,EAAAA,WAAA,CADTC,wJAcA1C,EAAA2C,UAAA,eAAA,MA4BSF,EAAAA,WAAA,CADTC,uJAmBA1C,EAAA2C,UAAA,kBAAA,MA2BDF,EAAAA,WAAA,CADCC,yJAoBA1C,EAAA2C,UAAA,eAAA,MA4BSF,EAAAA,WAAA,CADTC,uJAyBA1C,EAAA2C,UAAA,kBAAA,MEhXU,MAAAC,EAAU,cAOVC,EAAe,cAE5BrO,EAAAA,SAASsO,gBAAgBD,EAAcD,4HX+Ba,CAClDG,KAAM,8GA1DyB,mGUsEjB,CACdC,EACAC,KAEA,IAAId,EAAyB,CAAA,EAU7B,OATIa,aAA4BtP,EAAAA,UAC9ByO,EAAK9O,UAAY2P,EACoB,iBAArBA,GAAiCA,EACjDb,EAAOa,OAC8B,IAArBA,IAChBb,EAAKvP,MAAQoQ,GAEXC,IAASd,EAAOzN,OAAO6G,OAAO,CAAE,EAAE4G,EAAMc,IAErCC,aAAWlK,IAAIpF,EAAQA,SAACwB,OAC5B+N,OAAO,CACNC,UAA0BC,GACjBpB,EAAmBrO,EAAQA,SAACwB,MAAO,QAASiO,GAErDzL,KAAM,CAACuK,KAER3K,OACL,aAoEgB,CACd8L,EACAL,KAEA,IAAId,EAAyB,CAAA,EAQ7B,OAPImB,aAA8B5P,EAAAA,UAChCyO,EAAK9O,UAAYiQ,EACRA,IACTnB,EAAOmB,GAELL,IAASd,EAAOzN,OAAO6G,OAAO,CAAE,EAAE4G,EAAMc,IAErCC,aAAWlK,IAAIpF,EAAQA,SAAC4B,UAC5B2N,OAAO,CACNC,UAA6BC,GACpBpB,EAAmBrO,EAAQA,SAAC4B,SAAU,WAAY6N,GAE3DzL,KAAM,CAACuK,KAER3K,OACL,+DE3GExC,IAEA,MAAM1D,EAhER,EACEkB,EACA2D,EACA5E,EACAE,EAAYC,EAAAA,mBAEL,IACFc,EAAKJ,IAAKmR,GAAOA,IAAMjU,EAAYK,MAAQ,QAAU4T,MACpDhS,GAAgB,MAChB4E,EAAY,CAACA,GAAa,GAC9B7G,EAAYS,OACZ+B,KAAKL,GAqDWL,CAAkB,CAAC9B,EAAYK,QAC3CsF,EAA8C,CAAA,EAkEpD,OAjEAA,EAAQ3D,GAAa,CACnBmB,MAAO,CACLR,OAAQ,CAAC3C,EAAYK,QAEvB6C,KAAMlB,EACNoB,KAAMpB,EACNyL,KAAM,QAGR/H,EAAOS,QAASC,IACd,MAAM8N,EAAqC7N,EAAAA,MAAMV,QAAQS,GACzDhB,OAAOC,QAAQ6O,GAAK/N,QAAQ,EAAExB,EAAKrB,MACjC,MAAMgL,EAAIlJ,OAAOgJ,KAAK9K,GAAO,GAE7B,IAAIkD,WAAEA,EAAUvE,aAAEA,GAAkBqB,EAAcgL,GAClD,MAAMtM,EAAYqE,EAAAA,MAAMrE,UAAUoE,GAGlC,SAAS+N,EAASxE,GAChB,MAAMzM,EAAO,CACXlB,EACA2C,KACI1C,EACJK,EAAAA,gBAAgB7B,OAChB+B,KAAKJ,EAAAA,kBAsBP,GApBAuD,EAAQzC,GAAQ,CACdC,MAAO,CACLR,OAAQ,CAAC3C,EAAYK,MAAOsE,KAAS1C,GAAqBoN,OACxD,CAACC,EAAcnB,KACb,GAAIwB,EAAM,CACR,MAAMyE,EAAW,CAAA,EACjBA,EAAIjG,GAAMwB,EACVL,EAAM/M,KAAK6R,EACZ,MACC9E,EAAM/M,KAAK4L,GAEb,OAAOmB,GAET,KAGJpM,KAAMA,EACNE,KAAMF,EACNuK,KAAM,SAEHkC,EAAM,CACT,MAAM0E,EAAmC,CAAA,EACzCA,EAAYrU,EAAYK,OAAS,GACjCgU,EAAYrU,EAAYK,OAAOM,EAAgBC,OAASoB,EACxD2D,EAAQzC,GAAMC,MAAMmR,wBAA0BD,CAC/C,CACF,CApCDpS,EAAeA,GAAgB,GAsC/BkS,IACI3N,GACDA,EAA2CL,QAASyH,GAAMuG,EAASvG,QAI1EnI,EAAoBC,GAAQS,QAAShD,IAC9BA,EAAMD,OACXyC,EAAQxC,EAAMD,MAAQC,KAGjBiC,OAAOG,OAAOI,EACvB,0CVqFED,IAEA,MAAM6O,EAA6C,CAAA,EAE7C3O,EAA8B,CAClC,CAAC5F,EAAYU,KAAM,QACnB,CAAC4D,EAAQA,SAACuB,SAAU,WACpB,CAACvB,EAAQA,SAACwB,MAAO,SACjB,CAACxB,EAAQA,SAACyB,IAAK,OACf,CAACzB,EAAQA,SAAC0B,IAAK,OACf,CAAC1B,EAAQA,SAAC2B,IAAK,OACf,CAAC3B,EAAQA,SAAC4B,SAAU,aA2BtB,OAxBAR,EAAOS,QAASC,IACd,MAAMpE,EAAYqE,EAAAA,MAAMrE,UAAUoE,GACpBR,EAASN,QAAQ,EAAEX,EAAKK,KACpCF,EAAoBsB,EAAGzB,EAAKK,IAGxBmB,QAASlB,IACb,MAAM5C,EAAO4C,EAAKlD,UACZyS,EAhEZ,EACExS,EACAK,EACA2C,EACAC,EACA9C,EAAYC,qBAER6C,EAAK/B,KAAa+B,EAAK/B,KACb,CAAClB,EAAWK,EAAM2C,EAAM,QACzBxC,KAAKL,GAAWsS,QAAQ,OAAQ,KAuDxBC,CAAiB1S,EAAWK,EAAM4C,EAAKD,KAAMC,GACxD0P,EAAW1P,EAAK7B,MArD5B,EACEpB,EACAwS,EACArS,EAAYC,EAAAA,mBAEL,CAACJ,EAAWwS,EAAUxU,EAAYO,MAAMiC,KAAKL,GAgDlByS,CAAsB5S,EAAWwS,GACzDK,EAAS,WAAWF,EAEpBG,EAnFZ,EACE9P,EACA3C,EACA4C,EACAjD,KAEA,MAAMc,EA9CR,EACEd,EACAK,EACA4C,KAEA,GAAIA,EAAKnC,IACP,MAAwB,mBAAbmC,EAAKnC,IAA2BmC,EAAKnC,IAAI8H,WAC7C3F,EAAKnC,IAGd,MAAMiS,EAAmB,GAIzB,GAHAA,EAAOxS,KACL,OAAOiB,KAAKC,UAAUzD,EAAYK,eAAemD,KAAKC,UAAUzB,MAE9DiD,EAAKlB,UACP,GAAIkB,EAAKlB,qBAAqBK,YAC5B2Q,EAAOxS,KAAKuB,EAAcmB,EAAKlB,UAAW,aACrC,GAA8B,iBAAnBkB,EAAKlB,UACrBgR,EAAOxS,KAAK0C,EAAKlB,eACZ,CACL,MAAMiR,EAAW5Q,EAASA,UAAC6Q,KAAKhQ,EAAKlB,WACrCgR,EAAOxS,KAAKuB,EAAckR,EAAU,OACrC,CAEe,UAAd/P,EAAKD,WAAmCyC,IAAfxC,EAAK3B,OAChCyR,EAAOxS,KAAK,OAAOiB,KAAKC,UAAUpB,WAAcgB,EAAY4B,EAAK3B,UAEnE,MAAM4R,EA5FR,EACErT,EACAmC,EAAS,SAET,IAAKnC,EAAM,OACX,GAAoB,iBAATA,EAAmB,OAAOA,EACrC,MAAMsT,EAAQtT,EAAKsT,OAAS,QACtBC,EAAQvT,EAAKuT,OAAS,GAC5B,IAAKA,EAAM9O,OAAQ,OAAOzE,EAAKwT,WAC/B,MAAMC,EAAW,GAAGtR,KAAUR,KAAKC,UAAU0R,YAC7C,MAA6B,SAAxBtT,EAAK0T,MAAQ,OACTH,EACJtS,IAAKE,GAAM,GAAGsS,aAAoB9R,KAAKC,UAAUT,cACjDR,KAAK,QAEH4S,EACJtS,IAAKE,GAAM,GAAGsS,aAAoB9R,KAAKC,UAAUT,cACjDR,KAAK,OACV,EA0EoBgT,CAAevQ,EAAKpD,KAAM,OACxCqT,GAAWH,EAAOxS,KAAK2S,GAE3B,MAAMO,EAAQV,EAAOzO,OAASyO,EAAOvS,KAAK,QAAU,OAC9CkT,EAnER,EACE/Q,EACAtC,EACAJ,KAEA,MAAMmM,EAAO1J,EAAaC,EAAKtC,EAAMJ,GACrC,OAAoB,IAAhBmM,EAAK9H,OAAqB,OAAO9C,KAAKC,UAAU2K,EAAK,OAClD,IAAIA,EAAKtL,IAAKwL,GAAM,OAAO9K,KAAKC,UAAU6K,OAAO9L,KAAK,QAC/D,EA2DkBmT,CAAa1Q,EAAKN,IAAKtC,EAAM4C,EAAKhD,cAC5C2T,EA1DR,EAAwBtS,EAA6BjB,IACrC,QAAViB,EAAwB,MACvBA,EACDsB,MAAMC,QAAQvB,GACT,IAAIA,EAAMR,IAAK+S,GAAM,OAAOrS,KAAKC,UAAUoS,OAAOrT,KAAK,SAC3C,iBAAVc,EAA2B,OAAOE,KAAKC,UAAUH,MACrDD,EAAYC,GAJA,OAAOE,KAAKC,UAAUpB,MAwDvByT,CAChB7Q,EAAK3B,QAAU2B,EAAK8Q,YAA4B,QAAd9Q,EAAKD,KAAiB,WAAQyC,GAChEpF,GAGF,MAAO,6BAA6BoT,uBAA2BC,MAAYE,QAC7E,EAQcI,CAAiBhU,EAAWK,EAAM4C,GACxCoK,EAASpK,EAAKoK,OACO,mBAAhBpK,EAAKoK,OACVpK,EAAKoK,OAAOzE,WACZ3F,EAAKoK,OAnEb,CAAuBrK,IACrB,OAAQA,GACN,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAO,SACT,IAAK,MACH,MAAO,OACT,IAAK,MACH,MAAO,6SACT,IAAK,MACH,MAAO,6SACT,QACE,OAEN,EAqDMiR,CAAcjR,GAClB,MAAO,CAAElC,MAAKuM,SAChB,EAsEsB6G,CAAsBjR,EAAKD,KAAM3C,EAAM4C,EAAMjD,GACxDuS,EAASM,KACZN,EAASM,GAAU,CACjBsB,IAAKtB,EACLuB,SAAU,aACVC,MAAO,CAAE,IAGb9B,EAASM,GAAQwB,MAAM7B,GAAYM,MAIhC1P,OAAOG,OAAOgP,EACvB,4BQjOgB,CACd+B,EACAC,KAEA,IAAI1D,EAAoB,CAAA,EAcxB,OAbIjO,MAAMC,QAAQyR,GAChBzD,EAAK5Q,aAAeqU,EACsB,iBAA1BA,EAChBzD,EAAK3P,KAAOoT,EACHA,IACTzD,EAAOyD,GAEoB,iBAAlBC,EACT1D,EAAK3P,KAAOqT,EACHA,IACT1D,EAAOzN,OAAO6G,OAAO,CAAE,EAAE4G,EAAM0D,IAG1B3C,aAAWlK,IAAIpF,EAAQA,SAACuB,UAC5BgO,OAAO,CACNC,UAA4BC,GACnBpB,EAAmBrO,EAAQA,SAACuB,SAAU,UAAWkO,GAE1DzL,KAAM,CAACuK,KAER3K,OACL,QAgDgB,CACd8L,EACAL,KAEA,IAAId,EAAyB,CAAA,EAQ7B,OAPImB,aAA8B5P,EAAAA,UAChCyO,EAAK9O,UAAYiQ,EACRA,IACTnB,EAAOmB,GAELL,IAASd,EAAOzN,OAAO6G,OAAO,CAAE,EAAE4G,EAAMc,IAErCC,aAAWlK,IAAIpF,EAAQA,SAAC0B,KAC5B6N,OAAO,CACNC,UAAwBC,GACfpB,EAAmBrO,EAAQA,SAAC0B,IAAK,MAAO+N,GAEjDzL,KAAM,CAACuK,KAER3K,OACL,QAEgB,CACd8L,EACAL,KAEA,IAAId,EAAyB,CAAA,EAQ7B,OAPImB,aAA8B5P,EAAAA,UAChCyO,EAAK9O,UAAYiQ,EACRA,IACTnB,EAAOmB,GAELL,IAASd,EAAOzN,OAAO6G,OAAO,CAAE,EAAE4G,EAAMc,IAErCC,aAAWlK,IAAIpF,EAAQA,SAAC2B,KAC5B4N,OAAO,CACNC,UAAwBC,GACfpB,EAAmBrO,EAAQA,SAAC2B,IAAK,MAAO8N,GAEjDzL,KAAM,CAACuK,KAER3K,OACL,6EAhEgB,CACd8L,EACAL,KAEA,IAAId,EAAyB,CAAA,EAQ7B,OAPImB,aAA8B5P,EAAAA,UAChCyO,EAAK9O,UAAYiQ,EACRA,IACTnB,EAAOmB,GAELL,IAASd,EAAOzN,OAAO6G,OAAO,CAAE,EAAE4G,EAAMc,IAErCC,aAAWlK,IAAIpF,EAAQA,SAACyB,KAC5B8N,OAAO,CACNC,UAAwBC,GACfpB,EAAmBrO,EAAQA,SAACyB,IAAK,MAAOgO,GAEjDzL,KAAM,CAACuK,KAER3K,OACL,2BT/BuC7F,GAE9BA,EAAK+P,MADG,wCSrDIS,GACZe,aAAWlK,IAAI1J,EAAYU,MAC/BmT,OAAO,CACNC,UAAyBC,GAChBpB,EAAmB3S,EAAYU,KAAM,OAAQqT,GAEtDzL,KAAM,CAACuK,KAER3K,8BRuR+BjD,IAClC,MAAMN,EAAMD,EAAaO,EAAKN,IAAKM,EAAKlD,WACxC,MAAO,CACLA,UAAW4C,EAAI,GACf1C,aAAc0C,EAAI4B,MAAM,GAAGiQ,OAAOvR,EAAKhD,cAAgB,IACvDuE,WAAYvB,EAAKuB,WAErB,sBDrRM,CACJ9E,EACA+U,EACA9U,EACAC,KAEA,MAAM8U,EAAKhV,EAAIiV,IAAMjV,EAAIiV,IAAIF,GAAU/U,EAkBvC,MAjBA,CAAC,SAAU,MAAO,MAAO,UAAW,OAAQ,QAAQyE,QAASmI,IAC3D,MAAMsI,EAAYF,EAA2BpI,GAC7ClJ,OAAO6B,eAAeyP,EAAIpI,EAAG,CAC3BnH,YAAY,EACZC,cAAc,EACd9D,MAAO9B,SAAU8G,WACT7G,EAAOC,EAAKC,EAAMC,GACjBgV,EAASC,KAAKH,KAAOpO,QAIlClD,OAAO6B,eAAeyP,EAAI1W,EAAYQ,OAAQ,CAC5C2G,YAAY,EACZC,cAAc,EACdC,UAAU,EACV/D,MAAO5B,IAEFgV,CACT"}
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,2 +1,2 @@
1
- import{Metadata as e,Decoration as t,propMetadata as r}from"@decaf-ts/decoration";import{PersistenceKeys as n,Operator as i,OrderDirection as s,Condition as a,GroupOperator as o,Repository as c,Paginator as l,PagingError as u,Sequence as d,QueryError as p,Statement as f,Adapter as g,ConnectionError as h}from"@decaf-ts/core";import{DefaultSeparator as m,OperationKeys as y,InternalError as A,enforceDBDecorators as E,ValidationError as b,BulkCrudOperationKeys as O,reduceErrorsToPrint as w,BaseError as v,DBKeys as N,prefixMethod as x,ConflictError as T,NotFoundError as $}from"@decaf-ts/db-decorators";export{DefaultSeparator}from"@decaf-ts/db-decorators";import{Model as j}from"@decaf-ts/decorator-validation";import{__decorate as S,__metadata as D}from"tslib";import{final as P}from"@decaf-ts/logging";const M=/^_.*$/g,I={SEPARATOR:"__",ID:"_id",REV:"_rev",DELETED:"_deleted",TABLE:"??table",SEQUENCE:"??sequence",DDOC:"ddoc",NATIVE:"__native",INDEX:"index",VIEW:"view"},k=250,C={EQUAL:"$eq",DIFFERENT:"$ne",BIGGER:"$gt",BIGGER_EQ:"$gte",SMALLER:"$lt",SMALLER_EQ:"$lte",NOT:"$not",IN:"$in",REGEXP:"$regex"},R={AND:"$and",OR:"$or"},_={NULL:"null"};async function L(e,t,r){return e.auth(t,r)}function B(e,t,r,n){const i=e.use?e.use(t):e;return["insert","get","put","destroy","find","view"].forEach(t=>{const s=i[t];Object.defineProperty(i,t,{enumerable:!1,configurable:!0,value:async(...t)=>(await L(e,r,n),s.call(i,...t))})}),Object.defineProperty(i,I.NATIVE,{enumerable:!1,configurable:!1,writable:!1,value:e}),i}function V(e){return e.match(/^_.*$/g)}function U(e,t,r,i,s=m){const a=[n.INDEX,t,e];return r&&a.push(...r),i&&a.push(i),a.join(s)}function J(e,t,r,n,i=m){const s={};let a;if(s[I.TABLE]={},s[I.TABLE].$eq=t,n){const t={};t[e]=n;const i=(r||[]).map(e=>{const t={};return t[e]=n,t}),s={};s[I.TABLE]=n,a=[t,...i,s]}else a=[e,...r||[],I.TABLE];const o=U(e,t,r,n,i);return{index:{fields:a},ddoc:[o,I.DDOC].join(i),name:o}}function G(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 F(e,t){const{attr1:r,operator:n,comparison:s}=e;if(r instanceof a){const e=F(r,t);if(n===i.NOT)return`!(${e})`;const a=F(s,t);return n===o.AND?`(${e} && ${a})`:n===o.OR?`(${e} || ${a})`:e}const c=`${t}[${JSON.stringify(r)}]`;switch(n){case i.EQUAL:return`${c} === ${G(s)}`;case i.DIFFERENT:return`${c} !== ${G(s)}`;case i.BIGGER:return`${c} > ${G(s)}`;case i.BIGGER_EQ:return`${c} >= ${G(s)}`;case i.SMALLER:return`${c} < ${G(s)}`;case i.SMALLER_EQ:return`${c} <= ${G(s)}`;case i.IN:return`(${G(s)}).indexOf(${c}) !== -1`;case i.REGEXP:return`${s instanceof RegExp?G(s):`new RegExp(${JSON.stringify(s)})`}.test(${c})`;case i.NOT:return`!(${c} === ${G(s)})`;default:return"true"}}function z(e,t,r){return e?Array.isArray(e)?e:[e]:t?[t,...r||[]]:r||[]}function X(t,r,n){const i=e.get(t,r)||{};return Object.entries(i).flatMap(([e,t])=>t&&"object"==typeof t?Object.values(t).map(t=>{const r=t;return{...r,kind:n,attribute:r.attribute||e}}):[])}function q(e){const t={},r=[[I.VIEW,"view"],[i.GROUP_BY,"groupBy"],[i.COUNT,"count"],[i.SUM,"sum"],[i.MAX,"max"],[i.MIN,"min"],[i.DISTINCT,"distinct"]];return e.forEach(e=>{const n=j.tableName(e);r.flatMap(([t,r])=>X(e,t,r)).forEach(e=>{const r=e.attribute,i=((e,t,r,n,i=m)=>n.name?n.name:[e,t,r,"view"].join(i).replace(/\s+/g,"_"))(n,r,e.kind,e),s=e.ddoc||((e,t,r=m)=>[e,t,I.DDOC].join(r))(n,i),o="_design/"+s,c=((e,t,r,n)=>{const i=((e,t,r)=>{if(r.map)return"function"==typeof r.map?r.map.toString():r.map;const n=[];if(n.push(`doc[${JSON.stringify(I.TABLE)}] === ${JSON.stringify(e)}`),r.condition)if(r.condition instanceof a)n.push(F(r.condition,"doc"));else if("string"==typeof r.condition)n.push(r.condition);else{const e=a.from(r.condition);n.push(F(e,"doc"))}"count"===r.kind&&void 0!==r.value&&n.push(`doc[${JSON.stringify(t)}] === ${G(r.value)}`);const i=((e,t="doc")=>{if(!e)return;if("string"==typeof e)return e;const r=e.field||"roles",n=e.roles||[];if(!n.length)return e.expression;const i=`${t}[${JSON.stringify(r)}] || []`;return"all"===(e.mode||"any")?n.map(e=>`${i}.indexOf(${JSON.stringify(e)}) !== -1`).join(" && "):n.map(e=>`${i}.indexOf(${JSON.stringify(e)}) !== -1`).join(" || ")})(r.auth,"doc");i&&n.push(i);const s=n.length?n.join(" && "):"true",o=((e,t,r)=>{const n=z(e,t,r);return 1===n.length?`doc[${JSON.stringify(n[0])}]`:`[${n.map(e=>`doc[${JSON.stringify(e)}]`).join(", ")}]`})(r.key,t,r.compositions),c=((e,t)=>"doc"===e?"doc":e?Array.isArray(e)?`[${e.map(e=>`doc[${JSON.stringify(e)}]`).join(", ")}]`:"string"==typeof e?`doc[${JSON.stringify(e)}]`:G(e):`doc[${JSON.stringify(t)}]`)(r.value??(r.returnDocs&&"sum"!==r.kind?"doc":void 0),t);return`function (doc) {\n if (!(${s})) return;\n emit(${o}, ${c});\n}`})(n,t,r),s=r.reduce?"function"==typeof r.reduce?r.reduce.toString():r.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:i,reduce:s}})(e.kind,r,e,n);t[o]||(t[o]={_id:o,language:"javascript",views:{}}),t[o].views[i]=c})}),Object.values(t)}function Q(e){const t={},r=[[I.VIEW,"view"],[i.GROUP_BY,"groupBy"],[i.COUNT,"count"],[i.SUM,"sum"],[i.MAX,"max"],[i.MIN,"min"],[i.DISTINCT,"distinct"]];return e.forEach(e=>{const n=j.tableName(e);r.flatMap(([t,r])=>X(e,t,r)).forEach(e=>{const r=z(e.key,e.attribute,e.compositions);if(!r.length)return;const i=r[0],a=r.slice(1),o=e.directions||[s.ASC,s.DSC],c=J(i,n,a);t[c.name||""]=c,o.forEach(e=>{const r=J(i,n,a,e);t[r.name||""]=r})})}),Object.values(t)}function W(e){const t=z(e.key,e.attribute);return{attribute:t[0],compositions:t.slice(1).concat(e.compositions||[]),directions:e.directions}}function Y(e){const t=((e,t,r,n=m)=>[...e.map(e=>e===I.TABLE?"table":e),...r||[],...t?[t]:[],I.INDEX].join(n))([I.TABLE]),r={};return r[t]={index:{fields:[I.TABLE]},name:t,ddoc:t,type:"json"},e.forEach(e=>{const t=j.indexes(e);Object.entries(t).forEach(([t,i])=>{const s=Object.keys(i)[0];let{directions:a,compositions:o}=i[s];const c=j.tableName(e);function l(e){const i=[c,t,...o,n.INDEX].join(m);if(r[i]={index:{fields:[I.TABLE,t,...o].reduce((t,r)=>{if(e){const n={};n[r]=e,t.push(n)}else t.push(r);return t},[])},name:i,ddoc:i,type:"json"},!e){const e={};e[I.TABLE]={},e[I.TABLE].$eq=c,r[i].index.partial_filter_selector=e}}o=o||[],l(),a&&a.forEach(e=>l(e))})}),Q(e).forEach(e=>{e.name&&(r[e.name]=e)}),Object.values(r)}function H(e,t){Object.defineProperty(e,n.METADATA,{enumerable:!1,configurable:!0,writable:!0,value:t})}function K(e){const t=Object.getOwnPropertyDescriptor(e,n.METADATA);return t?t.value:void 0}function Z(e){Object.getOwnPropertyDescriptor(e,n.METADATA)&&delete e[n.METADATA]}class ee extends c{constructor(e,t){super(e,t)}assignMetadata(e,t){const r=(e,t)=>{const r=K(t??e);return r&&H(e,r),e};return Array.isArray(e)?e.map((e,n)=>{const i=Array.isArray(t)?t[n]:t;return r(e,i)}):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:i}=(await this.logCtx(t,y.UPDATE,!0)).for(this.updatePrefix),s=r.get("ignoreHandlers"),a=r.get("ignoreValidation");i.silly(`handlerSetting: ${s}, validationSetting: ${a}`);const o=e[this.pk];if(!o)throw new A("No value for the Id is defined under the property "+this.pk);let c,l;if(r.get("applyUpdateValidation")&&(c=await this.read(o),l=c?K(c):void 0,r.get("mergeForUpdate")&&(e=j.merge(c,e,this.class))),s||await E(this,r,e,y.UPDATE,y.ON,c),!a){const t=r.get("ignoredValidationProperties")||[];i.silly("ignored validation properties: "+t);const n=await Promise.resolve(e.hasErrors(c,...t));if(n)throw new b(n.toString())}return l&&H(e,l),[e,...n,c]}async updateAllPrefix(e,...t){const{ctx:r,ctxArgs:n,log:i}=(await this.logCtx(t,O.UPDATE_ALL,!0)).for(this.updateAllPrefix),s=r.get("ignoreHandlers"),a=r.get("ignoreValidation");i.silly(`handlerSetting: ${s}, ignoredValidation: ${a}`);const o=e.map(e=>{const t=e[this.pk];if(!t)throw new A("missing id on update operation");return t});let c;if(r.get("applyUpdateValidation")&&(c=await this.readAll(o,r),e=e.map((e,t)=>{r.get("mergeForUpdate")&&(e=j.merge(c[t],e,this.class));const n=K(c[t]);return n&&H(e,n),e})),s||await Promise.all(e.map((e,t)=>E(this,r,e,y.UPDATE,y.ON,c?c[t]:void 0))),!a){const t=r.get("ignoredValidationProperties")||[];let n;i.silly("ignored validation properties: "+t),n=r.get("applyUpdateValidation")?await Promise.all(e.map((e,r)=>Promise.resolve(e.hasErrors(c[r],...t)))):await Promise.resolve(e.map(e=>e.hasErrors(...t)));const s=w(n);if(s)throw new b(s)}return[e,...n,c]}}class te extends v{constructor(e){super(te.name,e,404)}}class re extends l{constructor(e,t,r,n){super(e,t,r,n)}prepare(e){const t=Object.assign({},e);return t.limit&&(this.limit=t.limit),t.limit=this.size,t}async page(t=1,r,...n){const{log:i,ctxArgs:s,ctx:a}=this.adapter.logCtx([r,...n],this.page);if(this.isPreparedStatement())return await this.pagePrepared(t,...s);const o=Object.assign({},this.statement);if(this._recordCount&&this._totalPages)t=this.validatePage(t),o.skip=(t-1)*this.size;else{this._totalPages=this._recordCount=0;const e=await this.adapter.raw({...o,limit:Number.MAX_VALUE},!0,...s)||[];if(this._recordCount=e.length,this._recordCount>0){const e=o?.limit||this.size;return this._totalPages=Math.ceil(this._recordCount/e),await this.page(t,...s)}}if(1!==t){if(!this._bookmark)throw new u("No bookmark. Did you start in the first page?");o.bookmark=this._bookmark}const c=await this.adapter.raw(o,!1,...s),{docs:l,bookmark:p,warning:f}=c;if(f&&i.warn(f),!this.clazz)throw new u("No statement target defined");const g=j.pk(this.clazz),h=e.get(this.clazz,e.key(N.ID,g))?.type,m=o.fields&&o.fields.length?l:l.map(e=>this.adapter.revert(e,this.clazz,d.parseValue(h,e[g]),void 0,a));return this._bookmark=p,this._currentPage=t,m}}function ne(e){for(const t of[C,R]){const r=Object.keys(t).find(t=>t===e);if(r)return t[r]}throw new p("Could not find adapter translation for operator "+e)}class ie extends f{constructor(e){super(e)}build(){const e=this.log.for(this.build),t={};t[I.TABLE]={},t[I.TABLE]=j.tableName(this.fromSelector);const r={selector:t};if(this.selectSelector&&(r.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(a.and(this.whereCondition,a.attribute(I.TABLE).eq(r.selector[I.TABLE]))).selector,n=Object.keys(t);if(1===n.length&&-1!==Object.values(R).indexOf(n[0]))switch(n[0]){case R.AND:t[R.AND]=[...Object.values(t[R.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 n=r[0];return n===R.AND?e.push(...t[n]):e.push(t),e},[])],r.selector=t;break;case R.OR:{const e={};e[R.AND]=[t,...Object.entries(r.selector).map(([e,t])=>{const r={};return r[e]=t,r})],r.selector=e;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,n])=>{r.selector[t]&&e.warn(`A ${t} query param is about to be overridden: ${r.selector[t]} by ${n}`),r.selector[t]=n})}if(this.orderBySelector){r.sort=r.sort||[],r.selector=r.selector||{};const[e,t]=this.orderBySelector,n={};n[e]=t,r.sort.push(n),r.selector[e]||(r.selector[e]={},r.selector[e].$gt=null)}return this.limitSelector?r.limit=this.limitSelector:(e.warn("No limit selector defined. Using default couchdb limit of 250"),r.limit=250),this.offsetSelector&&(r.skip=this.offsetSelector),r}processRecord(e,t,r,n){if(e[I.ID]){const[,...t]=e[I.ID].split(I.SEPARATOR),i=t.join("_");return this.adapter.revert(e,this.fromSelector,d.parseValue(r,i),void 0,n)}return e}async raw(t,...r){const{ctx:n}=this.logCtx(r,this.raw),i=await this.adapter.raw(t,!0,n),s=j.pk(this.fromSelector),a=e.get(this.fromSelector,e.key(N.ID,s))?.type;return this.selectSelector?i:i.map(e=>this.processRecord(e,s,a,n))}parseCondition(e){const{attr1:t,operator:r,comparison:n}=e;let s={};if(-1===[o.AND,o.OR,i.NOT].indexOf(r))s[t]={},s[t][ne(r)]=n;else if(r===i.NOT)s=this.parseCondition(t).selector,s[ne(i.NOT)]={},s[ne(i.NOT)][t.attr1]=n;else{const e=this.parseCondition(t).selector,i=this.parseCondition(n).selector;s=((e,t,r)=>{const n={selector:{}};return n.selector[e]=[t,r],n})(ne(r),e,i).selector}return{selector:s}}}class se extends g{constructor(e,t,r){super(e,t,r),[this.create,this.createAll,this.update,this.updateAll].forEach(e=>{const t=e.name;x(this,e,this[t+"Prefix"])})}Statement(){return new ie(this)}Paginator(e,t,r){return new re(this,e,t,r)}async initialize(){const e=g.models(this.flavour);return this.index(...e)}repository(){return ee}assignMetadata(e,t){return t?(H(e,t),e):e}assignMultipleMetadata(e,t){return e.forEach((e,r)=>(H(e,t[r]),e)),e}prepare(e,...t){const{log:r}=this.logCtx(t,this.prepare),i=e.segregate(),s=Object.entries(i.model).reduce((t,[r,n])=>{if(void 0===n)return t;const i=j.columnName(e.constructor,r);if(this.isReserved(i))throw new A(`Property name ${i} is reserved`);return n=n instanceof Date?new Date(n):n,t[i]=n,t},{});return e[n.METADATA]&&(r.silly("Passing along persistence metadata for "+e[n.METADATA]),Object.defineProperty(s,n.METADATA,{enumerable:!1,writable:!0,configurable:!0,value:e[n.METADATA]})),{record:s,id:e[j.pk(e.constructor)],transient:i.transient}}createPrefix(e,t,r,...n){const{ctxArgs:i}=this.logCtx(n,this.createPrefix),s=j.tableName(e),a={};return a[I.TABLE]=s,a[I.ID]=this.generateId(s,t),Object.assign(a,r),[e,t,a,...i]}createAllPrefix(e,t,r,...n){const i=j.tableName(e);if(t.length!==r.length)throw new A("Ids and models must have the same length");const{ctxArgs:s}=this.logCtx(n,this.createAllPrefix),a=t.map((e,t)=>{const n={};return n[I.TABLE]=i,n[I.ID]=this.generateId(i,e),Object.assign(n,r[t]),n});return[e,t,a,...s]}updatePrefix(e,t,r,...i){const s=j.tableName(e),{ctxArgs:a}=this.logCtx(i,this.updatePrefix),o={};o[I.TABLE]=s,o[I.ID]=this.generateId(s,t);const c=r[n.METADATA];if(!c)throw new A("No revision number found for record with id "+t);return Object.assign(o,r),o[I.REV]=c,[e,t,o,...a]}updateAllPrefix(e,t,r,...i){const s=j.tableName(e);if(t.length!==r.length)throw new A("Ids and models must have the same length");const{ctxArgs:a}=this.logCtx(i,this.updateAllPrefix),o=t.map((e,t)=>{const i={};i[I.TABLE]=s,i[I.ID]=this.generateId(s,e);const a=r[t][n.METADATA];if(!a)throw new A("No revision number found for record with id "+e);return Object.assign(i,r[t]),i[I.REV]=a,i});return[e,t,o,...a]}generateId(e,t){return[e,t].join(I.SEPARATOR)}parseError(e,t){return se.parseError(e,t)}isReserved(e){return!!e.match(M)}static parseError(e,t){if(e instanceof v)return e;let r="";if("string"==typeof e){if(r=e,r.match(/already exist|update conflict/g))return new T(r);if(r.match(/missing|deleted/g))return new $(r)}else e.code?(r=e.code,t=t||e.message):e.statusCode?(r=e.statusCode,t=t||e.message):r=e.message;switch(r.toString()){case"401":case"412":case"409":return new T(t);case"404":return new $(t);case"400":return r.toString().match(/No\sindex\sexists/g)?new te(e):new A(e);default:return r.toString().match(/ECONNREFUSED/g)?new h(e):new A(e)}}static setMetadata(e,t){H(e,t)}static getMetadata(e){return K(e)}static removeMetadata(e){Z(e)}}function ae(t,n,i){return(s,a)=>{const o=i?.name||((t,r,n)=>{const i=(e.get(t.constructor,r)||{})[n]||{};return Object.keys(i).length+1+""})(s,t,a),c=e.key(t,a,o),l={...i||{},kind:n,attribute:a};return r(c,l)(s,a)}}function oe(e){return t.for(I.VIEW).define({decorator:e=>ae(I.VIEW,"view",e),args:[e]}).apply()}function ce(e,r){let n={};return Array.isArray(e)?n.compositions=e:"string"==typeof e?n.name=e:e&&(n=e),"string"==typeof r?n.name=r:r&&(n=Object.assign({},n,r)),t.for(i.GROUP_BY).define({decorator:e=>ae(i.GROUP_BY,"groupBy",e),args:[n]}).apply()}function le(e,r){let n={};return e instanceof a?n.condition=e:"object"==typeof e&&e?n=e:void 0!==e&&(n.value=e),r&&(n=Object.assign({},n,r)),t.for(i.COUNT).define({decorator:e=>ae(i.COUNT,"count",e),args:[n]}).apply()}function ue(e,r){let n={};return e instanceof a?n.condition=e:e&&(n=e),r&&(n=Object.assign({},n,r)),t.for(i.SUM).define({decorator:e=>ae(i.SUM,"sum",e),args:[n]}).apply()}function de(e,r){let n={};return e instanceof a?n.condition=e:e&&(n=e),r&&(n=Object.assign({},n,r)),t.for(i.MAX).define({decorator:e=>ae(i.MAX,"max",e),args:[n]}).apply()}function pe(e,r){let n={};return e instanceof a?n.condition=e:e&&(n=e),r&&(n=Object.assign({},n,r)),t.for(i.MIN).define({decorator:e=>ae(i.MIN,"min",e),args:[n]}).apply()}function fe(e,r){let n={};return e instanceof a?n.condition=e:e&&(n=e),r&&(n=Object.assign({},n,r)),t.for(i.DISTINCT).define({decorator:e=>ae(i.DISTINCT,"distinct",e),args:[n]}).apply()}S([P(),D("design:type",Function),D("design:paramtypes",[]),D("design:returntype",ie)],se.prototype,"Statement",null),S([P(),D("design:type",Function),D("design:paramtypes",[Object,String]),D("design:returntype",Object)],se.prototype,"assignMetadata",null),S([P(),D("design:type",Function),D("design:paramtypes",[Array,Array]),D("design:returntype",Array)],se.prototype,"assignMultipleMetadata",null),S([P(),D("design:type",Function),D("design:paramtypes",[Object,Object,Object,Object]),D("design:returntype",Array)],se.prototype,"createPrefix",null),S([P(),D("design:type",Function),D("design:paramtypes",[Object,Array,Array,Object]),D("design:returntype",void 0)],se.prototype,"createAllPrefix",null),S([P(),D("design:type",Function),D("design:paramtypes",[Object,Object,Object,Object]),D("design:returntype",void 0)],se.prototype,"updatePrefix",null),S([P(),D("design:type",Function),D("design:paramtypes",[Object,Array,Array,Object]),D("design:returntype",void 0)],se.prototype,"updateAllPrefix",null);const ge="##VERSION##",he="##PACKAGE##";e.registerLibrary(he,ge);export{se as CouchDBAdapter,_ as CouchDBConst,R as CouchDBGroupOperator,I as CouchDBKeys,C as CouchDBOperator,re as CouchDBPaginator,k as CouchDBQueryLimit,ee as CouchDBRepository,ie as CouchDBStatement,te as IndexError,he as PACKAGE_NAME,ge as VERSION,le as count,fe as distinct,J as generateIndexDoc,U as generateIndexName,Y as generateIndexes,Q as generateViewIndexes,q as generateViews,K as getMetadata,ce as groupBy,de as max,pe as min,L as reAuth,Z as removeMetadata,M as reservedAttributes,H as setMetadata,ue as sum,V as testReservedAttributes,ne as translateOperators,oe as view,W as viewIndexDefinition,B 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 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};
2
2
  //# sourceMappingURL=for-couchdb.js.map