@decaf-ts/for-fabric 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/for-fabric.cjs +1 -1
- package/dist/for-fabric.cjs.map +1 -1
- package/dist/for-fabric.js +1 -1
- package/dist/for-fabric.js.map +1 -1
- package/lib/client/FabricClientAdapter.cjs +49 -33
- package/lib/client/FabricClientAdapter.d.ts +7 -6
- package/lib/client/FabricClientAdapter.js.map +1 -1
- package/lib/client/FabricClientRepository.cjs +32 -2
- package/lib/client/FabricClientRepository.d.ts +6 -0
- package/lib/client/FabricClientRepository.js.map +1 -1
- package/lib/contracts/ContractAdapter.cjs +1 -1
- package/lib/contracts/ContractAdapter.js.map +1 -1
- package/lib/contracts/private-data.cjs +1 -1
- package/lib/contracts/private-data.d.ts +1 -1
- package/lib/contracts/private-data.js.map +1 -1
- package/lib/esm/client/FabricClientAdapter.d.ts +7 -6
- package/lib/esm/client/FabricClientAdapter.js +49 -33
- package/lib/esm/client/FabricClientAdapter.js.map +1 -1
- package/lib/esm/client/FabricClientRepository.d.ts +6 -0
- package/lib/esm/client/FabricClientRepository.js +32 -2
- package/lib/esm/client/FabricClientRepository.js.map +1 -1
- package/lib/esm/contracts/ContractAdapter.js +1 -1
- package/lib/esm/contracts/ContractAdapter.js.map +1 -1
- package/lib/esm/contracts/private-data.d.ts +1 -1
- package/lib/esm/contracts/private-data.js +1 -1
- package/lib/esm/contracts/private-data.js.map +1 -1
- package/lib/esm/shared/index.d.ts +1 -0
- package/lib/esm/shared/index.js +1 -0
- package/lib/esm/shared/index.js.map +1 -1
- package/lib/esm/shared/overrides/Model.d.ts +14 -0
- package/lib/esm/shared/overrides/Model.js +1 -18
- package/lib/esm/shared/overrides/Model.js.map +1 -1
- package/lib/esm/shared/overrides/index.d.ts +2 -0
- package/lib/esm/shared/overrides/index.js +2 -3
- package/lib/esm/shared/overrides/index.js.map +1 -1
- package/lib/esm/shared/overrides/overrides.d.ts +1 -0
- package/lib/esm/shared/overrides/overrides.js +57 -84
- package/lib/esm/shared/overrides/overrides.js.map +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/shared/index.cjs +7 -6
- package/lib/shared/index.d.ts +1 -0
- package/lib/shared/index.js.map +1 -1
- package/lib/shared/overrides/Model.cjs +1 -17
- package/lib/shared/overrides/Model.d.ts +14 -0
- package/lib/shared/overrides/Model.js.map +1 -1
- package/lib/shared/overrides/index.cjs +17 -2
- package/lib/shared/overrides/index.d.ts +2 -0
- package/lib/shared/overrides/index.js.map +1 -1
- package/lib/shared/overrides/overrides.cjs +58 -83
- package/lib/shared/overrides/overrides.d.ts +1 -0
- package/lib/shared/overrides/overrides.js.map +1 -1
- package/lib/version.cjs +1 -1
- package/lib/version.d.ts +1 -1
- package/package.json +3 -1
package/dist/for-fabric.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e,t,r,a,i,n,o,s,c){"use strict";class l 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 d 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 p,u;(e=>{e.PRIVATE="private",e.SHARED="shared",e.FABRIC="fabric.",e.OWNEDBY="owned-by"})(p||(p={})),(e=>{e.X509="X.509"})(u||(u={}));const h="hlf-fabric",g=/private\s+data\s+matching\s+public\s+hash\s+version\s+is\s+not\s+available/i;function y(e){return s.Metadata.get(e.constructor,p.PRIVATE)}function f(e){const t=y(e);return!(!t||void 0===t.isPrivate)&&t.isPrivate}function m(e){if(!(e=>!!y(e))(e))return{model:e};const t=f(e),i=y(e);let n={model:e,private:void 0};if(t){const t=i.collections;n=(s.Metadata.properties(e.constructor)||[]).reduce((t,r)=>{const n=i.collections;t.private=t.private||{};for(const i of n)try{t.private[i]=t.private[i]||{},t.private[i][r]=e[r]}catch(e){throw new a.SerializationError(`Failed to serialize private property ${r}: ${e}`)}return t},{model:{},private:t})}else n=Object.entries(i).reduce((t,[r,i])=>{const n=s.Metadata.properties(e.constructor);if(!n?.includes(r))return t;const o=i.collections;if(o?.length){t.private=t.private||{};for(const i of o)try{t.private[i]=t.private[i]||{},t.private[i][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},{});if(n.model=n.model||{},n.model=r.Model.build(n.model,e.constructor.name),n.private){const t=Object.keys(n.private);for(const a of t)n.private[a]=r.Model.build(n.private[a],e.constructor.name)}return n}class w extends a.InternalError{constructor(e){super(e,w.name)}}class _ extends a.InternalError{constructor(e){super(e,_.name)}}class b extends a.InternalError{constructor(e){super(e,b.name)}}class v extends a.InternalError{constructor(e){super(e,v.name,500)}}class S extends a.BaseError{constructor(e="private data matching public hash version is not available ..."){super(S.name,e,403)}}class C extends a.BaseError{constructor(e){super(C.name,e,409)}}let A=class extends o.BaseModel{constructor(e){super(e)}};function E(){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 O(e){if(!e)throw Error("Collection name is required");const t=p.PRIVATE;return(i,n)=>{const o=i instanceof r.Model?i.constructor:i,c=s.Metadata.get(o),l=c?.private?.collections||[];if(s.propMetadata(t,{...!n&&{collections:l?[...new Set([...l,e])]:[e]},isPrivate:!n})(n?o:i),n){const r=c?.private?.[n]?.collections||[];s.propMetadata(s.Metadata.key(t,n),{collections:r?[...new Set([...r,e])]:[e]})(i,n),a.transient()(i,n)}}}c.__decorate([o.pk(),c.__metadata("design:type",String)],A.prototype,"id",void 0),c.__decorate([r.required(),o.index(),c.__metadata("design:type",Object)],A.prototype,"current",void 0),A=c.__decorate([o.table(t.CouchDBKeys.SEQUENCE),r.model(),c.__metadata("design:paramtypes",[Object])],A);class k extends o.Sequence{constructor(e,t,r){super(e);for(const e of r||[])O(e)(A);this.repo=o.Repository.forModel(A,t.alias)}async current(e){if(!e)throw new v("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 v("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 A({id:o,current:s}),r)}catch(e){if(!(e instanceof a.NotFoundError))throw e;l=await this.repo.create(new A({id:o,current:s}),r)}return l.current}async next(e){if(!e)throw new v("Context is required");const t=await this.current(e);return this.increment(t,void 0,e)}async range(e,t){if(!t)throw new v("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 x extends o.Repository{constructor(e,t,r){super(e,t),this.trackedEvents=r}logFor(e){return n.Logging.for(x,{},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 d}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 l?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=k.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 T extends t.CouchDBStatement{constructor(e,t){super(e),this.ctx=t}async raw(e){const t=await this.adapter.raw(e,!0,this.ctx),i=r.Model.pk(this.fromSelector),n=s.Metadata.get(this.fromSelector,s.Metadata.key(a.DBKeys.ID,i))?.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 N 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 F(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=r.Model.pk(d);await o.cacheModelForPopulate(e,n,i,d[p],d),n[i]=d[p]}async function P(e,t,a,i){const n=i[a];if(!n)return;if(t.cascade.update!==o.Cascade.CASCADE)return;if("object"!=typeof n){const t=o.repositoryFromTypeMetadata(i,a,this.adapter.alias),r=await t.read(n,e);return await o.cacheModelForPopulate(e,i,a,n,r),void(i[a]=n)}const s=await o.createOrUpdate(i[a],e,this.adapter.alias),c=r.Model.pk(s);await o.cacheModelForPopulate(e,i,a,s[c],s),i[a]=s[c]}async function R(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 I(e,t,i,n){const s=n[i];if(!s||!s.length)return;const c=typeof s[0];if(!s.every(e=>typeof e===c))throw new a.InternalError(`Invalid operation. All elements of property ${i} must match the same type.`);const l=new Set([...s]);if("object"!==c){const t=o.repositoryFromTypeMetadata(n,i,this.adapter.alias);for(const r of l){const a=await t.read(r,e);await o.cacheModelForPopulate(e,n,i,r,a)}return void(n[i]=[...l])}const d=r.Model.pk(s[0]),p=new Set;for(const t of s){const r=await o.createOrUpdate(t,e,this.adapter.alias);await o.cacheModelForPopulate(e,n,i,r[d],r),p.add(r[d])}n[i]=[...p]}async function D(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 z(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 $(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 M(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 B 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 N}logFor(e){return n.Logging.for(B,{},e)}repository(){return x}constructor(e,t){super(e,h,t),this.Context=l}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(B.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=B.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 B.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 v("Context is required");return new T(this,e)}async Sequence(e){return new k(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,...i){const{stub:n,logger:s}=i.pop(),c=i.shift(),l=s.for(this.prepare),d=r.Model.toTransient(e),p=Object.entries(d.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]&&(l.silly("Passing along persistence metadata for "+e[o.PersistenceKeys.METADATA]),Object.defineProperty(p,o.PersistenceKeys.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:e[o.PersistenceKeys.METADATA]})),l.info(`Preparing record for ${c} table with pk ${e[t]}`),{record:p,id:n.createCompositeKey(c,[e[t]+""]),transient:d.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(),s.Decoration.flavouredAs(h).for(o.PersistenceKeys.CREATED_BY).define(a.onCreate($),s.propMetadata(o.PersistenceKeys.CREATED_BY,{})).apply(),s.Decoration.flavouredAs(h).for(o.PersistenceKeys.UPDATED_BY).define(a.onCreateUpdate($),s.propMetadata(o.PersistenceKeys.UPDATED_BY,{})).apply(),s.Decoration.flavouredAs(h).for(a.DBKeys.ID).define({decorator:(e,t)=>(i,n)=>s.apply(r.required(),a.readonly(),s.propMetadata(s.Metadata.key(a.DBKeys.ID,n),e),a.onCreate(M,e,t))(i,n)}).apply(),s.Decoration.flavouredAs(h).for(o.PersistenceKeys.COLUMN).extend(i.Property()).apply(),s.Decoration.flavouredAs(h).for(o.PersistenceKeys.TABLE).extend(e=>i.Object()(e)).apply(),s.Decoration.flavouredAs(h).for(o.PersistenceKeys.ONE_TO_ONE).define({decorator:(e,t,i,n,c)=>{const l={class:e,cascade:t,populate:i};return n&&(l.joinTable=n),c&&(l.name=c),s.apply(s.prop(),o.relation(o.PersistenceKeys.ONE_TO_ONE,l),r.type([e,String,Number,BigInt]),a.onCreate(F,l),a.onUpdate(P,l),a.onDelete(R,l),a.afterAny(z,l),s.propMetadata(o.PersistenceKeys.ONE_TO_ONE,l))}}).apply(),s.Decoration.for(o.PersistenceKeys.ONE_TO_MANY).define({decorator:(e,t,i,n,c)=>{const l={class:e,cascade:t,populate:i};return n&&(l.joinTable=n),c&&(l.name=c),s.apply(s.prop(),o.relation(o.PersistenceKeys.ONE_TO_MANY,l),r.list([e,String,Number]),a.onCreate(I,l),a.onUpdate(o.oneToManyOnUpdate,l),a.onDelete(D,l),a.afterAny(z,l),s.propMetadata(o.PersistenceKeys.ONE_TO_MANY,l))}}).apply()}}B.decoration(),o.Adapter.setCurrent(h);class j 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 q extends B{constructor(e,t,r){super(e,t),this.collections=r,this.collections=r||[]}async Sequence(e){return new k(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,...i){const{stub:n,logger:s}=i.pop(),c=i.shift(),l=s.for(this.prepare),d=((e,t)=>{const i=r.Model.toTransient(t),n=m(t),s=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(n.private){const e=Object.keys(n.private);for(const t of e)n.private[t]=s(n.private[t])}return{model:i.model,transient:i.transient,privateData:n.private,result:s(i.model)}})(this,e);return l.info(`Preparing record for ${c} table with pk ${e[t]}`),{record:d.privateData,id:n.createCompositeKey(c,[e[t]+""]),transient:d.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(B.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=m(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=B.serializer.deserialize(i.toString())}catch(e){throw new a.SerializationError("Failed to parse private data: "+e)}l.push(i)}catch(e){if(g.test(e.message))throw new S(e);throw e}return l}async deleteState(e,t,r,a,...i){const n=e.createCompositeKey(t,[r+""]),o=m(a),s=Object.keys(o.private);for(const t of s)await e.deletePrivateData(t,n)}async queryResult(e,t,r){const a=m(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=m(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 K extends i.Contract{static{this.serializer=new j}constructor(e,t){super(e),this.clazz=t,this.initialized=!1,K.adapter=this.getAdapter(t),this.repo=o.Repository.forModel(t,K.adapter.alias)}getAdapter(e){const t=new e;if(f(t)){const e=m(t),r=Object.keys(e.private);return new q(void 0,"fabric-private-data-adapter",r)}return new B(void 0,[h,e.name].join("_"))}logFor(e){return n.Logging.for(K.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 K.serializer.serialize(e)}deserialize(e){return K.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 L extends K{constructor(e,t){super(e,t)}logFor(e){return n.Logging.for(L,{},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 J(e,t){const r=e+t;if(e!==r-t||t!==r-e)throw new w(`Addition overflow: ${e} + ${t}`);return r}function U(e,t){const r=e-t;if(e!==r+t||t!==e-r)throw new w(`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)],L.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)],L.prototype,"read",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],L.prototype,"update",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],L.prototype,"delete",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],L.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)],L.prototype,"readAll",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],L.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)],L.prototype,"raw",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],L.prototype,"init",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],L.prototype,"healthcheck",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],L.prototype,"createAll",null);let W=class extends o.BaseModel{constructor(e){super(e)}};c.__decorate([o.pk({type:"String"}),c.__metadata("design:type",String)],W.prototype,"name",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],W.prototype,"owner",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],W.prototype,"symbol",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],W.prototype,"decimals",void 0),W=c.__decorate([o.table("erc20_tokens"),r.model(),c.__metadata("design:paramtypes",[Object])],W);let V=class extends o.BaseModel{constructor(e){super(e)}};c.__decorate([o.pk({type:"String"}),c.__metadata("design:type",String)],V.prototype,"id",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],V.prototype,"token",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],V.prototype,"balance",void 0),c.__decorate([o.column(),c.__metadata("design:type",String)],V.prototype,"captive",void 0),V=c.__decorate([o.table("erc20_wallets"),r.model(),c.__metadata("design:paramtypes",[Object])],V);let G=class extends o.BaseModel{constructor(e){super(e)}};var H;c.__decorate([o.pk({type:"String"}),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,"spender",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],G.prototype,"value",void 0),G=c.__decorate([o.table("erc20_allowances"),r.model(),c.__metadata("design:paramtypes",[Object])],G),(e=>{e.TRANSFER="Transfer",e.APPROVAL="Approval"})(H||(H={}));class Y extends K{constructor(e){super(e,V),Y.adapter=Y.adapter||new B,this.walletRepository=x.forModel(V,Y.adapter.alias),this.tokenRepository=x.forModel(W,Y.adapter.alias),this.allowanceRepository=x.forModel(G,Y.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 b(`spender ${n} has no allowance from ${t}`);const s=o.value;if(i>s)throw new _("The spender does not have enough allowance to spend.");const c=U(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 _("transfer amount cannot be negative");const s=await this.walletRepository.read(t,e),c=s.balance;if(i>c)throw new _(`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 V({id:r,balance:0,token:await this.TokenName(e)}),d=!0}const p=l.balance,u=U(c,i),h=J(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,"",H.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 _(`client account ${i} has insufficient funds.`);n?(n.value=r,await this.allowanceRepository.update(n,e)):(n=new G({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,"",H.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 b(`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 C("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=J(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 V({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,"",H.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 _("Minter has insufficient funds.");const o=U(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,"",H.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 _(t+" has insufficient funds.");const o=U(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,"",H.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 _(`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)],Y.prototype,"TokenName",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.prototype,"Symbol",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.prototype,"Decimals",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.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)],Y.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)],Y.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)],Y.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)],Y.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)],Y.prototype,"Allowance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,W]),c.__metadata("design:returntype",Promise)],Y.prototype,"Initialize",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.prototype,"CheckInitialized",null),c.__decorate([E(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],Y.prototype,"Mint",null),c.__decorate([E(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],Y.prototype,"Burn",null),c.__decorate([E(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],Y.prototype,"BurnFrom",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.prototype,"ClientAccountBalance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.prototype,"ClientAccountID",null);const Q=[Y];class X extends n.MiniLogger{constructor(e,t,r){if(super(e,t),r){if(r instanceof l)throw new v("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 X(e,t||{},r));const Z="##VERSION##",ee="##PACKAGE##";s.Metadata.registerLibrary(ee,Z),e.ContractLogger=X,e.FabricContractAdapter=B,e.FabricContractContext=l,e.FabricContractRepository=x,e.FabricContractRepositoryObservableHandler=d,e.FabricContractSequence=k,e.FabricCrudContract=K,e.FabricStatement=T,e.PACKAGE_NAME=ee,e.SerializedCrudContract=L,e.VERSION=Z,e.contracts=Q,e.createdByOnFabricCreateUpdate=$,e.pkFabricOnCreate=M},"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/decoration"),require("tslib")):"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/decoration","tslib"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-fabric"]={},e.decafTsForCouchdb,e.decafTsDecoratorValidation,e.decafTsDbDecorators,e.fabricContractApi,e.decafTsLogging,e.decafTsCore,e.decafTsDecoration,e.tslib);
|
|
1
|
+
var e,t;e=this,t=function(e,t,r,a,i,n,o,s,c){"use strict";class l 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 d 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 p,u;(e=>{e.PRIVATE="private",e.SHARED="shared",e.FABRIC="fabric.",e.OWNEDBY="owned-by"})(p||(p={})),(e=>{e.X509="X.509"})(u||(u={}));const h="hlf-fabric",g=/private\s+data\s+matching\s+public\s+hash\s+version\s+is\s+not\s+available/i;function y(e){return s.Metadata.get(e.constructor,p.PRIVATE)}function f(e){const t=y(e);return!(!t||void 0===t.isPrivate)&&t.isPrivate}function m(e){if(!(e=>!!y(e))(e))return{model:e};const t=f(e),i=y(e);let n={model:e,private:void 0};if(t){const t=i.collections;n=(s.Metadata.properties(e.constructor)||[]).reduce((t,r)=>{const n=i.collections;t.private=t.private||{};for(const i of n)try{t.private[i]=t.private[i]||{},t.private[i][r]=e[r]}catch(e){throw new a.SerializationError(`Failed to serialize private property ${r}: ${e}`)}return t},{model:{},private:t})}else n=Object.entries(i).reduce((t,[r,i])=>{const n=s.Metadata.properties(e.constructor);if(!n?.includes(r))return t;const o=i.collections;if(o?.length){t.private=t.private||{};for(const i of o)try{t.private[i]=t.private[i]||{},t.private[i][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},{});if(n.model=n.model||{},n.model=r.Model.build(n.model,e.constructor.name),n.private){const t=Object.keys(n.private);for(const a of t)n.private[a]=r.Model.build(n.private[a],e.constructor.name)}return n}class w extends a.InternalError{constructor(e){super(e,w.name)}}class _ extends a.InternalError{constructor(e){super(e,_.name)}}class b extends a.InternalError{constructor(e){super(e,b.name)}}class v extends a.InternalError{constructor(e){super(e,v.name,500)}}class S extends a.BaseError{constructor(e="private data matching public hash version is not available ..."){super(S.name,e,403)}}class C extends a.BaseError{constructor(e){super(C.name,e,409)}}let A=class extends o.BaseModel{constructor(e){super(e)}};function E(){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 O(e){if(!e)throw Error("Collection name is required");const t=p.PRIVATE;return(i,n)=>{const o=i instanceof r.Model?i.constructor:i,c=s.Metadata.get(o),l=c?.private?.collections||[];if(s.propMetadata(t,{...!n&&{collections:l?[...new Set([...l,e])]:[e]},isPrivate:!n})(n?o:i),n){const r=c?.private?.[n]?.collections||[];s.propMetadata(s.Metadata.key(t,n),{collections:r?[...new Set([...r,e])]:[e]})(i,n),a.transient()(i,n)}}}c.__decorate([o.pk(),c.__metadata("design:type",String)],A.prototype,"id",void 0),c.__decorate([r.required(),o.index(),c.__metadata("design:type",Object)],A.prototype,"current",void 0),A=c.__decorate([o.table(t.CouchDBKeys.SEQUENCE),r.model(),c.__metadata("design:paramtypes",[Object])],A);class k extends o.Sequence{constructor(e,t,r){super(e);for(const e of r||[])O(e)(A);this.repo=o.Repository.forModel(A,t.alias)}async current(e){if(!e)throw new v("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 v("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 A({id:o,current:s}),r)}catch(e){if(!(e instanceof a.NotFoundError))throw e;l=await this.repo.create(new A({id:o,current:s}),r)}return l.current}async next(e){if(!e)throw new v("Context is required");const t=await this.current(e);return this.increment(t,void 0,e)}async range(e,t){if(!t)throw new v("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 x extends o.Repository{constructor(e,t,r){super(e,t),this.trackedEvents=r}logFor(e){return n.Logging.for(x,{},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 d}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 l?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=k.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 T extends t.CouchDBStatement{constructor(e,t){super(e),this.ctx=t}async raw(e){const t=await this.adapter.raw(e,!0,this.ctx),i=r.Model.pk(this.fromSelector),n=s.Metadata.get(this.fromSelector,s.Metadata.key(a.DBKeys.ID,i))?.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 N 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 F(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=r.Model.pk(d);await o.cacheModelForPopulate(e,n,i,d[p],d),n[i]=d[p]}async function P(e,t,a,i){const n=i[a];if(!n)return;if(t.cascade.update!==o.Cascade.CASCADE)return;if("object"!=typeof n){const t=o.repositoryFromTypeMetadata(i,a,this.adapter.alias),r=await t.read(n,e);return await o.cacheModelForPopulate(e,i,a,n,r),void(i[a]=n)}const s=await o.createOrUpdate(i[a],e,this.adapter.alias),c=r.Model.pk(s);await o.cacheModelForPopulate(e,i,a,s[c],s),i[a]=s[c]}async function R(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 I(e,t,i,n){const s=n[i];if(!s||!s.length)return;const c=typeof s[0];if(!s.every(e=>typeof e===c))throw new a.InternalError(`Invalid operation. All elements of property ${i} must match the same type.`);const l=new Set([...s]);if("object"!==c){const t=o.repositoryFromTypeMetadata(n,i,this.adapter.alias);for(const r of l){const a=await t.read(r,e);await o.cacheModelForPopulate(e,n,i,r,a)}return void(n[i]=[...l])}const d=r.Model.pk(s[0]),p=new Set;for(const t of s){const r=await o.createOrUpdate(t,e,this.adapter.alias);await o.cacheModelForPopulate(e,n,i,r[d],r),p.add(r[d])}n[i]=[...p]}async function D(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 z(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 $(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 M(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 B 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 N}logFor(e){return n.Logging.for(B,{},e)}repository(){return x}constructor(e,t){super(e,h,t),this.Context=l}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(B.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=B.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 B.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 v("Context is required");return new T(this,e)}async Sequence(e){return new k(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,...i){const{stub:n,logger:s}=i.pop(),c=i.shift(),l=s.for(this.prepare),d=r.Model.segregate(e),p=Object.entries(d.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]&&(l.silly("Passing along persistence metadata for "+e[o.PersistenceKeys.METADATA]),Object.defineProperty(p,o.PersistenceKeys.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:e[o.PersistenceKeys.METADATA]})),l.info(`Preparing record for ${c} table with pk ${e[t]}`),{record:p,id:n.createCompositeKey(c,[e[t]+""]),transient:d.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(),s.Decoration.flavouredAs(h).for(o.PersistenceKeys.CREATED_BY).define(a.onCreate($),s.propMetadata(o.PersistenceKeys.CREATED_BY,{})).apply(),s.Decoration.flavouredAs(h).for(o.PersistenceKeys.UPDATED_BY).define(a.onCreateUpdate($),s.propMetadata(o.PersistenceKeys.UPDATED_BY,{})).apply(),s.Decoration.flavouredAs(h).for(a.DBKeys.ID).define({decorator:(e,t)=>(i,n)=>s.apply(r.required(),a.readonly(),s.propMetadata(s.Metadata.key(a.DBKeys.ID,n),e),a.onCreate(M,e,t))(i,n)}).apply(),s.Decoration.flavouredAs(h).for(o.PersistenceKeys.COLUMN).extend(i.Property()).apply(),s.Decoration.flavouredAs(h).for(o.PersistenceKeys.TABLE).extend(e=>i.Object()(e)).apply(),s.Decoration.flavouredAs(h).for(o.PersistenceKeys.ONE_TO_ONE).define({decorator:(e,t,i,n,c)=>{const l={class:e,cascade:t,populate:i};return n&&(l.joinTable=n),c&&(l.name=c),s.apply(s.prop(),o.relation(o.PersistenceKeys.ONE_TO_ONE,l),r.type([e,String,Number,BigInt]),a.onCreate(F,l),a.onUpdate(P,l),a.onDelete(R,l),a.afterAny(z,l),s.propMetadata(o.PersistenceKeys.ONE_TO_ONE,l))}}).apply(),s.Decoration.for(o.PersistenceKeys.ONE_TO_MANY).define({decorator:(e,t,i,n,c)=>{const l={class:e,cascade:t,populate:i};return n&&(l.joinTable=n),c&&(l.name=c),s.apply(s.prop(),o.relation(o.PersistenceKeys.ONE_TO_MANY,l),r.list([e,String,Number]),a.onCreate(I,l),a.onUpdate(o.oneToManyOnUpdate,l),a.onDelete(D,l),a.afterAny(z,l),s.propMetadata(o.PersistenceKeys.ONE_TO_MANY,l))}}).apply()}}B.decoration(),o.Adapter.setCurrent(h);class j 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 q extends B{constructor(e,t,r){super(e,t),this.collections=r,this.collections=r||[]}async Sequence(e){return new k(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,...i){const{stub:n,logger:s}=i.pop(),c=i.shift(),l=s.for(this.prepare),d=((e,t)=>{const i=r.Model.segregate(t),n=m(t),s=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(n.private){const e=Object.keys(n.private);for(const t of e)n.private[t]=s(n.private[t])}return{model:i.model,transient:i.transient,privateData:n.private,result:s(i.model)}})(this,e);return l.info(`Preparing record for ${c} table with pk ${e[t]}`),{record:d.privateData,id:n.createCompositeKey(c,[e[t]+""]),transient:d.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(B.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=m(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=B.serializer.deserialize(i.toString())}catch(e){throw new a.SerializationError("Failed to parse private data: "+e)}l.push(i)}catch(e){if(g.test(e.message))throw new S(e);throw e}return l}async deleteState(e,t,r,a,...i){const n=e.createCompositeKey(t,[r+""]),o=m(a),s=Object.keys(o.private);for(const t of s)await e.deletePrivateData(t,n)}async queryResult(e,t,r){const a=m(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=m(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 K extends i.Contract{static{this.serializer=new j}constructor(e,t){super(e),this.clazz=t,this.initialized=!1,K.adapter=this.getAdapter(t),this.repo=o.Repository.forModel(t,K.adapter.alias)}getAdapter(e){const t=new e;if(f(t)){const e=m(t),r=Object.keys(e.private);return new q(void 0,"fabric-private-data-adapter",r)}return new B(void 0,[h,e.name].join("_"))}logFor(e){return n.Logging.for(K.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 K.serializer.serialize(e)}deserialize(e){return K.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 L extends K{constructor(e,t){super(e,t)}logFor(e){return n.Logging.for(L,{},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 J(e,t){const r=e+t;if(e!==r-t||t!==r-e)throw new w(`Addition overflow: ${e} + ${t}`);return r}function U(e,t){const r=e-t;if(e!==r+t||t!==e-r)throw new w(`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)],L.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)],L.prototype,"read",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],L.prototype,"update",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],L.prototype,"delete",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],L.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)],L.prototype,"readAll",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],L.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)],L.prototype,"raw",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],L.prototype,"init",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],L.prototype,"healthcheck",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],L.prototype,"createAll",null);let W=class extends o.BaseModel{constructor(e){super(e)}};c.__decorate([o.pk({type:"String"}),c.__metadata("design:type",String)],W.prototype,"name",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],W.prototype,"owner",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],W.prototype,"symbol",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],W.prototype,"decimals",void 0),W=c.__decorate([o.table("erc20_tokens"),r.model(),c.__metadata("design:paramtypes",[Object])],W);let V=class extends o.BaseModel{constructor(e){super(e)}};c.__decorate([o.pk({type:"String"}),c.__metadata("design:type",String)],V.prototype,"id",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",String)],V.prototype,"token",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],V.prototype,"balance",void 0),c.__decorate([o.column(),c.__metadata("design:type",String)],V.prototype,"captive",void 0),V=c.__decorate([o.table("erc20_wallets"),r.model(),c.__metadata("design:paramtypes",[Object])],V);let G=class extends o.BaseModel{constructor(e){super(e)}};var H;c.__decorate([o.pk({type:"String"}),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,"spender",void 0),c.__decorate([o.column(),r.required(),c.__metadata("design:type",Number)],G.prototype,"value",void 0),G=c.__decorate([o.table("erc20_allowances"),r.model(),c.__metadata("design:paramtypes",[Object])],G),(e=>{e.TRANSFER="Transfer",e.APPROVAL="Approval"})(H||(H={}));class Y extends K{constructor(e){super(e,V),Y.adapter=Y.adapter||new B,this.walletRepository=x.forModel(V,Y.adapter.alias),this.tokenRepository=x.forModel(W,Y.adapter.alias),this.allowanceRepository=x.forModel(G,Y.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 b(`spender ${n} has no allowance from ${t}`);const s=o.value;if(i>s)throw new _("The spender does not have enough allowance to spend.");const c=U(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 _("transfer amount cannot be negative");const s=await this.walletRepository.read(t,e),c=s.balance;if(i>c)throw new _(`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 V({id:r,balance:0,token:await this.TokenName(e)}),d=!0}const p=l.balance,u=U(c,i),h=J(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,"",H.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 _(`client account ${i} has insufficient funds.`);n?(n.value=r,await this.allowanceRepository.update(n,e)):(n=new G({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,"",H.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 b(`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 C("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=J(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 V({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,"",H.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 _("Minter has insufficient funds.");const o=U(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,"",H.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 _(t+" has insufficient funds.");const o=U(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,"",H.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 _(`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)],Y.prototype,"TokenName",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.prototype,"Symbol",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.prototype,"Decimals",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.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)],Y.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)],Y.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)],Y.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)],Y.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)],Y.prototype,"Allowance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,W]),c.__metadata("design:returntype",Promise)],Y.prototype,"Initialize",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.prototype,"CheckInitialized",null),c.__decorate([E(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],Y.prototype,"Mint",null),c.__decorate([E(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],Y.prototype,"Burn",null),c.__decorate([E(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],Y.prototype,"BurnFrom",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.prototype,"ClientAccountBalance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],Y.prototype,"ClientAccountID",null);const Q=[Y];class X extends n.MiniLogger{constructor(e,t,r){if(super(e,t),r){if(r instanceof l)throw new v("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 X(e,t||{},r));const Z="##VERSION##",ee="##PACKAGE##";s.Metadata.registerLibrary(ee,Z),e.ContractLogger=X,e.FabricContractAdapter=B,e.FabricContractContext=l,e.FabricContractRepository=x,e.FabricContractRepositoryObservableHandler=d,e.FabricContractSequence=k,e.FabricCrudContract=K,e.FabricStatement=T,e.PACKAGE_NAME=ee,e.SerializedCrudContract=L,e.VERSION=Z,e.contracts=Q,e.createdByOnFabricCreateUpdate=$,e.pkFabricOnCreate=M},"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/decoration"),require("tslib")):"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/decoration","tslib"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-fabric"]={},e.decafTsForCouchdb,e.decafTsDecoratorValidation,e.decafTsDbDecorators,e.fabricContractApi,e.decafTsLogging,e.decafTsCore,e.decafTsDecoration,e.tslib);
|
|
2
2
|
//# sourceMappingURL=for-fabric.cjs.map
|
package/dist/for-fabric.cjs.map
CHANGED
|
@@ -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/contracts/private-data.ts","../src/shared/errors.ts","../src/contracts/PrivateSequence.ts","../src/shared/decorators.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","MISSING_PRIVATE_DATA_REGEX","getClassPrivateDataMetadata","model","Metadata","PRIVATE","isModelPrivate","metadata","undefined","isPrivate","modelToPrivate","hasPrivateData","modelCollections","result","private","privatePart","collections","properties","reduce","accum","k","collection","e","SerializationError","Object","entries","val","props","includes","length","Model","build","name","keys","OverflowError","InternalError","msg","BalanceError","AllowanceError","MissingContextError","UnauthorizedPrivateDataAccess","BaseError","NotInitializedError","CustomizableSequence","BaseModel","seq","Owner","target","propertyKey","descriptor","originalMethod","value","async","args","acountId","clientIdentity","getID","select","selectWithContext","tokens","execute","NotFoundError","AuthorizationError","apply","privateData","Error","key","attribute","constr","metaData","modeldata","propMetadata","Set","attributeData","transient","__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","pkAttr","fromSelector","DBKeys","ID","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","data","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","toTransient","mappedProp","column","isReserved","PersistenceKeys","METADATA","silly","obj","ob","flavour","updatePrefix","updateAllPrefix","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","UPDATED_BY","onCreateUpdate","decorator","groupsort","attr","readonly","COLUMN","extend","FabricProperty","Property","FabricObject","ONE_TO_ONE","joinColumnOpts","fk","meta","joinTable","prop","relation","Number","onUpdate","onDelete","afterAny","ONE_TO_MANY","joinTableOpts","list","oneToManyOnUpdate","Adapter","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","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/contracts/private-data.ts","../src/shared/errors.ts","../src/contracts/PrivateSequence.ts","../src/shared/decorators.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","MISSING_PRIVATE_DATA_REGEX","getClassPrivateDataMetadata","model","Metadata","PRIVATE","isModelPrivate","metadata","undefined","isPrivate","modelToPrivate","hasPrivateData","modelCollections","result","private","privatePart","collections","properties","reduce","accum","k","collection","e","SerializationError","Object","entries","val","props","includes","length","Model","build","name","keys","OverflowError","InternalError","msg","BalanceError","AllowanceError","MissingContextError","UnauthorizedPrivateDataAccess","BaseError","NotInitializedError","CustomizableSequence","BaseModel","seq","Owner","target","propertyKey","descriptor","originalMethod","value","async","args","acountId","clientIdentity","getID","select","selectWithContext","tokens","execute","NotFoundError","AuthorizationError","apply","privateData","Error","key","attribute","constr","metaData","modeldata","propMetadata","Set","attributeData","transient","__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","pkAttr","fromSelector","DBKeys","ID","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","data","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","segregate","mappedProp","column","isReserved","PersistenceKeys","METADATA","silly","obj","ob","flavour","updatePrefix","updateAllPrefix","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","UPDATED_BY","onCreateUpdate","decorator","groupsort","attr","readonly","COLUMN","extend","FabricProperty","Property","FabricObject","ONE_TO_ONE","joinColumnOpts","fk","meta","joinTable","prop","relation","Number","onUpdate","onDelete","afterAny","ONE_TO_MANY","joinTableOpts","list","oneToManyOnUpdate","Adapter","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","registerLibrary"],"mappings":"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"}
|