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