@decaf-ts/for-fabric 0.0.27 → 0.0.28

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 (49) hide show
  1. package/dist/for-fabric.cjs +1 -1
  2. package/dist/for-fabric.cjs.map +1 -1
  3. package/dist/for-fabric.js +1 -1
  4. package/dist/for-fabric.js.map +1 -1
  5. package/lib/bin/build-contract.cjs +71 -0
  6. package/lib/bin/build-contract.d.ts +1 -0
  7. package/lib/bin/build-contract.js.map +1 -0
  8. package/lib/contract/Product.cjs +36 -0
  9. package/lib/contract/Product.d.ts +7 -0
  10. package/lib/contract/Product.js.map +1 -0
  11. package/lib/contract/ProductContract.cjs +34 -0
  12. package/lib/contract/ProductContract.d.ts +5 -0
  13. package/lib/contract/ProductContract.js.map +1 -0
  14. package/lib/contract/User.cjs +36 -0
  15. package/lib/contract/User.d.ts +7 -0
  16. package/lib/contract/User.js.map +1 -0
  17. package/lib/contract/UserContract.cjs +34 -0
  18. package/lib/contract/UserContract.d.ts +5 -0
  19. package/lib/contract/UserContract.js.map +1 -0
  20. package/lib/contract/index.cjs +9 -0
  21. package/lib/contract/index.d.ts +2 -0
  22. package/lib/contract/index.js.map +1 -0
  23. package/lib/contracts/crud/crud-contract.cjs +1 -1
  24. package/lib/contracts/crud/crud-contract.js.map +1 -1
  25. package/lib/esm/bin/build-contract.d.ts +1 -0
  26. package/lib/esm/bin/build-contract.js +66 -0
  27. package/lib/esm/bin/build-contract.js.map +1 -0
  28. package/lib/esm/contract/Product.d.ts +7 -0
  29. package/lib/esm/contract/Product.js +33 -0
  30. package/lib/esm/contract/Product.js.map +1 -0
  31. package/lib/esm/contract/ProductContract.d.ts +5 -0
  32. package/lib/esm/contract/ProductContract.js +31 -0
  33. package/lib/esm/contract/ProductContract.js.map +1 -0
  34. package/lib/esm/contract/User.d.ts +7 -0
  35. package/lib/esm/contract/User.js +33 -0
  36. package/lib/esm/contract/User.js.map +1 -0
  37. package/lib/esm/contract/UserContract.d.ts +5 -0
  38. package/lib/esm/contract/UserContract.js +31 -0
  39. package/lib/esm/contract/UserContract.js.map +1 -0
  40. package/lib/esm/contract/index.d.ts +2 -0
  41. package/lib/esm/contract/index.js +6 -0
  42. package/lib/esm/contract/index.js.map +1 -0
  43. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  44. package/lib/esm/contracts/crud/crud-contract.js.map +1 -1
  45. package/lib/esm/version.d.ts +1 -1
  46. package/lib/esm/version.js +1 -1
  47. package/lib/version.cjs +1 -1
  48. package/lib/version.d.ts +1 -1
  49. package/package.json +2 -1
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,a,i,n,o,s,c,l){"use strict";class d extends a.Context{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("clientIdentity")}get logger(){return this.get("logger")}}class p extends o.ObserverHandler{constructor(e=[a.OperationKeys.CREATE,a.OperationKeys.UPDATE,a.OperationKeys.DELETE,a.BulkCrudOperationKeys.CREATE_ALL,a.BulkCrudOperationKeys.UPDATE_ALL,a.BulkCrudOperationKeys.DELETE_ALL]){super(),this.supportedEvents=e}async updateObservers(e,t,r,a,i,n,o){const{stub:s}=i;if(-1!==this.supportedEvents.indexOf(r)){e.debug(`Emitting ${r} event`);const i=((e,t,r)=>{const a=[e,t];return r&&a.push(r),a.join("_")})(t,r,n);s.setEvent(i,Buffer.from(JSON.stringify({id:a})))}else s.setEvent(r,Buffer.from(JSON.stringify(o)))}}var u,h;(e=>{e.PRIVATE="private",e.FABRIC="fabric.",e.OWNEDBY="owned-by"})(u||(u={})),(e=>{e.X509="X.509"})(h||(h={}));const g="hlf-fabric";function y(){return function(e,t,r){const i=r.value;return r.value=async function(...e){const r=e[0],n=r.clientIdentity.getID(),s=await this.tokenRepository.selectWithContext(void 0,r),c=await s.execute();if(0==c.length)throw new a.NotFoundError("No tokens avaialble");if(c.length>1)throw new a.NotFoundError("To many token available : "+c.length);if(c[0].owner!=n)throw new o.AuthorizationError(`User not authorized to run ${t} on the token`);return await i.apply(this,e)},r}}function f(e){return r.Model.key(u.FABRIC+e)}function m(e){if(!e)throw Error("Collection name is required");const t=f(u.PRIVATE);return(i,n)=>{const o=n||void 0,s=Reflect.getMetadata(t,i[r.ModelKeys.ANCHOR]||i,o),c=s?.collections||[];r.propMetadata(f(u.PRIVATE),{...!n&&{collections:c?[...new Set([...c,e])]:[e]},isPrivate:!n})(n?i.constructor:i[r.ModelKeys.ANCHOR]||i),n&&(r.propMetadata(f(u.PRIVATE),{collections:c?[...new Set([...c,e])]:[e]})(i,n),a.transient()(i,n))}}const w=/private\s+data\s+matching\s+public\s+hash\s+version\s+is\s+not\s+available/i;function _(e){let t=Reflect.getMetadata(f(u.PRIVATE),e);return t=t||Reflect.getMetadata(f(u.PRIVATE),e.constructor),t}function b(e){const t=_(e);return!(!t||void 0===t.isPrivate)&&t.isPrivate}function v(e){if(!(e=>!!_(e))(e))return{model:e};const t=a.getAllPropertyDecoratorsRecursive(e,void 0,f(u.PRIVATE)),i=b(e),n=_(e);let o={model:e,private:void 0};if(o=i?Object.keys(e).reduce((t,r)=>{const i=n.collections;t.private=t.private||{};for(const n of i)try{t.private[n]=t.private[n]||{},t.private[n][r]=e[r]}catch(e){throw new a.SerializationError(`Failed to serialize private property ${r}: ${e}`)}return t},{model:{}}):Object.entries(t).reduce((t,[r,i])=>{const n=i.find(e=>""===e.key);if(n){const i=n.props.collections;t.private=t.private||{};for(const n of i)try{t.private[n]=t.private[n]||{},t.private[n][r]=e[r]}catch(e){throw new a.SerializationError(`Failed to serialize private property ${r}: ${e}`)}}else t.model=t.model||{},t.model[r]=e[r];return t},{}),o.model=o.model||{},o.model=r.Model.build(o.model,e.constructor.name),o.private){const t=Object.keys(o.private);for(const a of t)o.private[a]=r.Model.build(o.private[a],e.constructor.name)}return o}class S extends a.InternalError{constructor(e){super(e,S.name)}}class C extends a.InternalError{constructor(e){super(e,C.name)}}class A extends a.InternalError{constructor(e){super(e,A.name)}}class E extends a.InternalError{constructor(e){super(e,E.name,500)}}class O extends a.BaseError{constructor(e="private data matching public hash version is not available ..."){super(O.name,e,403)}}class k extends a.BaseError{constructor(e){super(k.name,e,409)}}let x=class extends o.BaseModel{constructor(e){super(e)}};c.__decorate([o.pk(),c.__metadata("design:type",String)],x.prototype,"id",void 0),c.__decorate([r.required(),o.index(),c.__metadata("design:type",Object)],x.prototype,"current",void 0),x=c.__decorate([o.table(t.CouchDBKeys.SEQUENCE),r.model(),c.__metadata("design:paramtypes",[Object])],x);class T extends o.Sequence{constructor(e,t,r){super(e);for(const e of r||[])m(e)(x);this.repo=o.Repository.forModel(x,t.alias)}async current(e){if(!e)throw new E("Context is required");const{name:t,startWith:r}=this.options;try{const r=await this.repo.read(t,e);return this.parse(r.current)}catch(e){if(e instanceof a.NotFoundError){if(void 0===r)throw new a.InternalError("Starting value is not defined for a non existing sequence");try{return this.parse(r)}catch(e){throw new a.InternalError(`Failed to parse initial value for sequence ${r}: ${e}`)}}throw new a.InternalError(`Failed to retrieve current value for sequence ${t}: ${e}`)}}parse(e){return o.Sequence.parseValue(this.options.type,e)}async increment(e,t,r){if(!r)throw new E("Context is required");const{type:i,incrementBy:n,name:o}=this.options;let s;const c=t||n;if(c%n!==0)throw new a.InternalError("Value to increment does not consider the incrementBy setting: "+n);switch(i){case"Number":s=this.parse(e)+c;break;case"BigInt":s=this.parse(e)+BigInt(c);break;default:throw new a.InternalError("Should never happen")}let l;try{l=await this.repo.update(new x({id:o,current:s}),r)}catch(e){if(!(e instanceof a.NotFoundError))throw e;l=await this.repo.create(new x({id:o,current:s}),r)}return l.current}async next(e){if(!e)throw new E("Context is required");const t=await this.current(e);return this.increment(t,void 0,e)}async range(e,t){if(!t)throw new E("Context is required");const r=await this.current(t),i=this.parse(this.options.incrementBy),n=await this.increment(r,this.parse(e)*i,t),o=[];for(let t=1;e>=t;t++)o.push(r+i*this.parse(t));if(o[o.length-1]!==n)throw new a.InternalError("Miscalculation of range");return o}}class R extends o.Repository{constructor(e,t,r){super(e,t),this.trackedEvents=r}logFor(e){return n.Logging.for(R,{},e)}async create(e,...t){const r=t[t.length-1],a=this.logFor(r).for(this.create);a.info("Preparing model: "+JSON.stringify(e));let i,{record:n,id:o,transient:s}=this.adapter.prepare(e,this.pk,this.tableName,...t);return a.info("Creating model: "+JSON.stringify(e)),n=await this.adapter.create(this.tableName,o,n,...t),t.length&&(i=t[t.length-1]),a.info("Reverting model: "+JSON.stringify(e)),this.adapter.revert(n,this.class,this.pk,o,i&&i.get("rebuildWithTransient")?s:void 0)}async read(e,...t){const r=await this.adapter.read(this.tableName,e,new this.class,...t);return this.adapter.revert(r,this.class,this.pk,e)}async delete(e,...t){const r=await this.adapter.delete(this.tableName,e,new this.class,...t);return this.adapter.revert(r,this.class,this.pk,e)}async update(e,...t){const r=t[t.length-1],a=this.logFor(r).for(this.update);a.info("Preparing model: "+JSON.stringify(e));let i,{record:n,id:o,transient:s}=this.adapter.prepare(e,this.pk,this.tableName,...t);return a.info("Updating model: "+JSON.stringify(e)),n=await this.adapter.update(this.tableName,o,n,...t),t.length&&(i=t[t.length-1]),a.info("Reverting model: "+JSON.stringify(e)),this.adapter.revert(n,this.class,this.pk,o,i&&i.get("rebuildWithTransient")?s:void 0)}ObserverHandler(){return new p}async createAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk,this.tableName,...t)),a=r.map(e=>e.id);let i=r.map(e=>e.record);const n=r.map(e=>e.transient).filter(e=>!!e);let o;return t.length&&(o=t[t.length-1]),i=await this.adapter.createAll(this.tableName,a,i,...t),i.map((e,t)=>this.adapter.revert(e,this.class,this.pk,a[t],o&&o.get("rebuildWithTransient")?n:void 0))}async updateAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk,this.tableName,...t)),a=r.map(e=>e.transient).filter(e=>!!e);let i;return t.length&&(i=t[t.length-1]),(await this.adapter.updateAll(this.tableName,r.map(e=>e.id),r.map(e=>e.record),...t)).map((e,t)=>this.adapter.revert(e,this.class,this.pk,r[t].id,i&&i.get("rebuildWithTransient")?a:void 0))}async raw(e,t,...r){const i=r.pop(),n=await a.Context.args("QUERY",this.class,[i],this.adapter,{});return this.adapter.raw(e,t,new this.class,...n.args)}async updateObservers(e,t,r,a,...i){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(t))return await super.updateObservers(e,t,r,a,...i)}async selectWithContext(e,t){let r;return t instanceof d?r.context=t:r=await a.Context.args(a.OperationKeys.CREATE,this.class,[t],this.adapter,this._overrides||{}),e?this.adapter.Statement(r.context).select(e).from(this.class):this.adapter.Statement(r.context).select().from(this.class)}async createAllPrefix(e,...t){const r=t[t.length-1],i=await a.Context.args(a.OperationKeys.CREATE,this.class,t,this.adapter,this._overrides||{});if(!e.length)return[e,...i.args];const n=o.Repository.getSequenceOptions(e[0]);let s=[];n.type?(n.name||(n.name=T.pk(e[0])),s=await(await this.adapter.Sequence(n)).range(e.length,r)):s=e.map((e,t)=>{if(void 0===e[this.pk])throw new a.InternalError("Primary key is not defined for model in position "+t);return e[this.pk]}),e=await Promise.all(e.map(async(e,t)=>(e=new this.class(e),n.type&&(e[this.pk]=s[t]),await a.enforceDBDecorators(this,i.context,e,a.OperationKeys.CREATE,a.OperationKeys.ON),e)));const c=i.context.get("ignoredValidationProperties")||[],l=(await Promise.all(e.map(e=>Promise.resolve(e.hasErrors(...c))))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(l)throw new a.ValidationError(l);return[e,...i.args]}async createPrefix(e,...t){const r=await super.createPrefix(e,...t),i=r[0][this.pk];try{if(await this.read(i+"",...t))throw new a.ConflictError(`Conflict detected while creating model with id: ${i} already exists`)}catch(e){if(404!==e.code)throw e;this.logFor(t[t.length-1]).info(`Record entry with pk ${i} does not exist, creating it now...`)}return r}}class F extends t.CouchDBStatement{constructor(e,t){super(e),this.ctx=t}async raw(e){const t=await this.adapter.raw(e,!0,this.ctx),r=a.findPrimaryKey(new this.fromSelector),i=r.id,n=r.props.type;return this.selectSelector?t:t.map(e=>this.processRecord(e,i,n))}build(){const e={};e[t.CouchDBKeys.TABLE]={},e[t.CouchDBKeys.TABLE]=o.Repository.table(this.fromSelector);const r={selector:e};if(this.selectSelector&&(r.fields=this.selectSelector),this.whereCondition){const e=this.parseCondition(o.Condition.and(this.whereCondition,o.Condition.attribute(t.CouchDBKeys.TABLE).eq(r.selector[t.CouchDBKeys.TABLE]))).selector,a=Object.keys(e);if(1===a.length&&-1!==Object.values(t.CouchDBGroupOperator).indexOf(a[0]))switch(a[0]){case t.CouchDBGroupOperator.AND:e[t.CouchDBGroupOperator.AND]=[...Object.values(e[t.CouchDBGroupOperator.AND]).reduce((e,r)=>{const a=Object.keys(r);if(1!==a.length)throw Error("Too many keys in query selector. should be one");const i=a[0];return i===t.CouchDBGroupOperator.AND?e.push(...r[i]):e.push(r),e},[])],r.selector=e;break;case t.CouchDBGroupOperator.OR:{const a={};a[t.CouchDBGroupOperator.AND]=[e,...Object.entries(r.selector).map(([e,t])=>{const r={};return r[e]=t,r})],r.selector=a;break}default:throw Error("This should be impossible")}else Object.entries(e).forEach(([e,t])=>{r.selector[e],r.selector[e]=t})}if(this.orderBySelector){r.sort=r.sort||[],r.selector=r.selector||{};const[e,a]=this.orderBySelector,i={};i[e]=a,r.sort.push(i),r.selector[e]||(r.selector[e]={},r.selector[e][t.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(r.limit=this.limitSelector),this.offsetSelector&&(r.skip=this.offsetSelector),r}}class P extends r.JSONSerializer{constructor(){super()}deserialize(e,t){return JSON.parse(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}preSerialize(e){return Object.assign({},e)}}async function N(e,t,i,n){const s=n[i];if(!s)return;if("object"!=typeof s){const t=o.repositoryFromTypeMetadata(n,i,this.adapter.alias),r=await t.read(s,e);return await o.cacheModelForPopulate(e,n,i,s,r),void(n[i]=s)}t.class="string"==typeof t.class?t.class:t.class().name;const c=r.Model.get(t.class);if(!c)throw new a.InternalError("Could not find model "+t.class);const l=o.Repository.forModel(c,this.adapter.alias),d=await l.create(s,e),p=a.findPrimaryKey(d).id;await o.cacheModelForPopulate(e,n,i,d[p],d),n[i]=d[p]}async function I(e,t,r,i){const n=i[r];if(!n)return;if(t.cascade.update!==o.Cascade.CASCADE)return;if("object"!=typeof n){const t=o.repositoryFromTypeMetadata(i,r,this.adapter.alias),a=await t.read(n,e);return await o.cacheModelForPopulate(e,i,r,n,a),void(i[r]=n)}const s=await o.createOrUpdate(i[r],e,this.adapter.alias),c=a.findPrimaryKey(s).id;await o.cacheModelForPopulate(e,i,r,s[c],s),i[r]=s[c]}async function z(e,t,a,i){const n=i[a];if(!n)return;if(t.cascade.update!==o.Cascade.CASCADE)return;const s=o.repositoryFromTypeMetadata(i,a,this.adapter.alias);let c;c=n instanceof r.Model?await s.delete(i[a][s.pk],e):await s.delete(i[a],e),await o.cacheModelForPopulate(e,i,a,c[s.pk],c)}async function D(e,t,r,i){const n=i[r];if(!n||!n.length)return;const s=typeof n[0];if(!n.every(e=>typeof e===s))throw new a.InternalError(`Invalid operation. All elements of property ${r} must match the same type.`);const c=new Set([...n]);if("object"!==s){const t=o.repositoryFromTypeMetadata(i,r,this.adapter.alias);for(const a of c){const n=await t.read(a,e);await o.cacheModelForPopulate(e,i,r,a,n)}return void(i[r]=[...c])}const l=a.findPrimaryKey(n[0]).id,d=new Set;for(const t of n){const a=await o.createOrUpdate(t,e,this.adapter.alias);await o.cacheModelForPopulate(e,i,r,a[l],a),d.add(a[l])}i[r]=[...d]}async function $(e,t,r,i){if(t.cascade.delete!==o.Cascade.CASCADE)return;const n=i[r];if(!n||!n.length)return;const s=typeof n[0];if(!n.every(e=>typeof e===s))throw new a.InternalError(`Invalid operation. All elements of property ${r} must match the same type.`);const c="object"===s,l=c?o.Repository.forModel(n[0],this.adapter.alias):o.repositoryFromTypeMetadata(i,r,this.adapter.alias),d=new Set([...c?n.map(e=>e[l.pk]):n]);for(const t of d.values()){const a=await l.delete(t,e);await o.cacheModelForPopulate(e,i,r,t,a)}i[r]=[...d]}async function B(e,t,r,i){if(!t.populate)return;const n=i[r],s=Array.isArray(n);if(void 0===n||s&&0===n.length)return;const c=await(async(t,r,i,n,s)=>{let c,l;const d=[];for(const p of n){c=o.getPopulateKey(r.constructor.name,i,p);try{l=await t.get(c)}catch(t){const n=o.repositoryFromTypeMetadata(r,i,s);if(!n)throw new a.InternalError("Could not find repo");l=await n.read(p,e)}d.push(l)}return d})(e,i,r,s?n:[n],this.adapter.alias);i[r]=s?c:c[0]}async function M(e,t,r,a){try{const t=e.get("clientIdentity");a[r]=t.getID()}catch(e){throw new o.UnsupportedError("No User found in context. Please provide a user in the context")}}async function q(e,t,r,i){if(!t.type||i[r])return;let n;t.name||(t.name=o.sequenceNameForModel(i,"pk"));try{n=await this.adapter.Sequence(t)}catch(e){throw new a.InternalError(`Failed to instantiate Sequence ${t.name}: ${e}`)}const s=await n.next(e);Object.defineProperty(i,r,{enumerable:!0,writable:!1,configurable:!0,value:s})}class j extends t.CouchDBAdapter{getClient(){throw new o.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new P}logFor(e){return n.Logging.for(j,{},e)}repository(){return R}constructor(e,t){super(e,g,t),this.Context=d}for(e,...t){return super.for(e,...t)}async create(e,t,r,...a){const{stub:i,logger:n}=a.pop(),o=n.for(this.create);try{o.info(`adding entry to ${e} table with pk ${t}`),r=await this.putState(i,t.toString(),r)}catch(e){throw this.parseError(e)}return r}async read(e,t,...r){const{stub:i,logger:n}=r.pop(),o=n.for(this.read);let s;try{const r=await this.readState(i,e,t.toString());if(1>r.length)throw o.debug(`No record found for id ${t} in ${e} table`),new a.NotFoundError(`No record found for id ${t} in ${e} table`);2>r.length?(o.debug(`No record found for id ${t} in ${e} table`),s=r.pop()):s=this.mergeModels(r)}catch(e){throw this.parseError(e)}return s}async update(e,t,r,...a){const{stub:i,logger:n}=a.pop(),o=n.for(this.update);try{o.info(`updating entry to ${e} table with pk ${t}`),r=await this.putState(i,t.toString(),r)}catch(e){throw this.parseError(e)}return r}async delete(e,t,...r){const a=r.pop(),{stub:i,logger:n}=a,o=n.for(this.delete);let s;r.push(a);try{s=await this.read(e,t,...r),o.verbose(`deleting entry with pk ${t} from ${e} table`),this.deleteState(i,e,t.toString())}catch(e){throw this.parseError(e)}return s}async deleteState(e,t,r,...a){const i=e.createCompositeKey(t,[r+""]);await e.deleteState(i)}async putState(e,t,r,...i){let n;try{n=Buffer.from(j.serializer.serialize(r))}catch(e){throw new a.SerializationError(`Failed to serialize record with id ${t}: ${e}`)}return await e.putState(t.toString(),n),r}async readState(e,t,r,...i){const n=e.createCompositeKey(t,[r+""]),o=[];let s=await e.getState(n);if(""===s.toString())throw new a.NotFoundError(`Record with id ${r} not found`);try{s=j.serializer.deserialize(s.toString())}catch(e){throw new a.SerializationError("Failed to parse record: "+e)}return o.push(s),o}async queryResult(e,t,...r){return await e.getQueryResult(JSON.stringify(t))}async queryResultPaginated(e,t,r=250,a,...i){return await e.getQueryResultWithPagination(JSON.stringify(t),r,a?.toString())}mergeModels(e){const t=e=>Object.entries(e).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});let r=e.pop();for(const a of e)r=Object.assign({},t(r),t(a));return r}decode(e){return j.textDecoder.decode(e)}async flags(e,t,r,a,...i){return Object.assign(await super.flags(e,t,r,...i),{stub:a.stub,identity:a.clientIdentity??a.identity,logger:a.logger??this.logFor(a)})}index(e){return Promise.resolve(void 0)}async resultIterator(e,t,r=!1){const a=[];let i=await t.next();for(;!i.done;){if(i.value&&i.value.value.toString()){let t={};if(e.debug(i.value.value.toString("utf8")),r){t.TxId=i.value.txId,t.Timestamp=i.value.timestamp;try{t.Value=JSON.parse(i.value.value.toString("utf8"))}catch(r){e.error(r),t.Value=i.value.value.toString("utf8")}}else try{t=JSON.parse(i.value.value.toString("utf8"))}catch(r){e.error(r),t=i.value.value.toString("utf8")}a.push(t)}i=await t.next()}return e.debug(`Closing iterator after ${a.length} results`),t.close(),a}async raw(e,t,...r){const{stub:a,logger:i}=r.pop(),n=i.for(this.raw),{skip:o,limit:s}=e;let c;s||o?(delete e.limit,delete e.skip,n.debug(`Retrieving paginated iterator: limit: ${s}/ skip: ${o}`),c=(await this.queryResultPaginated(a,e,s||250,o?.toString())).iterator):(n.debug("Retrieving iterator"),c=await this.queryResult(a,e)),n.debug("Iterator acquired");const l=await this.resultIterator(n,c);return n.debug("returning {0} results",""+(Array.isArray(l)?l.length:1)),l}Statement(e){if(!e)throw new E("Context is required");return new F(this,e)}async Sequence(e){return new T(e,this)}async createAll(e,t,r,...i){if(t.length!==r.length)throw new a.InternalError("Ids and models must have the same length");const{logger:n}=i[i.length-1],o=n.for(this.createAll);return o.info(`Creating ${t.length} entries ${e} table`),o.debug("pks: "+t),Promise.all(t.map(async(t,a)=>this.create(e,t,r[a],...i)))}async updateAll(e,t,r,...i){if(t.length!==r.length)throw new a.InternalError("Ids and models must have the same length");const{logger:n}=i[i.length-1],o=n.for(this.createAll);return o.info(`Updating ${t.length} entries ${e} table`),o.debug("pks: "+t),Promise.all(t.map(async(t,a)=>this.update(e,t,r[a],...i)))}prepare(e,t,...r){const{stub:i,logger:n}=r.pop(),s=r.shift(),c=n.for(this.prepare),l=a.modelToTransient(e),d=Object.entries(l.model).reduce((t,[r,i])=>{if(void 0===i)return t;const n=o.Repository.column(e,r);if(this.isReserved(n))throw new a.InternalError(`Property name ${n} is reserved`);return t[n]=i,t},{});return e[o.PersistenceKeys.METADATA]&&(c.silly("Passing along persistence metadata for "+e[o.PersistenceKeys.METADATA]),Object.defineProperty(d,o.PersistenceKeys.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:e[o.PersistenceKeys.METADATA]})),c.info(`Preparing record for ${s} table with pk ${e[t]}`),{record:d,id:i.createCompositeKey(s,[e[t]+""]),transient:l.transient}}revert(e,t,i,n,s){const c=this.log.for(this.revert),l={};l[i]=n;const d="string"==typeof t?r.Model.build(l,t):new t(l);c.silly(`Rebuilding model ${d.constructor.name} id ${n}`);const p=e[o.PersistenceKeys.METADATA],u=Object.keys(d).reduce((t,r)=>(t[r]=e[o.Repository.column(t,r)],t),d);return s&&(c.verbose("re-adding transient properties: "+Object.keys(s).join(", ")),Object.entries(s).forEach(([e,t])=>{if(e in u&&void 0!==u[e])throw new a.InternalError(`Transient property ${e} already exists on model ${d.constructor.name}. should be impossible`);u[e]=t})),p&&(c.silly(`Passing along ${this.flavour} persistence metadata for ${d.constructor.name} id ${n}: ${p}`),Object.defineProperty(u,o.PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:p})),u}createPrefix(e,r,a,...i){const n=i.pop(),o={};return o[t.CouchDBKeys.TABLE]=e,Object.assign(o,a),[e,r,o,n]}updatePrefix(e,r,a,...i){const n=i.pop(),o={};return o[t.CouchDBKeys.TABLE]=e,Object.assign(o,a),[e,r,o,n]}createAllPrefix(e,r,i,...n){if(r.length!==i.length)throw new a.InternalError("Ids and models must have the same length");const o=n.pop(),s=r.map((r,a)=>{const n={};return n[t.CouchDBKeys.TABLE]=e,Object.assign(n,i[a]),n});return[e,r,s,o]}updateAllPrefix(e,r,i,...n){if(r.length!==i.length)throw new a.InternalError("Ids and models must have the same length");const o=n.pop(),s=r.map((r,a)=>{const n={};return n[t.CouchDBKeys.TABLE]=e,Object.assign(n,i[a]),n});return[e,r,s,o]}static decoration(){super.decoration();const e=o.Repository.key(o.PersistenceKeys.CREATED_BY),t=o.Repository.key(o.PersistenceKeys.UPDATED_BY);r.Decoration.flavouredAs(g).for(e).define(a.onCreate(M),r.propMetadata(e,{})).apply(),r.Decoration.flavouredAs(g).for(t).define(a.onCreateUpdate(M),r.propMetadata(t,{})).apply();const n=o.Repository.key(a.DBKeys.ID);r.Decoration.flavouredAs(g).for(n).define(o.index([o.OrderDirection.ASC,o.OrderDirection.DSC]),r.required(),a.readonly(),r.propMetadata(n,o.NumericSequence),a.onCreate(q,o.NumericSequence)).apply();const c=o.Adapter.key(o.PersistenceKeys.COLUMN);r.Decoration.flavouredAs(g).for(c).extend(i.Property()).apply();const l=o.Adapter.key(o.PersistenceKeys.TABLE);r.Decoration.flavouredAs(g).for(l).extend(e=>i.Object()(e)).apply();const d=o.Repository.key(o.PersistenceKeys.ONE_TO_ONE);r.Decoration.flavouredAs(g).for(d).define({decorator:(e,t,i,n,c)=>{const l={class:e.name?e.name:e,cascade:t,populate:i};return n&&(l.joinTable=n),c&&(l.name=c),s.apply(r.prop(o.PersistenceKeys.RELATIONS),r.type([e.name?e.name:e,String.name,Number.name,BigInt.name]),a.onCreate(N,l),a.onUpdate(I,l),a.onDelete(z,l),a.afterAny(B,l),r.propMetadata(d,l))}}).apply();const p=o.Repository.key(o.PersistenceKeys.ONE_TO_MANY);r.Decoration.for(p).define({decorator:(e,t,i,n,c)=>{const l={class:e.name?e.name:e,cascade:t,populate:i};return n&&(l.joinTable=n),c&&(l.name=c),s.apply(r.prop(o.PersistenceKeys.RELATIONS),r.list([e,String,Number]),a.onCreate(D,l),a.onUpdate(o.oneToManyOnUpdate,l),a.onDelete($,l),a.afterAny(B,l),r.propMetadata(p,l))}}).apply()}}j.decoration(),o.Adapter.setCurrent(g);class K extends r.JSONSerializer{constructor(){super()}deserialize(e){return super.deserialize(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}}class L extends j{constructor(e,t,r){super(e,t),this.collections=r,this.collections=r||[]}async Sequence(e){return new T(e,this,this.collections)}async read(e,t,r,...i){const{stub:n,logger:o}=i.pop(),s=o.for(this.read);let c;try{const i=await this.readState(n,e,t.toString(),r);if(1>i.length)throw s.debug(`No record found for id ${t} in ${e} table`),new a.NotFoundError(`No record found for id ${t} in ${e} table`);2>i.length?(s.debug(`No record found for id ${t} in ${e} table`),c=i.pop()):c=this.mergeModels(i)}catch(e){throw this.parseError(e)}return c}async delete(e,t,r,...a){const i=a.pop(),{stub:n,logger:o}=i,s=o.for(this.delete);let c;a.push(i);try{c=await this.read(e,t,r,...a),s.verbose(`deleting entry with pk ${t} from ${e} table`),this.deleteState(n,e,t.toString(),r)}catch(e){throw this.parseError(e)}return c}prepare(e,t,...r){const{stub:i,logger:n}=r.pop(),s=r.shift(),c=n.for(this.prepare),l=((e,t)=>{const r=a.modelToTransient(t),i=v(t),n=t=>Object.entries(t).reduce((r,[i,n])=>{if(void 0===n)return r;const s=o.Repository.column(t,i);if(e.isReserved(s))throw new a.InternalError(`Property name ${s} is reserved`);return r[s]=n,r},{});if(i.private){const e=Object.keys(i.private);for(const t of e)i.private[t]=n(i.private[t])}return{model:r.model,transient:r.transient,privateData:i.private,result:n(r.model)}})(this,e);return c.info(`Preparing record for ${s} table with pk ${e[t]}`),{record:l.privateData,id:i.createCompositeKey(s,[e[t]+""]),transient:l.transient}}createPrefix(e,r,a,...i){const n=i.pop(),o=Object.keys(a);for(const r of o)a[r][t.CouchDBKeys.TABLE]=e;return[e,r,a,n]}updatePrefix(e,r,a,...i){const n=i.pop(),o=Object.keys(a);for(const r of o)a[r][t.CouchDBKeys.TABLE]=e;return[e,r,a,n]}async putState(e,t,r,...i){const n=Object.keys(r);let o,s={};for(const i of n){s=r[i];try{o=Buffer.from(j.serializer.serialize(r[i]))}catch(e){throw new a.SerializationError(`Failed to serialize record with id ${t}: ${e}`)}await e.putPrivateData(i,t.toString(),o)}return s}async readState(e,t,r,i,...n){const o=e.createCompositeKey(t,[r+""]),s=v(i),c=Object.keys(s.private),l=[];for(const t of c)try{let i=await e.getPrivateData(t,o);if(""===i.toString())throw new a.NotFoundError(`Entry with id ${r} doesn't exist...`);try{i=j.serializer.deserialize(i.toString())}catch(e){throw new a.SerializationError("Failed to parse private data: "+e)}l.push(i)}catch(e){if(w.test(e.message))throw new O(e);throw e}return l}async deleteState(e,t,r,a,...i){const n=e.createCompositeKey(t,[r+""]),o=v(a),s=Object.keys(o.private);for(const t of s)await e.deletePrivateData(t,n)}async queryResult(e,t,r){const a=v(r).private,i=Object.keys(a)[0]||"";return(await e.getPrivateDataQueryResult(i,JSON.stringify(t))).iterator}async queryResultPaginated(e,t,r=250,a=void 0,i){const n=v(i).private,o=Object.keys(n)[0]||"",s=await e.getPrivateDataQueryResult(o,JSON.stringify(t)),c=[];let l=0,d=!a,p=null;for(;;){const e=await s.next();if(e.value&&e.value.value.toString()){const t=e.value.key,i=e.value.value.toString("utf8");if(!d){t===a?.toString()&&(d=!0);continue}if(c.push({Key:t,Record:JSON.parse(i)}),p=t,l++,l>=r)return await s.close(),{iterator:c,metadata:{fetchedRecordsCount:c.length,bookmark:p}}}if(e.done)return await s.close(),{iterator:c,metadata:{fetchedRecordsCount:c.length,bookmark:""}}}}async raw(e,t,...r){const{stub:a,logger:i}=r.pop(),n=i.for(this.raw),{skip:o,limit:s}=e,c=r.shift();let l;s||o?(delete e.limit,delete e.skip,n.debug(`Retrieving paginated iterator: limit: ${s}/ skip: ${o}`),l=(await this.queryResultPaginated(a,e,s||250,o?.toString(),c)).iterator):(n.debug("Retrieving iterator"),l=await this.queryResult(a,e,c)),n.debug("Iterator acquired");const d=await this.resultIterator(n,l);return n.debug("returning {0} results",""+(Array.isArray(d)?d.length:1)),d}}class J extends i.Contract{static{this.serializer=new K}constructor(e,t){super(e),this.clazz=t,this.initialized=!1,J.adapter=this.getAdapter(t),this.repo=o.Repository.forModel(t,J.adapter.alias)}getAdapter(e){const t=new e;if(b(t)){const e=v(t),r=Object.keys(e.private);return new L(void 0,"fabric-private-data-adapter",r)}return new j(void 0,g)}logFor(e){return n.Logging.for(J.name,{},e)}async create(e,t,...r){const a=this.logFor(e).for(this.create);"string"==typeof t&&(t=this.deserialize(t)),a.info("Creating model: "+JSON.stringify(t));const i=this.getTransientData(e);return a.info("Merging transient data..."),t=this.repo.merge(t,i),this.repo.create(t,e,...r)}async read(e,t,...r){return this.logFor(e).for(this.read).info(`reading entry with pk ${t} `),this.repo.read(t,e,...r)}getTransientData(e){const t=e.stub.getTransient();let r={};return t.has(this.repo.tableName)&&(r=JSON.parse(t.get(this.repo.tableName)?.toString("utf8"))),r}async update(e,t,...r){const a=this.logFor(e).for(this.update);"string"==typeof t&&(t=this.deserialize(t)),a.info("Updating model: "+JSON.stringify(t));const i=this.getTransientData(e);return a.info("Merging transient data..."),t=this.repo.merge(t,i),this.repo.update(t,e,...r)}async delete(e,t,...r){return this.logFor(e).for(this.delete).info(`deleting entry with pk ${t} `),this.repo.delete(t+"",e,...r)}async deleteAll(e,t,...r){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.deleteAll(t,e,...r)}async readAll(e,t,...r){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.readAll(t,e,...r)}async updateAll(e,t,...r){const a=this.logFor(e).for(this.updateAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),a.info(`updating ${t.length} entries to the table`),this.repo.updateAll(t,e,...r)}async raw(e,t,r,...a){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.raw(t,r,e,...a)}serialize(e){return J.serializer.serialize(e)}deserialize(e){return J.serializer.deserialize(e)}async init(e){const t=this.logFor(e).for(this.init);t.info("Running contract initialization..."),this.initialized=!0,t.info("Contract initialization completed.")}async healthcheck(e){return this.logFor(e).for(this.healthcheck).info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(e,t,...r){const a=this.logFor(e).for(this.createAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),a.info(`adding ${t.length} entries to the table`),this.repo.createAll(t,e,...r)}}class U extends J{constructor(e,t){super(e,t)}logFor(e){return n.Logging.for(U,{},e)}async create(e,t){const r=this.logFor(e).for(this.create);r.info("Creating model: "+t);const a=this.deserialize(t);return r.info("Model deserialized: "+JSON.stringify(a)),this.serialize(await super.create(e,a))}async read(e,t){return this.logFor(e).for(this.read).info("Reading id: "+t),this.serialize(await super.read(e,t))}async update(e,t){return this.logFor(e).for(this.update).info("Updating model: "+t),this.serialize(await super.update(e,t))}async delete(e,t){return this.logFor(e).for(this.delete).info("Deleting id: "+t),this.serialize(await super.delete(e,t))}async deleteAll(e,t){const r=JSON.parse(t);return this.logFor(e).for(this.deleteAll).info(`deleting ${r.length} entries from the table`),JSON.stringify((await super.deleteAll(e,r)).map(e=>this.serialize(e)))}async readAll(e,t){const r=JSON.parse(t);return this.logFor(e).for(this.readAll).info(`reading ${r.length} entries from the table`),JSON.stringify((await super.readAll(e,r)).map(e=>this.serialize(e)))}async updateAll(e,t){const r=this.logFor(e).for(this.updateAll),a=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return r.info(`Updating ${a.length} entries to the table`),JSON.stringify((await super.updateAll(e,a)).map(e=>this.serialize(e)))}async raw(e,t,r){const a=JSON.parse(t);return super.raw(e,a,r)}async init(e){await super.init(e)}async healthcheck(e){return JSON.stringify(await super.healthcheck(e))}async createAll(e,t){const r=this.logFor(e).for(this.createAll),a=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return r.info(`Adding ${a.length} entries to the table`),JSON.stringify((await super.createAll(e,a)).map(e=>this.serialize(e)))}}function V(e,t){const r=e+t;if(e!==r-t||t!==r-e)throw new S(`Addition overflow: ${e} + ${t}`);return r}function W(e,t){const r=e-t;if(e!==r+t||t!==e-r)throw new S(`Subtraction overflow: ${e} - ${t}`);return r}c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"create",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"read",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"update",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"delete",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"deleteAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"readAll",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"updateAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Boolean]),c.__metadata("design:returntype",Promise)],U.prototype,"raw",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],U.prototype,"init",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],U.prototype,"healthcheck",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"createAll",null);let G=class extends o.BaseModel{constructor(e){super(e)}};c.__decorate([o.pk({type:"String"}),c.__metadata("design:type",String)],G.prototype,"name",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],G.prototype,"owner",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],G.prototype,"symbol",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],G.prototype,"decimals",void 0),G=c.__decorate([o.table("erc20_tokens"),r.model(),c.__metadata("design:paramtypes",[Object])],G);let H=class extends o.BaseModel{constructor(e){super(e)}};c.__decorate([o.pk({type:"String"}),c.__metadata("design:type",String)],H.prototype,"id",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],H.prototype,"token",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],H.prototype,"balance",void 0),c.__decorate([o.column(),c.__metadata("design:type",String)],H.prototype,"captive",void 0),H=c.__decorate([o.table("erc20_wallets"),r.model(),c.__metadata("design:paramtypes",[Object])],H);let Q=class extends o.BaseModel{constructor(e){super(e)}};var Y;c.__decorate([o.pk({type:"String"}),o.column(),r.required(),c.__metadata("design:type",String)],Q.prototype,"owner",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],Q.prototype,"spender",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],Q.prototype,"value",void 0),Q=c.__decorate([o.table("erc20_allowances"),r.model(),c.__metadata("design:paramtypes",[Object])],Q),(e=>{e.TRANSFER="Transfer",e.APPROVAL="Approval"})(Y||(Y={}));class X extends J{constructor(e){super(e,H),X.adapter=X.adapter||new j,this.walletRepository=R.forModel(H,X.adapter.alias),this.tokenRepository=R.forModel(G,X.adapter.alias),this.allowanceRepository=R.forModel(Q,X.adapter.alias)}async TokenName(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].name}async Symbol(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].symbol}async Decimals(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].decimals}async TotalSupply(e){await this.CheckInitialized(e);const t=await this.walletRepository.selectWithContext(void 0,e),r=await t.execute();if(0==r.length)throw new a.NotFoundError(`The token ${this.getName()} does not exist`);let i=0;return r.forEach(e=>{i+=e.balance}),i}async BalanceOf(e,t){return await this.CheckInitialized(e),(await this.walletRepository.read(t,e)).balance}async Transfer(e,t,r){await this.CheckInitialized(e);const i=e.clientIdentity.getID();if(!await this._transfer(e,i,t,r))throw new a.InternalError("Failed to transfer");return!0}async TransferFrom(e,t,r,i){await this.CheckInitialized(e);const n=e.clientIdentity.getID(),o=await this._getAllowance(e,t,n);if(!o||0>o.value)throw new A(`spender ${n} has no allowance from ${t}`);const s=o.value;if(i>s)throw new C("The spender does not have enough allowance to spend.");const c=W(s,i),l=Object.assign({},o,{value:c});if(await this.allowanceRepository.update(l,e),!await this._transfer(e,t,r,i))throw new a.InternalError("Failed to transfer");return!0}async _transfer(e,t,r,i){const n=this.logFor(e).for(this._transfer);if(t===r)throw new o.AuthorizationError("cannot transfer to and from same client account");if(0>i)throw new C("transfer amount cannot be negative");const s=await this.walletRepository.read(t,e),c=s.balance;if(i>c)throw new C(`client account ${t} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(r,e)}catch(t){if(!(t instanceof a.BaseError))throw new a.InternalError(t);if(404!==t.code)throw new a.InternalError(t.message);l=new H({id:r,balance:0,token:await this.TokenName(e)}),d=!0}const p=l.balance,u=W(c,i),h=V(p,i),g=Object.assign({},s,{balance:u});await this.walletRepository.update(g,e);const y=Object.assign({},l,{balance:h});d?await this.walletRepository.create(y,e):await this.walletRepository.update(y,e);const f={from:t,to:r,value:i};return this.repo.ObserverHandler().updateObservers(n,"",Y.TRANSFER,"",e,"",f),!0}async Approve(e,t,r){await this.CheckInitialized(e);const a=this.logFor(e).for(this.Approve),i=e.clientIdentity.getID();let n=await this._getAllowance(e,i,t);if((await this.walletRepository.read(i,e)).balance<r)throw new C(`client account ${i} has insufficient funds.`);n?(n.value=r,await this.allowanceRepository.update(n,e)):(n=new Q({owner:i,spender:t,value:r}),await this.allowanceRepository.create(n,e));const o={owner:i,spender:t,value:r};return this.repo.ObserverHandler().updateObservers(a,"",Y.APPROVAL,"",e,"",o),!0}async Allowance(e,t,r){await this.CheckInitialized(e);const a=await this._getAllowance(e,t,r);if(!a)throw new A(`spender ${r} has no allowance from ${t}`);return a.value}async _getAllowance(e,t,r){const a=o.Condition.and(o.Condition.attribute("owner").eq(t),o.Condition.attribute("spender").eq(r)),i=await this.allowanceRepository.selectWithContext(void 0,e),n=await i.where(a).execute();return n?.[0]}async Initialize(e,t){const r=await this.tokenRepository.selectWithContext(void 0,e);if((await r.execute()).length>0)throw new o.AuthorizationError("contract options are already set, client is not authorized to change them");return t.owner=e.clientIdentity.getID(),await this.tokenRepository.create(t,e),!0}async CheckInitialized(e){const t=await this.tokenRepository.selectWithContext(void 0,e);if(0==(await t.execute()).length)throw new k("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(e,t){await this.CheckInitialized(e);const r=this.logFor(e).for(this.Mint),i=e.clientIdentity.getID();if(0>=t)throw new a.ValidationError("mint amount must be a positive integer");let n;try{n=await this.walletRepository.read(i,e);const r=V(n.balance,t),a=Object.assign({},n,{balance:r});await this.walletRepository.update(a,e)}catch(r){if(!(r instanceof a.BaseError))throw new a.InternalError(r);if(404!==r.code)throw new a.InternalError(r.message);{const r=new H({id:i,balance:t,token:await this.TokenName(e)});await this.walletRepository.create(r,e)}}const o={from:"0x0",to:i,value:t};this.repo.ObserverHandler().updateObservers(r,"",Y.TRANSFER,"",e,"",o)}async Burn(e,t){await this.CheckInitialized(e);const r=this.logFor(e).for(this.Burn),a=e.clientIdentity.getID(),i=await this.walletRepository.read(a,e),n=i.balance;if(t>n)throw new C("Minter has insufficient funds.");const o=W(n,t),s=Object.assign({},i,{balance:o});await this.walletRepository.update(s,e),r.info(t+" tokens were burned");const c={from:a,to:"0x0",value:t};this.repo.ObserverHandler().updateObservers(r,"",Y.TRANSFER,"",e,"",c)}async BurnFrom(e,t,r){await this.CheckInitialized(e);const a=this.logFor(e).for(this.BurnFrom),i=await this.walletRepository.read(t,e),n=i.balance;if(r>n)throw new C(t+" has insufficient funds.");const o=W(n,r),s=Object.assign({},i,{balance:o});await this.walletRepository.update(s,e),a.info(`${r} tokens were berned from ${t}`);const c={from:t,to:"0x0",value:r};this.repo.ObserverHandler().updateObservers(a,"",Y.TRANSFER,"",e,"",c)}async ClientAccountBalance(e){await this.CheckInitialized(e);const t=e.clientIdentity.getID(),r=await this.walletRepository.read(t,e);if(!r)throw new C(`The account ${t} does not exist`);return r.balance}async ClientAccountID(e){return await this.CheckInitialized(e),e.clientIdentity.getID()}}c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"TokenName",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"Symbol",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"Decimals",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"TotalSupply",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],X.prototype,"BalanceOf",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"Transfer",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"TransferFrom",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"Approve",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],X.prototype,"Allowance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,G]),c.__metadata("design:returntype",Promise)],X.prototype,"Initialize",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"CheckInitialized",null),c.__decorate([y(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"Mint",null),c.__decorate([y(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"Burn",null),c.__decorate([y(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"BurnFrom",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"ClientAccountBalance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"ClientAccountID",null);const Z=[X];class ee extends n.MiniLogger{constructor(e,t,r){if(super(e,t),r){if(r instanceof d)throw new E("Receiving incorrect context... It should be the contract context!!!");this.logger=r.logging.getLogger(e)}else this.logger=new n.MiniLogger(e,t)}log(e,t,r){if(n.NumericLogLevels[this.config("level")]<n.NumericLogLevels[e])return;let a;switch(e){case n.LogLevel.info:a=this.logger.info;break;case n.LogLevel.verbose:a=this.logger.verbose;break;case n.LogLevel.debug:a=this.logger.debug;break;case n.LogLevel.error:a=this.logger.error;break;case n.LogLevel.silly:a=this.logger.silly;break;default:throw Error("Invalid log level")}a.call(this.logger,this.createLog(e,t,r))}}n.Logging.setFactory((e,t,r)=>new ee(e,t||{},r));const te="##VERSION##",re="##PACKAGE##";l.Metadata.registerLibrary(re,te),e.ContractLogger=ee,e.FabricContractAdapter=j,e.FabricContractContext=d,e.FabricContractRepository=R,e.FabricContractRepositoryObservableHandler=p,e.FabricContractSequence=T,e.FabricCrudContract=J,e.FabricStatement=F,e.PACKAGE_NAME=re,e.SerializedCrudContract=U,e.VERSION=te,e.contracts=Z,e.createdByOnFabricCreateUpdate=M,e.pkFabricOnCreate=q},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/for-couchdb"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/db-decorators"),require("fabric-contract-api"),require("@decaf-ts/logging"),require("@decaf-ts/core"),require("@decaf-ts/reflection"),require("tslib"),require("@decaf-ts/decoration")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/for-couchdb","@decaf-ts/decorator-validation","@decaf-ts/db-decorators","fabric-contract-api","@decaf-ts/logging","@decaf-ts/core","@decaf-ts/reflection","tslib","@decaf-ts/decoration"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-fabric"]={},e.decafTsForCouchdb,e.decafTsDecoratorValidation,e.decafTsDbDecorators,e.fabricContractApi,e.decafTsLogging,e.decafTsCore,e.decafTsReflection,e.tslib,e.decafTsDecoration);
1
+ var e,t;e=this,t=function(e,t,r,a,i,n,o,s,c,l){"use strict";class d extends a.Context{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("clientIdentity")}get logger(){return this.get("logger")}}class p extends o.ObserverHandler{constructor(e=[a.OperationKeys.CREATE,a.OperationKeys.UPDATE,a.OperationKeys.DELETE,a.BulkCrudOperationKeys.CREATE_ALL,a.BulkCrudOperationKeys.UPDATE_ALL,a.BulkCrudOperationKeys.DELETE_ALL]){super(),this.supportedEvents=e}async updateObservers(e,t,r,a,i,n,o){const{stub:s}=i;if(-1!==this.supportedEvents.indexOf(r)){e.debug(`Emitting ${r} event`);const i=((e,t,r)=>{const a=[e,t];return r&&a.push(r),a.join("_")})(t,r,n);s.setEvent(i,Buffer.from(JSON.stringify({id:a})))}else s.setEvent(r,Buffer.from(JSON.stringify(o)))}}var u,h;(e=>{e.PRIVATE="private",e.FABRIC="fabric.",e.OWNEDBY="owned-by"})(u||(u={})),(e=>{e.X509="X.509"})(h||(h={}));const g="hlf-fabric";function y(){return function(e,t,r){const i=r.value;return r.value=async function(...e){const r=e[0],n=r.clientIdentity.getID(),s=await this.tokenRepository.selectWithContext(void 0,r),c=await s.execute();if(0==c.length)throw new a.NotFoundError("No tokens avaialble");if(c.length>1)throw new a.NotFoundError("To many token available : "+c.length);if(c[0].owner!=n)throw new o.AuthorizationError(`User not authorized to run ${t} on the token`);return await i.apply(this,e)},r}}function f(e){return r.Model.key(u.FABRIC+e)}function m(e){if(!e)throw Error("Collection name is required");const t=f(u.PRIVATE);return(i,n)=>{const o=n||void 0,s=Reflect.getMetadata(t,i[r.ModelKeys.ANCHOR]||i,o),c=s?.collections||[];r.propMetadata(f(u.PRIVATE),{...!n&&{collections:c?[...new Set([...c,e])]:[e]},isPrivate:!n})(n?i.constructor:i[r.ModelKeys.ANCHOR]||i),n&&(r.propMetadata(f(u.PRIVATE),{collections:c?[...new Set([...c,e])]:[e]})(i,n),a.transient()(i,n))}}const w=/private\s+data\s+matching\s+public\s+hash\s+version\s+is\s+not\s+available/i;function _(e){let t=Reflect.getMetadata(f(u.PRIVATE),e);return t=t||Reflect.getMetadata(f(u.PRIVATE),e.constructor),t}function b(e){const t=_(e);return!(!t||void 0===t.isPrivate)&&t.isPrivate}function v(e){if(!(e=>!!_(e))(e))return{model:e};const t=a.getAllPropertyDecoratorsRecursive(e,void 0,f(u.PRIVATE)),i=b(e),n=_(e);let o={model:e,private:void 0};if(o=i?Object.keys(e).reduce((t,r)=>{const i=n.collections;t.private=t.private||{};for(const n of i)try{t.private[n]=t.private[n]||{},t.private[n][r]=e[r]}catch(e){throw new a.SerializationError(`Failed to serialize private property ${r}: ${e}`)}return t},{model:{}}):Object.entries(t).reduce((t,[r,i])=>{const n=i.find(e=>""===e.key);if(n){const i=n.props.collections;t.private=t.private||{};for(const n of i)try{t.private[n]=t.private[n]||{},t.private[n][r]=e[r]}catch(e){throw new a.SerializationError(`Failed to serialize private property ${r}: ${e}`)}}else t.model=t.model||{},t.model[r]=e[r];return t},{}),o.model=o.model||{},o.model=r.Model.build(o.model,e.constructor.name),o.private){const t=Object.keys(o.private);for(const a of t)o.private[a]=r.Model.build(o.private[a],e.constructor.name)}return o}class S extends a.InternalError{constructor(e){super(e,S.name)}}class C extends a.InternalError{constructor(e){super(e,C.name)}}class A extends a.InternalError{constructor(e){super(e,A.name)}}class E extends a.InternalError{constructor(e){super(e,E.name,500)}}class O extends a.BaseError{constructor(e="private data matching public hash version is not available ..."){super(O.name,e,403)}}class k extends a.BaseError{constructor(e){super(k.name,e,409)}}let x=class extends o.BaseModel{constructor(e){super(e)}};c.__decorate([o.pk(),c.__metadata("design:type",String)],x.prototype,"id",void 0),c.__decorate([r.required(),o.index(),c.__metadata("design:type",Object)],x.prototype,"current",void 0),x=c.__decorate([o.table(t.CouchDBKeys.SEQUENCE),r.model(),c.__metadata("design:paramtypes",[Object])],x);class T extends o.Sequence{constructor(e,t,r){super(e);for(const e of r||[])m(e)(x);this.repo=o.Repository.forModel(x,t.alias)}async current(e){if(!e)throw new E("Context is required");const{name:t,startWith:r}=this.options;try{const r=await this.repo.read(t,e);return this.parse(r.current)}catch(e){if(e instanceof a.NotFoundError){if(void 0===r)throw new a.InternalError("Starting value is not defined for a non existing sequence");try{return this.parse(r)}catch(e){throw new a.InternalError(`Failed to parse initial value for sequence ${r}: ${e}`)}}throw new a.InternalError(`Failed to retrieve current value for sequence ${t}: ${e}`)}}parse(e){return o.Sequence.parseValue(this.options.type,e)}async increment(e,t,r){if(!r)throw new E("Context is required");const{type:i,incrementBy:n,name:o}=this.options;let s;const c=t||n;if(c%n!==0)throw new a.InternalError("Value to increment does not consider the incrementBy setting: "+n);switch(i){case"Number":s=this.parse(e)+c;break;case"BigInt":s=this.parse(e)+BigInt(c);break;default:throw new a.InternalError("Should never happen")}let l;try{l=await this.repo.update(new x({id:o,current:s}),r)}catch(e){if(!(e instanceof a.NotFoundError))throw e;l=await this.repo.create(new x({id:o,current:s}),r)}return l.current}async next(e){if(!e)throw new E("Context is required");const t=await this.current(e);return this.increment(t,void 0,e)}async range(e,t){if(!t)throw new E("Context is required");const r=await this.current(t),i=this.parse(this.options.incrementBy),n=await this.increment(r,this.parse(e)*i,t),o=[];for(let t=1;e>=t;t++)o.push(r+i*this.parse(t));if(o[o.length-1]!==n)throw new a.InternalError("Miscalculation of range");return o}}class R extends o.Repository{constructor(e,t,r){super(e,t),this.trackedEvents=r}logFor(e){return n.Logging.for(R,{},e)}async create(e,...t){const r=t[t.length-1],a=this.logFor(r).for(this.create);a.info("Preparing model: "+JSON.stringify(e));let i,{record:n,id:o,transient:s}=this.adapter.prepare(e,this.pk,this.tableName,...t);return a.info("Creating model: "+JSON.stringify(e)),n=await this.adapter.create(this.tableName,o,n,...t),t.length&&(i=t[t.length-1]),a.info("Reverting model: "+JSON.stringify(e)),this.adapter.revert(n,this.class,this.pk,o,i&&i.get("rebuildWithTransient")?s:void 0)}async read(e,...t){const r=await this.adapter.read(this.tableName,e,new this.class,...t);return this.adapter.revert(r,this.class,this.pk,e)}async delete(e,...t){const r=await this.adapter.delete(this.tableName,e,new this.class,...t);return this.adapter.revert(r,this.class,this.pk,e)}async update(e,...t){const r=t[t.length-1],a=this.logFor(r).for(this.update);a.info("Preparing model: "+JSON.stringify(e));let i,{record:n,id:o,transient:s}=this.adapter.prepare(e,this.pk,this.tableName,...t);return a.info("Updating model: "+JSON.stringify(e)),n=await this.adapter.update(this.tableName,o,n,...t),t.length&&(i=t[t.length-1]),a.info("Reverting model: "+JSON.stringify(e)),this.adapter.revert(n,this.class,this.pk,o,i&&i.get("rebuildWithTransient")?s:void 0)}ObserverHandler(){return new p}async createAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk,this.tableName,...t)),a=r.map(e=>e.id);let i=r.map(e=>e.record);const n=r.map(e=>e.transient).filter(e=>!!e);let o;return t.length&&(o=t[t.length-1]),i=await this.adapter.createAll(this.tableName,a,i,...t),i.map((e,t)=>this.adapter.revert(e,this.class,this.pk,a[t],o&&o.get("rebuildWithTransient")?n:void 0))}async updateAll(e,...t){if(!e.length)return e;const r=e.map(e=>this.adapter.prepare(e,this.pk,this.tableName,...t)),a=r.map(e=>e.transient).filter(e=>!!e);let i;return t.length&&(i=t[t.length-1]),(await this.adapter.updateAll(this.tableName,r.map(e=>e.id),r.map(e=>e.record),...t)).map((e,t)=>this.adapter.revert(e,this.class,this.pk,r[t].id,i&&i.get("rebuildWithTransient")?a:void 0))}async raw(e,t,...r){const i=r.pop(),n=await a.Context.args("QUERY",this.class,[i],this.adapter,{});return this.adapter.raw(e,t,new this.class,...n.args)}async updateObservers(e,t,r,a,...i){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(t))return await super.updateObservers(e,t,r,a,...i)}async selectWithContext(e,t){let r;return t instanceof d?r.context=t:r=await a.Context.args(a.OperationKeys.CREATE,this.class,[t],this.adapter,this._overrides||{}),e?this.adapter.Statement(r.context).select(e).from(this.class):this.adapter.Statement(r.context).select().from(this.class)}async createAllPrefix(e,...t){const r=t[t.length-1],i=await a.Context.args(a.OperationKeys.CREATE,this.class,t,this.adapter,this._overrides||{});if(!e.length)return[e,...i.args];const n=o.Repository.getSequenceOptions(e[0]);let s=[];n.type?(n.name||(n.name=T.pk(e[0])),s=await(await this.adapter.Sequence(n)).range(e.length,r)):s=e.map((e,t)=>{if(void 0===e[this.pk])throw new a.InternalError("Primary key is not defined for model in position "+t);return e[this.pk]}),e=await Promise.all(e.map(async(e,t)=>(e=new this.class(e),n.type&&(e[this.pk]=s[t]),await a.enforceDBDecorators(this,i.context,e,a.OperationKeys.CREATE,a.OperationKeys.ON),e)));const c=i.context.get("ignoredValidationProperties")||[],l=(await Promise.all(e.map(e=>Promise.resolve(e.hasErrors(...c))))).reduce((e,t,r)=>(t&&(e="string"==typeof e?e+`\n - ${r}: ${t.toString()}`:` - ${r}: ${t.toString()}`),e),void 0);if(l)throw new a.ValidationError(l);return[e,...i.args]}async createPrefix(e,...t){const r=await super.createPrefix(e,...t),i=r[0][this.pk];try{if(await this.read(i+"",...t))throw new a.ConflictError(`Conflict detected while creating model with id: ${i} already exists`)}catch(e){if(404!==e.code)throw e;this.logFor(t[t.length-1]).info(`Record entry with pk ${i} does not exist, creating it now...`)}return r}}class F extends t.CouchDBStatement{constructor(e,t){super(e),this.ctx=t}async raw(e){const t=await this.adapter.raw(e,!0,this.ctx),r=a.findPrimaryKey(new this.fromSelector),i=r.id,n=r.props.type;return this.selectSelector?t:t.map(e=>this.processRecord(e,i,n))}build(){const e={};e[t.CouchDBKeys.TABLE]={},e[t.CouchDBKeys.TABLE]=o.Repository.table(this.fromSelector);const r={selector:e};if(this.selectSelector&&(r.fields=this.selectSelector),this.whereCondition){const e=this.parseCondition(o.Condition.and(this.whereCondition,o.Condition.attribute(t.CouchDBKeys.TABLE).eq(r.selector[t.CouchDBKeys.TABLE]))).selector,a=Object.keys(e);if(1===a.length&&-1!==Object.values(t.CouchDBGroupOperator).indexOf(a[0]))switch(a[0]){case t.CouchDBGroupOperator.AND:e[t.CouchDBGroupOperator.AND]=[...Object.values(e[t.CouchDBGroupOperator.AND]).reduce((e,r)=>{const a=Object.keys(r);if(1!==a.length)throw Error("Too many keys in query selector. should be one");const i=a[0];return i===t.CouchDBGroupOperator.AND?e.push(...r[i]):e.push(r),e},[])],r.selector=e;break;case t.CouchDBGroupOperator.OR:{const a={};a[t.CouchDBGroupOperator.AND]=[e,...Object.entries(r.selector).map(([e,t])=>{const r={};return r[e]=t,r})],r.selector=a;break}default:throw Error("This should be impossible")}else Object.entries(e).forEach(([e,t])=>{r.selector[e],r.selector[e]=t})}if(this.orderBySelector){r.sort=r.sort||[],r.selector=r.selector||{};const[e,a]=this.orderBySelector,i={};i[e]=a,r.sort.push(i),r.selector[e]||(r.selector[e]={},r.selector[e][t.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(r.limit=this.limitSelector),this.offsetSelector&&(r.skip=this.offsetSelector),r}}class P extends r.JSONSerializer{constructor(){super()}deserialize(e,t){return JSON.parse(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}preSerialize(e){return Object.assign({},e)}}async function N(e,t,i,n){const s=n[i];if(!s)return;if("object"!=typeof s){const t=o.repositoryFromTypeMetadata(n,i,this.adapter.alias),r=await t.read(s,e);return await o.cacheModelForPopulate(e,n,i,s,r),void(n[i]=s)}t.class="string"==typeof t.class?t.class:t.class().name;const c=r.Model.get(t.class);if(!c)throw new a.InternalError("Could not find model "+t.class);const l=o.Repository.forModel(c,this.adapter.alias),d=await l.create(s,e),p=a.findPrimaryKey(d).id;await o.cacheModelForPopulate(e,n,i,d[p],d),n[i]=d[p]}async function I(e,t,r,i){const n=i[r];if(!n)return;if(t.cascade.update!==o.Cascade.CASCADE)return;if("object"!=typeof n){const t=o.repositoryFromTypeMetadata(i,r,this.adapter.alias),a=await t.read(n,e);return await o.cacheModelForPopulate(e,i,r,n,a),void(i[r]=n)}const s=await o.createOrUpdate(i[r],e,this.adapter.alias),c=a.findPrimaryKey(s).id;await o.cacheModelForPopulate(e,i,r,s[c],s),i[r]=s[c]}async function z(e,t,a,i){const n=i[a];if(!n)return;if(t.cascade.update!==o.Cascade.CASCADE)return;const s=o.repositoryFromTypeMetadata(i,a,this.adapter.alias);let c;c=n instanceof r.Model?await s.delete(i[a][s.pk],e):await s.delete(i[a],e),await o.cacheModelForPopulate(e,i,a,c[s.pk],c)}async function D(e,t,r,i){const n=i[r];if(!n||!n.length)return;const s=typeof n[0];if(!n.every(e=>typeof e===s))throw new a.InternalError(`Invalid operation. All elements of property ${r} must match the same type.`);const c=new Set([...n]);if("object"!==s){const t=o.repositoryFromTypeMetadata(i,r,this.adapter.alias);for(const a of c){const n=await t.read(a,e);await o.cacheModelForPopulate(e,i,r,a,n)}return void(i[r]=[...c])}const l=a.findPrimaryKey(n[0]).id,d=new Set;for(const t of n){const a=await o.createOrUpdate(t,e,this.adapter.alias);await o.cacheModelForPopulate(e,i,r,a[l],a),d.add(a[l])}i[r]=[...d]}async function $(e,t,r,i){if(t.cascade.delete!==o.Cascade.CASCADE)return;const n=i[r];if(!n||!n.length)return;const s=typeof n[0];if(!n.every(e=>typeof e===s))throw new a.InternalError(`Invalid operation. All elements of property ${r} must match the same type.`);const c="object"===s,l=c?o.Repository.forModel(n[0],this.adapter.alias):o.repositoryFromTypeMetadata(i,r,this.adapter.alias),d=new Set([...c?n.map(e=>e[l.pk]):n]);for(const t of d.values()){const a=await l.delete(t,e);await o.cacheModelForPopulate(e,i,r,t,a)}i[r]=[...d]}async function B(e,t,r,i){if(!t.populate)return;const n=i[r],s=Array.isArray(n);if(void 0===n||s&&0===n.length)return;const c=await(async(t,r,i,n,s)=>{let c,l;const d=[];for(const p of n){c=o.getPopulateKey(r.constructor.name,i,p);try{l=await t.get(c)}catch(t){const n=o.repositoryFromTypeMetadata(r,i,s);if(!n)throw new a.InternalError("Could not find repo");l=await n.read(p,e)}d.push(l)}return d})(e,i,r,s?n:[n],this.adapter.alias);i[r]=s?c:c[0]}async function M(e,t,r,a){try{const t=e.get("clientIdentity");a[r]=t.getID()}catch(e){throw new o.UnsupportedError("No User found in context. Please provide a user in the context")}}async function j(e,t,r,i){if(!t.type||i[r])return;let n;t.name||(t.name=o.sequenceNameForModel(i,"pk"));try{n=await this.adapter.Sequence(t)}catch(e){throw new a.InternalError(`Failed to instantiate Sequence ${t.name}: ${e}`)}const s=await n.next(e);Object.defineProperty(i,r,{enumerable:!0,writable:!1,configurable:!0,value:s})}class q extends t.CouchDBAdapter{getClient(){throw new o.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new P}logFor(e){return n.Logging.for(q,{},e)}repository(){return R}constructor(e,t){super(e,g,t),this.Context=d}for(e,...t){return super.for(e,...t)}async create(e,t,r,...a){const{stub:i,logger:n}=a.pop(),o=n.for(this.create);try{o.info(`adding entry to ${e} table with pk ${t}`),r=await this.putState(i,t.toString(),r)}catch(e){throw this.parseError(e)}return r}async read(e,t,...r){const{stub:i,logger:n}=r.pop(),o=n.for(this.read);let s;try{const r=await this.readState(i,e,t.toString());if(1>r.length)throw o.debug(`No record found for id ${t} in ${e} table`),new a.NotFoundError(`No record found for id ${t} in ${e} table`);2>r.length?(o.debug(`No record found for id ${t} in ${e} table`),s=r.pop()):s=this.mergeModels(r)}catch(e){throw this.parseError(e)}return s}async update(e,t,r,...a){const{stub:i,logger:n}=a.pop(),o=n.for(this.update);try{o.info(`updating entry to ${e} table with pk ${t}`),r=await this.putState(i,t.toString(),r)}catch(e){throw this.parseError(e)}return r}async delete(e,t,...r){const a=r.pop(),{stub:i,logger:n}=a,o=n.for(this.delete);let s;r.push(a);try{s=await this.read(e,t,...r),o.verbose(`deleting entry with pk ${t} from ${e} table`),this.deleteState(i,e,t.toString())}catch(e){throw this.parseError(e)}return s}async deleteState(e,t,r,...a){const i=e.createCompositeKey(t,[r+""]);await e.deleteState(i)}async putState(e,t,r,...i){let n;try{n=Buffer.from(q.serializer.serialize(r))}catch(e){throw new a.SerializationError(`Failed to serialize record with id ${t}: ${e}`)}return await e.putState(t.toString(),n),r}async readState(e,t,r,...i){const n=e.createCompositeKey(t,[r+""]),o=[];let s=await e.getState(n);if(""===s.toString())throw new a.NotFoundError(`Record with id ${r} not found`);try{s=q.serializer.deserialize(s.toString())}catch(e){throw new a.SerializationError("Failed to parse record: "+e)}return o.push(s),o}async queryResult(e,t,...r){return await e.getQueryResult(JSON.stringify(t))}async queryResultPaginated(e,t,r=250,a,...i){return await e.getQueryResultWithPagination(JSON.stringify(t),r,a?.toString())}mergeModels(e){const t=e=>Object.entries(e).reduce((e,[t,r])=>(void 0!==r&&(e[t]=r),e),{});let r=e.pop();for(const a of e)r=Object.assign({},t(r),t(a));return r}decode(e){return q.textDecoder.decode(e)}async flags(e,t,r,a,...i){return Object.assign(await super.flags(e,t,r,...i),{stub:a.stub,identity:a.clientIdentity??a.identity,logger:a.logger??this.logFor(a)})}index(e){return Promise.resolve(void 0)}async resultIterator(e,t,r=!1){const a=[];let i=await t.next();for(;!i.done;){if(i.value&&i.value.value.toString()){let t={};if(e.debug(i.value.value.toString("utf8")),r){t.TxId=i.value.txId,t.Timestamp=i.value.timestamp;try{t.Value=JSON.parse(i.value.value.toString("utf8"))}catch(r){e.error(r),t.Value=i.value.value.toString("utf8")}}else try{t=JSON.parse(i.value.value.toString("utf8"))}catch(r){e.error(r),t=i.value.value.toString("utf8")}a.push(t)}i=await t.next()}return e.debug(`Closing iterator after ${a.length} results`),t.close(),a}async raw(e,t,...r){const{stub:a,logger:i}=r.pop(),n=i.for(this.raw),{skip:o,limit:s}=e;let c;s||o?(delete e.limit,delete e.skip,n.debug(`Retrieving paginated iterator: limit: ${s}/ skip: ${o}`),c=(await this.queryResultPaginated(a,e,s||250,o?.toString())).iterator):(n.debug("Retrieving iterator"),c=await this.queryResult(a,e)),n.debug("Iterator acquired");const l=await this.resultIterator(n,c);return n.debug("returning {0} results",""+(Array.isArray(l)?l.length:1)),l}Statement(e){if(!e)throw new E("Context is required");return new F(this,e)}async Sequence(e){return new T(e,this)}async createAll(e,t,r,...i){if(t.length!==r.length)throw new a.InternalError("Ids and models must have the same length");const{logger:n}=i[i.length-1],o=n.for(this.createAll);return o.info(`Creating ${t.length} entries ${e} table`),o.debug("pks: "+t),Promise.all(t.map(async(t,a)=>this.create(e,t,r[a],...i)))}async updateAll(e,t,r,...i){if(t.length!==r.length)throw new a.InternalError("Ids and models must have the same length");const{logger:n}=i[i.length-1],o=n.for(this.createAll);return o.info(`Updating ${t.length} entries ${e} table`),o.debug("pks: "+t),Promise.all(t.map(async(t,a)=>this.update(e,t,r[a],...i)))}prepare(e,t,...r){const{stub:i,logger:n}=r.pop(),s=r.shift(),c=n.for(this.prepare),l=a.modelToTransient(e),d=Object.entries(l.model).reduce((t,[r,i])=>{if(void 0===i)return t;const n=o.Repository.column(e,r);if(this.isReserved(n))throw new a.InternalError(`Property name ${n} is reserved`);return t[n]=i,t},{});return e[o.PersistenceKeys.METADATA]&&(c.silly("Passing along persistence metadata for "+e[o.PersistenceKeys.METADATA]),Object.defineProperty(d,o.PersistenceKeys.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:e[o.PersistenceKeys.METADATA]})),c.info(`Preparing record for ${s} table with pk ${e[t]}`),{record:d,id:i.createCompositeKey(s,[e[t]+""]),transient:l.transient}}revert(e,t,i,n,s){const c=this.log.for(this.revert),l={};l[i]=n;const d="string"==typeof t?r.Model.build(l,t):new t(l);c.silly(`Rebuilding model ${d.constructor.name} id ${n}`);const p=e[o.PersistenceKeys.METADATA],u=Object.keys(d).reduce((t,r)=>(t[r]=e[o.Repository.column(t,r)],t),d);return s&&(c.verbose("re-adding transient properties: "+Object.keys(s).join(", ")),Object.entries(s).forEach(([e,t])=>{if(e in u&&void 0!==u[e])throw new a.InternalError(`Transient property ${e} already exists on model ${d.constructor.name}. should be impossible`);u[e]=t})),p&&(c.silly(`Passing along ${this.flavour} persistence metadata for ${d.constructor.name} id ${n}: ${p}`),Object.defineProperty(u,o.PersistenceKeys.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:p})),u}createPrefix(e,r,a,...i){const n=i.pop(),o={};return o[t.CouchDBKeys.TABLE]=e,Object.assign(o,a),[e,r,o,n]}updatePrefix(e,r,a,...i){const n=i.pop(),o={};return o[t.CouchDBKeys.TABLE]=e,Object.assign(o,a),[e,r,o,n]}createAllPrefix(e,r,i,...n){if(r.length!==i.length)throw new a.InternalError("Ids and models must have the same length");const o=n.pop(),s=r.map((r,a)=>{const n={};return n[t.CouchDBKeys.TABLE]=e,Object.assign(n,i[a]),n});return[e,r,s,o]}updateAllPrefix(e,r,i,...n){if(r.length!==i.length)throw new a.InternalError("Ids and models must have the same length");const o=n.pop(),s=r.map((r,a)=>{const n={};return n[t.CouchDBKeys.TABLE]=e,Object.assign(n,i[a]),n});return[e,r,s,o]}static decoration(){super.decoration();const e=o.Repository.key(o.PersistenceKeys.CREATED_BY),t=o.Repository.key(o.PersistenceKeys.UPDATED_BY);r.Decoration.flavouredAs(g).for(e).define(a.onCreate(M),r.propMetadata(e,{})).apply(),r.Decoration.flavouredAs(g).for(t).define(a.onCreateUpdate(M),r.propMetadata(t,{})).apply();const n=o.Repository.key(a.DBKeys.ID);r.Decoration.flavouredAs(g).for(n).define(o.index([o.OrderDirection.ASC,o.OrderDirection.DSC]),r.required(),a.readonly(),r.propMetadata(n,o.NumericSequence),a.onCreate(j,o.NumericSequence)).apply();const c=o.Adapter.key(o.PersistenceKeys.COLUMN);r.Decoration.flavouredAs(g).for(c).extend(i.Property()).apply();const l=o.Adapter.key(o.PersistenceKeys.TABLE);r.Decoration.flavouredAs(g).for(l).extend(e=>i.Object()(e)).apply();const d=o.Repository.key(o.PersistenceKeys.ONE_TO_ONE);r.Decoration.flavouredAs(g).for(d).define({decorator:(e,t,i,n,c)=>{const l={class:e.name?e.name:e,cascade:t,populate:i};return n&&(l.joinTable=n),c&&(l.name=c),s.apply(r.prop(o.PersistenceKeys.RELATIONS),r.type([e.name?e.name:e,String.name,Number.name,BigInt.name]),a.onCreate(N,l),a.onUpdate(I,l),a.onDelete(z,l),a.afterAny(B,l),r.propMetadata(d,l))}}).apply();const p=o.Repository.key(o.PersistenceKeys.ONE_TO_MANY);r.Decoration.for(p).define({decorator:(e,t,i,n,c)=>{const l={class:e.name?e.name:e,cascade:t,populate:i};return n&&(l.joinTable=n),c&&(l.name=c),s.apply(r.prop(o.PersistenceKeys.RELATIONS),r.list([e,String,Number]),a.onCreate(D,l),a.onUpdate(o.oneToManyOnUpdate,l),a.onDelete($,l),a.afterAny(B,l),r.propMetadata(p,l))}}).apply()}}q.decoration(),o.Adapter.setCurrent(g);class K extends r.JSONSerializer{constructor(){super()}deserialize(e){return super.deserialize(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}}class L extends q{constructor(e,t,r){super(e,t),this.collections=r,this.collections=r||[]}async Sequence(e){return new T(e,this,this.collections)}async read(e,t,r,...i){const{stub:n,logger:o}=i.pop(),s=o.for(this.read);let c;try{const i=await this.readState(n,e,t.toString(),r);if(1>i.length)throw s.debug(`No record found for id ${t} in ${e} table`),new a.NotFoundError(`No record found for id ${t} in ${e} table`);2>i.length?(s.debug(`No record found for id ${t} in ${e} table`),c=i.pop()):c=this.mergeModels(i)}catch(e){throw this.parseError(e)}return c}async delete(e,t,r,...a){const i=a.pop(),{stub:n,logger:o}=i,s=o.for(this.delete);let c;a.push(i);try{c=await this.read(e,t,r,...a),s.verbose(`deleting entry with pk ${t} from ${e} table`),this.deleteState(n,e,t.toString(),r)}catch(e){throw this.parseError(e)}return c}prepare(e,t,...r){const{stub:i,logger:n}=r.pop(),s=r.shift(),c=n.for(this.prepare),l=((e,t)=>{const r=a.modelToTransient(t),i=v(t),n=t=>Object.entries(t).reduce((r,[i,n])=>{if(void 0===n)return r;const s=o.Repository.column(t,i);if(e.isReserved(s))throw new a.InternalError(`Property name ${s} is reserved`);return r[s]=n,r},{});if(i.private){const e=Object.keys(i.private);for(const t of e)i.private[t]=n(i.private[t])}return{model:r.model,transient:r.transient,privateData:i.private,result:n(r.model)}})(this,e);return c.info(`Preparing record for ${s} table with pk ${e[t]}`),{record:l.privateData,id:i.createCompositeKey(s,[e[t]+""]),transient:l.transient}}createPrefix(e,r,a,...i){const n=i.pop(),o=Object.keys(a);for(const r of o)a[r][t.CouchDBKeys.TABLE]=e;return[e,r,a,n]}updatePrefix(e,r,a,...i){const n=i.pop(),o=Object.keys(a);for(const r of o)a[r][t.CouchDBKeys.TABLE]=e;return[e,r,a,n]}async putState(e,t,r,...i){const n=Object.keys(r);let o,s={};for(const i of n){s=r[i];try{o=Buffer.from(q.serializer.serialize(r[i]))}catch(e){throw new a.SerializationError(`Failed to serialize record with id ${t}: ${e}`)}await e.putPrivateData(i,t.toString(),o)}return s}async readState(e,t,r,i,...n){const o=e.createCompositeKey(t,[r+""]),s=v(i),c=Object.keys(s.private),l=[];for(const t of c)try{let i=await e.getPrivateData(t,o);if(""===i.toString())throw new a.NotFoundError(`Entry with id ${r} doesn't exist...`);try{i=q.serializer.deserialize(i.toString())}catch(e){throw new a.SerializationError("Failed to parse private data: "+e)}l.push(i)}catch(e){if(w.test(e.message))throw new O(e);throw e}return l}async deleteState(e,t,r,a,...i){const n=e.createCompositeKey(t,[r+""]),o=v(a),s=Object.keys(o.private);for(const t of s)await e.deletePrivateData(t,n)}async queryResult(e,t,r){const a=v(r).private,i=Object.keys(a)[0]||"";return(await e.getPrivateDataQueryResult(i,JSON.stringify(t))).iterator}async queryResultPaginated(e,t,r=250,a=void 0,i){const n=v(i).private,o=Object.keys(n)[0]||"",s=await e.getPrivateDataQueryResult(o,JSON.stringify(t)),c=[];let l=0,d=!a,p=null;for(;;){const e=await s.next();if(e.value&&e.value.value.toString()){const t=e.value.key,i=e.value.value.toString("utf8");if(!d){t===a?.toString()&&(d=!0);continue}if(c.push({Key:t,Record:JSON.parse(i)}),p=t,l++,l>=r)return await s.close(),{iterator:c,metadata:{fetchedRecordsCount:c.length,bookmark:p}}}if(e.done)return await s.close(),{iterator:c,metadata:{fetchedRecordsCount:c.length,bookmark:""}}}}async raw(e,t,...r){const{stub:a,logger:i}=r.pop(),n=i.for(this.raw),{skip:o,limit:s}=e,c=r.shift();let l;s||o?(delete e.limit,delete e.skip,n.debug(`Retrieving paginated iterator: limit: ${s}/ skip: ${o}`),l=(await this.queryResultPaginated(a,e,s||250,o?.toString(),c)).iterator):(n.debug("Retrieving iterator"),l=await this.queryResult(a,e,c)),n.debug("Iterator acquired");const d=await this.resultIterator(n,l);return n.debug("returning {0} results",""+(Array.isArray(d)?d.length:1)),d}}class J extends i.Contract{static{this.serializer=new K}constructor(e,t){super(e),this.clazz=t,this.initialized=!1,J.adapter=this.getAdapter(t),this.repo=o.Repository.forModel(t,J.adapter.alias)}getAdapter(e){const t=new e;if(b(t)){const e=v(t),r=Object.keys(e.private);return new L(void 0,"fabric-private-data-adapter",r)}return new q(void 0,[g,e.name].join("_"))}logFor(e){return n.Logging.for(J.name,{},e)}async create(e,t,...r){const a=this.logFor(e).for(this.create);"string"==typeof t&&(t=this.deserialize(t)),a.info("Creating model: "+JSON.stringify(t));const i=this.getTransientData(e);return a.info("Merging transient data..."),t=this.repo.merge(t,i),this.repo.create(t,e,...r)}async read(e,t,...r){return this.logFor(e).for(this.read).info(`reading entry with pk ${t} `),this.repo.read(t,e,...r)}getTransientData(e){const t=e.stub.getTransient();let r={};return t.has(this.repo.tableName)&&(r=JSON.parse(t.get(this.repo.tableName)?.toString("utf8"))),r}async update(e,t,...r){const a=this.logFor(e).for(this.update);"string"==typeof t&&(t=this.deserialize(t)),a.info("Updating model: "+JSON.stringify(t));const i=this.getTransientData(e);return a.info("Merging transient data..."),t=this.repo.merge(t,i),this.repo.update(t,e,...r)}async delete(e,t,...r){return this.logFor(e).for(this.delete).info(`deleting entry with pk ${t} `),this.repo.delete(t+"",e,...r)}async deleteAll(e,t,...r){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.deleteAll(t,e,...r)}async readAll(e,t,...r){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.readAll(t,e,...r)}async updateAll(e,t,...r){const a=this.logFor(e).for(this.updateAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),a.info(`updating ${t.length} entries to the table`),this.repo.updateAll(t,e,...r)}async raw(e,t,r,...a){return"string"==typeof t&&(t=JSON.parse(t)),this.repo.raw(t,r,e,...a)}serialize(e){return J.serializer.serialize(e)}deserialize(e){return J.serializer.deserialize(e)}async init(e){const t=this.logFor(e).for(this.init);t.info("Running contract initialization..."),this.initialized=!0,t.info("Contract initialization completed.")}async healthcheck(e){return this.logFor(e).for(this.healthcheck).info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(e,t,...r){const a=this.logFor(e).for(this.createAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),a.info(`adding ${t.length} entries to the table`),this.repo.createAll(t,e,...r)}}class U extends J{constructor(e,t){super(e,t)}logFor(e){return n.Logging.for(U,{},e)}async create(e,t){const r=this.logFor(e).for(this.create);r.info("Creating model: "+t);const a=this.deserialize(t);return r.info("Model deserialized: "+JSON.stringify(a)),this.serialize(await super.create(e,a))}async read(e,t){return this.logFor(e).for(this.read).info("Reading id: "+t),this.serialize(await super.read(e,t))}async update(e,t){return this.logFor(e).for(this.update).info("Updating model: "+t),this.serialize(await super.update(e,t))}async delete(e,t){return this.logFor(e).for(this.delete).info("Deleting id: "+t),this.serialize(await super.delete(e,t))}async deleteAll(e,t){const r=JSON.parse(t);return this.logFor(e).for(this.deleteAll).info(`deleting ${r.length} entries from the table`),JSON.stringify((await super.deleteAll(e,r)).map(e=>this.serialize(e)))}async readAll(e,t){const r=JSON.parse(t);return this.logFor(e).for(this.readAll).info(`reading ${r.length} entries from the table`),JSON.stringify((await super.readAll(e,r)).map(e=>this.serialize(e)))}async updateAll(e,t){const r=this.logFor(e).for(this.updateAll),a=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return r.info(`Updating ${a.length} entries to the table`),JSON.stringify((await super.updateAll(e,a)).map(e=>this.serialize(e)))}async raw(e,t,r){const a=JSON.parse(t);return super.raw(e,a,r)}async init(e){await super.init(e)}async healthcheck(e){return JSON.stringify(await super.healthcheck(e))}async createAll(e,t){const r=this.logFor(e).for(this.createAll),a=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return r.info(`Adding ${a.length} entries to the table`),JSON.stringify((await super.createAll(e,a)).map(e=>this.serialize(e)))}}function V(e,t){const r=e+t;if(e!==r-t||t!==r-e)throw new S(`Addition overflow: ${e} + ${t}`);return r}function W(e,t){const r=e-t;if(e!==r+t||t!==e-r)throw new S(`Subtraction overflow: ${e} - ${t}`);return r}c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"create",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"read",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"update",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"delete",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"deleteAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"readAll",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"updateAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Boolean]),c.__metadata("design:returntype",Promise)],U.prototype,"raw",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],U.prototype,"init",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],U.prototype,"healthcheck",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],U.prototype,"createAll",null);let G=class extends o.BaseModel{constructor(e){super(e)}};c.__decorate([o.pk({type:"String"}),c.__metadata("design:type",String)],G.prototype,"name",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],G.prototype,"owner",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],G.prototype,"symbol",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],G.prototype,"decimals",void 0),G=c.__decorate([o.table("erc20_tokens"),r.model(),c.__metadata("design:paramtypes",[Object])],G);let H=class extends o.BaseModel{constructor(e){super(e)}};c.__decorate([o.pk({type:"String"}),c.__metadata("design:type",String)],H.prototype,"id",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],H.prototype,"token",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],H.prototype,"balance",void 0),c.__decorate([o.column(),c.__metadata("design:type",String)],H.prototype,"captive",void 0),H=c.__decorate([o.table("erc20_wallets"),r.model(),c.__metadata("design:paramtypes",[Object])],H);let Q=class extends o.BaseModel{constructor(e){super(e)}};var Y;c.__decorate([o.pk({type:"String"}),o.column(),r.required(),c.__metadata("design:type",String)],Q.prototype,"owner",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],Q.prototype,"spender",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],Q.prototype,"value",void 0),Q=c.__decorate([o.table("erc20_allowances"),r.model(),c.__metadata("design:paramtypes",[Object])],Q),(e=>{e.TRANSFER="Transfer",e.APPROVAL="Approval"})(Y||(Y={}));class X extends J{constructor(e){super(e,H),X.adapter=X.adapter||new q,this.walletRepository=R.forModel(H,X.adapter.alias),this.tokenRepository=R.forModel(G,X.adapter.alias),this.allowanceRepository=R.forModel(Q,X.adapter.alias)}async TokenName(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].name}async Symbol(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].symbol}async Decimals(e){await this.CheckInitialized(e);const t=await this.tokenRepository.selectWithContext(void 0,e);return(await t.execute())[0].decimals}async TotalSupply(e){await this.CheckInitialized(e);const t=await this.walletRepository.selectWithContext(void 0,e),r=await t.execute();if(0==r.length)throw new a.NotFoundError(`The token ${this.getName()} does not exist`);let i=0;return r.forEach(e=>{i+=e.balance}),i}async BalanceOf(e,t){return await this.CheckInitialized(e),(await this.walletRepository.read(t,e)).balance}async Transfer(e,t,r){await this.CheckInitialized(e);const i=e.clientIdentity.getID();if(!await this._transfer(e,i,t,r))throw new a.InternalError("Failed to transfer");return!0}async TransferFrom(e,t,r,i){await this.CheckInitialized(e);const n=e.clientIdentity.getID(),o=await this._getAllowance(e,t,n);if(!o||0>o.value)throw new A(`spender ${n} has no allowance from ${t}`);const s=o.value;if(i>s)throw new C("The spender does not have enough allowance to spend.");const c=W(s,i),l=Object.assign({},o,{value:c});if(await this.allowanceRepository.update(l,e),!await this._transfer(e,t,r,i))throw new a.InternalError("Failed to transfer");return!0}async _transfer(e,t,r,i){const n=this.logFor(e).for(this._transfer);if(t===r)throw new o.AuthorizationError("cannot transfer to and from same client account");if(0>i)throw new C("transfer amount cannot be negative");const s=await this.walletRepository.read(t,e),c=s.balance;if(i>c)throw new C(`client account ${t} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(r,e)}catch(t){if(!(t instanceof a.BaseError))throw new a.InternalError(t);if(404!==t.code)throw new a.InternalError(t.message);l=new H({id:r,balance:0,token:await this.TokenName(e)}),d=!0}const p=l.balance,u=W(c,i),h=V(p,i),g=Object.assign({},s,{balance:u});await this.walletRepository.update(g,e);const y=Object.assign({},l,{balance:h});d?await this.walletRepository.create(y,e):await this.walletRepository.update(y,e);const f={from:t,to:r,value:i};return this.repo.ObserverHandler().updateObservers(n,"",Y.TRANSFER,"",e,"",f),!0}async Approve(e,t,r){await this.CheckInitialized(e);const a=this.logFor(e).for(this.Approve),i=e.clientIdentity.getID();let n=await this._getAllowance(e,i,t);if((await this.walletRepository.read(i,e)).balance<r)throw new C(`client account ${i} has insufficient funds.`);n?(n.value=r,await this.allowanceRepository.update(n,e)):(n=new Q({owner:i,spender:t,value:r}),await this.allowanceRepository.create(n,e));const o={owner:i,spender:t,value:r};return this.repo.ObserverHandler().updateObservers(a,"",Y.APPROVAL,"",e,"",o),!0}async Allowance(e,t,r){await this.CheckInitialized(e);const a=await this._getAllowance(e,t,r);if(!a)throw new A(`spender ${r} has no allowance from ${t}`);return a.value}async _getAllowance(e,t,r){const a=o.Condition.and(o.Condition.attribute("owner").eq(t),o.Condition.attribute("spender").eq(r)),i=await this.allowanceRepository.selectWithContext(void 0,e),n=await i.where(a).execute();return n?.[0]}async Initialize(e,t){const r=await this.tokenRepository.selectWithContext(void 0,e);if((await r.execute()).length>0)throw new o.AuthorizationError("contract options are already set, client is not authorized to change them");return t.owner=e.clientIdentity.getID(),await this.tokenRepository.create(t,e),!0}async CheckInitialized(e){const t=await this.tokenRepository.selectWithContext(void 0,e);if(0==(await t.execute()).length)throw new k("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(e,t){await this.CheckInitialized(e);const r=this.logFor(e).for(this.Mint),i=e.clientIdentity.getID();if(0>=t)throw new a.ValidationError("mint amount must be a positive integer");let n;try{n=await this.walletRepository.read(i,e);const r=V(n.balance,t),a=Object.assign({},n,{balance:r});await this.walletRepository.update(a,e)}catch(r){if(!(r instanceof a.BaseError))throw new a.InternalError(r);if(404!==r.code)throw new a.InternalError(r.message);{const r=new H({id:i,balance:t,token:await this.TokenName(e)});await this.walletRepository.create(r,e)}}const o={from:"0x0",to:i,value:t};this.repo.ObserverHandler().updateObservers(r,"",Y.TRANSFER,"",e,"",o)}async Burn(e,t){await this.CheckInitialized(e);const r=this.logFor(e).for(this.Burn),a=e.clientIdentity.getID(),i=await this.walletRepository.read(a,e),n=i.balance;if(t>n)throw new C("Minter has insufficient funds.");const o=W(n,t),s=Object.assign({},i,{balance:o});await this.walletRepository.update(s,e),r.info(t+" tokens were burned");const c={from:a,to:"0x0",value:t};this.repo.ObserverHandler().updateObservers(r,"",Y.TRANSFER,"",e,"",c)}async BurnFrom(e,t,r){await this.CheckInitialized(e);const a=this.logFor(e).for(this.BurnFrom),i=await this.walletRepository.read(t,e),n=i.balance;if(r>n)throw new C(t+" has insufficient funds.");const o=W(n,r),s=Object.assign({},i,{balance:o});await this.walletRepository.update(s,e),a.info(`${r} tokens were berned from ${t}`);const c={from:t,to:"0x0",value:r};this.repo.ObserverHandler().updateObservers(a,"",Y.TRANSFER,"",e,"",c)}async ClientAccountBalance(e){await this.CheckInitialized(e);const t=e.clientIdentity.getID(),r=await this.walletRepository.read(t,e);if(!r)throw new C(`The account ${t} does not exist`);return r.balance}async ClientAccountID(e){return await this.CheckInitialized(e),e.clientIdentity.getID()}}c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"TokenName",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"Symbol",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"Decimals",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"TotalSupply",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],X.prototype,"BalanceOf",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"Transfer",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"TransferFrom",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"Approve",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],X.prototype,"Allowance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,G]),c.__metadata("design:returntype",Promise)],X.prototype,"Initialize",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"CheckInitialized",null),c.__decorate([y(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"Mint",null),c.__decorate([y(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"Burn",null),c.__decorate([y(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],X.prototype,"BurnFrom",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"ClientAccountBalance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],X.prototype,"ClientAccountID",null);const Z=[X];class ee extends n.MiniLogger{constructor(e,t,r){if(super(e,t),r){if(r instanceof d)throw new E("Receiving incorrect context... It should be the contract context!!!");this.logger=r.logging.getLogger(e)}else this.logger=new n.MiniLogger(e,t)}log(e,t,r){if(n.NumericLogLevels[this.config("level")]<n.NumericLogLevels[e])return;let a;switch(e){case n.LogLevel.info:a=this.logger.info;break;case n.LogLevel.verbose:a=this.logger.verbose;break;case n.LogLevel.debug:a=this.logger.debug;break;case n.LogLevel.error:a=this.logger.error;break;case n.LogLevel.silly:a=this.logger.silly;break;default:throw Error("Invalid log level")}a.call(this.logger,this.createLog(e,t,r))}}n.Logging.setFactory((e,t,r)=>new ee(e,t||{},r));const te="##VERSION##",re="##PACKAGE##";l.Metadata.registerLibrary(re,te),e.ContractLogger=ee,e.FabricContractAdapter=q,e.FabricContractContext=d,e.FabricContractRepository=R,e.FabricContractRepositoryObservableHandler=p,e.FabricContractSequence=T,e.FabricCrudContract=J,e.FabricStatement=F,e.PACKAGE_NAME=re,e.SerializedCrudContract=U,e.VERSION=te,e.contracts=Z,e.createdByOnFabricCreateUpdate=M,e.pkFabricOnCreate=j},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/for-couchdb"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/db-decorators"),require("fabric-contract-api"),require("@decaf-ts/logging"),require("@decaf-ts/core"),require("@decaf-ts/reflection"),require("tslib"),require("@decaf-ts/decoration")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/for-couchdb","@decaf-ts/decorator-validation","@decaf-ts/db-decorators","fabric-contract-api","@decaf-ts/logging","@decaf-ts/core","@decaf-ts/reflection","tslib","@decaf-ts/decoration"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-fabric"]={},e.decafTsForCouchdb,e.decafTsDecoratorValidation,e.decafTsDbDecorators,e.fabricContractApi,e.decafTsLogging,e.decafTsCore,e.decafTsReflection,e.tslib,e.decafTsDecoration);
2
2
  //# sourceMappingURL=for-fabric.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-fabric.cjs","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/shared/constants.ts","../src/shared/decorators.ts","../src/contracts/private-data.ts","../src/shared/errors.ts","../src/contracts/PrivateSequence.ts","../src/contracts/FabricContractSequence.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/FabricConstruction.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/ContractPrivateDataAdapter.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/contracts/logging.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","logger","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","log","table","event","id","ctx","owner","payload","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricModelKeys","IdentityType","FabricFlavour","Owner","target","propertyKey","descriptor","originalMethod","value","async","args","acountId","clientIdentity","getID","select","selectWithContext","undefined","tokens","execute","length","NotFoundError","AuthorizationError","apply","getFabricModelKey","key","Model","FABRIC","privateData","collection","Error","PRIVATE","model","attribute","meta","Reflect","getMetadata","ModelKeys","ANCHOR","data","collections","propMetadata","Set","isPrivate","transient","MISSING_PRIVATE_DATA_REGEX","getClassPrivateDataMetadata","metadata","isModelPrivate","modelToPrivate","hasPrivateData","decs","getAllPropertyDecoratorsRecursive","modelCollections","result","private","Object","keys","reduce","accum","k","e","SerializationError","entries","val","find","el","props","build","name","OverflowError","InternalError","msg","BalanceError","AllowanceError","MissingContextError","UnauthorizedPrivateDataAccess","BaseError","NotInitializedError","CustomizableSequence","BaseModel","seq","__decorate","pk","prototype","required","index","CouchDBKeys","SEQUENCE","FabricContractSequence","Sequence","options","adapter","repo","Repository","forModel","alias","current","startWith","sequence","read","parse","parseValue","type","increment","count","incrementBy","next","toIncrementBy","BigInt","update","create","range","i","FabricContractRepository","clazz","trackedEvents","logFor","Logging","for","info","c","record","prepare","tableName","revert","class","m","delete","createAll","models","prepared","map","ids","p","records","transients","filter","r","updateAll","u","raw","rawInput","docsOnly","pop","transformedArgs","CTX","selector","contextArgs","context","Ctx","_overrides","Statement","createAllPrefix","opts","getSequenceOptions","Promise","all","enforceDBDecorators","ON","ignoredProps","errorMessages","resolve","hasErrors","toString","ValidationError","createPrefix","String","ConflictError","code","FabricStatement","CouchDBStatement","results","pkDef","findPrimaryKey","fromSelector","pkAttr","selectSelector","processRecord","selectors","TABLE","query","fields","whereCondition","condition","parseCondition","Condition","and","eq","selectorKeys","values","CouchDBGroupOperator","AND","OR","s","forEach","orderBySelector","sort","rec","CouchDBOperator","BIGGER","limitSelector","limit","offsetSelector","skip","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","serialize","require","sortKeysRecursive","preSerialize","assign","oneToOneOnCreate","propertyValue","innerRepo","repositoryFromTypeMetadata","cacheModelForPopulate","created","oneToOneOnUpdate","cascade","Cascade","CASCADE","updated","createOrUpdate","oneToOneOnDelete","deleted","oneToManyOnCreate","propertyValues","arrayType","every","item","uniqueValues","pkName","add","oneToManyOnDelete","isInstantiated","v","populate","nested","isArr","Array","isArray","res","propName","propKeyValues","cacheKey","proKeyValue","getPopulateKey","fetchPopulateValues","createdByOnFabricCreateUpdate","user","UnsupportedError","pkFabricOnCreate","sequenceNameForModel","defineProperty","enumerable","writable","configurable","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","config","putState","parseError","readState","mergeModels","verbose","deleteState","composedKey","createCompositeKey","getState","queryResult","getQueryResult","queryResultPaginated","getQueryResultWithPagination","extract","finalModel","decode","buffer","flags","operation","resultIterator","iterator","isHistory","allResults","done","jsonRes","TxId","txId","Timestamp","Value","err","error","close","shift","split","modelToTransient","mappedProp","column","isReserved","PersistenceKeys","METADATA","silly","obj","ob","flavour","updatePrefix","updateAllPrefix","decoration","createdByKey","CREATED_BY","updatedByKey","UPDATED_BY","Decoration","flavouredAs","define","onCreate","onCreateUpdate","pkKey","DBKeys","ID","OrderDirection","ASC","DSC","readonly","NumericSequence","columnKey","Adapter","COLUMN","extend","FabricProperty","Property","tableKey","FabricObject","oneToOnekey","ONE_TO_ONE","decorator","joinColumnOpts","fk","joinTable","prop","RELATIONS","Number","onUpdate","onDelete","afterAny","oneToManyKey","ONE_TO_MANY","joinTableOpts","list","oneToManyOnUpdate","setCurrent","DeterministicSerializer","FabricContractPrivateDataAdapter","instance","transformModel","processModel","putPrivateData","getPrivateData","test","message","deletePrivateData","getPrivateDataQueryResult","reachedBookmark","lastKey","recordKey","recordValue","Key","Record","fetchedRecordsCount","bookmark","FabricCrudContract","Contract","initialized","getAdapter","pvt","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","init","healthcheck","SerializedCrudContract","parsedKeys","modelList","parsedInput","a","b","sub","Transaction","Boolean","ERC20Token","ERC20Wallet","Allowance","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","getName","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","TRANSFER","Approve","approvalEvent","APPROVAL","allowanceCondition","where","Initialize","Mint","amount","minter","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","BurnFrom","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","ContractLogger","MiniLogger","conf","logging","getLogger","level","stack","NumericLogLevels","method","LogLevel","call","createLog","setFactory","object","VERSION","PACKAGE_NAME","Metadata","registerLibrary"],"mappings":"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"}
1
+ {"version":3,"file":"for-fabric.cjs","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/shared/constants.ts","../src/shared/decorators.ts","../src/contracts/private-data.ts","../src/shared/errors.ts","../src/contracts/PrivateSequence.ts","../src/contracts/FabricContractSequence.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/FabricConstruction.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/ContractPrivateDataAdapter.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/contracts/logging.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","logger","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","log","table","event","id","ctx","owner","payload","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricModelKeys","IdentityType","FabricFlavour","Owner","target","propertyKey","descriptor","originalMethod","value","async","args","acountId","clientIdentity","getID","select","selectWithContext","undefined","tokens","execute","length","NotFoundError","AuthorizationError","apply","getFabricModelKey","key","Model","FABRIC","privateData","collection","Error","PRIVATE","model","attribute","meta","Reflect","getMetadata","ModelKeys","ANCHOR","data","collections","propMetadata","Set","isPrivate","transient","MISSING_PRIVATE_DATA_REGEX","getClassPrivateDataMetadata","metadata","isModelPrivate","modelToPrivate","hasPrivateData","decs","getAllPropertyDecoratorsRecursive","modelCollections","result","private","Object","keys","reduce","accum","k","e","SerializationError","entries","val","find","el","props","build","name","OverflowError","InternalError","msg","BalanceError","AllowanceError","MissingContextError","UnauthorizedPrivateDataAccess","BaseError","NotInitializedError","CustomizableSequence","BaseModel","seq","__decorate","pk","prototype","required","index","CouchDBKeys","SEQUENCE","FabricContractSequence","Sequence","options","adapter","repo","Repository","forModel","alias","current","startWith","sequence","read","parse","parseValue","type","increment","count","incrementBy","next","toIncrementBy","BigInt","update","create","range","i","FabricContractRepository","clazz","trackedEvents","logFor","Logging","for","info","c","record","prepare","tableName","revert","class","m","delete","createAll","models","prepared","map","ids","p","records","transients","filter","r","updateAll","u","raw","rawInput","docsOnly","pop","transformedArgs","CTX","selector","contextArgs","context","Ctx","_overrides","Statement","createAllPrefix","opts","getSequenceOptions","Promise","all","enforceDBDecorators","ON","ignoredProps","errorMessages","resolve","hasErrors","toString","ValidationError","createPrefix","String","ConflictError","code","FabricStatement","CouchDBStatement","results","pkDef","findPrimaryKey","fromSelector","pkAttr","selectSelector","processRecord","selectors","TABLE","query","fields","whereCondition","condition","parseCondition","Condition","and","eq","selectorKeys","values","CouchDBGroupOperator","AND","OR","s","forEach","orderBySelector","sort","rec","CouchDBOperator","BIGGER","limitSelector","limit","offsetSelector","skip","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","serialize","require","sortKeysRecursive","preSerialize","assign","oneToOneOnCreate","propertyValue","innerRepo","repositoryFromTypeMetadata","cacheModelForPopulate","created","oneToOneOnUpdate","cascade","Cascade","CASCADE","updated","createOrUpdate","oneToOneOnDelete","deleted","oneToManyOnCreate","propertyValues","arrayType","every","item","uniqueValues","pkName","add","oneToManyOnDelete","isInstantiated","v","populate","nested","isArr","Array","isArray","res","propName","propKeyValues","cacheKey","proKeyValue","getPopulateKey","fetchPopulateValues","createdByOnFabricCreateUpdate","user","UnsupportedError","pkFabricOnCreate","sequenceNameForModel","defineProperty","enumerable","writable","configurable","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","config","putState","parseError","readState","mergeModels","verbose","deleteState","composedKey","createCompositeKey","getState","queryResult","getQueryResult","queryResultPaginated","getQueryResultWithPagination","extract","finalModel","decode","buffer","flags","operation","resultIterator","iterator","isHistory","allResults","done","jsonRes","TxId","txId","Timestamp","Value","err","error","close","shift","split","modelToTransient","mappedProp","column","isReserved","PersistenceKeys","METADATA","silly","obj","ob","flavour","updatePrefix","updateAllPrefix","decoration","createdByKey","CREATED_BY","updatedByKey","UPDATED_BY","Decoration","flavouredAs","define","onCreate","onCreateUpdate","pkKey","DBKeys","ID","OrderDirection","ASC","DSC","readonly","NumericSequence","columnKey","Adapter","COLUMN","extend","FabricProperty","Property","tableKey","FabricObject","oneToOnekey","ONE_TO_ONE","decorator","joinColumnOpts","fk","joinTable","prop","RELATIONS","Number","onUpdate","onDelete","afterAny","oneToManyKey","ONE_TO_MANY","joinTableOpts","list","oneToManyOnUpdate","setCurrent","DeterministicSerializer","FabricContractPrivateDataAdapter","instance","transformModel","processModel","putPrivateData","getPrivateData","test","message","deletePrivateData","getPrivateDataQueryResult","reachedBookmark","lastKey","recordKey","recordValue","Key","Record","fetchedRecordsCount","bookmark","FabricCrudContract","Contract","initialized","getAdapter","pvt","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","init","healthcheck","SerializedCrudContract","parsedKeys","modelList","parsedInput","a","b","sub","Transaction","Boolean","ERC20Token","ERC20Wallet","Allowance","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","getName","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","TRANSFER","Approve","approvalEvent","APPROVAL","allowanceCondition","where","Initialize","Mint","amount","minter","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","BurnFrom","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","ContractLogger","MiniLogger","conf","logging","getLogger","level","stack","NumericLogLevels","method","LogLevel","call","createLog","setFactory","object","VERSION","PACKAGE_NAME","Metadata","registerLibrary"],"mappings":"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"}