@decaf-ts/for-fabric 0.1.57 → 0.1.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/for-fabric.cjs +1 -1
  2. package/dist/for-fabric.cjs.map +1 -1
  3. package/dist/for-fabric.js +1 -1
  4. package/dist/for-fabric.js.map +1 -1
  5. package/lib/client/FabricClientAdapter.cjs +1 -1
  6. package/lib/client/FabricClientAdapter.js.map +1 -1
  7. package/lib/client/FabricClientRepository.cjs +1 -0
  8. package/lib/client/FabricClientRepository.d.ts +1 -0
  9. package/lib/client/FabricClientRepository.js.map +1 -1
  10. package/lib/client/constants.cjs +3 -2
  11. package/lib/client/constants.js.map +1 -1
  12. package/lib/contracts/ContractAdapter.cjs +0 -162
  13. package/lib/contracts/ContractAdapter.d.ts +2 -31
  14. package/lib/contracts/ContractAdapter.js.map +1 -1
  15. package/lib/esm/client/FabricClientAdapter.js +1 -1
  16. package/lib/esm/client/FabricClientAdapter.js.map +1 -1
  17. package/lib/esm/client/FabricClientRepository.d.ts +1 -0
  18. package/lib/esm/client/FabricClientRepository.js +1 -0
  19. package/lib/esm/client/FabricClientRepository.js.map +1 -1
  20. package/lib/esm/client/constants.js +3 -2
  21. package/lib/esm/client/constants.js.map +1 -1
  22. package/lib/esm/contracts/ContractAdapter.d.ts +2 -31
  23. package/lib/esm/contracts/ContractAdapter.js +0 -161
  24. package/lib/esm/contracts/ContractAdapter.js.map +1 -1
  25. package/lib/esm/shared/decorators.d.ts +6 -6
  26. package/lib/esm/shared/decorators.js.map +1 -1
  27. package/lib/esm/version.d.ts +1 -1
  28. package/lib/esm/version.js +1 -1
  29. package/lib/shared/decorators.d.ts +6 -6
  30. package/lib/shared/decorators.js.map +1 -1
  31. package/lib/version.cjs +1 -1
  32. package/lib/version.d.ts +1 -1
  33. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- var e,t;e=this,t=function(e,t,r,a,n,i,o,s,c){"use strict";var l,d;(e=>{e.PRIVATE="private",e.SHARED="shared",e.FABRIC="fabric.",e.OWNEDBY="owned-by",e.TRANSACTION_ID="transaction-id"})(l||(l={})),(e=>{e.X509="X.509"})(d||(d={}));const u="hlf-fabric";t.Model.prototype.isShared=function(){return t.Model.isShared(this.constructor)},t.Model.prototype.isPrivate=function(){return t.Model.isPrivate(this.constructor)},t.Model.prototype.segregate=function(){return t.Model.segregate(this)},t.Model.segregate=(e=>{if(!t.Model.isTransient(e))return{model:e};const n=r.Metadata.validatableProperties(e.constructor),i=r.Metadata.get(e.constructor,a.DBKeys.TRANSIENT),o=r.Metadata.get(e.constructor,l.PRIVATE),s=r.Metadata.get(e.constructor,l.PRIVATE),c={model:{},transient:{},private:{},shared:{}},d=Object.keys(i),u=Object.keys(o),p=Object.keys(s);for(const t of n){const r=d.includes(t),a=u.includes(t),n=p.includes(t);r?(c.transient=c.transient||{},c.transient[t]=e[t],a&&(c.private=c.private||{},c.private[t]=e[t]),n&&(c.shared=c.shared||{},c.shared[t]=e[t])):(c.model=c.model||{},c.model[t]=e[t])}return c.model=t.Model.build(c.model,e.constructor.name),c}).bind(t.Model),t.Model.tableName=e=>{const a=e instanceof t.Model?e.constructor:e;return r.Metadata.get(a,n.PersistenceKeys.TABLE)||(e instanceof t.Model?e.constructor.name:e.name)},t.Model.isPrivate=(e=>!!r.Metadata.get("function"!=typeof e?e.constructor:e,l.PRIVATE)).bind(t.Model),r.Metadata.isShared=(e=>!!r.Metadata.get("function"!=typeof e?e.constructor:e,l.SHARED)).bind(r.Metadata);class p extends n.Context{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("identity")}toString(){return"fabric ctx"+(this.stub?" with stub":"without stub")}}class g extends n.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){const{log:i,ctx:o}=n.Adapter.logCtx(this.updateObservers,t,!1,...a),{stub:s}=o,[c,l]=a,d="string"==typeof e?e:e.name;if(-1!==this.supportedEvents.indexOf(t)){i.debug(`Emitting ${t} event`);const e=((e,t,r)=>{const a=[e,t];return r&&a.push(r),a.join("_")})(d,t,c);s.setEvent(e,Buffer.from(JSON.stringify({id:r})))}else s.setEvent(t,Buffer.from(JSON.stringify(l)))}}class h extends n.Repository{constructor(e,t,r){super(e,t),this.trackedEvents=r,this._overrides=Object.assign({},super._overrides,{ignoreValidation:!1,ignoreHandlers:!1,allowRawStatements:!0,forcePrepareSimpleQueries:!1,forcePrepareComplexQueries:!1})}async paginateBy(e,r,a={offset:1,limit:10},...i){let{offset:o,bookmark:s,limit:c}=a;if(!o&&!s)throw new n.QueryError("PaginateBy needs a page or a bookmark");const{log:l,ctxArgs:d}=(await this.logCtx(i,n.PreparedStatementKeys.PAGE_BY,!0)).for(this.paginateBy);let u;if(l.verbose(`paginating ${t.Model.tableName(this.class)} with page size ${c}`),s)u=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().where(this.attr(t.Model.pk(this.class)).gt(s)).orderBy([e,r]).paginate(c,...d),o=1;else{if(!o)throw new n.QueryError("PaginateBy needs a page or a bookmark");u=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().orderBy([e,r]).paginate(c,...d)}const p=await u.page(o,s,...d);return u.serialize(p)}async statement(e,...t){const{log:r,ctx:i,ctxArgs:o}=(await this.logCtx(t,n.PersistenceKeys.STATEMENT,!0)).for(this.statement);if(!n.Repository.statements(this,e))throw new n.QueryError("Invalid prepared statement requested "+e);let s;i.logger&&i.logger.info(`Repo statement: ${e} + ${t}`),r.verbose(`Executing prepared statement ${e} with args ${o}`);try{s=await this[e](...o)}catch(t){if(t instanceof a.BaseError)throw t;throw new a.InternalError(`Failed to execute prepared statement ${e} with args ${o}: ${t}`)}return s}ObserverHandler(){return new g}async updateObservers(e,t,r,...a){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(t))return await super.updateObservers(e,t,r,...a)}}class y extends i.CouchDBStatement{constructor(e){super(e)}async executionPrefix(e,...t){const r=t.filter(Boolean);if(t.length!==r.length)throw new a.InternalError(`Received an undefined in the paginator for ${e}: ${t}`);return super.executionPrefix(e,...t)}async raw(e,...n){const{ctx:i}=this.logCtx(n,this.raw),o=await this.adapter.raw(e,!0,i),s=t.Model.pk(this.fromSelector),c=r.Metadata.get(this.fromSelector,r.Metadata.key(a.DBKeys.ID,s))?.type;return this.selectSelector?o:o.map(e=>this.processRecord(e,s,c,i))}build(){const e={};e[i.CouchDBKeys.TABLE]={},e[i.CouchDBKeys.TABLE]=t.Model.tableName(this.fromSelector);const r={selector:e};if(this.selectSelector&&(r.fields=this.selectSelector),this.whereCondition){const e=this.parseCondition(n.Condition.and(this.whereCondition,n.Condition.attribute(i.CouchDBKeys.TABLE).eq(r.selector[i.CouchDBKeys.TABLE]))).selector,t=Object.keys(e);if(1===t.length&&-1!==Object.values(i.CouchDBGroupOperator).indexOf(t[0]))switch(t[0]){case i.CouchDBGroupOperator.AND:e[i.CouchDBGroupOperator.AND]=[...Object.values(e[i.CouchDBGroupOperator.AND]).reduce((e,t)=>{const r=Object.keys(t);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const a=r[0];return a===i.CouchDBGroupOperator.AND?e.push(...t[a]):e.push(t),e},[])],r.selector=e;break;case i.CouchDBGroupOperator.OR:{const t={};t[i.CouchDBGroupOperator.AND]=[e,...Object.entries(r.selector).map(([e,t])=>{const r={};return r[e]=t,r})],r.selector=t;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,t]=this.orderBySelector,a={};a[e]=t,r.sort.push(a),r.selector[e]||(r.selector[e]={},r.selector[e][i.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(r.limit=this.limitSelector),this.offsetSelector&&(r.skip=this.offsetSelector),r}}class m extends n.Sequence{constructor(e,t){super(e,t)}async current(...e){const{ctx:t,log:r}=(await this.logCtx(e,a.OperationKeys.READ,!0)).for(this.current),{name:n,startWith:i}=this.options;try{const e=await this.repo.read(n,t);return this.parse(e.current)}catch(e){if(e instanceof a.NotFoundError){let e;try{r.debug(`Trying to resolve current sequence ${n} value from context`),e=t.get(n),r.debug(`Retrieved cached current value for sequence ${n}: ${e}`)}catch(t){r.info(`No cached value for sequence ${n} in context`),e=i}try{return this.parse(e)}catch(e){throw new a.InternalError(`Failed to parse initial value for sequence ${i}: ${e}`)}}throw new a.InternalError(`Failed to retrieve current value for sequence ${n}: ${e}`)}}async increment(e,t){const r=t.logger.for(this.increment),{type:i,incrementBy:o,name:s}=this.options;if(!s)throw new a.InternalError("Sequence name is required");return r.info("Obtaining sequence lock for sequence "+s),m.lock.execute(async()=>{const c=e||o;if(c%o!==0)throw new a.InternalError("Value to increment does not consider the incrementBy setting: "+o);const l="function"==typeof i&&i?.name?i.name:i,d=await this.current(t);async function u(e){return e instanceof Promise&&(e=await e),r.for(u).info(`Storing new ${s} seq value in cache: ${e.current}`),t.cache.put(s,e.current),e}const p=async e=>{try{return await u(this.repo.update(new n.SequenceModel({id:s,current:e}),t))}catch(i){if(i instanceof a.NotFoundError)return r.debug(`Sequence create ${s} current=${d} next=${e}`),u(this.repo.create(new n.SequenceModel({id:s,current:e}),t));throw i}};if("uuid"===l)for(;;){const e=n.UUID.instance.generate(d);try{const t=await p(e);return r.debug(`Sequence uuid increment ${s} current=${d} next=${e}`),t.current}catch(e){if(e instanceof a.ConflictError)continue;throw e}}const g=(e=>{switch(l){case Number.name:return this.parse(e)+c;case BigInt.name:return this.parse(e)+BigInt(c);case String.name:return this.parse(e);case"serial":return n.Serial.instance.generate(e);default:throw new a.InternalError("Should never happen")}})(d),h=await p(g);return r.debug(`Sequence.increment ${s} current=${d} next=${g}`),h.current},s)}}class f extends t.JSONSerializer{constructor(){super()}deserialize(e,t){return JSON.parse(e)}serialize(e,t=!0){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e,t)))}preSerialize(e,a=!0){const n=Object.assign({},e);let i;try{i=r.Metadata.modelName(e.constructor)}catch(e){i=void 0}function o(e){return"object"!=typeof e?e:Array.isArray(e)?e.map(o):this.preSerialize(e)}return a&&(n[t.ModelKeys.ANCHOR]=i||e.constructor.name),t.Model.relations(e).forEach(e=>{n[e]=o.call(this,n[e])}),n}}class _ extends i.CouchDBPaginator{constructor(e,t,r,a){super(e,t,r,a)}prepare(e){const t=Object.assign({},e);return t.limit&&(this.limit=t.limit),t.limit=this.size,t}async page(e=1,i,...o){const{ctxArgs:s,ctx:c,log:l}=this.adapter.logCtx([i,...o],this.page);if(this.isPreparedStatement())return await this.pagePrepared(e,...s);const d=Object.assign({},this.statement);if(this._recordCount&&this._totalPages)e=this.validatePage(e),d.skip=(e-1)*this.size;else{this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...d,limit:Number.MAX_VALUE},!0,...s)||[];if(this._recordCount=t.length,this._recordCount>0){const t=d?.limit||this.size;return this._totalPages=Math.ceil(this._recordCount/t),await this.page(e,...s)}}if(1!==e){if(!this._bookmark)throw new n.PagingError("No bookmark. Did you start in the first page?");d.bookmark=this._bookmark}const u=await this.adapter.raw(d,!0,...s),{docs:p,bookmark:g,warning:h}=u;if(h&&l.warn(h),!this.clazz)throw new n.PagingError("No statement target defined");const y=t.Model.pk(this.clazz),m=r.Metadata.get(this.clazz,r.Metadata.key(a.DBKeys.ID,y))?.type,f=d.fields&&d.fields.length?u:u.map(e=>this.adapter.revert(e,this.clazz,n.Sequence.parseValue(m,e[y]),void 0,c));return this._bookmark=g,this._currentPage=e,f}}class w extends a.InternalError{constructor(e){super(e,w.name)}}class b extends a.InternalError{constructor(e){super(e,b.name)}}class x extends a.InternalError{constructor(e){super(e,x.name)}}class C extends a.InternalError{constructor(e){super(e,C.name,500)}}class S extends a.BaseError{constructor(e){super(S.name,e,409)}}async function v(e,t,r,a){try{const t=e.get("identity");a[r]=t.getID()}catch(e){throw new n.UnsupportedError("No User found in context. Please provide a user in the context")}}class E extends i.CouchDBAdapter{getClient(){throw new n.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new f}get Context(){return p}repository(){return h}Paginator(e,t,r){return new _(this,e,t,r)}async Sequence(e){return new m(e,this)}constructor(e,t){super(e,u,t)}for(e,...t){return super.for(e,...t)}async create(e,r,a,...n){const{ctx:i,log:o}=this.logCtx(n,this.create);o.info("in ADAPTER create with args "+n);const s=t.Model.tableName(e);try{o.info(`adding entry to ${s} table with pk ${r}`);const e=i.stub.createCompositeKey(s,[r+""]);a=await this.putState(e,a,i)}catch(e){throw this.parseError(e)}return a}async read(e,r,...a){const{ctx:n,log:i}=this.logCtx(a,this.read);i.info("in ADAPTER read with args "+a);const o=t.Model.tableName(e);let s;try{const e=n.stub.createCompositeKey(o,[r+""]);s=await this.readState(e,n)}catch(e){throw this.parseError(e)}return s}async update(e,r,a,...n){const{ctx:i,log:o}=this.logCtx(n,this.update),s=t.Model.tableName(e);try{o.verbose(`updating entry to ${s} table with pk ${r}`);const e=i.stub.createCompositeKey(s,[r+""]);a=await this.putState(e,a,i)}catch(e){throw this.parseError(e)}return a}async delete(e,r,...a){const{ctx:n,log:i,ctxArgs:o}=this.logCtx(a,this.delete),s=t.Model.tableName(e);let c;try{const t=n.stub.createCompositeKey(s,[r+""]);c=await this.read(e,r,...o),i.verbose(`deleting entry with pk ${r} from ${s} table`),await this.deleteState(t,n)}catch(e){throw this.parseError(e)}return c}async deleteState(e,t){const{ctx:r}=this.logCtx([t],this.deleteState);await r.stub.deleteState(e)}forPrivate(e){const t=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map(e=>e.name);return new Proxy(this,{get:(r,n,i)=>t.includes(n)?new Proxy(r[n],{async apply(t,r,i){switch(n){case"putState":{const[t,r,a]=i;return await t.putPrivateData(e,r.toString(),a),a}case"deleteState":{const[t,r]=i;return t.deletePrivateData(e,r)}case"readState":{const[t,r]=i;return t.getPrivateData(e,r)}case"queryResult":{const[t,r]=i;return t.getPrivateDataQueryResult(e,r)}case"queryResultPaginated":{const[t,r,a,n]=i,o=await t.getPrivateDataQueryResult(e,r),s=[];let c=0,l=!n,d=null;for(;;){const e=await o.next();if(e.value&&e.value.value.toString()){const t=e.value.key,r=e.value.value.toString("utf8");if(!l){t===n?.toString()&&(l=!0);continue}if(s.push({Key:t,Record:JSON.parse(r)}),d=t,c++,c>=a)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:d}}}if(e.done)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:""}}}}default:throw new a.InternalError("Unsupported method override "+n)}}}):Reflect.get(r,n,i)})}async putState(e,t,r){let n;const{log:i}=this.logCtx([r],this.putState);try{n=Buffer.from(E.serializer.serialize(t,!1))}catch(t){throw new a.SerializationError(`Failed to serialize record with id ${e}: ${t}`)}const o=r.get("segregated");return o?await r.stub.putPrivateData(o,e.toString(),n):await r.stub.putState(e.toString(),n),i.silly(`state stored${o?` in ${o} collection`:""} under id ${e}`),t}async readState(e,t){let r;const{log:n}=this.logCtx([t],this.readState);let i;const o=t.get("segregated");if(i=o?(await t.stub.getPrivateData(o,e.toString())).toString():(await t.stub.getState(e.toString())).toString(),!i)throw new a.NotFoundError(`Record with id ${e}${o?` in ${o} collection`:""} not found`);n.silly(`state retrieved from${o?` ${o} collection`:""} under id ${e}`);try{r=E.serializer.deserialize(i.toString())}catch(e){throw new a.SerializationError("Failed to parse record: "+e)}return r}async queryResult(e,t,...r){const{ctx:a}=this.logCtx(r,this.queryResult);let n;const i=a.get("segregated");return n=i?await a.stub.getPrivateDataQueryResult(i,JSON.stringify(t)):await e.getQueryResult(JSON.stringify(t)),n}async queryResultPaginated(e,t,r=250,a,...n){const{ctx:i}=this.logCtx(n,this.readState);let o;const s=i.get("segregated");return s?(t.selector={...t.selector,_id:a?{$gt:a.toString()}:{$gte:""}},o={iterator:await e.getPrivateDataQueryResult(s,JSON.stringify(t)),metadata:{fetchedRecordsCount:r,bookmark:""}}):o=await e.getQueryResultWithPagination(JSON.stringify(t),r,a?.toString()),o}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 E.textDecoder.decode(e)}async flags(e,t,r){let a=Object.assign({segregated:!1},r);return r instanceof p||(r.stub?Object.assign(a,{stub:r.stub,identity:r.clientIdentity,cert:r.clientIdentity.getIDBytes().toString(),roles:r.clientIdentity.getAttributeValue("roles"),logger:s.Logging.for(e,{logLevel:!1,timestamp:!1,correlationId:r.stub.getTxID()},r),correlationId:r.stub.getTxID()}):a=Object.assign(a,r||{})),await super.flags(e,t,a)}index(e){return Promise.resolve(void 0)}async resultIterator(e,t,r=!1){const a=[];let n=await t.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let t={};if(e.debug(n.value.value.toString("utf8")),r){t.TxId=n.value.txId,t.Timestamp=n.value.timestamp;try{t.Value=JSON.parse(n.value.value.toString("utf8"))}catch(r){e.error(r),t.Value=n.value.value.toString("utf8")}}else try{t=JSON.parse(n.value.value.toString("utf8"))}catch(r){e.error(r),t=n.value.value.toString("utf8")}a.push(t)}n=await t.next()}return e.debug(`Closing iterator after ${a.length} results`),t.close(),a}async raw(e,t=!0,...r){const{log:a,ctx:n}=this.logCtx(r,this.raw),{skip:i,limit:o}=e;let s;o||i?(delete e.limit,delete e.skip,a.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${i}`),s=(await this.queryResultPaginated(n.stub,e,o||Number.MAX_VALUE,i?.toString(),n)).iterator):(a.debug("Retrieving iterator"),s=await this.queryResult(n.stub,e,n)),a.debug("Iterator acquired");const c=await this.resultIterator(a,s);return a.debug(`returning ${Array.isArray(c)?c.length:1} results`),c}Statement(){return new y(this)}async createAll(e,r,n,...i){if(r.length!==n.length)throw new a.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.createAll),c=t.Model.tableName(e);return o.debug(`Creating ${r.length} entries ${c} table`),Promise.all(r.map((t,r)=>this.create(e,t,n[r],...s)))}async updateAll(e,r,n,...i){if(r.length!==n.length)throw new a.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.updateAll),c=t.Model.tableName(e);return o.debug(`Updating ${r.length} entries ${c} table`),Promise.all(r.map((t,r)=>this.update(e,t,n[r],...s)))}prepare(e,...r){const{log:n}=this.logCtx(r,this.prepare),i=t.Model.tableName(e.constructor),o=t.Model.pk(e.constructor),s=t.Model.segregate(e),c=Object.entries(s.model).reduce((r,[n,i])=>{if(void 0===i)return r;const o=t.Model.columnName(e,n);if(this.isReserved(o))throw new a.InternalError(`Property name ${o} is reserved`);return r[o]=i,r},{});return n.silly(`Preparing record for ${i} table with pk ${e[o]}`),{record:c,id:e[o],transient:s.transient}}revert(e,r,n,i,...o){const{log:s}=this.logCtx(o,this.revert),c={};c[t.Model.pk(r)]=n;const l="string"==typeof r?t.Model.build(c,r):new r(c);s.silly(`Rebuilding model ${l.constructor.name} id ${n}`);const d=Object.keys(l).reduce((r,a)=>(r[a]=e[t.Model.columnName(r,a)],r),l);return i&&(s.debug("re-adding transient properties: "+Object.keys(i).join(", ")),Object.entries(i).forEach(([e,t])=>{if(e in d&&void 0!==d[e])throw new a.InternalError(`Transient property ${e} already exists on model ${l.constructor.name}. should be impossible`);d[e]=t})),d}createPrefix(e,r,a,...n){const{ctxArgs:o}=this.logCtx(n,this.createPrefix),s={};return s[i.CouchDBKeys.TABLE]=t.Model.tableName(e),Object.assign(s,a),[e,r,s,...o]}updatePrefix(e,r,a,...n){const{ctxArgs:o}=this.logCtx(n,this.updatePrefix),s={};return s[i.CouchDBKeys.TABLE]=t.Model.tableName(e),Object.assign(s,a),[e,r,s,...o]}createAllPrefix(e,r,n,...o){if(r.length!==n.length)throw new a.InternalError("Ids and models must have the same length");const s=o.pop(),c=r.map((r,a)=>{const o={};return o[i.CouchDBKeys.TABLE]=t.Model.tableName(e),Object.assign(o,n[a]),o});return[e,r,c,s]}updateAllPrefix(e,r,n,...o){if(r.length!==n.length)throw new a.InternalError("Ids and models must have the same length");const s=o.pop(),c=r.map((r,a)=>{const o={};return o[i.CouchDBKeys.TABLE]=t.Model.tableName(e),Object.assign(o,n[a]),o});return[e,r,c,s]}parseError(e,t){return E.parseError(t||e)}logCtx(e,t,r=!1,n){return r?super.logCtx.call(this,e,t,r,n).then(e=>{if(!(e.ctx instanceof p))throw new a.InternalError("Invalid context binding");if(!e.ctx.stub)throw new a.InternalError("Missing Stub");if(!e.ctx.identity)throw new a.InternalError("Missing Identity");return Object.assign(e,{stub:e.ctx.stub,identity:e.ctx.identity})}):super.logCtx(e,t,r,n)}static parseError(e){const t="string"==typeof e?e:e.message;return t.includes(a.NotFoundError.name)?new a.NotFoundError(e):t.includes(a.ConflictError.name)?new a.ConflictError(e):t.includes(a.BadRequestError.name)?new a.BadRequestError(e):t.includes(n.QueryError.name)?new n.QueryError(e):t.includes(n.PagingError.name)?new n.PagingError(e):t.includes(n.UnsupportedError.name)?new n.UnsupportedError(e):t.includes(n.MigrationError.name)?new n.MigrationError(e):t.includes(n.ObserverError.name)?new n.ObserverError(e):t.includes(n.AuthorizationError.name)?new n.AuthorizationError(e):t.includes(n.ForbiddenError.name)?new n.ForbiddenError(e):t.includes(n.ConnectionError.name)?new n.ConnectionError(e):t.includes(a.SerializationError.name)?new a.SerializationError(e):t.includes("no ledger context")?new C("No context found. this can be caused by debugging: "+t):new a.InternalError(e)}static decoration(){super.decoration(),r.Decoration.flavouredAs(u).for(n.PersistenceKeys.CREATED_BY).define(a.onCreate(v),r.propMetadata(n.PersistenceKeys.CREATED_BY,{})).apply(),r.Decoration.flavouredAs(u).for(n.PersistenceKeys.UPDATED_BY).define(a.onCreateUpdate(v),r.propMetadata(n.PersistenceKeys.UPDATED_BY,{})).apply(),r.Decoration.flavouredAs(u).for(n.PersistenceKeys.COLUMN).extend(o.Property()).apply(),r.Decoration.flavouredAs(u).for(t.ValidationKeys.DATE).extend(()=>(e,t)=>{o.Property(t,"string:date")(e,t)}),r.Decoration.flavouredAs(u).for(n.PersistenceKeys.TABLE).extend(e=>{const t=[];let a="function"==typeof e?r.Metadata.constr(e):r.Metadata.constr(e.constructor);for(;a&&a!==Object&&a.prototype;)t.push(a),a=Object.getPrototypeOf(a);for(;t.length>0;){const e=t.pop();o.Object()(e)}return o.Object()(e)}).apply()}}E.decoration(),n.Adapter.setCurrent(u);class A extends t.JSONSerializer{constructor(){super()}preSerialize(e){const a=Object.assign({},e);let n;try{n=r.Metadata.modelName(e.constructor)}catch(e){n=void 0}a[t.ModelKeys.ANCHOR]=n||e.constructor.name;const i=function e(t){const r=this;return"object"!=typeof t?t:Array.isArray(t)?t.map(t=>e.call(r,t)):this.preSerialize.call(this,t)}.bind(this);return t.Model.relations(e).forEach(e=>{a[e]=i(a[e])}),a}deserialize(e){const r=JSON.parse(e),a=r[t.ModelKeys.ANCHOR];if(!a)throw Error("Could not find class reference in serialized model");return t.Model.build(r,a)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}}var O;(e=>{e.TRANSFER="Transfer",e.APPROVAL="Approval"})(O||(O={}));let k=class extends t.Model{constructor(e){super(e)}};c.__decorate([r.description("Stores the original timestamp of creation"),n.column(),n.createdAt(),c.__metadata("design:type",Date)],k.prototype,"createdAt",void 0),c.__decorate([r.description("Stores the timestamp of the last update"),n.column(),n.updatedAt(),c.__metadata("design:type",Date)],k.prototype,"updatedAt",void 0),c.__decorate([r.description("Stores the version of the model"),n.column(),a.version(),c.__metadata("design:type",Number)],k.prototype,"version",void 0),k=c.__decorate([r.uses(u),c.__metadata("design:paramtypes",[Object])],k);let P=class extends k{constructor(e){super(e)}};c.__decorate([r.description("Stores the creator"),n.column(),n.createdBy(),c.__metadata("design:type",String)],P.prototype,"createdBy",void 0),c.__decorate([r.description("Stores the user that last updated the model"),n.column(),n.updatedBy(),c.__metadata("design:type",String)],P.prototype,"updatedBy",void 0),P=c.__decorate([r.uses(u),c.__metadata("design:paramtypes",[Object])],P);let N=class extends n.BaseModel{constructor(e){super(e)}};c.__decorate([r.description("Unique identifier of the credentials record"),n.column(),n.pk(),c.__metadata("design:type",String)],N.prototype,"id",void 0),c.__decorate([r.description("PEM-encoded X.509 certificate for the identity"),n.column(),t.required(),c.__metadata("design:type",String)],N.prototype,"certificate",void 0),c.__decorate([r.description("PEM-encoded root or intermediate certificate"),n.column(),t.required(),c.__metadata("design:type",String)],N.prototype,"rootCertificate",void 0),c.__decorate([r.description("PEM-encoded private key"),n.column(),t.required(),c.__metadata("design:type",String)],N.prototype,"privateKey",void 0),N=c.__decorate([t.model(),c.__metadata("design:paramtypes",[Object])],N);let T=class extends n.BaseModel{constructor(e){super(e),this.type=d.X509}};function B(){return function(e,t,r){const i=r.value;return r.value=async function(...e){const r=e[0],o=r.clientIdentity.getID(),s=await this.tokenRepository.select(),c=await s.execute(r);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!=o)throw new n.AuthorizationError(`User not authorized to run ${t} on the token`);return await i.apply(this,e)},r}}function z(e,t){const r=e+t;if(e!==r-t||t!==r-e)throw new w(`Addition overflow: ${e} + ${t}`);return r}function R(e,t){const r=e-t;if(e!==r+t||t!==e-r)throw new w(`Subtraction overflow: ${e} - ${t}`);return r}c.__decorate([r.description("Unique identifier of the identity"),n.pk(),c.__metadata("design:type",String)],T.prototype,"id",void 0),c.__decorate([n.oneToOne(N,{update:n.Cascade.CASCADE,delete:n.Cascade.CASCADE}),c.__metadata("design:type",N)],T.prototype,"credentials",void 0),c.__decorate([n.column(),t.required(),n.index(),c.__metadata("design:type",String)],T.prototype,"mspId",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",String)],T.prototype,"type",void 0),T=c.__decorate([t.model(),c.__metadata("design:paramtypes",[Object])],T),o.Object()(Date);class I extends o.Contract{static{this.adapter=new E}static{this.serializer=new A}constructor(e,t){super(e),this.clazz=t,this.initialized=!1,this.repo=n.Repository.forModel(t)}async listBy(e,t,r,...a){const{ctxArgs:i,log:o}=(await this.logCtx([...a,e],n.PreparedStatementKeys.LIST_BY,!0)).for(this.listBy);return o.info(`Running listBy key ${t}, order ${r} and args ${i}`),this.repo.listBy(t,r,...i)}async paginateBy(e,t,r,a={offset:1,limit:10},...i){const{ctxArgs:o,log:s}=(await this.logCtx([...i,e],n.PreparedStatementKeys.PAGE_BY,!0)).for(this.paginateBy);return s.info(`Running paginateBy key ${t}, order ${r} with size ${a.limit} and args ${o}`),this.repo.paginateBy(t,r,a,...o)}async findOneBy(e,t,r,...a){const{ctxArgs:i,log:o}=(await this.logCtx([...a,e],n.PreparedStatementKeys.FIND_ONE_BY,!0)).for(this.findOneBy);return o.info(`Running findOneBy key ${t}, value: ${r} with args ${i}`),this.repo.findOneBy(t,r,...i)}async statement(e,t,...r){const{ctxArgs:a,log:i}=(await this.logCtx([...r,e],n.PersistenceKeys.STATEMENT,!0)).for(this.statement);return i.info(`Running statement ${t} with args ${a}`),this.repo.statement(t,...a)}async create(e,r,...n){const{log:i,ctxArgs:o}=(await this.logCtx([...n,e],a.OperationKeys.CREATE,!0)).for(this.create);i.info("CONTRACT CREATE, "+o),"string"==typeof r&&(r=this.deserialize(r)),i.info("Creating model: "+JSON.stringify(r));const s=this.getTransientData(e);return i.info("Merging transient data..."),r=t.Model.merge(r,s,this.clazz),this.repo.create(r,...o)}async read(e,t,...r){const{log:n,ctxArgs:i}=(await this.logCtx([...r,e],a.OperationKeys.READ,!0)).for(this.create);return n.info(`reading entry with pk ${t} `),this.repo.read(t,...i)}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,r,...n){const{log:i,ctxArgs:o}=(await this.logCtx([...n,e],a.OperationKeys.UPDATE,!0)).for(this.update);"string"==typeof r&&(r=this.deserialize(r)),i.info("Updating model: "+JSON.stringify(r));const s=this.getTransientData(e);return i.info("Merging transient data..."),r=t.Model.merge(r,s,this.clazz),this.repo.update(r,...o)}async delete(e,t,...r){const{log:n,ctxArgs:i}=(await this.logCtx([...r,e],a.OperationKeys.DELETE,!0)).for(this.delete);return n.info(`deleting entry with pk ${t} `),this.repo.delete(t+"",...i)}async deleteAll(e,t,...r){const{ctxArgs:n}=(await this.logCtx([...r,e],a.BulkCrudOperationKeys.DELETE_ALL,!0)).for(this.deleteAll);return"string"==typeof t&&(t=JSON.parse(t)),this.repo.deleteAll(t,...n)}async readAll(e,t,...r){const{ctxArgs:n}=(await this.logCtx([...r,e],a.BulkCrudOperationKeys.READ_ALL,!0)).for(this.create);return"string"==typeof t&&(t=JSON.parse(t)),this.repo.readAll(t,...n)}async updateAll(e,t,...r){const{log:n,ctxArgs:i}=(await this.logCtx([...r,e],a.BulkCrudOperationKeys.UPDATE_ALL,!0)).for(this.updateAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),n.info(`updating ${t.length} entries to the table`),this.repo.updateAll(t,...i)}async query(e,t,r,a=n.OrderDirection.ASC,i,o,...s){const{ctxArgs:c}=(await this.logCtx([...s,e],n.PersistenceKeys.QUERY,!0)).for(this.create);return this.repo.query(t,r,a,i,o,...c)}async raw(e,t,r,...a){const{ctxArgs:n}=(await this.logCtx([...a,e],"raw",!0)).for(this.raw);return I.adapter.raw(t,r,...n)}serialize(e){return I.serializer.serialize(e)}deserialize(e){return I.serializer.deserialize(e)}async init(e){const{log:t,ctxArgs:r}=(await this.logCtx([e],n.PersistenceKeys.INITIALIZATION,!0)).for(this.init);t.info(`Running contract ${this.getName()} initialization...`),this.initialized=!0,t.info("Contract initialization completed.")}async healthcheck(e){const{log:t}=(await this.logCtx([e],"healthcheck",!0)).for(this.healthcheck);return t.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(e,t,...r){const{log:n,ctxArgs:i}=(await this.logCtx([...r,e],a.BulkCrudOperationKeys.CREATE_ALL,!0)).for(this.createAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),n.info(`adding ${t.length} entries to the table`),this.repo.createAll(t,...i)}logCtx(e,t,r=!1){const a=e.pop();if(!a||!a.stub)throw new C("No valid context provided...");const n=I.adapter.logCtx([this.clazz,...e],t,r,a);function i(e){return e.ctxArgs.shift(),e}return n instanceof Promise?n.then(i):i(n)}}class D extends I{constructor(e,t){super(e,t)}async create(e,t){return this.serialize(await super.create(e,t))}async read(e,t){return this.serialize(await super.read(e,t))}async update(e,t){return this.serialize(await super.update(e,t))}async delete(e,t){return this.serialize(await super.delete(e,t))}async deleteAll(e,t){const r=JSON.parse(t);return JSON.stringify((await super.deleteAll(e,r)).map(e=>this.serialize(e)))}async readAll(e,t){const r=JSON.parse(t);return JSON.stringify((await super.readAll(e,r)).map(e=>this.serialize(e)))}async updateAll(e,t){const r=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return JSON.stringify((await super.updateAll(e,r)).map(e=>this.serialize(e)))}async statement(e,t,r){try{r=JSON.parse(r)}catch(e){throw new a.SerializationError("Invalid args: "+e)}if(!Array.isArray(r))throw new a.SerializationError(`Invalid args: ${JSON.stringify(r)}. must be an array`);return JSON.stringify(await super.statement(e,t,...r))}async listBy(e,t,r){return JSON.stringify(await super.listBy(e,t,r))}async paginateBy(e,t,r,n){try{n=JSON.parse(n)}catch(e){throw new a.SerializationError("Failed to deserialize paginateBy reference: "+e)}return JSON.stringify(await super.paginateBy(e,t,r,n))}async findOneBy(e,t,r){return JSON.stringify(await super.findOneBy(e,t,r))}async query(e,t,r,i,o,s){let c;try{c=n.Condition.from(JSON.parse(t))}catch(e){throw new a.SerializationError("Invalid condition: "+e)}return JSON.stringify(await super.query(e,c,r,i,o,s))}async init(e){await super.init(e)}async healthcheck(e){return JSON.stringify(await super.healthcheck(e))}async createAll(e,t){const r=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e)),a=await super.createAll(e,r);return JSON.stringify(a.map(e=>this.serialize(e)))}}c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"create",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"read",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"update",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"delete",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"deleteAll",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"readAll",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"updateAll",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String]),c.__metadata("design:returntype",Promise)],D.prototype,"statement",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String]),c.__metadata("design:returntype",Promise)],D.prototype,"listBy",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String,String]),c.__metadata("design:returntype",Promise)],D.prototype,"paginateBy",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String]),c.__metadata("design:returntype",Promise)],D.prototype,"findOneBy",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"init",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"healthcheck",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"createAll",null);let M=class extends n.BaseModel{constructor(e){super(e)}};c.__decorate([n.pk({type:String}),c.__metadata("design:type",String)],M.prototype,"name",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",String)],M.prototype,"owner",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",String)],M.prototype,"symbol",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",Number)],M.prototype,"decimals",void 0),M=c.__decorate([n.table("erc20_tokens"),t.model(),c.__metadata("design:paramtypes",[Object])],M);let $=class extends n.BaseModel{constructor(e){super(e)}};c.__decorate([n.pk({type:String}),c.__metadata("design:type",String)],$.prototype,"id",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",String)],$.prototype,"token",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",Number)],$.prototype,"balance",void 0),c.__decorate([n.column(),c.__metadata("design:type",String)],$.prototype,"captive",void 0),$=c.__decorate([n.table("erc20_wallets"),t.model(),c.__metadata("design:paramtypes",[Object])],$);let F=class extends n.BaseModel{constructor(e){super(e)}};c.__decorate([n.pk({type:String}),n.column(),t.required(),c.__metadata("design:type",String)],F.prototype,"owner",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",String)],F.prototype,"spender",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",Number)],F.prototype,"value",void 0),F=c.__decorate([n.table("erc20_allowances"),t.model(),c.__metadata("design:paramtypes",[Object])],F);class q extends I{constructor(e){super(e,$),q.adapter=q.adapter||new E,this.walletRepository=h.forModel($,q.adapter.alias),this.tokenRepository=h.forModel(M,q.adapter.alias),this.allowanceRepository=h.forModel(F,q.adapter.alias)}async TokenName(e){const{ctx:t}=await this.logCtx([e],this.TokenName);await this.CheckInitialized(t);const r=this.tokenRepository.select();return(await r.execute(t))[0].name}async Symbol(e){const{ctx:t}=await this.logCtx([e],this.TokenName);await this.CheckInitialized(t);const r=this.tokenRepository.select();return(await r.execute(t))[0].symbol}async Decimals(e){const{ctx:t}=await this.logCtx([e],this.TokenName);await this.CheckInitialized(t);const r=this.tokenRepository.select();return(await r.execute(t))[0].decimals}async TotalSupply(e){const{ctx:t}=await this.logCtx([e],this.TokenName);await this.CheckInitialized(t);const r=this.walletRepository.select(),n=await r.execute(t);if(0==n.length)throw new a.NotFoundError(`The token ${this.getName()} does not exist`);let i=0;return n.forEach(e=>{i+=e.balance}),i}async BalanceOf(e,t){const{ctx:r}=await this.logCtx([e],this.TokenName);return await this.CheckInitialized(r),(await this.walletRepository.read(t,r)).balance}async Transfer(e,t,r){const{ctx:n}=await this.logCtx([e],this.Transfer);await this.CheckInitialized(n);const i=n.identity.getID();if(!await this._transfer(i,t,r,n))throw new a.InternalError("Failed to transfer");return!0}async TransferFrom(e,t,r,n){const{ctx:i}=await this.logCtx([e],this.BurnFrom);await this.CheckInitialized(i);const o=i.identity.getID(),s=await this._getAllowance(t,o,i);if(!s||0>s.value)throw new x(`spender ${o} has no allowance from ${t}`);const c=s.value;if(n>c)throw new b("The spender does not have enough allowance to spend.");const l=R(c,n),d=Object.assign({},s,{value:l});if(await this.allowanceRepository.update(d,i),!await this._transfer(t,r,n,i))throw new a.InternalError("Failed to transfer");return!0}async _transfer(e,t,r,i){const o=i.logger;if(e===t)throw new n.AuthorizationError("cannot transfer to and from same client account");if(0>r)throw new b("transfer amount cannot be negative");const s=await this.walletRepository.read(e,i),c=s.balance;if(r>c)throw new b(`client account ${e} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(t,i)}catch(e){if(!(e instanceof a.BaseError))throw new a.InternalError(e);if(404!==e.code)throw new a.InternalError(e.message);l=new $({id:t,balance:0,token:await this.TokenName(i)}),d=!0}const u=l.balance,p=R(c,r),g=z(u,r),h=Object.assign({},s,{balance:p});await this.walletRepository.update(h,i);const y=Object.assign({},l,{balance:g});d?await this.walletRepository.create(y,i):await this.walletRepository.update(y,i);const m={from:e,to:t,value:r};return this.repo.refresh(M,O.TRANSFER,"",m,i).catch(e=>o.error("Failed to notify transfer: "+e)),!0}async Approve(e,t,r){const{ctx:a,ctxArgs:n}=await this.logCtx([e],this.Approve);await this.CheckInitialized(a);const i=a.identity.getID();let o=await this._getAllowance(i,t,a);if((await this.walletRepository.read(i,...n)).balance<r)throw new b(`client account ${i} has insufficient funds.`);o?(o.value=r,await this.allowanceRepository.update(o,...n)):(o=new F({owner:i,spender:t,value:r}),await this.allowanceRepository.create(o,...n));const s={owner:i,spender:t,value:r};return this.repo.refresh(M,O.APPROVAL,"",s,a),!0}async Allowance(e,t,r){const{ctx:a}=await this.logCtx([e],this.Allowance);await this.CheckInitialized(a);const n=await this._getAllowance(t,r,a);if(!n)throw new x(`spender ${r} has no allowance from ${t}`);return n.value}async _getAllowance(e,t,r){const a=n.Condition.and(n.Condition.attribute("owner").eq(e),n.Condition.attribute("spender").eq(t)),i=await this.allowanceRepository.select().where(a).execute(r);return i?.[0]}async Initialize(e,t){const{ctx:r}=await this.logCtx([e],this.Initialize);if((await this.tokenRepository.select().execute(r)).length>0)throw new n.AuthorizationError("contract options are already set, client is not authorized to change them");return t.owner=r.identity.getID(),await this.tokenRepository.create(t,r),!0}async CheckInitialized(e){const{ctx:t}=await this.logCtx([e],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(t)).length)throw new S("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(e,t){const{ctx:r}=await this.logCtx([e],this.Mint);await this.CheckInitialized(r);const n=r.identity.getID();if(0>=t)throw new a.ValidationError("mint amount must be a positive integer");let i;try{i=await this.walletRepository.read(n,r);const e=z(i.balance,t),a=Object.assign({},i,{balance:e});await this.walletRepository.update(a,r)}catch(i){if(!(i instanceof a.BaseError))throw new a.InternalError(i);if(404!==i.code)throw new a.InternalError(i.message);{const a=new $({id:n,balance:t,token:await this.TokenName(e)});await this.walletRepository.create(a,r)}}const o={from:"0x0",to:n,value:t};this.repo.ObserverHandler().updateObservers(M,O.TRANSFER,"",o,r)}async Burn(e,t){const{log:r,ctx:a}=await this.logCtx([e],this.Burn);await this.CheckInitialized(a);const n=a.identity.getID(),i=await this.walletRepository.read(n,a),o=i.balance;if(t>o)throw new b("Minter has insufficient funds.");const s=R(o,t),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,a),r.info(t+" tokens were burned");const l={from:n,to:"0x0",value:t};this.repo.ObserverHandler().updateObservers(M,O.TRANSFER,"",l,a)}async BurnFrom(e,t,r){const{log:a,ctx:n}=await this.logCtx([e],this.BurnFrom);await this.CheckInitialized(n);const i=await this.walletRepository.read(t,n),o=i.balance;if(r>o)throw new b(t+" has insufficient funds.");const s=R(o,r),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,n),a.info(`${r} tokens were burned from ${t}`);const l={from:t,to:"0x0",value:r};this.repo.ObserverHandler().updateObservers(M,O.TRANSFER,"",l,n)}async ClientAccountBalance(e){const{ctx:t}=await this.logCtx([e],this.TokenName);await this.CheckInitialized(t);const r=t.identity.getID(),a=await this.walletRepository.read(r,t);if(!a)throw new b(`The account ${r} does not exist`);return a.balance}async ClientAccountID(e){const{ctx:t}=await this.logCtx([e],this.ClientAccountID);return await this.CheckInitialized(t),t.identity.getID()}}c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"TokenName",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"Symbol",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"Decimals",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"TotalSupply",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],q.prototype,"BalanceOf",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Transfer",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"TransferFrom",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Approve",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String]),c.__metadata("design:returntype",Promise)],q.prototype,"Allowance",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,M]),c.__metadata("design:returntype",Promise)],q.prototype,"Initialize",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"CheckInitialized",null),c.__decorate([B(),o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Mint",null),c.__decorate([B(),o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Burn",null),c.__decorate([B(),o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"BurnFrom",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"ClientAccountBalance",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"ClientAccountID",null);const L=[q];class j extends s.MiniLogger{constructor(e,t,r){super(e,t),r?(this.logger=r.logging.getLogger(e),r.logging.setLevel(t?.level||s.Logging.getConfig().level)):this.logger=new s.MiniLogger(e,t)}log(e,t,r){if(s.NumericLogLevels[this.config("level")]<s.NumericLogLevels[e])return;let n;switch(e){case s.LogLevel.benchmark:n=this.logger.verbose;break;case s.LogLevel.info:n=this.logger.info;break;case s.LogLevel.verbose:n=this.logger.verbose;break;case s.LogLevel.debug:n=this.logger.debug;break;case s.LogLevel.error:n=this.logger.error;break;case s.LogLevel.trace:n=this.logger.trace;break;case s.LogLevel.warn:n=this.logger.warn;break;case s.LogLevel.silly:n=this.logger.silly;break;default:throw new a.InternalError("Invalid log level")}n.call(this.logger,this.createLog(e,t,r))}}s.Logging.setFactory((e,t,r)=>new j(e||j.name,t||{},r));const K="##VERSION##",J="##PACKAGE##";r.Metadata.registerLibrary(J,K),e.ContractLogger=j,e.FabricContractAdapter=E,e.FabricContractContext=p,e.FabricContractPaginator=_,e.FabricContractRepository=h,e.FabricContractRepositoryObservableHandler=g,e.FabricCrudContract=I,e.FabricStatement=y,e.PACKAGE_NAME=J,e.SerializedCrudContract=D,e.VERSION=K,e.contracts=L,e.createdByOnFabricCreateUpdate=v,e.pkFabricOnCreate=async function(e,r,n,i){if(!r.type||i[n])return;let o;r.name||(r.name=t.Model.sequenceName(i,"pk"));try{o=await this.adapter.Sequence(r)}catch(e){throw new a.InternalError(`Failed to instantiate Sequence ${r.name}: ${e}`)}const s=await o.next(e);Object.defineProperty(i,n,{enumerable:!0,writable:!1,configurable:!0,value:s})}},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decorator-validation"),require("@decaf-ts/decoration"),require("@decaf-ts/db-decorators"),require("@decaf-ts/core"),require("@decaf-ts/for-couchdb"),require("fabric-contract-api"),require("@decaf-ts/logging"),require("tslib")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decorator-validation","@decaf-ts/decoration","@decaf-ts/db-decorators","@decaf-ts/core","@decaf-ts/for-couchdb","fabric-contract-api","@decaf-ts/logging","tslib"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-fabric"]={},e.decafTsDecoratorValidation,e.decafTsDecoration,e.decafTsDbDecorators,e.decafTsCore,e.decafTsForCouchdb,e.fabricContractApi,e.decafTsLogging,e.tslib);
1
+ var e,t;e=this,t=function(e,t,r,a,n,i,o,s,c){"use strict";var l,d;(e=>{e.PRIVATE="private",e.SHARED="shared",e.FABRIC="fabric.",e.OWNEDBY="owned-by",e.TRANSACTION_ID="transaction-id"})(l||(l={})),(e=>{e.X509="X.509"})(d||(d={}));const u="hlf-fabric";t.Model.prototype.isShared=function(){return t.Model.isShared(this.constructor)},t.Model.prototype.isPrivate=function(){return t.Model.isPrivate(this.constructor)},t.Model.prototype.segregate=function(){return t.Model.segregate(this)},t.Model.segregate=(e=>{if(!t.Model.isTransient(e))return{model:e};const n=r.Metadata.validatableProperties(e.constructor),i=r.Metadata.get(e.constructor,a.DBKeys.TRANSIENT),o=r.Metadata.get(e.constructor,l.PRIVATE),s=r.Metadata.get(e.constructor,l.PRIVATE),c={model:{},transient:{},private:{},shared:{}},d=Object.keys(i),u=Object.keys(o),p=Object.keys(s);for(const t of n){const r=d.includes(t),a=u.includes(t),n=p.includes(t);r?(c.transient=c.transient||{},c.transient[t]=e[t],a&&(c.private=c.private||{},c.private[t]=e[t]),n&&(c.shared=c.shared||{},c.shared[t]=e[t])):(c.model=c.model||{},c.model[t]=e[t])}return c.model=t.Model.build(c.model,e.constructor.name),c}).bind(t.Model),t.Model.tableName=e=>{const a=e instanceof t.Model?e.constructor:e;return r.Metadata.get(a,n.PersistenceKeys.TABLE)||(e instanceof t.Model?e.constructor.name:e.name)},t.Model.isPrivate=(e=>!!r.Metadata.get("function"!=typeof e?e.constructor:e,l.PRIVATE)).bind(t.Model),r.Metadata.isShared=(e=>!!r.Metadata.get("function"!=typeof e?e.constructor:e,l.SHARED)).bind(r.Metadata);class p extends n.Context{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("identity")}toString(){return"fabric ctx"+(this.stub?" with stub":"without stub")}}class g extends n.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){const{log:i,ctx:o}=n.Adapter.logCtx(this.updateObservers,t,!1,...a),{stub:s}=o,[c,l]=a,d="string"==typeof e?e:e.name;if(-1!==this.supportedEvents.indexOf(t)){i.debug(`Emitting ${t} event`);const e=((e,t,r)=>{const a=[e,t];return r&&a.push(r),a.join("_")})(d,t,c);s.setEvent(e,Buffer.from(JSON.stringify({id:r})))}else s.setEvent(t,Buffer.from(JSON.stringify(l)))}}class h extends n.Repository{constructor(e,t,r){super(e,t),this.trackedEvents=r,this._overrides=Object.assign({},super._overrides,{ignoreValidation:!1,ignoreHandlers:!1,allowRawStatements:!0,forcePrepareSimpleQueries:!1,forcePrepareComplexQueries:!1})}async paginateBy(e,r,a={offset:1,limit:10},...i){let{offset:o,bookmark:s,limit:c}=a;if(!o&&!s)throw new n.QueryError("PaginateBy needs a page or a bookmark");const{log:l,ctxArgs:d}=(await this.logCtx(i,n.PreparedStatementKeys.PAGE_BY,!0)).for(this.paginateBy);let u;if(l.verbose(`paginating ${t.Model.tableName(this.class)} with page size ${c}`),s)u=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().where(this.attr(t.Model.pk(this.class)).gt(s)).orderBy([e,r]).paginate(c,...d),o=1;else{if(!o)throw new n.QueryError("PaginateBy needs a page or a bookmark");u=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().orderBy([e,r]).paginate(c,...d)}const p=await u.page(o,s,...d);return u.serialize(p)}async statement(e,...t){const{log:r,ctx:i,ctxArgs:o}=(await this.logCtx(t,n.PersistenceKeys.STATEMENT,!0)).for(this.statement);if(!n.Repository.statements(this,e))throw new n.QueryError("Invalid prepared statement requested "+e);let s;i.logger&&i.logger.info(`Repo statement: ${e} + ${t}`),r.verbose(`Executing prepared statement ${e} with args ${o}`);try{s=await this[e](...o)}catch(t){if(t instanceof a.BaseError)throw t;throw new a.InternalError(`Failed to execute prepared statement ${e} with args ${o}: ${t}`)}return s}ObserverHandler(){return new g}async updateObservers(e,t,r,...a){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(t))return await super.updateObservers(e,t,r,...a)}}class y extends i.CouchDBStatement{constructor(e){super(e)}async executionPrefix(e,...t){const r=t.filter(Boolean);if(t.length!==r.length)throw new a.InternalError(`Received an undefined in the paginator for ${e}: ${t}`);return super.executionPrefix(e,...t)}async raw(e,...n){const{ctx:i}=this.logCtx(n,this.raw),o=await this.adapter.raw(e,!0,i),s=t.Model.pk(this.fromSelector),c=r.Metadata.get(this.fromSelector,r.Metadata.key(a.DBKeys.ID,s))?.type;return this.selectSelector?o:o.map(e=>this.processRecord(e,s,c,i))}build(){const e={};e[i.CouchDBKeys.TABLE]={},e[i.CouchDBKeys.TABLE]=t.Model.tableName(this.fromSelector);const r={selector:e};if(this.selectSelector&&(r.fields=this.selectSelector),this.whereCondition){const e=this.parseCondition(n.Condition.and(this.whereCondition,n.Condition.attribute(i.CouchDBKeys.TABLE).eq(r.selector[i.CouchDBKeys.TABLE]))).selector,t=Object.keys(e);if(1===t.length&&-1!==Object.values(i.CouchDBGroupOperator).indexOf(t[0]))switch(t[0]){case i.CouchDBGroupOperator.AND:e[i.CouchDBGroupOperator.AND]=[...Object.values(e[i.CouchDBGroupOperator.AND]).reduce((e,t)=>{const r=Object.keys(t);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const a=r[0];return a===i.CouchDBGroupOperator.AND?e.push(...t[a]):e.push(t),e},[])],r.selector=e;break;case i.CouchDBGroupOperator.OR:{const t={};t[i.CouchDBGroupOperator.AND]=[e,...Object.entries(r.selector).map(([e,t])=>{const r={};return r[e]=t,r})],r.selector=t;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,t]=this.orderBySelector,a={};a[e]=t,r.sort.push(a),r.selector[e]||(r.selector[e]={},r.selector[e][i.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(r.limit=this.limitSelector),this.offsetSelector&&(r.skip=this.offsetSelector),r}}class m extends n.Sequence{constructor(e,t){super(e,t)}async current(...e){const{ctx:t,log:r}=(await this.logCtx(e,a.OperationKeys.READ,!0)).for(this.current),{name:n,startWith:i}=this.options;try{const e=await this.repo.read(n,t);return this.parse(e.current)}catch(e){if(e instanceof a.NotFoundError){let e;try{r.debug(`Trying to resolve current sequence ${n} value from context`),e=t.get(n),r.debug(`Retrieved cached current value for sequence ${n}: ${e}`)}catch(t){r.info(`No cached value for sequence ${n} in context`),e=i}try{return this.parse(e)}catch(e){throw new a.InternalError(`Failed to parse initial value for sequence ${i}: ${e}`)}}throw new a.InternalError(`Failed to retrieve current value for sequence ${n}: ${e}`)}}async increment(e,t){const r=t.logger.for(this.increment),{type:i,incrementBy:o,name:s}=this.options;if(!s)throw new a.InternalError("Sequence name is required");return r.info("Obtaining sequence lock for sequence "+s),m.lock.execute(async()=>{const c=e||o;if(c%o!==0)throw new a.InternalError("Value to increment does not consider the incrementBy setting: "+o);const l="function"==typeof i&&i?.name?i.name:i,d=await this.current(t);async function u(e){return e instanceof Promise&&(e=await e),r.for(u).info(`Storing new ${s} seq value in cache: ${e.current}`),t.cache.put(s,e.current),e}const p=async e=>{try{return await u(this.repo.update(new n.SequenceModel({id:s,current:e}),t))}catch(i){if(i instanceof a.NotFoundError)return r.debug(`Sequence create ${s} current=${d} next=${e}`),u(this.repo.create(new n.SequenceModel({id:s,current:e}),t));throw i}};if("uuid"===l)for(;;){const e=n.UUID.instance.generate(d);try{const t=await p(e);return r.debug(`Sequence uuid increment ${s} current=${d} next=${e}`),t.current}catch(e){if(e instanceof a.ConflictError)continue;throw e}}const g=(e=>{switch(l){case Number.name:return this.parse(e)+c;case BigInt.name:return this.parse(e)+BigInt(c);case String.name:return this.parse(e);case"serial":return n.Serial.instance.generate(e);default:throw new a.InternalError("Should never happen")}})(d),h=await p(g);return r.debug(`Sequence.increment ${s} current=${d} next=${g}`),h.current},s)}}class f extends t.JSONSerializer{constructor(){super()}deserialize(e,t){return JSON.parse(e)}serialize(e,t=!0){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e,t)))}preSerialize(e,a=!0){const n=Object.assign({},e);let i;try{i=r.Metadata.modelName(e.constructor)}catch(e){i=void 0}function o(e){return"object"!=typeof e?e:Array.isArray(e)?e.map(o):this.preSerialize(e)}return a&&(n[t.ModelKeys.ANCHOR]=i||e.constructor.name),t.Model.relations(e).forEach(e=>{n[e]=o.call(this,n[e])}),n}}class _ extends i.CouchDBPaginator{constructor(e,t,r,a){super(e,t,r,a)}prepare(e){const t=Object.assign({},e);return t.limit&&(this.limit=t.limit),t.limit=this.size,t}async page(e=1,i,...o){const{ctxArgs:s,ctx:c,log:l}=this.adapter.logCtx([i,...o],this.page);if(this.isPreparedStatement())return await this.pagePrepared(e,...s);const d=Object.assign({},this.statement);if(this._recordCount&&this._totalPages)e=this.validatePage(e),d.skip=(e-1)*this.size;else{this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...d,limit:Number.MAX_VALUE},!0,...s)||[];if(this._recordCount=t.length,this._recordCount>0){const t=d?.limit||this.size;return this._totalPages=Math.ceil(this._recordCount/t),await this.page(e,...s)}}if(1!==e){if(!this._bookmark)throw new n.PagingError("No bookmark. Did you start in the first page?");d.bookmark=this._bookmark}const u=await this.adapter.raw(d,!0,...s),{docs:p,bookmark:g,warning:h}=u;if(h&&l.warn(h),!this.clazz)throw new n.PagingError("No statement target defined");const y=t.Model.pk(this.clazz),m=r.Metadata.get(this.clazz,r.Metadata.key(a.DBKeys.ID,y))?.type,f=d.fields&&d.fields.length?u:u.map(e=>this.adapter.revert(e,this.clazz,n.Sequence.parseValue(m,e[y]),void 0,c));return this._bookmark=g,this._currentPage=e,f}}class w extends a.InternalError{constructor(e){super(e,w.name)}}class b extends a.InternalError{constructor(e){super(e,b.name)}}class x extends a.InternalError{constructor(e){super(e,x.name)}}class C extends a.InternalError{constructor(e){super(e,C.name,500)}}class S extends a.BaseError{constructor(e){super(S.name,e,409)}}async function v(e,t,r,a){try{const t=e.get("identity");a[r]=t.getID()}catch(e){throw new n.UnsupportedError("No User found in context. Please provide a user in the context")}}class E extends i.CouchDBAdapter{getClient(){throw new n.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new f}get Context(){return p}repository(){return h}Paginator(e,t,r){return new _(this,e,t,r)}async Sequence(e){return new m(e,this)}constructor(e,t){super(e,u,t)}for(e,...t){return super.for(e,...t)}async create(e,r,a,...n){const{ctx:i,log:o}=this.logCtx(n,this.create);o.info("in ADAPTER create with args "+n);const s=t.Model.tableName(e);try{o.info(`adding entry to ${s} table with pk ${r}`);const e=i.stub.createCompositeKey(s,[r+""]);a=await this.putState(e,a,i)}catch(e){throw this.parseError(e)}return a}async read(e,r,...a){const{ctx:n,log:i}=this.logCtx(a,this.read);i.info("in ADAPTER read with args "+a);const o=t.Model.tableName(e);let s;try{const e=n.stub.createCompositeKey(o,[r+""]);s=await this.readState(e,n)}catch(e){throw this.parseError(e)}return s}async update(e,r,a,...n){const{ctx:i,log:o}=this.logCtx(n,this.update),s=t.Model.tableName(e);try{o.verbose(`updating entry to ${s} table with pk ${r}`);const e=i.stub.createCompositeKey(s,[r+""]);a=await this.putState(e,a,i)}catch(e){throw this.parseError(e)}return a}async delete(e,r,...a){const{ctx:n,log:i,ctxArgs:o}=this.logCtx(a,this.delete),s=t.Model.tableName(e);let c;try{const t=n.stub.createCompositeKey(s,[r+""]);c=await this.read(e,r,...o),i.verbose(`deleting entry with pk ${r} from ${s} table`),await this.deleteState(t,n)}catch(e){throw this.parseError(e)}return c}async deleteState(e,t){const{ctx:r}=this.logCtx([t],this.deleteState);await r.stub.deleteState(e)}forPrivate(e){const t=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map(e=>e.name);return new Proxy(this,{get:(r,n,i)=>t.includes(n)?new Proxy(r[n],{async apply(t,r,i){switch(n){case"putState":{const[t,r,a]=i;return await t.putPrivateData(e,r.toString(),a),a}case"deleteState":{const[t,r]=i;return t.deletePrivateData(e,r)}case"readState":{const[t,r]=i;return t.getPrivateData(e,r)}case"queryResult":{const[t,r]=i;return t.getPrivateDataQueryResult(e,r)}case"queryResultPaginated":{const[t,r,a,n]=i,o=await t.getPrivateDataQueryResult(e,r),s=[];let c=0,l=!n,d=null;for(;;){const e=await o.next();if(e.value&&e.value.value.toString()){const t=e.value.key,r=e.value.value.toString("utf8");if(!l){t===n?.toString()&&(l=!0);continue}if(s.push({Key:t,Record:JSON.parse(r)}),d=t,c++,c>=a)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:d}}}if(e.done)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:""}}}}default:throw new a.InternalError("Unsupported method override "+n)}}}):Reflect.get(r,n,i)})}async putState(e,t,r){let n;const{log:i}=this.logCtx([r],this.putState);try{n=Buffer.from(E.serializer.serialize(t,!1))}catch(t){throw new a.SerializationError(`Failed to serialize record with id ${e}: ${t}`)}const o=r.get("segregated");return o?await r.stub.putPrivateData(o,e.toString(),n):await r.stub.putState(e.toString(),n),i.silly(`state stored${o?` in ${o} collection`:""} under id ${e}`),t}async readState(e,t){let r;const{log:n}=this.logCtx([t],this.readState);let i;const o=t.get("segregated");if(i=o?(await t.stub.getPrivateData(o,e.toString())).toString():(await t.stub.getState(e.toString())).toString(),!i)throw new a.NotFoundError(`Record with id ${e}${o?` in ${o} collection`:""} not found`);n.silly(`state retrieved from${o?` ${o} collection`:""} under id ${e}`);try{r=E.serializer.deserialize(i.toString())}catch(e){throw new a.SerializationError("Failed to parse record: "+e)}return r}async queryResult(e,t,...r){const{ctx:a}=this.logCtx(r,this.queryResult);let n;const i=a.get("segregated");return n=i?await a.stub.getPrivateDataQueryResult(i,JSON.stringify(t)):await e.getQueryResult(JSON.stringify(t)),n}async queryResultPaginated(e,t,r=250,a,...n){const{ctx:i}=this.logCtx(n,this.readState);let o;const s=i.get("segregated");return s?(t.selector={...t.selector,_id:a?{$gt:a.toString()}:{$gte:""}},o={iterator:await e.getPrivateDataQueryResult(s,JSON.stringify(t)),metadata:{fetchedRecordsCount:r,bookmark:""}}):o=await e.getQueryResultWithPagination(JSON.stringify(t),r,a?.toString()),o}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 E.textDecoder.decode(e)}async flags(e,t,r){let a=Object.assign({segregated:!1},r);return r instanceof p||(r.stub?Object.assign(a,{stub:r.stub,identity:r.clientIdentity,cert:r.clientIdentity.getIDBytes().toString(),roles:r.clientIdentity.getAttributeValue("roles"),logger:s.Logging.for(e,{logLevel:!1,timestamp:!1,correlationId:r.stub.getTxID()},r),correlationId:r.stub.getTxID()}):a=Object.assign(a,r||{})),await super.flags(e,t,a)}index(e){return Promise.resolve(void 0)}async resultIterator(e,t,r=!1){const a=[];let n=await t.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let t={};if(e.debug(n.value.value.toString("utf8")),r){t.TxId=n.value.txId,t.Timestamp=n.value.timestamp;try{t.Value=JSON.parse(n.value.value.toString("utf8"))}catch(r){e.error(r),t.Value=n.value.value.toString("utf8")}}else try{t=JSON.parse(n.value.value.toString("utf8"))}catch(r){e.error(r),t=n.value.value.toString("utf8")}a.push(t)}n=await t.next()}return e.debug(`Closing iterator after ${a.length} results`),t.close(),a}async raw(e,t=!0,...r){const{log:a,ctx:n}=this.logCtx(r,this.raw),{skip:i,limit:o}=e;let s;o||i?(delete e.limit,delete e.skip,a.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${i}`),s=(await this.queryResultPaginated(n.stub,e,o||Number.MAX_VALUE,i?.toString(),n)).iterator):(a.debug("Retrieving iterator"),s=await this.queryResult(n.stub,e,n)),a.debug("Iterator acquired");const c=await this.resultIterator(a,s);return a.debug(`returning ${Array.isArray(c)?c.length:1} results`),c}Statement(){return new y(this)}async createAll(e,r,n,...i){if(r.length!==n.length)throw new a.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.createAll),c=t.Model.tableName(e);return o.debug(`Creating ${r.length} entries ${c} table`),Promise.all(r.map((t,r)=>this.create(e,t,n[r],...s)))}async updateAll(e,r,n,...i){if(r.length!==n.length)throw new a.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.updateAll),c=t.Model.tableName(e);return o.debug(`Updating ${r.length} entries ${c} table`),Promise.all(r.map((t,r)=>this.update(e,t,n[r],...s)))}prepare(e,...r){const{log:n}=this.logCtx(r,this.prepare),i=t.Model.tableName(e.constructor),o=t.Model.pk(e.constructor),s=t.Model.segregate(e),c=Object.entries(s.model).reduce((r,[n,i])=>{if(void 0===i)return r;const o=t.Model.columnName(e,n);if(this.isReserved(o))throw new a.InternalError(`Property name ${o} is reserved`);return r[o]=i,r},{});return n.silly(`Preparing record for ${i} table with pk ${e[o]}`),{record:c,id:e[o],transient:s.transient}}revert(e,r,n,i,...o){const{log:s}=this.logCtx(o,this.revert),c={};c[t.Model.pk(r)]=n;const l="string"==typeof r?t.Model.build(c,r):new r(c);s.silly(`Rebuilding model ${l.constructor.name} id ${n}`);const d=Object.keys(l).reduce((r,a)=>(r[a]=e[t.Model.columnName(r,a)],r),l);return i&&(s.debug("re-adding transient properties: "+Object.keys(i).join(", ")),Object.entries(i).forEach(([e,t])=>{if(e in d&&void 0!==d[e])throw new a.InternalError(`Transient property ${e} already exists on model ${l.constructor.name}. should be impossible`);d[e]=t})),d}createPrefix(e,r,a,...n){const{ctxArgs:o}=this.logCtx(n,this.createPrefix),s={};return s[i.CouchDBKeys.TABLE]=t.Model.tableName(e),Object.assign(s,a),[e,r,s,...o]}updatePrefix(e,r,a,...n){const{ctxArgs:o}=this.logCtx(n,this.updatePrefix),s={};return s[i.CouchDBKeys.TABLE]=t.Model.tableName(e),Object.assign(s,a),[e,r,s,...o]}createAllPrefix(e,r,n,...o){if(r.length!==n.length)throw new a.InternalError("Ids and models must have the same length");const s=o.pop(),c=r.map((r,a)=>{const o={};return o[i.CouchDBKeys.TABLE]=t.Model.tableName(e),Object.assign(o,n[a]),o});return[e,r,c,s]}updateAllPrefix(e,r,n,...o){if(r.length!==n.length)throw new a.InternalError("Ids and models must have the same length");const s=o.pop(),c=r.map((r,a)=>{const o={};return o[i.CouchDBKeys.TABLE]=t.Model.tableName(e),Object.assign(o,n[a]),o});return[e,r,c,s]}parseError(e,t){return E.parseError(t||e)}logCtx(e,t,r=!1,n){return r?super.logCtx.call(this,e,t,r,n).then(e=>{if(!(e.ctx instanceof p))throw new a.InternalError("Invalid context binding");if(!e.ctx.stub)throw new a.InternalError("Missing Stub");if(!e.ctx.identity)throw new a.InternalError("Missing Identity");return Object.assign(e,{stub:e.ctx.stub,identity:e.ctx.identity})}):super.logCtx(e,t,r,n)}static parseError(e){const t="string"==typeof e?e:e.message;return t.includes(a.NotFoundError.name)?new a.NotFoundError(e):t.includes(a.ConflictError.name)?new a.ConflictError(e):t.includes(a.BadRequestError.name)?new a.BadRequestError(e):t.includes(n.QueryError.name)?new n.QueryError(e):t.includes(n.PagingError.name)?new n.PagingError(e):t.includes(n.UnsupportedError.name)?new n.UnsupportedError(e):t.includes(n.MigrationError.name)?new n.MigrationError(e):t.includes(n.ObserverError.name)?new n.ObserverError(e):t.includes(n.AuthorizationError.name)?new n.AuthorizationError(e):t.includes(n.ForbiddenError.name)?new n.ForbiddenError(e):t.includes(n.ConnectionError.name)?new n.ConnectionError(e):t.includes(a.SerializationError.name)?new a.SerializationError(e):t.includes("no ledger context")?new C("No context found. this can be caused by debugging: "+t):new a.InternalError(e)}static decoration(){super.decoration(),r.Decoration.flavouredAs(u).for(n.PersistenceKeys.CREATED_BY).define(a.onCreate(v),r.propMetadata(n.PersistenceKeys.CREATED_BY,{})).apply(),r.Decoration.flavouredAs(u).for(n.PersistenceKeys.UPDATED_BY).define(a.onCreateUpdate(v),r.propMetadata(n.PersistenceKeys.UPDATED_BY,{})).apply(),r.Decoration.flavouredAs(u).for(n.PersistenceKeys.COLUMN).extend(o.Property()).apply(),r.Decoration.flavouredAs(u).for(t.ValidationKeys.DATE).extend(()=>(e,t)=>{o.Property(t,"string:date")(e,t)}),r.Decoration.flavouredAs(u).for(n.PersistenceKeys.TABLE).extend(e=>{const t=[];let a="function"==typeof e?r.Metadata.constr(e):r.Metadata.constr(e.constructor);for(;a&&a!==Object&&a.prototype;)t.push(a),a=Object.getPrototypeOf(a);for(;t.length>0;){const e=t.pop();o.Object()(e)}return o.Object()(e)}).apply()}}E.decoration(),n.Adapter.setCurrent(u);class A extends t.JSONSerializer{constructor(){super()}preSerialize(e){const a=Object.assign({},e);let n;try{n=r.Metadata.modelName(e.constructor)}catch(e){n=void 0}a[t.ModelKeys.ANCHOR]=n||e.constructor.name;const i=function e(t){const r=this;return"object"!=typeof t?t:Array.isArray(t)?t.map(t=>e.call(r,t)):this.preSerialize.call(this,t)}.bind(this);return t.Model.relations(e).forEach(e=>{a[e]=i(a[e])}),a}deserialize(e){const r=JSON.parse(e),a=r[t.ModelKeys.ANCHOR];if(!a)throw Error("Could not find class reference in serialized model");return t.Model.build(r,a)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}}var O;(e=>{e.TRANSFER="Transfer",e.APPROVAL="Approval"})(O||(O={}));let k=class extends t.Model{constructor(e){super(e)}};c.__decorate([r.description("Stores the original timestamp of creation"),n.column(),n.createdAt(),c.__metadata("design:type",Date)],k.prototype,"createdAt",void 0),c.__decorate([r.description("Stores the timestamp of the last update"),n.column(),n.updatedAt(),c.__metadata("design:type",Date)],k.prototype,"updatedAt",void 0),c.__decorate([r.description("Stores the version of the model"),n.column(),a.version(),c.__metadata("design:type",Number)],k.prototype,"version",void 0),k=c.__decorate([r.uses(u),c.__metadata("design:paramtypes",[Object])],k);let P=class extends k{constructor(e){super(e)}};c.__decorate([r.description("Stores the creator"),n.column(),n.createdBy(),c.__metadata("design:type",String)],P.prototype,"createdBy",void 0),c.__decorate([r.description("Stores the user that last updated the model"),n.column(),n.updatedBy(),c.__metadata("design:type",String)],P.prototype,"updatedBy",void 0),P=c.__decorate([r.uses(u),c.__metadata("design:paramtypes",[Object])],P);let T=class extends n.BaseModel{constructor(e){super(e)}};c.__decorate([r.description("Unique identifier of the credentials record"),n.column(),n.pk(),c.__metadata("design:type",String)],T.prototype,"id",void 0),c.__decorate([r.description("PEM-encoded X.509 certificate for the identity"),n.column(),t.required(),c.__metadata("design:type",String)],T.prototype,"certificate",void 0),c.__decorate([r.description("PEM-encoded root or intermediate certificate"),n.column(),t.required(),c.__metadata("design:type",String)],T.prototype,"rootCertificate",void 0),c.__decorate([r.description("PEM-encoded private key"),n.column(),t.required(),c.__metadata("design:type",String)],T.prototype,"privateKey",void 0),T=c.__decorate([t.model(),c.__metadata("design:paramtypes",[Object])],T);let N=class extends n.BaseModel{constructor(e){super(e),this.type=d.X509}};function B(){return function(e,t,r){const i=r.value;return r.value=async function(...e){const r=e[0],o=r.clientIdentity.getID(),s=await this.tokenRepository.select(),c=await s.execute(r);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!=o)throw new n.AuthorizationError(`User not authorized to run ${t} on the token`);return await i.apply(this,e)},r}}function z(e,t){const r=e+t;if(e!==r-t||t!==r-e)throw new w(`Addition overflow: ${e} + ${t}`);return r}function R(e,t){const r=e-t;if(e!==r+t||t!==e-r)throw new w(`Subtraction overflow: ${e} - ${t}`);return r}c.__decorate([r.description("Unique identifier of the identity"),n.pk(),c.__metadata("design:type",String)],N.prototype,"id",void 0),c.__decorate([n.oneToOne(T,{update:n.Cascade.CASCADE,delete:n.Cascade.CASCADE}),c.__metadata("design:type",T)],N.prototype,"credentials",void 0),c.__decorate([n.column(),t.required(),n.index(),c.__metadata("design:type",String)],N.prototype,"mspId",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",String)],N.prototype,"type",void 0),N=c.__decorate([t.model(),c.__metadata("design:paramtypes",[Object])],N),o.Object()(Date);class I extends o.Contract{static{this.adapter=new E}static{this.serializer=new A}constructor(e,t){super(e),this.clazz=t,this.initialized=!1,this.repo=n.Repository.forModel(t)}async listBy(e,t,r,...a){const{ctxArgs:i,log:o}=(await this.logCtx([...a,e],n.PreparedStatementKeys.LIST_BY,!0)).for(this.listBy);return o.info(`Running listBy key ${t}, order ${r} and args ${i}`),this.repo.listBy(t,r,...i)}async paginateBy(e,t,r,a={offset:1,limit:10},...i){const{ctxArgs:o,log:s}=(await this.logCtx([...i,e],n.PreparedStatementKeys.PAGE_BY,!0)).for(this.paginateBy);return s.info(`Running paginateBy key ${t}, order ${r} with size ${a.limit} and args ${o}`),this.repo.paginateBy(t,r,a,...o)}async findOneBy(e,t,r,...a){const{ctxArgs:i,log:o}=(await this.logCtx([...a,e],n.PreparedStatementKeys.FIND_ONE_BY,!0)).for(this.findOneBy);return o.info(`Running findOneBy key ${t}, value: ${r} with args ${i}`),this.repo.findOneBy(t,r,...i)}async statement(e,t,...r){const{ctxArgs:a,log:i}=(await this.logCtx([...r,e],n.PersistenceKeys.STATEMENT,!0)).for(this.statement);return i.info(`Running statement ${t} with args ${a}`),this.repo.statement(t,...a)}async create(e,r,...n){const{log:i,ctxArgs:o}=(await this.logCtx([...n,e],a.OperationKeys.CREATE,!0)).for(this.create);i.info("CONTRACT CREATE, "+o),"string"==typeof r&&(r=this.deserialize(r)),i.info("Creating model: "+JSON.stringify(r));const s=this.getTransientData(e);return i.info("Merging transient data..."),r=t.Model.merge(r,s,this.clazz),this.repo.create(r,...o)}async read(e,t,...r){const{log:n,ctxArgs:i}=(await this.logCtx([...r,e],a.OperationKeys.READ,!0)).for(this.create);return n.info(`reading entry with pk ${t} `),this.repo.read(t,...i)}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,r,...n){const{log:i,ctxArgs:o}=(await this.logCtx([...n,e],a.OperationKeys.UPDATE,!0)).for(this.update);"string"==typeof r&&(r=this.deserialize(r)),i.info("Updating model: "+JSON.stringify(r));const s=this.getTransientData(e);return i.info("Merging transient data..."),r=t.Model.merge(r,s,this.clazz),this.repo.update(r,...o)}async delete(e,t,...r){const{log:n,ctxArgs:i}=(await this.logCtx([...r,e],a.OperationKeys.DELETE,!0)).for(this.delete);return n.info(`deleting entry with pk ${t} `),this.repo.delete(t+"",...i)}async deleteAll(e,t,...r){const{ctxArgs:n}=(await this.logCtx([...r,e],a.BulkCrudOperationKeys.DELETE_ALL,!0)).for(this.deleteAll);return"string"==typeof t&&(t=JSON.parse(t)),this.repo.deleteAll(t,...n)}async readAll(e,t,...r){const{ctxArgs:n}=(await this.logCtx([...r,e],a.BulkCrudOperationKeys.READ_ALL,!0)).for(this.create);return"string"==typeof t&&(t=JSON.parse(t)),this.repo.readAll(t,...n)}async updateAll(e,t,...r){const{log:n,ctxArgs:i}=(await this.logCtx([...r,e],a.BulkCrudOperationKeys.UPDATE_ALL,!0)).for(this.updateAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),n.info(`updating ${t.length} entries to the table`),this.repo.updateAll(t,...i)}async query(e,t,r,a=n.OrderDirection.ASC,i,o,...s){const{ctxArgs:c}=(await this.logCtx([...s,e],n.PersistenceKeys.QUERY,!0)).for(this.create);return this.repo.query(t,r,a,i,o,...c)}async raw(e,t,r,...a){const{ctxArgs:n}=(await this.logCtx([...a,e],"raw",!0)).for(this.raw);return I.adapter.raw(t,r,...n)}serialize(e){return I.serializer.serialize(e)}deserialize(e){return I.serializer.deserialize(e)}async init(e){const{log:t,ctxArgs:r}=(await this.logCtx([e],n.PersistenceKeys.INITIALIZATION,!0)).for(this.init);t.info(`Running contract ${this.getName()} initialization...`),this.initialized=!0,t.info("Contract initialization completed.")}async healthcheck(e){const{log:t}=(await this.logCtx([e],"healthcheck",!0)).for(this.healthcheck);return t.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(e,t,...r){const{log:n,ctxArgs:i}=(await this.logCtx([...r,e],a.BulkCrudOperationKeys.CREATE_ALL,!0)).for(this.createAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),n.info(`adding ${t.length} entries to the table`),this.repo.createAll(t,...i)}logCtx(e,t,r=!1){const a=e.pop();if(!a||!a.stub)throw new C("No valid context provided...");const n=I.adapter.logCtx([this.clazz,...e],t,r,a);function i(e){return e.ctxArgs.shift(),e}return n instanceof Promise?n.then(i):i(n)}}class D extends I{constructor(e,t){super(e,t)}async create(e,t){return this.serialize(await super.create(e,t))}async read(e,t){return this.serialize(await super.read(e,t))}async update(e,t){return this.serialize(await super.update(e,t))}async delete(e,t){return this.serialize(await super.delete(e,t))}async deleteAll(e,t){const r=JSON.parse(t);return JSON.stringify((await super.deleteAll(e,r)).map(e=>this.serialize(e)))}async readAll(e,t){const r=JSON.parse(t);return JSON.stringify((await super.readAll(e,r)).map(e=>this.serialize(e)))}async updateAll(e,t){const r=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return JSON.stringify((await super.updateAll(e,r)).map(e=>this.serialize(e)))}async statement(e,t,r){try{r=JSON.parse(r)}catch(e){throw new a.SerializationError("Invalid args: "+e)}if(!Array.isArray(r))throw new a.SerializationError(`Invalid args: ${JSON.stringify(r)}. must be an array`);return JSON.stringify(await super.statement(e,t,...r))}async listBy(e,t,r){return JSON.stringify(await super.listBy(e,t,r))}async paginateBy(e,t,r,n){try{n=JSON.parse(n)}catch(e){throw new a.SerializationError("Failed to deserialize paginateBy reference: "+e)}return JSON.stringify(await super.paginateBy(e,t,r,n))}async findOneBy(e,t,r){return JSON.stringify(await super.findOneBy(e,t,r))}async query(e,t,r,i,o,s){let c;try{c=n.Condition.from(JSON.parse(t))}catch(e){throw new a.SerializationError("Invalid condition: "+e)}return JSON.stringify(await super.query(e,c,r,i,o,s))}async init(e){await super.init(e)}async healthcheck(e){return JSON.stringify(await super.healthcheck(e))}async createAll(e,t){const r=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e)),a=await super.createAll(e,r);return JSON.stringify(a.map(e=>this.serialize(e)))}}c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"create",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"read",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"update",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"delete",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"deleteAll",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"readAll",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"updateAll",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String]),c.__metadata("design:returntype",Promise)],D.prototype,"statement",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String]),c.__metadata("design:returntype",Promise)],D.prototype,"listBy",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String,String]),c.__metadata("design:returntype",Promise)],D.prototype,"paginateBy",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String]),c.__metadata("design:returntype",Promise)],D.prototype,"findOneBy",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"init",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"healthcheck",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"createAll",null);let M=class extends n.BaseModel{constructor(e){super(e)}};c.__decorate([n.pk({type:String}),c.__metadata("design:type",String)],M.prototype,"name",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",String)],M.prototype,"owner",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",String)],M.prototype,"symbol",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",Number)],M.prototype,"decimals",void 0),M=c.__decorate([n.table("erc20_tokens"),t.model(),c.__metadata("design:paramtypes",[Object])],M);let $=class extends n.BaseModel{constructor(e){super(e)}};c.__decorate([n.pk({type:String}),c.__metadata("design:type",String)],$.prototype,"id",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",String)],$.prototype,"token",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",Number)],$.prototype,"balance",void 0),c.__decorate([n.column(),c.__metadata("design:type",String)],$.prototype,"captive",void 0),$=c.__decorate([n.table("erc20_wallets"),t.model(),c.__metadata("design:paramtypes",[Object])],$);let F=class extends n.BaseModel{constructor(e){super(e)}};c.__decorate([n.pk({type:String}),n.column(),t.required(),c.__metadata("design:type",String)],F.prototype,"owner",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",String)],F.prototype,"spender",void 0),c.__decorate([n.column(),t.required(),c.__metadata("design:type",Number)],F.prototype,"value",void 0),F=c.__decorate([n.table("erc20_allowances"),t.model(),c.__metadata("design:paramtypes",[Object])],F);class L extends I{constructor(e){super(e,$),L.adapter=L.adapter||new E,this.walletRepository=h.forModel($,L.adapter.alias),this.tokenRepository=h.forModel(M,L.adapter.alias),this.allowanceRepository=h.forModel(F,L.adapter.alias)}async TokenName(e){const{ctx:t}=await this.logCtx([e],this.TokenName);await this.CheckInitialized(t);const r=this.tokenRepository.select();return(await r.execute(t))[0].name}async Symbol(e){const{ctx:t}=await this.logCtx([e],this.TokenName);await this.CheckInitialized(t);const r=this.tokenRepository.select();return(await r.execute(t))[0].symbol}async Decimals(e){const{ctx:t}=await this.logCtx([e],this.TokenName);await this.CheckInitialized(t);const r=this.tokenRepository.select();return(await r.execute(t))[0].decimals}async TotalSupply(e){const{ctx:t}=await this.logCtx([e],this.TokenName);await this.CheckInitialized(t);const r=this.walletRepository.select(),n=await r.execute(t);if(0==n.length)throw new a.NotFoundError(`The token ${this.getName()} does not exist`);let i=0;return n.forEach(e=>{i+=e.balance}),i}async BalanceOf(e,t){const{ctx:r}=await this.logCtx([e],this.TokenName);return await this.CheckInitialized(r),(await this.walletRepository.read(t,r)).balance}async Transfer(e,t,r){const{ctx:n}=await this.logCtx([e],this.Transfer);await this.CheckInitialized(n);const i=n.identity.getID();if(!await this._transfer(i,t,r,n))throw new a.InternalError("Failed to transfer");return!0}async TransferFrom(e,t,r,n){const{ctx:i}=await this.logCtx([e],this.BurnFrom);await this.CheckInitialized(i);const o=i.identity.getID(),s=await this._getAllowance(t,o,i);if(!s||0>s.value)throw new x(`spender ${o} has no allowance from ${t}`);const c=s.value;if(n>c)throw new b("The spender does not have enough allowance to spend.");const l=R(c,n),d=Object.assign({},s,{value:l});if(await this.allowanceRepository.update(d,i),!await this._transfer(t,r,n,i))throw new a.InternalError("Failed to transfer");return!0}async _transfer(e,t,r,i){const o=i.logger;if(e===t)throw new n.AuthorizationError("cannot transfer to and from same client account");if(0>r)throw new b("transfer amount cannot be negative");const s=await this.walletRepository.read(e,i),c=s.balance;if(r>c)throw new b(`client account ${e} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(t,i)}catch(e){if(!(e instanceof a.BaseError))throw new a.InternalError(e);if(404!==e.code)throw new a.InternalError(e.message);l=new $({id:t,balance:0,token:await this.TokenName(i)}),d=!0}const u=l.balance,p=R(c,r),g=z(u,r),h=Object.assign({},s,{balance:p});await this.walletRepository.update(h,i);const y=Object.assign({},l,{balance:g});d?await this.walletRepository.create(y,i):await this.walletRepository.update(y,i);const m={from:e,to:t,value:r};return this.repo.refresh(M,O.TRANSFER,"",m,i).catch(e=>o.error("Failed to notify transfer: "+e)),!0}async Approve(e,t,r){const{ctx:a,ctxArgs:n}=await this.logCtx([e],this.Approve);await this.CheckInitialized(a);const i=a.identity.getID();let o=await this._getAllowance(i,t,a);if((await this.walletRepository.read(i,...n)).balance<r)throw new b(`client account ${i} has insufficient funds.`);o?(o.value=r,await this.allowanceRepository.update(o,...n)):(o=new F({owner:i,spender:t,value:r}),await this.allowanceRepository.create(o,...n));const s={owner:i,spender:t,value:r};return this.repo.refresh(M,O.APPROVAL,"",s,a),!0}async Allowance(e,t,r){const{ctx:a}=await this.logCtx([e],this.Allowance);await this.CheckInitialized(a);const n=await this._getAllowance(t,r,a);if(!n)throw new x(`spender ${r} has no allowance from ${t}`);return n.value}async _getAllowance(e,t,r){const a=n.Condition.and(n.Condition.attribute("owner").eq(e),n.Condition.attribute("spender").eq(t)),i=await this.allowanceRepository.select().where(a).execute(r);return i?.[0]}async Initialize(e,t){const{ctx:r}=await this.logCtx([e],this.Initialize);if((await this.tokenRepository.select().execute(r)).length>0)throw new n.AuthorizationError("contract options are already set, client is not authorized to change them");return t.owner=r.identity.getID(),await this.tokenRepository.create(t,r),!0}async CheckInitialized(e){const{ctx:t}=await this.logCtx([e],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(t)).length)throw new S("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(e,t){const{ctx:r}=await this.logCtx([e],this.Mint);await this.CheckInitialized(r);const n=r.identity.getID();if(0>=t)throw new a.ValidationError("mint amount must be a positive integer");let i;try{i=await this.walletRepository.read(n,r);const e=z(i.balance,t),a=Object.assign({},i,{balance:e});await this.walletRepository.update(a,r)}catch(i){if(!(i instanceof a.BaseError))throw new a.InternalError(i);if(404!==i.code)throw new a.InternalError(i.message);{const a=new $({id:n,balance:t,token:await this.TokenName(e)});await this.walletRepository.create(a,r)}}const o={from:"0x0",to:n,value:t};this.repo.ObserverHandler().updateObservers(M,O.TRANSFER,"",o,r)}async Burn(e,t){const{log:r,ctx:a}=await this.logCtx([e],this.Burn);await this.CheckInitialized(a);const n=a.identity.getID(),i=await this.walletRepository.read(n,a),o=i.balance;if(t>o)throw new b("Minter has insufficient funds.");const s=R(o,t),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,a),r.info(t+" tokens were burned");const l={from:n,to:"0x0",value:t};this.repo.ObserverHandler().updateObservers(M,O.TRANSFER,"",l,a)}async BurnFrom(e,t,r){const{log:a,ctx:n}=await this.logCtx([e],this.BurnFrom);await this.CheckInitialized(n);const i=await this.walletRepository.read(t,n),o=i.balance;if(r>o)throw new b(t+" has insufficient funds.");const s=R(o,r),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,n),a.info(`${r} tokens were burned from ${t}`);const l={from:t,to:"0x0",value:r};this.repo.ObserverHandler().updateObservers(M,O.TRANSFER,"",l,n)}async ClientAccountBalance(e){const{ctx:t}=await this.logCtx([e],this.TokenName);await this.CheckInitialized(t);const r=t.identity.getID(),a=await this.walletRepository.read(r,t);if(!a)throw new b(`The account ${r} does not exist`);return a.balance}async ClientAccountID(e){const{ctx:t}=await this.logCtx([e],this.ClientAccountID);return await this.CheckInitialized(t),t.identity.getID()}}c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],L.prototype,"TokenName",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],L.prototype,"Symbol",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],L.prototype,"Decimals",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],L.prototype,"TotalSupply",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String]),c.__metadata("design:returntype",Promise)],L.prototype,"BalanceOf",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,Number]),c.__metadata("design:returntype",Promise)],L.prototype,"Transfer",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],L.prototype,"TransferFrom",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,Number]),c.__metadata("design:returntype",Promise)],L.prototype,"Approve",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,String]),c.__metadata("design:returntype",Promise)],L.prototype,"Allowance",null),c.__decorate([o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,M]),c.__metadata("design:returntype",Promise)],L.prototype,"Initialize",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],L.prototype,"CheckInitialized",null),c.__decorate([B(),o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,Number]),c.__metadata("design:returntype",Promise)],L.prototype,"Mint",null),c.__decorate([B(),o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,Number]),c.__metadata("design:returntype",Promise)],L.prototype,"Burn",null),c.__decorate([B(),o.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context,String,Number]),c.__metadata("design:returntype",Promise)],L.prototype,"BurnFrom",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],L.prototype,"ClientAccountBalance",null),c.__decorate([o.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[o.Context]),c.__metadata("design:returntype",Promise)],L.prototype,"ClientAccountID",null);const q=[L];class j extends s.MiniLogger{constructor(e,t,r){super(e,t),r?(this.logger=r.logging.getLogger(e),r.logging.setLevel(t?.level||s.Logging.getConfig().level)):this.logger=new s.MiniLogger(e,t)}log(e,t,r){if(s.NumericLogLevels[this.config("level")]<s.NumericLogLevels[e])return;let n;switch(e){case s.LogLevel.benchmark:n=this.logger.verbose;break;case s.LogLevel.info:n=this.logger.info;break;case s.LogLevel.verbose:n=this.logger.verbose;break;case s.LogLevel.debug:n=this.logger.debug;break;case s.LogLevel.error:n=this.logger.error;break;case s.LogLevel.trace:n=this.logger.trace;break;case s.LogLevel.warn:n=this.logger.warn;break;case s.LogLevel.silly:n=this.logger.silly;break;default:throw new a.InternalError("Invalid log level")}n.call(this.logger,this.createLog(e,t,r))}}s.Logging.setFactory((e,t,r)=>new j(e||j.name,t||{},r));const K="##VERSION##",J="##PACKAGE##";r.Metadata.registerLibrary(J,K),e.ContractLogger=j,e.FabricContractAdapter=E,e.FabricContractContext=p,e.FabricContractPaginator=_,e.FabricContractRepository=h,e.FabricContractRepositoryObservableHandler=g,e.FabricCrudContract=I,e.FabricStatement=y,e.PACKAGE_NAME=J,e.SerializedCrudContract=D,e.VERSION=K,e.contracts=q,e.createdByOnFabricCreateUpdate=v},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decorator-validation"),require("@decaf-ts/decoration"),require("@decaf-ts/db-decorators"),require("@decaf-ts/core"),require("@decaf-ts/for-couchdb"),require("fabric-contract-api"),require("@decaf-ts/logging"),require("tslib")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decorator-validation","@decaf-ts/decoration","@decaf-ts/db-decorators","@decaf-ts/core","@decaf-ts/for-couchdb","fabric-contract-api","@decaf-ts/logging","tslib"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-fabric"]={},e.decafTsDecoratorValidation,e.decafTsDecoration,e.decafTsDbDecorators,e.decafTsCore,e.decafTsForCouchdb,e.fabricContractApi,e.decafTsLogging,e.tslib);
2
2
  //# sourceMappingURL=for-fabric.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-fabric.cjs","sources":["../src/shared/constants.ts","../src/shared/overrides/overrides.ts","../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/contracts/FabricContractSequence.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/FabricContractPaginator.ts","../src/shared/errors.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/shared/erc20/erc20-constants.ts","../src/shared/model/FabricBaseModel.ts","../src/shared/model/FabricIdentifiedBaseModel.ts","../src/shared/model/IdentityCredentials.ts","../src/shared/model/Identity.ts","../src/shared/decorators.ts","../src/shared/math.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/contracts/erc20/models.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,null,null],"names":["FabricModelKeys","IdentityType","FabricFlavour","Model","prototype","isShared","this","constructor","isPrivate","segregate","model","isTransient","decoratedProperties","Metadata","validatableProperties","transientProps","get","DBKeys","TRANSIENT","privateProperties","PRIVATE","sharedProperties","result","transient","private","shared","transientKeys","Object","keys","privateKeys","sharedKeys","key","includes","build","name","bind","tableName","target","PersistenceKeys","TABLE","SHARED","FabricContractContext","Context","super","stub","timestamp","getDateTimestamp","identity","toString","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","clazz","event","id","args","log","ctx","Adapter","logCtx","owner","payload","table","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricContractRepository","Repository","adapter","trackedEvents","_overrides","assign","ignoreValidation","ignoreHandlers","allowRawStatements","forcePrepareSimpleQueries","forcePrepareComplexQueries","paginateBy","order","ref","offset","limit","bookmark","QueryError","ctxArgs","PreparedStatementKeys","PAGE_BY","for","paginator","verbose","class","override","select","where","attr","pk","gt","orderBy","paginate","paged","page","serialize","statement","STATEMENT","statements","logger","info","e","BaseError","InternalError","FabricStatement","CouchDBStatement","executionPrefix","method","newArgs","filter","Boolean","length","raw","rawInput","results","pkAttr","fromSelector","type","ID","selectSelector","map","r","processRecord","selectors","CouchDBKeys","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","values","CouchDBGroupOperator","AND","reduce","accum","val","Error","k","OR","s","entries","forEach","orderBySelector","sort","value","rec","CouchDBOperator","BIGGER","limitSelector","offsetSelector","skip","FabricContractSequence","Sequence","options","current","READ","startWith","sequence","repo","read","parse","NotFoundError","cachedCurrent","increment","count","incrementBy","lock","execute","async","toIncrementBy","typeName","currentValue","returnAndCache","res","Promise","cache","put","performUpsert","next","update","SequenceModel","create","UUID","instance","generate","ConflictError","base","Number","BigInt","String","Serial","incrementSerial","seq","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","putAnchor","require","sortKeysRecursive","preSerialize","toSerialize","metadata","modelName","error","undefined","obj","Array","isArray","ModelKeys","ANCHOR","relations","call","FabricContractPaginator","CouchDBPaginator","size","prepare","rawStatement","isPreparedStatement","pagePrepared","_recordCount","_totalPages","validatePage","countResults","MAX_VALUE","Math","ceil","_bookmark","PagingError","rawResult","docs","nextBookmark","warning","warn","d","revert","parseValue","_currentPage","OverflowError","msg","BalanceError","AllowanceError","MissingContextError","NotInitializedError","createdByOnFabricCreateUpdate","context","data","user","getID","UnsupportedError","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","Paginator","scope","alias","config","composedKey","createCompositeKey","putState","parseError","readState","delete","deleteState","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","prop","receiver","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","reachedBookmark","lastKey","recordKey","recordValue","Key","Record","close","fetchedRecordsCount","done","Reflect","SerializationError","silly","getState","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","clientIdentity","cert","getIDBytes","roles","getAttributeValue","Logging","logLevel","correlationId","getTxID","index","models","resolve","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Statement","createAll","tableLabel","all","i","updateAll","split","mappedProp","columnName","isReserved","record","ob","m","createPrefix","updatePrefix","createAllPrefix","ids","records","updateAllPrefix","reason","allowCreate","overrides","then","message","BadRequestError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","COLUMN","extend","FabricProperty","Property","ValidationKeys","DATE","chain","constr","getPrototypeOf","FabricObject","setCurrent","DeterministicSerializer","self","o","deserialization","className","ERC20Events","FabricBaseModel","arg","__decorate","description","column","createdAt","Date","updatedAt","version","uses","FabricIdentifiedBaseModel","createdBy","updatedBy","IdentityCredentials","BaseModel","required","Identity","X509","Owner","propertyKey","descriptor","originalMethod","acountId","tokens","add","a","b","c","sub","oneToOne","Cascade","CASCADE","FabricCrudContract","Contract","initialized","forModel","listBy","LIST_BY","findOneBy","FIND_ONE_BY","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","READ_ALL","OrderDirection","ASC","QUERY","init","INITIALIZATION","getName","healthcheck","contextualized","squashArgs","shift","SerializedCrudContract","parsedKeys","modelList","cond","Transaction","Ctx","ERC20Token","ERC20Wallet","Allowance","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","BurnFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","code","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","refresh","TRANSFER","catch","Approve","approvalEvent","APPROVAL","allowanceCondition","Initialize","Mint","amount","minter","ValidationError","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","ContractLogger","MiniLogger","conf","logging","getLogger","setLevel","level","getConfig","stack","NumericLogLevels","LogLevel","benchmark","trace","createLog","setFactory","object","VERSION","PACKAGE_NAME","registerLibrary","sequenceName","defineProperty","enumerable","writable","configurable"],"mappings":"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"}
1
+ {"version":3,"file":"for-fabric.cjs","sources":["../src/shared/constants.ts","../src/shared/overrides/overrides.ts","../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/contracts/FabricContractSequence.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/FabricContractPaginator.ts","../src/shared/errors.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/shared/erc20/erc20-constants.ts","../src/shared/model/FabricBaseModel.ts","../src/shared/model/FabricIdentifiedBaseModel.ts","../src/shared/model/IdentityCredentials.ts","../src/shared/model/Identity.ts","../src/shared/decorators.ts","../src/shared/math.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/contracts/erc20/models.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,null,null],"names":["FabricModelKeys","IdentityType","FabricFlavour","Model","prototype","isShared","this","constructor","isPrivate","segregate","model","isTransient","decoratedProperties","Metadata","validatableProperties","transientProps","get","DBKeys","TRANSIENT","privateProperties","PRIVATE","sharedProperties","result","transient","private","shared","transientKeys","Object","keys","privateKeys","sharedKeys","key","includes","build","name","bind","tableName","target","PersistenceKeys","TABLE","SHARED","FabricContractContext","Context","super","stub","timestamp","getDateTimestamp","identity","toString","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","clazz","event","id","args","log","ctx","Adapter","logCtx","owner","payload","table","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricContractRepository","Repository","adapter","trackedEvents","_overrides","assign","ignoreValidation","ignoreHandlers","allowRawStatements","forcePrepareSimpleQueries","forcePrepareComplexQueries","paginateBy","order","ref","offset","limit","bookmark","QueryError","ctxArgs","PreparedStatementKeys","PAGE_BY","for","paginator","verbose","class","override","select","where","attr","pk","gt","orderBy","paginate","paged","page","serialize","statement","STATEMENT","statements","logger","info","e","BaseError","InternalError","FabricStatement","CouchDBStatement","executionPrefix","method","newArgs","filter","Boolean","length","raw","rawInput","results","pkAttr","fromSelector","type","ID","selectSelector","map","r","processRecord","selectors","CouchDBKeys","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","values","CouchDBGroupOperator","AND","reduce","accum","val","Error","k","OR","s","entries","forEach","orderBySelector","sort","value","rec","CouchDBOperator","BIGGER","limitSelector","offsetSelector","skip","FabricContractSequence","Sequence","options","current","READ","startWith","sequence","repo","read","parse","NotFoundError","cachedCurrent","increment","count","incrementBy","lock","execute","async","toIncrementBy","typeName","currentValue","returnAndCache","res","Promise","cache","put","performUpsert","next","update","SequenceModel","create","UUID","instance","generate","ConflictError","base","Number","BigInt","String","Serial","incrementSerial","seq","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","putAnchor","require","sortKeysRecursive","preSerialize","toSerialize","metadata","modelName","error","undefined","obj","Array","isArray","ModelKeys","ANCHOR","relations","call","FabricContractPaginator","CouchDBPaginator","size","prepare","rawStatement","isPreparedStatement","pagePrepared","_recordCount","_totalPages","validatePage","countResults","MAX_VALUE","Math","ceil","_bookmark","PagingError","rawResult","docs","nextBookmark","warning","warn","d","revert","parseValue","_currentPage","OverflowError","msg","BalanceError","AllowanceError","MissingContextError","NotInitializedError","createdByOnFabricCreateUpdate","context","data","user","getID","UnsupportedError","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","Paginator","scope","alias","config","composedKey","createCompositeKey","putState","parseError","readState","delete","deleteState","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","prop","receiver","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","reachedBookmark","lastKey","recordKey","recordValue","Key","Record","close","fetchedRecordsCount","done","Reflect","SerializationError","silly","getState","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","clientIdentity","cert","getIDBytes","roles","getAttributeValue","Logging","logLevel","correlationId","getTxID","index","models","resolve","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Statement","createAll","tableLabel","all","i","updateAll","split","mappedProp","columnName","isReserved","record","ob","m","createPrefix","updatePrefix","createAllPrefix","ids","records","updateAllPrefix","reason","allowCreate","overrides","then","message","BadRequestError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","COLUMN","extend","FabricProperty","Property","ValidationKeys","DATE","chain","constr","getPrototypeOf","FabricObject","setCurrent","DeterministicSerializer","self","o","deserialization","className","ERC20Events","FabricBaseModel","arg","__decorate","description","column","createdAt","Date","updatedAt","version","uses","FabricIdentifiedBaseModel","createdBy","updatedBy","IdentityCredentials","BaseModel","required","Identity","X509","Owner","propertyKey","descriptor","originalMethod","acountId","tokens","add","a","b","c","sub","oneToOne","Cascade","CASCADE","FabricCrudContract","Contract","initialized","forModel","listBy","LIST_BY","findOneBy","FIND_ONE_BY","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","READ_ALL","OrderDirection","ASC","QUERY","init","INITIALIZATION","getName","healthcheck","contextualized","squashArgs","shift","SerializedCrudContract","parsedKeys","modelList","cond","Transaction","Ctx","ERC20Token","ERC20Wallet","Allowance","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","BurnFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","code","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","refresh","TRANSFER","catch","Approve","approvalEvent","APPROVAL","allowanceCondition","Initialize","Mint","amount","minter","ValidationError","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","ContractLogger","MiniLogger","conf","logging","getLogger","setLevel","level","getConfig","stack","NumericLogLevels","LogLevel","benchmark","trace","createLog","setFactory","object","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}