@decaf-ts/for-fabric 0.1.37 → 0.1.39
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/FabricClientPaginator.d.ts +1 -1
- package/lib/client/FabricClientRepository.cjs +11 -4
- package/lib/client/FabricClientRepository.d.ts +5 -2
- package/lib/client/FabricClientRepository.js.map +1 -1
- package/lib/contracts/ContractAdapter.cjs +1 -1
- package/lib/contracts/ContractAdapter.js.map +1 -1
- package/lib/contracts/FabricContractRepository.cjs +36 -9
- package/lib/contracts/FabricContractRepository.d.ts +5 -2
- package/lib/contracts/FabricContractRepository.js.map +1 -1
- package/lib/contracts/crud/crud-contract.d.ts +2 -2
- package/lib/contracts/crud/crud-contract.js.map +1 -1
- package/lib/contracts/crud/serialized-crud-contract.cjs +4 -2
- package/lib/contracts/crud/serialized-crud-contract.js.map +1 -1
- package/lib/esm/client/FabricClientPaginator.d.ts +1 -1
- package/lib/esm/client/FabricClientRepository.d.ts +5 -2
- package/lib/esm/client/FabricClientRepository.js +11 -4
- package/lib/esm/client/FabricClientRepository.js.map +1 -1
- package/lib/esm/contracts/ContractAdapter.js +1 -1
- package/lib/esm/contracts/ContractAdapter.js.map +1 -1
- package/lib/esm/contracts/FabricContractRepository.d.ts +5 -2
- package/lib/esm/contracts/FabricContractRepository.js +36 -9
- package/lib/esm/contracts/FabricContractRepository.js.map +1 -1
- package/lib/esm/contracts/crud/crud-contract.d.ts +2 -2
- package/lib/esm/contracts/crud/crud-contract.js.map +1 -1
- package/lib/esm/contracts/crud/serialized-crud-contract.js +4 -2
- package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -1
- package/lib/esm/shared/DeterministicSerializer.js +7 -5
- package/lib/esm/shared/DeterministicSerializer.js.map +1 -1
- package/lib/esm/shared/SimpleDeterministicSerializer.d.ts +2 -2
- package/lib/esm/shared/SimpleDeterministicSerializer.js +5 -4
- package/lib/esm/shared/SimpleDeterministicSerializer.js.map +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/shared/DeterministicSerializer.cjs +7 -5
- package/lib/shared/DeterministicSerializer.js.map +1 -1
- package/lib/shared/SimpleDeterministicSerializer.cjs +5 -4
- package/lib/shared/SimpleDeterministicSerializer.d.ts +2 -2
- package/lib/shared/SimpleDeterministicSerializer.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.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t,e;t=this,e=function(t,e,r,a,n,i,o,s,c){"use strict";class l extends a.Context{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("identity")}toString(){return"fabric ctx"+(this.stub?" with stub":"without stub")}}class d extends a.ObserverHandler{constructor(t=[n.OperationKeys.CREATE,n.OperationKeys.UPDATE,n.OperationKeys.DELETE,n.BulkCrudOperationKeys.CREATE_ALL,n.BulkCrudOperationKeys.UPDATE_ALL,n.BulkCrudOperationKeys.DELETE_ALL]){super(),this.supportedEvents=t}async updateObservers(t,e,r,...n){const{log:i,ctx:o}=a.Adapter.logCtx(n,this.updateObservers),{stub:s}=o,[c,l]=n,d="string"==typeof t?t:t.name;if(-1!==this.supportedEvents.indexOf(e)){i.debug(`Emitting ${e} event`);const t=((t,e,r)=>{const a=[t,e];return r&&a.push(r),a.join("_")})(d,e,c);s.setEvent(t,Buffer.from(JSON.stringify({id:r})))}else s.setEvent(e,Buffer.from(JSON.stringify(l)))}}class u extends a.Repository{constructor(t,e,r){super(t,e),this.trackedEvents=r,this._overrides=Object.assign({},super._overrides,{ignoreValidation:!1,ignoreHandlers:!1,allowRawStatements:!0,forcePrepareSimpleQueries:!1,forcePrepareComplexQueries:!1})}async createAllPrefix(t,...e){const i=await a.Context.args(n.OperationKeys.CREATE,this.class,e,this.adapter,this._overrides||{}),o=i.context.logger.for(this.createAllPrefix),s=i.context.get("ignoreHandlers"),c=i.context.get("ignoreValidation");if(!t.length)return[t,...i.args];const l=r.Model.sequenceFor(t[0]);o.info("Sequence options: "+JSON.stringify(l));let d=[];if(l.type?(l.name||(l.name=r.Model.sequenceName(t[0],"pk")),d=await(await this.adapter.Sequence(l)).range(t.length,...i.args),o.info("Sequence ids: "+d)):d=t.map((t,e)=>{if(void 0===t[this.pk])throw new n.InternalError("Primary key is not defined for model in position "+e);return t[this.pk]}),t=await Promise.all(t.map(async(t,e)=>(t=new this.class(t),l.type&&(t[this.pk]="String"!==l.type||l.generated?d[e]:""+t[this.pk]),o.info("Creating model "+JSON.stringify(t)),s||await n.enforceDBDecorators(this,i.context,t,n.OperationKeys.CREATE,n.OperationKeys.ON),t))),!c){const e=i.context.get("ignoredValidationProperties")||[],r=await Promise.all(t.map(t=>Promise.resolve(t.hasErrors(...e)))),a=n.reduceErrorsToPrint(r);if(a)throw new n.ValidationError(a)}return[t,...i.args]}async paginateBy(t,e,n,...i){const o=await a.Context.args(a.PreparedStatementKeys.PAGE_BY,this.class,i,this.adapter,this._overrides||{}),{log:s,ctxArgs:c}=this.logCtx(o.args,this.paginateBy);return s.verbose(`paginating ${r.Model.tableName(this.class)} with page size ${n}`),this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().orderBy([t,e]).paginate(n,...c)}async statement(t,...e){if(!a.Repository.statements(this,t))throw new a.QueryError("Invalid prepared statement requested "+t);const r=await a.Context.args(a.PersistenceKeys.STATEMENT,this.class,e,this.adapter,this._overrides||{});r.context.logger&&r.context.logger.info(`Repo statement: ${t} + ${e}`);const{log:i,ctxArgs:o}=this.logCtx(r.args,this.statement);i.verbose(`Executing prepared statement ${t} with args ${o}`);try{return this[t](...o)}catch(e){if(e instanceof n.BaseError)throw e;throw new n.InternalError(`Failed to execute prepared statement ${t} with args ${o}: ${e}`)}}ObserverHandler(){return new d}async updateObservers(t,e,r,...a){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(e))return await super.updateObservers(t,e,r,...a)}}class p extends e.CouchDBStatement{constructor(t){super(t)}async raw(t,...e){const{ctx:a}=this.logCtx(e,this.raw),i=await this.adapter.raw(t,!0,a),s=r.Model.pk(this.fromSelector),c=o.Metadata.get(this.fromSelector,o.Metadata.key(n.DBKeys.ID,s))?.type;return this.selectSelector?i:i.map(t=>this.processRecord(t,s,c,a))}build(){const t={};t[e.CouchDBKeys.TABLE]={},t[e.CouchDBKeys.TABLE]=r.Model.tableName(this.fromSelector);const n={selector:t};if(this.selectSelector&&(n.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(a.Condition.and(this.whereCondition,a.Condition.attribute(e.CouchDBKeys.TABLE).eq(n.selector[e.CouchDBKeys.TABLE]))).selector,r=Object.keys(t);if(1===r.length&&-1!==Object.values(e.CouchDBGroupOperator).indexOf(r[0]))switch(r[0]){case e.CouchDBGroupOperator.AND:t[e.CouchDBGroupOperator.AND]=[...Object.values(t[e.CouchDBGroupOperator.AND]).reduce((t,r)=>{const a=Object.keys(r);if(1!==a.length)throw Error("Too many keys in query selector. should be one");const n=a[0];return n===e.CouchDBGroupOperator.AND?t.push(...r[n]):t.push(r),t},[])],n.selector=t;break;case e.CouchDBGroupOperator.OR:{const r={};r[e.CouchDBGroupOperator.AND]=[t,...Object.entries(n.selector).map(([t,e])=>{const r={};return r[t]=e,r})],n.selector=r;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,e])=>{n.selector[t],n.selector[t]=e})}if(this.orderBySelector){n.sort=n.sort||[],n.selector=n.selector||{};const[t,r]=this.orderBySelector,a={};a[t]=r,n.sort.push(a),n.selector[t]||(n.selector[t]={},n.selector[t][e.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(n.limit=this.limitSelector),this.offsetSelector&&(n.skip=this.offsetSelector),n}}var g,h;(t=>{t.PRIVATE="private",t.SHARED="shared",t.FABRIC="fabric.",t.OWNEDBY="owned-by",t.TRANSACTION_ID="transaction-id"})(g||(g={})),(t=>{t.X509="X.509"})(h||(h={}));const y="hlf-fabric";class m extends r.JSONSerializer{constructor(){super()}deserialize(t,e){return JSON.parse(t)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}preSerialize(t){const e=Object.assign({},t);let a;try{a=o.Metadata.modelName(t.constructor)}catch(t){a=void 0}function n(t){return"object"!=typeof t?t:Array.isArray(t)?t.map(n):this.preSerialize(t)}return e[r.ModelKeys.ANCHOR]=a||t.constructor.name,r.Model.relations(t).forEach(t=>{e[t]=n.call(this,e[t])}),e}}class w extends s.MiniLogger{constructor(t,e,r){super(t,e),this.logger=r?r.logging.getLogger(t):new s.MiniLogger(t,e)}log(t,e,r){if(s.NumericLogLevels[this.config("level")]<s.NumericLogLevels[t])return;let a;switch(t){case s.LogLevel.info:a=this.logger.info;break;case s.LogLevel.verbose:a=this.logger.verbose;break;case s.LogLevel.debug:a=this.logger.debug;break;case s.LogLevel.error:a=this.logger.error;break;case s.LogLevel.silly:a=this.logger.silly;break;default:throw new n.InternalError("Invalid log level")}a.call(this.logger,this.createLog(t,e,r))}}s.Logging.setFactory((t,e,r)=>new w(t||w.name,e||{},r));class f extends a.Sequence{constructor(t,e){super(t,e)}async current(...t){const e=(await a.Context.args(n.OperationKeys.READ,a.SequenceModel,t,this.adapter)).context,{name:r,startWith:i}=this.options;try{const t=await this.repo.read(r,e);return this.parse(t.current)}catch(t){if(t instanceof n.NotFoundError){if(void 0===i)throw new n.InternalError("Starting value is not defined for a non existing sequence");try{return this.parse(i)}catch(t){throw new n.InternalError(`Failed to parse initial value for sequence ${i}: ${t}`)}}throw new n.InternalError(`Failed to retrieve current value for sequence ${r}: ${t}`)}}async increment(t,e,r){const{type:i,incrementBy:o,name:s}=this.options;let c;const l=e||o;if(l%o!==0)throw new n.InternalError("Value to increment does not consider the incrementBy setting: "+o);switch("function"==typeof i&&i?.name?i.name:i){case Number.name:c=this.parse(t)+l;break;case BigInt.name:c=this.parse(t)+BigInt(l);break;case String.name:c=this.parse(t);break;case"serial":c=a.Serial.instance.generate(t);break;case"uuid":c=a.UUID.instance.generate(t);break;default:throw new n.InternalError("Should never happen")}let d;try{d=await this.repo.update(new a.SequenceModel({id:s,current:c}),r)}catch(o){if(!(o instanceof n.NotFoundError))throw o;try{d=await this.repo.create(new a.SequenceModel({id:s,current:c}),r)}catch(a){if(!(a instanceof n.ConflictError)||"uuid"!==i)throw a;return this.increment(t,e,r)}}return d.current}async next(...t){const e=await a.Context.args(n.OperationKeys.UPDATE,a.SequenceModel,t,this.adapter),{context:r,args:i}=e,o=await this.current(...i);return this.increment(o,void 0,r)}async range(t,...e){const r=await a.Context.args(n.OperationKeys.UPDATE,a.SequenceModel,e,this.adapter),{context:i,args:o}=r,s=await this.current(...o),c=this.parse(this.options.incrementBy),l=await this.increment(s,this.parse(t)*c,i),d=[];for(let e=1;t>=e;e++)d.push(s+c*this.parse(e));if("uuid"===this.options.type||"serial"===this.options.type)throw new a.UnsupportedError(`type ${this.options.type} is currently not suppported for this adapter`);const u="function"==typeof this.options.type&&this.options.type?.name?this.options.type.name:this.options.type;if(d[d.length-1]!==l&&"String"!==u)throw new n.InternalError("Miscalculation of range");return d}}async function _(t,e,r,n){try{const e=t.get("identity");n[r]=e.getID()}catch(t){throw new a.UnsupportedError("No User found in context. Please provide a user in the context")}}class x extends e.CouchDBAdapter{getClient(){throw new a.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new m}repository(){return u}async Sequence(t){return new f(t,this)}constructor(t,e){super(t,y,e),this.Context=l}for(t,...e){return super.for(t,...e)}async create(t,e,a,...n){const{ctx:i,log:o,stub:s}=this.logCtx(n,this.create);o.info("in ADAPTER create with args "+n);const c=r.Model.tableName(t);try{o.info(`adding entry to ${c} table with pk ${e}`);const t=s.createCompositeKey(c,[e+""]);a=await this.putState(t,a,i)}catch(t){throw this.parseError(t)}return a}async read(t,e,...a){const{ctx:n,log:i,stub:o}=this.logCtx(a,this.read);i.info("in ADAPTER read with args "+a);const s=r.Model.tableName(t);let c;try{const t=o.createCompositeKey(s,[e+""]);c=await this.readState(t,n)}catch(t){throw this.parseError(t)}return c}async update(t,e,a,...n){const{ctx:i,log:o,stub:s}=this.logCtx(n,this.update),c=r.Model.tableName(t);try{o.verbose(`updating entry to ${c} table with pk ${e}`);const t=s.createCompositeKey(c,[e+""]);a=await this.putState(t,a,i)}catch(t){throw this.parseError(t)}return a}async delete(t,e,...a){const{ctx:n,log:i,ctxArgs:o,stub:s}=this.logCtx(a,this.delete),c=r.Model.tableName(t);let l;try{const r=s.createCompositeKey(c,[e+""]);l=await this.read(t,e,...o),i.verbose(`deleting entry with pk ${e} from ${c} table`),await this.deleteState(r,n)}catch(t){throw this.parseError(t)}return l}async deleteState(t,e){const{stub:r}=this.logCtx([e],this.deleteState);await r.deleteState(t)}forPrivate(t){const e=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map(t=>t.name);return new Proxy(this,{get:(r,a,i)=>e.includes(a)?new Proxy(r[a],{async apply(e,r,i){switch(a){case"putState":{const[e,r,a]=i;return await e.putPrivateData(t,r.toString(),a),a}case"deleteState":{const[e,r]=i;return e.deletePrivateData(t,r)}case"readState":{const[e,r]=i;return e.getPrivateData(t,r)}case"queryResult":{const[e,r]=i;return e.getPrivateDataQueryResult(t,r)}case"queryResultPaginated":{const[e,r,a,n]=i,o=await e.getPrivateDataQueryResult(t,r),s=[];let c=0,l=!n,d=null;for(;;){const t=await o.next();if(t.value&&t.value.value.toString()){const e=t.value.key,r=t.value.value.toString("utf8");if(!l){e===n?.toString()&&(l=!0);continue}if(s.push({Key:e,Record:JSON.parse(r)}),d=e,c++,c>=a)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:d}}}if(t.done)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:""}}}}default:throw new n.InternalError("Unsupported method override "+a)}}}):Reflect.get(r,a,i)})}async putState(t,e,r){let a;const{stub:i,log:o}=this.logCtx([r],this.putState);try{a=Buffer.from(x.serializer.serialize(e))}catch(e){throw new n.SerializationError(`Failed to serialize record with id ${t}: ${e}`)}const s=r.get("segregated");return s?await i.putPrivateData(s,t.toString(),a):await i.putState(t.toString(),a),o.silly(`state stored${s?` in ${s} collection`:""} under id ${t}`),e}async readState(t,e){let r;const{stub:a,log:i}=this.logCtx([e],this.readState);let o;const s=e.get("segregated");if(o=s?(await a.getPrivateData(s,t.toString())).toString():(await a.getState(t.toString())).toString(),!o)throw new n.NotFoundError(`Record with id ${t}${s?` in ${s} collection`:""} not found`);i.silly(`state retrieved from${s?` ${s} collection`:""} under id ${t}`);try{r=x.serializer.deserialize(o.toString())}catch(t){throw new n.SerializationError("Failed to parse record: "+t)}return r}async queryResult(t,e,...r){const{ctx:a}=this.logCtx(r,this.readState);let n;const i=a.get("segregated");return n=i?await t.getPrivateDataQueryResult(i,JSON.stringify(e)):await t.getQueryResult(JSON.stringify(e)),n}async queryResultPaginated(t,e,r=250,a,...n){const{ctx:i}=this.logCtx(n,this.readState);let o;const s=i.get("segregated");return s?(e.selector={...e.selector,_id:a?{$gt:a.toString()}:{$gte:""}},o={iterator:await t.getPrivateDataQueryResult(s,JSON.stringify(e)),metadata:{fetchedRecordsCount:r,bookmark:""}}):o=await t.getQueryResultWithPagination(JSON.stringify(e),r,a?.toString()),o}mergeModels(t){const e=t=>Object.entries(t).reduce((t,[e,r])=>(void 0!==r&&(t[e]=r),t),{});let r=t.pop();for(const a of t)r=Object.assign({},e(r),e(a));return r}decode(t){return x.textDecoder.decode(t)}async flags(t,e,r,a,...n){const i={stub:a.stub,segregated:!1};return Object.assign(i,a instanceof l?{logger:a.logger,identity:a.identity,correlationId:a.stub.getTxID()}:{identity:a.clientIdentity,logger:new w(this,void 0,a),correlationId:a.stub.getTxID()}),await super.flags(t,e,i,...n)}index(t){return Promise.resolve(void 0)}async resultIterator(t,e,r=!1){const a=[];let n=await e.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let e={};if(t.debug(n.value.value.toString("utf8")),r){e.TxId=n.value.txId,e.Timestamp=n.value.timestamp;try{e.Value=JSON.parse(n.value.value.toString("utf8"))}catch(r){t.error(r),e.Value=n.value.value.toString("utf8")}}else try{e=JSON.parse(n.value.value.toString("utf8"))}catch(r){t.error(r),e=n.value.value.toString("utf8")}a.push(e)}n=await e.next()}return t.debug(`Closing iterator after ${a.length} results`),e.close(),a}async raw(t,e=!0,...r){const{log:a,stub:n,ctx:i}=this.logCtx(r,this.raw),{skip:o,limit:s}=t;let c;s||o?(delete t.limit,delete t.skip,a.debug(`Retrieving paginated iterator: limit: ${s}/ skip: ${o}`),c=(await this.queryResultPaginated(n,t,s||250,o?.toString(),i)).iterator):(a.debug("Retrieving iterator"),c=await this.queryResult(n,t,i)),a.debug("Iterator acquired");const l=await this.resultIterator(a,c);return a.debug(`returning ${Array.isArray(l)?l.length:1} results`),l}Statement(){return new p(this)}async createAll(t,e,a,...i){if(e.length!==a.length)throw new n.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.createAll),c=r.Model.tableName(t);return o.debug(`Creating ${e.length} entries ${c} table`),Promise.all(e.map((e,r)=>this.create(t,e,a[r],...s)))}async updateAll(t,e,a,...i){if(e.length!==a.length)throw new n.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.updateAll),c=r.Model.tableName(t);return o.debug(`Updating ${e.length} entries ${c} table`),Promise.all(e.map((e,r)=>this.update(t,e,a[r],...s)))}prepare(t,...e){const{log:a}=this.logCtx(e,this.prepare),i=r.Model.tableName(t.constructor),o=r.Model.pk(t.constructor),s=r.Model.segregate(t),c=Object.entries(s.model).reduce((e,[a,i])=>{if(void 0===i)return e;const o=r.Model.columnName(t,a);if(this.isReserved(o))throw new n.InternalError(`Property name ${o} is reserved`);return e[o]=i,e},{});return a.silly(`Preparing record for ${i} table with pk ${t[o]}`),{record:c,id:t[o],transient:s.transient}}revert(t,e,a,i,...o){const{log:s}=this.logCtx(o,this.revert),c={};c[r.Model.pk(e)]=a;const l="string"==typeof e?r.Model.build(c,e):new e(c);s.silly(`Rebuilding model ${l.constructor.name} id ${a}`);const d=Object.keys(l).reduce((e,a)=>(e[a]=t[r.Model.columnName(e,a)],e),l);return i&&(s.debug("re-adding transient properties: "+Object.keys(i).join(", ")),Object.entries(i).forEach(([t,e])=>{if(t in d&&void 0!==d[t])throw new n.InternalError(`Transient property ${t} already exists on model ${l.constructor.name}. should be impossible`);d[t]=e})),d}createPrefix(t,a,n,...i){const{ctxArgs:o}=this.logCtx(i,this.createPrefix),s={};return s[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(s,n),[t,a,s,...o]}updatePrefix(t,a,n,...i){const{ctxArgs:o}=this.logCtx(i,this.updatePrefix),s={};return s[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(s,n),[t,a,s,...o]}createAllPrefix(t,a,i,...o){if(a.length!==i.length)throw new n.InternalError("Ids and models must have the same length");const s=o.pop(),c=a.map((a,n)=>{const o={};return o[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(o,i[n]),o});return[t,a,c,s]}updateAllPrefix(t,a,i,...o){if(a.length!==i.length)throw new n.InternalError("Ids and models must have the same length");const s=o.pop(),c=a.map((a,n)=>{const o={};return o[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(o,i[n]),o});return[t,a,c,s]}parseError(t,e){return x.parseError(e||t)}logCtx(t,e){return x.logCtx.call(this,t,e)}static logCtx(t,e){if(1>t.length)throw new n.InternalError("No context provided");const r=t.pop();if(!(r instanceof a.Context))throw new n.InternalError("No context provided");if(t.filter(t=>t instanceof a.Context).length>1)throw Error("here");const i=this?r.logger.for(this).for(e):r.logger.clear().for(this).for(e);return{ctx:r,log:e?i.for(e):i,stub:r.stub,identity:r.identity,ctxArgs:[...t,r]}}static parseError(t){const e="string"==typeof t?t:t.message;return e.includes(n.NotFoundError.name)?new n.NotFoundError(t):e.includes(n.ConflictError.name)?new n.ConflictError(t):e.includes(n.BadRequestError.name)?new n.BadRequestError(t):e.includes(a.QueryError.name)?new a.QueryError(t):e.includes(a.PagingError.name)?new a.PagingError(t):e.includes(a.UnsupportedError.name)?new a.UnsupportedError(t):e.includes(a.MigrationError.name)?new a.MigrationError(t):e.includes(a.ObserverError.name)?new a.ObserverError(t):e.includes(a.AuthorizationError.name)?new a.AuthorizationError(t):e.includes(a.ForbiddenError.name)?new a.ForbiddenError(t):e.includes(a.ConnectionError.name)?new a.ConnectionError(t):e.includes(n.SerializationError.name)?new n.SerializationError(t):new n.InternalError(t)}static decoration(){super.decoration(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.CREATED_BY).define(n.onCreate(_),o.propMetadata(a.PersistenceKeys.CREATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.UPDATED_BY).define(n.onCreateUpdate(_),o.propMetadata(a.PersistenceKeys.UPDATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.COLUMN).extend(i.Property()).apply(),o.Decoration.flavouredAs(y).for(r.ValidationKeys.DATE).extend(()=>(t,e)=>{i.Property(e,"string:date")(t,e)}),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.TABLE).extend(t=>{const e=[];let r="function"==typeof t?o.Metadata.constr(t):o.Metadata.constr(t.constructor);for(;r&&r!==Object&&r.prototype;)e.push(r),r=Object.getPrototypeOf(r);for(;e.length>0;){const t=e.pop();i.Object()(t)}return i.Object()(t)}).apply()}}x.decoration(),a.Adapter.setCurrent(y);class b extends r.JSONSerializer{constructor(){super()}preSerialize(t){const e=Object.assign({},t);let a;try{a=o.Metadata.modelName(t.constructor)}catch(t){a=void 0}function n(t){return"object"!=typeof t?t:Array.isArray(t)?t.map(n):this.preSerialize(t)}return e[r.ModelKeys.ANCHOR]=a||t.constructor.name,r.Model.relations(t).forEach(t=>{e[t]=n.call(this,e[t])}),e}deserialize(t){const e=JSON.parse(t),a=e[r.ModelKeys.ANCHOR];if(!a)throw Error("Could not find class reference in serialized model");return r.Model.build(e,a)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}i.Object()(Date);class C extends i.Contract{static{this.adapter=new x}static{this.serializer=new b}constructor(t,e){super(t),this.clazz=e,this.initialized=!1,this.repo=a.Repository.forModel(e)}async listBy(t,e,r,...a){const{ctxArgs:n,log:i}=await this.logCtx([...a,t],this.listBy);return i.info(`Running listBy key ${e}, order ${r} and args ${n}`),this.repo.listBy(e,r,...n)}async paginateBy(t,e,r,a,...n){const{ctxArgs:i,log:o}=await this.logCtx([...n,t],this.paginateBy);return o.info(`Running paginateBy key ${e}, order ${r} with size ${a} and args ${i}`),this.repo.paginateBy(e,r,a,...i)}async findOneBy(t,e,r,...a){const{ctxArgs:n,log:i}=await this.logCtx([...a,t],this.findOneBy);return i.info(`Running findOneBy key ${e}, value: ${r} with args ${n}`),this.repo.findOneBy(e,r,...n)}async statement(t,e,...r){const{ctxArgs:a,log:n}=await this.logCtx([...r,t],this.statement);return n.info(`Running statement ${e} with args ${a}`),this.repo.statement(e,...a)}async create(t,e,...a){const{log:n,ctxArgs:i}=await this.logCtx([...a,t],this.create);n.info("CONTRACT CREATE, "+i),"string"==typeof e&&(e=this.deserialize(e)),n.info("Creating model: "+JSON.stringify(e));const o=this.getTransientData(t);return n.info("Merging transient data..."),e=r.Model.merge(e,o,this.clazz),this.repo.create(e,...i)}async read(t,e,...r){const{log:a,ctxArgs:n}=await this.logCtx([...r,t],this.read);return a.info(`reading entry with pk ${e} `),this.repo.read(e,...n)}getTransientData(t){const e=t.stub.getTransient();let r={};return e.has(this.repo.tableName)&&(r=JSON.parse(e.get(this.repo.tableName)?.toString("utf8"))),r}async update(t,e,...a){const{log:n,ctxArgs:i}=await this.logCtx([...a,t],this.update);"string"==typeof e&&(e=this.deserialize(e)),n.info("Updating model: "+JSON.stringify(e));const o=this.getTransientData(t);return n.info("Merging transient data..."),e=r.Model.merge(e,o,this.clazz),this.repo.update(e,...i)}async delete(t,e,...r){const{log:a,ctxArgs:n}=await this.logCtx([...r,t],this.delete);return a.info(`deleting entry with pk ${e} `),this.repo.delete(e+"",...n)}async deleteAll(t,e,...r){const{ctxArgs:a}=await this.logCtx([...r,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.deleteAll(e,...a)}async readAll(t,e,...r){const{ctxArgs:a}=await this.logCtx([...r,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.readAll(e,...a)}async updateAll(t,e,...r){const{log:a,ctxArgs:n}=await this.logCtx([...r,t],this.updateAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),a.info(`updating ${e.length} entries to the table`),this.repo.updateAll(e,...n)}async query(t,e,r,n=a.OrderDirection.ASC,i,o,...s){const{ctxArgs:c}=await this.logCtx([...s,t],this.query);return this.repo.query(e,r,n,i,o,...c)}async raw(t,e,r,...a){const{ctxArgs:n}=await this.logCtx([...a,t],this.raw);return C.adapter.raw(e,r,...n)}serialize(t){return C.serializer.serialize(t)}deserialize(t){return C.serializer.deserialize(t)}async init(t){const{log:e}=await this.logCtx([t],this.init);e.info(`Running contract ${this.getName()} initialization...`),this.initialized=!0,e.info("Contract initialization completed.")}async healthcheck(t){const{log:e}=await this.logCtx([t],this.healthcheck);return e.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(t,e,...r){const{log:a,ctxArgs:n}=await this.logCtx([...r,t],this.createAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),a.info(`adding ${e.length} entries to the table`),this.repo.createAll(e,...n)}async logCtx(t,e){return C.logCtx.bind(this)(t,e)}static async logCtx(t,e){if(1>t.length)throw new n.InternalError("No context provided");const r=t.pop();if(r instanceof l)return{ctx:r,log:r.logger.clear().for(this).for(e),ctxArgs:[...t,r],stub:r.stub,identity:r.identity};if(!(r instanceof i.Context))throw new n.InternalError("No valid context provided");const a={correlationId:r.stub.getTxID()},o=await C.adapter.context((()=>{if("string"==typeof e)return e;switch(e.name){case n.OperationKeys.CREATE:case n.OperationKeys.READ:case n.OperationKeys.UPDATE:case n.OperationKeys.DELETE:case n.BulkCrudOperationKeys.CREATE_ALL:case n.BulkCrudOperationKeys.READ_ALL:case n.BulkCrudOperationKeys.UPDATE_ALL:case n.BulkCrudOperationKeys.DELETE_ALL:}return e.name})(),a,this.clazz,r),s=this?o.logger.for(this).for(e):o.logger.clear().for(this).for(e);return{ctx:o,log:s,stub:o.stub,identity:o.identity,ctxArgs:[...t,o]}}}class S extends C{constructor(t,e){super(t,e)}async create(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.create);r.info("Creating model: "+e);const n=this.deserialize(e);return r.info("Model deserialized: "+JSON.stringify(n)),this.serialize(await super.create(a,n))}async read(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.read);return r.info("Reading id: "+e),this.serialize(await super.read(a,e))}async update(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.update);return r.info("Updating model: "+e),this.serialize(await super.update(a,e))}async delete(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.delete);return r.info("Deleting id: "+e),this.serialize(await super.delete(a,e))}async deleteAll(t,e){const r=JSON.parse(e),{log:a,ctx:n}=await this.logCtx([t],this.deleteAll);return a.info(`deleting ${r.length} entries from the table`),JSON.stringify((await super.deleteAll(n,r)).map(t=>this.serialize(t)))}async readAll(t,e){const r=JSON.parse(e),{log:a,ctx:n}=await this.logCtx([t],this.readAll);return a.info(`reading ${r.length} entries from the table`),JSON.stringify((await super.readAll(n,r)).map(t=>this.serialize(t)))}async updateAll(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.updateAll),n=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return r.info(`Updating ${n.length} entries to the table`),JSON.stringify((await super.updateAll(a,n)).map(t=>this.serialize(t)))}async statement(t,e,r){const{ctx:a,log:i}=await this.logCtx([t],this.statement);try{r=JSON.parse(r)}catch(t){throw new n.SerializationError("Invalid args: "+t)}if(!Array.isArray(r))throw new n.SerializationError(`Invalid args: ${JSON.stringify(r)}. must be an array`);return i.info("calling prepared statement "+e),i.info("with args "+r),JSON.stringify(await super.statement(a,e,...r))}async listBy(t,e,r){const{ctx:a,log:n}=await this.logCtx([t],this.listBy);return n.info(`Executing listBy with key ${e} and order ${r}`),JSON.stringify(await super.listBy(a,e,r))}async paginateBy(t,e,r,a){const{ctx:n,log:i}=await this.logCtx([t],this.paginateBy);return i.info(`Executing paginateBy with key ${e} and order ${r}`),JSON.stringify(await super.paginateBy(n,e,r,a))}async findOneBy(t,e,r,...a){const{ctx:n,log:i}=await this.logCtx([...a,t],this.findOneBy);return i.info(`Executing findOneBy with key ${e} and value ${r}`),JSON.stringify(await super.findOneBy(n,e,r,...a))}async query(t,e,r,i,o,s){const{ctx:c,log:l}=await this.logCtx([t],this.query);let d;l.info(`Executing query orderedBy ${r} and order ${i}`);try{d=a.Condition.from(JSON.parse(e))}catch(t){throw new n.SerializationError("Invalid condition: "+t)}return l.info("Condition: "+JSON.stringify(d)),JSON.stringify(await super.query(c,d,r,i,o,s))}async init(t){await super.init(t)}async healthcheck(t){const{log:e,ctx:r}=await this.logCtx([t],this.updateAll);return e.debug(`Running Healthcheck: ${this.initialized}...`),JSON.stringify(await super.healthcheck(r))}async createAll(t,e){const{log:r}=await this.logCtx([t],this.createAll),a=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return r.info(`Adding ${a.length} entries to the table`),JSON.stringify((await super.createAll(t,a)).map(t=>this.serialize(t)))}}c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"create",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"read",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"update",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"delete",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"deleteAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"readAll",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"updateAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],S.prototype,"statement",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],S.prototype,"listBy",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],S.prototype,"paginateBy",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,String]),c.__metadata("design:returntype",Promise)],S.prototype,"findOneBy",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],S.prototype,"init",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],S.prototype,"healthcheck",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"createAll",null);class E extends n.InternalError{constructor(t){super(t,E.name)}}class A extends n.InternalError{constructor(t){super(t,A.name)}}class v extends n.InternalError{constructor(t){super(t,v.name)}}class O extends n.BaseError{constructor(t){super(O.name,t,409)}}function N(t,e){const r=t+e;if(t!==r-e||e!==r-t)throw new E(`Addition overflow: ${t} + ${e}`);return r}function T(t,e){const r=t-e;if(t!==r+e||e!==t-r)throw new E(`Subtraction overflow: ${t} - ${e}`);return r}let k=class extends a.BaseModel{constructor(t){super(t)}};c.__decorate([a.pk({type:"String"}),c.__metadata("design:type",String)],k.prototype,"name",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],k.prototype,"owner",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],k.prototype,"symbol",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],k.prototype,"decimals",void 0),k=c.__decorate([a.table("erc20_tokens"),r.model(),c.__metadata("design:paramtypes",[Object])],k);let R=class extends a.BaseModel{constructor(t){super(t)}};c.__decorate([a.pk({type:"String"}),c.__metadata("design:type",String)],R.prototype,"id",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],R.prototype,"token",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],R.prototype,"balance",void 0),c.__decorate([a.column(),c.__metadata("design:type",String)],R.prototype,"captive",void 0),R=c.__decorate([a.table("erc20_wallets"),r.model(),c.__metadata("design:paramtypes",[Object])],R);let B=class extends a.BaseModel{constructor(t){super(t)}};function z(){return function(t,e,r){const i=r.value;return r.value=async function(...t){const r=t[0],o=r.clientIdentity.getID(),s=await this.tokenRepository.select(),c=await s.execute(r);if(0==c.length)throw new n.NotFoundError("No tokens avaialble");if(c.length>1)throw new n.NotFoundError("To many token available : "+c.length);if(c[0].owner!=o)throw new a.AuthorizationError(`User not authorized to run ${e} on the token`);return await i.apply(this,t)},r}}var P;c.__decorate([a.pk({type:"String"}),a.column(),r.required(),c.__metadata("design:type",String)],B.prototype,"owner",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],B.prototype,"spender",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],B.prototype,"value",void 0),B=c.__decorate([a.table("erc20_allowances"),r.model(),c.__metadata("design:paramtypes",[Object])],B),(t=>{t.TRANSFER="Transfer",t.APPROVAL="Approval"})(P||(P={}));class D extends C{constructor(t){super(t,R),D.adapter=D.adapter||new x,this.walletRepository=u.forModel(R,D.adapter.alias),this.tokenRepository=u.forModel(k,D.adapter.alias),this.allowanceRepository=u.forModel(B,D.adapter.alias)}async TokenName(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].name}async Symbol(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].symbol}async Decimals(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].decimals}async TotalSupply(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.walletRepository.select(),a=await r.execute(e);if(0==a.length)throw new n.NotFoundError(`The token ${this.getName()} does not exist`);let i=0;return a.forEach(t=>{i+=t.balance}),i}async BalanceOf(t,e){const{ctx:r}=await this.logCtx([t],this.TokenName);return await this.CheckInitialized(r),(await this.walletRepository.read(e,r)).balance}async Transfer(t,e,r){const{ctx:a}=await this.logCtx([t],this.Transfer);await this.CheckInitialized(a);const i=a.identity.getID();if(!await this._transfer(i,e,r,a))throw new n.InternalError("Failed to transfer");return!0}async TransferFrom(t,e,r,a){const{ctx:i}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(i);const o=i.identity.getID(),s=await this._getAllowance(e,o,i);if(!s||0>s.value)throw new v(`spender ${o} has no allowance from ${e}`);const c=s.value;if(a>c)throw new A("The spender does not have enough allowance to spend.");const l=T(c,a),d=Object.assign({},s,{value:l});if(await this.allowanceRepository.update(d,i),!await this._transfer(e,r,a,i))throw new n.InternalError("Failed to transfer");return!0}async _transfer(t,e,r,i){const o=i.logger;if(t===e)throw new a.AuthorizationError("cannot transfer to and from same client account");if(0>r)throw new A("transfer amount cannot be negative");const s=await this.walletRepository.read(t,i),c=s.balance;if(r>c)throw new A(`client account ${t} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(e,i)}catch(t){if(!(t instanceof n.BaseError))throw new n.InternalError(t);if(404!==t.code)throw new n.InternalError(t.message);l=new R({id:e,balance:0,token:await this.TokenName(i)}),d=!0}const u=l.balance,p=T(c,r),g=N(u,r),h=Object.assign({},s,{balance:p});await this.walletRepository.update(h,i);const y=Object.assign({},l,{balance:g});d?await this.walletRepository.create(y,i):await this.walletRepository.update(y,i);const m={from:t,to:e,value:r};return this.repo.refresh(k,P.TRANSFER,"",m,i).catch(t=>o.error("Failed to notify transfer: "+t)),!0}async Approve(t,e,r){const{ctx:a,ctxArgs:n}=await this.logCtx([t],this.Approve);await this.CheckInitialized(a);const i=a.identity.getID();let o=await this._getAllowance(i,e,a);if((await this.walletRepository.read(i,...n)).balance<r)throw new A(`client account ${i} has insufficient funds.`);o?(o.value=r,await this.allowanceRepository.update(o,...n)):(o=new B({owner:i,spender:e,value:r}),await this.allowanceRepository.create(o,...n));const s={owner:i,spender:e,value:r};return this.repo.refresh(k,P.APPROVAL,"",s,a),!0}async Allowance(t,e,r){const{ctx:a}=await this.logCtx([t],this.Allowance);await this.CheckInitialized(a);const n=await this._getAllowance(e,r,a);if(!n)throw new v(`spender ${r} has no allowance from ${e}`);return n.value}async _getAllowance(t,e,r){const n=a.Condition.and(a.Condition.attribute("owner").eq(t),a.Condition.attribute("spender").eq(e)),i=await this.allowanceRepository.select().where(n).execute(r);return i?.[0]}async Initialize(t,e){const{ctx:r}=await this.logCtx([t],this.Initialize);if((await this.tokenRepository.select().execute(r)).length>0)throw new a.AuthorizationError("contract options are already set, client is not authorized to change them");return e.owner=r.identity.getID(),await this.tokenRepository.create(e,r),!0}async CheckInitialized(t){const{ctx:e}=await this.logCtx([t],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(e)).length)throw new O("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(t,e){const{ctx:r}=await this.logCtx([t],this.Mint);await this.CheckInitialized(r);const a=r.identity.getID();if(0>=e)throw new n.ValidationError("mint amount must be a positive integer");let i;try{i=await this.walletRepository.read(a,r);const t=N(i.balance,e),n=Object.assign({},i,{balance:t});await this.walletRepository.update(n,r)}catch(i){if(!(i instanceof n.BaseError))throw new n.InternalError(i);if(404!==i.code)throw new n.InternalError(i.message);{const n=new R({id:a,balance:e,token:await this.TokenName(t)});await this.walletRepository.create(n,r)}}const o={from:"0x0",to:a,value:e};this.repo.ObserverHandler().updateObservers(k,P.TRANSFER,"",o,r)}async Burn(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.Burn);await this.CheckInitialized(a);const n=a.identity.getID(),i=await this.walletRepository.read(n,a),o=i.balance;if(e>o)throw new A("Minter has insufficient funds.");const s=T(o,e),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,a),r.info(e+" tokens were burned");const l={from:n,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(k,P.TRANSFER,"",l,a)}async BurnFrom(t,e,r){const{log:a,ctx:n}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(n);const i=await this.walletRepository.read(e,n),o=i.balance;if(r>o)throw new A(e+" has insufficient funds.");const s=T(o,r),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,n),a.info(`${r} tokens were burned from ${e}`);const l={from:e,to:"0x0",value:r};this.repo.ObserverHandler().updateObservers(k,P.TRANSFER,"",l,n)}async ClientAccountBalance(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=e.identity.getID(),a=await this.walletRepository.read(r,e);if(!a)throw new A(`The account ${r} does not exist`);return a.balance}async ClientAccountID(t){const{ctx:e}=await this.logCtx([t],this.ClientAccountID);return await this.CheckInitialized(e),e.identity.getID()}}c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"TokenName",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"Symbol",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"Decimals",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"TotalSupply",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"BalanceOf",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"Transfer",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"TransferFrom",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"Approve",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],D.prototype,"Allowance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,k]),c.__metadata("design:returntype",Promise)],D.prototype,"Initialize",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"CheckInitialized",null),c.__decorate([z(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"Mint",null),c.__decorate([z(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"Burn",null),c.__decorate([z(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"BurnFrom",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"ClientAccountBalance",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"ClientAccountID",null);const I=[D],$="##VERSION##",F="##PACKAGE##";o.Metadata.registerLibrary(F,$),t.ContractLogger=w,t.FabricContractAdapter=x,t.FabricContractContext=l,t.FabricContractRepository=u,t.FabricContractRepositoryObservableHandler=d,t.FabricContractSequence=f,t.FabricCrudContract=C,t.FabricStatement=p,t.PACKAGE_NAME=F,t.SerializedCrudContract=S,t.VERSION=$,t.contracts=I,t.createdByOnFabricCreateUpdate=_,t.pkFabricOnCreate=async function(t,e,a,i){if(!e.type||i[a])return;let o;e.name||(e.name=r.Model.sequenceName(i,"pk"));try{o=await this.adapter.Sequence(e)}catch(t){throw new n.InternalError(`Failed to instantiate Sequence ${e.name}: ${t}`)}const s=await o.next(t);Object.defineProperty(i,a,{enumerable:!0,writable:!1,configurable:!0,value:s})}},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@decaf-ts/for-couchdb"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("fabric-contract-api"),require("@decaf-ts/decoration"),require("@decaf-ts/logging"),require("tslib")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/for-couchdb","@decaf-ts/decorator-validation","@decaf-ts/core","@decaf-ts/db-decorators","fabric-contract-api","@decaf-ts/decoration","@decaf-ts/logging","tslib"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["for-fabric"]={},t.decafTsForCouchdb,t.decafTsDecoratorValidation,t.decafTsCore,t.decafTsDbDecorators,t.fabricContractApi,t.decafTsDecoration,t.decafTsLogging,t.tslib);
|
|
1
|
+
var t,e;t=this,e=function(t,e,r,a,n,i,o,s,c){"use strict";class l extends a.Context{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("identity")}toString(){return"fabric ctx"+(this.stub?" with stub":"without stub")}}class d extends a.ObserverHandler{constructor(t=[n.OperationKeys.CREATE,n.OperationKeys.UPDATE,n.OperationKeys.DELETE,n.BulkCrudOperationKeys.CREATE_ALL,n.BulkCrudOperationKeys.UPDATE_ALL,n.BulkCrudOperationKeys.DELETE_ALL]){super(),this.supportedEvents=t}async updateObservers(t,e,r,...n){const{log:i,ctx:o}=a.Adapter.logCtx(n,this.updateObservers),{stub:s}=o,[c,l]=n,d="string"==typeof t?t:t.name;if(-1!==this.supportedEvents.indexOf(e)){i.debug(`Emitting ${e} event`);const t=((t,e,r)=>{const a=[t,e];return r&&a.push(r),a.join("_")})(d,e,c);s.setEvent(t,Buffer.from(JSON.stringify({id:r})))}else s.setEvent(e,Buffer.from(JSON.stringify(l)))}}class u extends a.Repository{constructor(t,e,r){super(t,e),this.trackedEvents=r,this._overrides=Object.assign({},super._overrides,{ignoreValidation:!1,ignoreHandlers:!1,allowRawStatements:!0,forcePrepareSimpleQueries:!1,forcePrepareComplexQueries:!1})}async createAllPrefix(t,...e){const i=await a.Context.args(n.OperationKeys.CREATE,this.class,e,this.adapter,this._overrides||{}),o=i.context.logger.for(this.createAllPrefix),s=i.context.get("ignoreHandlers"),c=i.context.get("ignoreValidation");if(!t.length)return[t,...i.args];const l=r.Model.sequenceFor(t[0]);o.info("Sequence options: "+JSON.stringify(l));let d=[];if(l.type?(l.name||(l.name=r.Model.sequenceName(t[0],"pk")),d=await(await this.adapter.Sequence(l)).range(t.length,...i.args),o.info("Sequence ids: "+d)):d=t.map((t,e)=>{if(void 0===t[this.pk])throw new n.InternalError("Primary key is not defined for model in position "+e);return t[this.pk]}),t=await Promise.all(t.map(async(t,e)=>(t=new this.class(t),l.type&&(t[this.pk]="String"!==l.type||l.generated?d[e]:""+t[this.pk]),o.info("Creating model "+JSON.stringify(t)),s||await n.enforceDBDecorators(this,i.context,t,n.OperationKeys.CREATE,n.OperationKeys.ON),t))),!c){const e=i.context.get("ignoredValidationProperties")||[],r=await Promise.all(t.map(t=>Promise.resolve(t.hasErrors(...e)))),a=n.reduceErrorsToPrint(r);if(a)throw new n.ValidationError(a)}return[t,...i.args]}async paginateBy(t,e,n,i={page:1},...o){"number"==typeof i&&(i={page:i});let{page:s,bookmark:c}=i;if(!s&&!c)throw new a.QueryError("PaginateBy needs a page or a bookmark");const l=await a.Context.args(a.PreparedStatementKeys.PAGE_BY,this.class,o,this.adapter,this._overrides||{}),{log:d,ctxArgs:u}=this.logCtx(l.args,this.paginateBy);let p;if(d.verbose(`paginating ${r.Model.tableName(this.class)} with page size ${n}`),c)p=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().where(this.attr(r.Model.pk(this.class)).gt(c)).orderBy([t,e]).paginate(n,...u),s=1;else{if(!s)throw new a.QueryError("PaginateBy needs a page or a bookmark");p=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().orderBy([t,e]).paginate(n,...u)}const g=await p.page(s);return p.serialize(g)}async statement(t,...e){if(!a.Repository.statements(this,t))throw new a.QueryError("Invalid prepared statement requested "+t);const r=await a.Context.args(a.PersistenceKeys.STATEMENT,this.class,e,this.adapter,this._overrides||{});r.context.logger&&r.context.logger.info(`Repo statement: ${t} + ${e}`);const{log:i,ctxArgs:o}=this.logCtx(r.args,this.statement);let s;i.verbose(`Executing prepared statement ${t} with args ${o}`);try{s=await this[t](...o)}catch(e){if(e instanceof n.BaseError)throw e;throw new n.InternalError(`Failed to execute prepared statement ${t} with args ${o}: ${e}`)}return s}ObserverHandler(){return new d}async updateObservers(t,e,r,...a){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(e))return await super.updateObservers(t,e,r,...a)}}class p extends e.CouchDBStatement{constructor(t){super(t)}async raw(t,...e){const{ctx:a}=this.logCtx(e,this.raw),i=await this.adapter.raw(t,!0,a),s=r.Model.pk(this.fromSelector),c=o.Metadata.get(this.fromSelector,o.Metadata.key(n.DBKeys.ID,s))?.type;return this.selectSelector?i:i.map(t=>this.processRecord(t,s,c,a))}build(){const t={};t[e.CouchDBKeys.TABLE]={},t[e.CouchDBKeys.TABLE]=r.Model.tableName(this.fromSelector);const n={selector:t};if(this.selectSelector&&(n.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(a.Condition.and(this.whereCondition,a.Condition.attribute(e.CouchDBKeys.TABLE).eq(n.selector[e.CouchDBKeys.TABLE]))).selector,r=Object.keys(t);if(1===r.length&&-1!==Object.values(e.CouchDBGroupOperator).indexOf(r[0]))switch(r[0]){case e.CouchDBGroupOperator.AND:t[e.CouchDBGroupOperator.AND]=[...Object.values(t[e.CouchDBGroupOperator.AND]).reduce((t,r)=>{const a=Object.keys(r);if(1!==a.length)throw Error("Too many keys in query selector. should be one");const n=a[0];return n===e.CouchDBGroupOperator.AND?t.push(...r[n]):t.push(r),t},[])],n.selector=t;break;case e.CouchDBGroupOperator.OR:{const r={};r[e.CouchDBGroupOperator.AND]=[t,...Object.entries(n.selector).map(([t,e])=>{const r={};return r[t]=e,r})],n.selector=r;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,e])=>{n.selector[t],n.selector[t]=e})}if(this.orderBySelector){n.sort=n.sort||[],n.selector=n.selector||{};const[t,r]=this.orderBySelector,a={};a[t]=r,n.sort.push(a),n.selector[t]||(n.selector[t]={},n.selector[t][e.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(n.limit=this.limitSelector),this.offsetSelector&&(n.skip=this.offsetSelector),n}}var g,h;(t=>{t.PRIVATE="private",t.SHARED="shared",t.FABRIC="fabric.",t.OWNEDBY="owned-by",t.TRANSACTION_ID="transaction-id"})(g||(g={})),(t=>{t.X509="X.509"})(h||(h={}));const y="hlf-fabric";class m extends r.JSONSerializer{constructor(){super()}deserialize(t,e){return JSON.parse(t)}serialize(t,e=!0){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t,e)))}preSerialize(t,e=!0){const a=Object.assign({},t);let n;try{n=o.Metadata.modelName(t.constructor)}catch(t){n=void 0}function i(t){return"object"!=typeof t?t:Array.isArray(t)?t.map(i):this.preSerialize(t)}return e&&(a[r.ModelKeys.ANCHOR]=n||t.constructor.name),r.Model.relations(t).forEach(t=>{a[t]=i.call(this,a[t])}),a}}class w extends s.MiniLogger{constructor(t,e,r){super(t,e),this.logger=r?r.logging.getLogger(t):new s.MiniLogger(t,e)}log(t,e,r){if(s.NumericLogLevels[this.config("level")]<s.NumericLogLevels[t])return;let a;switch(t){case s.LogLevel.info:a=this.logger.info;break;case s.LogLevel.verbose:a=this.logger.verbose;break;case s.LogLevel.debug:a=this.logger.debug;break;case s.LogLevel.error:a=this.logger.error;break;case s.LogLevel.silly:a=this.logger.silly;break;default:throw new n.InternalError("Invalid log level")}a.call(this.logger,this.createLog(t,e,r))}}s.Logging.setFactory((t,e,r)=>new w(t||w.name,e||{},r));class f extends a.Sequence{constructor(t,e){super(t,e)}async current(...t){const e=(await a.Context.args(n.OperationKeys.READ,a.SequenceModel,t,this.adapter)).context,{name:r,startWith:i}=this.options;try{const t=await this.repo.read(r,e);return this.parse(t.current)}catch(t){if(t instanceof n.NotFoundError){if(void 0===i)throw new n.InternalError("Starting value is not defined for a non existing sequence");try{return this.parse(i)}catch(t){throw new n.InternalError(`Failed to parse initial value for sequence ${i}: ${t}`)}}throw new n.InternalError(`Failed to retrieve current value for sequence ${r}: ${t}`)}}async increment(t,e,r){const{type:i,incrementBy:o,name:s}=this.options;let c;const l=e||o;if(l%o!==0)throw new n.InternalError("Value to increment does not consider the incrementBy setting: "+o);switch("function"==typeof i&&i?.name?i.name:i){case Number.name:c=this.parse(t)+l;break;case BigInt.name:c=this.parse(t)+BigInt(l);break;case String.name:c=this.parse(t);break;case"serial":c=a.Serial.instance.generate(t);break;case"uuid":c=a.UUID.instance.generate(t);break;default:throw new n.InternalError("Should never happen")}let d;try{d=await this.repo.update(new a.SequenceModel({id:s,current:c}),r)}catch(o){if(!(o instanceof n.NotFoundError))throw o;try{d=await this.repo.create(new a.SequenceModel({id:s,current:c}),r)}catch(a){if(!(a instanceof n.ConflictError)||"uuid"!==i)throw a;return this.increment(t,e,r)}}return d.current}async next(...t){const e=await a.Context.args(n.OperationKeys.UPDATE,a.SequenceModel,t,this.adapter),{context:r,args:i}=e,o=await this.current(...i);return this.increment(o,void 0,r)}async range(t,...e){const r=await a.Context.args(n.OperationKeys.UPDATE,a.SequenceModel,e,this.adapter),{context:i,args:o}=r,s=await this.current(...o),c=this.parse(this.options.incrementBy),l=await this.increment(s,this.parse(t)*c,i),d=[];for(let e=1;t>=e;e++)d.push(s+c*this.parse(e));if("uuid"===this.options.type||"serial"===this.options.type)throw new a.UnsupportedError(`type ${this.options.type} is currently not suppported for this adapter`);const u="function"==typeof this.options.type&&this.options.type?.name?this.options.type.name:this.options.type;if(d[d.length-1]!==l&&"String"!==u)throw new n.InternalError("Miscalculation of range");return d}}async function _(t,e,r,n){try{const e=t.get("identity");n[r]=e.getID()}catch(t){throw new a.UnsupportedError("No User found in context. Please provide a user in the context")}}class x extends e.CouchDBAdapter{getClient(){throw new a.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new m}repository(){return u}async Sequence(t){return new f(t,this)}constructor(t,e){super(t,y,e),this.Context=l}for(t,...e){return super.for(t,...e)}async create(t,e,a,...n){const{ctx:i,log:o,stub:s}=this.logCtx(n,this.create);o.info("in ADAPTER create with args "+n);const c=r.Model.tableName(t);try{o.info(`adding entry to ${c} table with pk ${e}`);const t=s.createCompositeKey(c,[e+""]);a=await this.putState(t,a,i)}catch(t){throw this.parseError(t)}return a}async read(t,e,...a){const{ctx:n,log:i,stub:o}=this.logCtx(a,this.read);i.info("in ADAPTER read with args "+a);const s=r.Model.tableName(t);let c;try{const t=o.createCompositeKey(s,[e+""]);c=await this.readState(t,n)}catch(t){throw this.parseError(t)}return c}async update(t,e,a,...n){const{ctx:i,log:o,stub:s}=this.logCtx(n,this.update),c=r.Model.tableName(t);try{o.verbose(`updating entry to ${c} table with pk ${e}`);const t=s.createCompositeKey(c,[e+""]);a=await this.putState(t,a,i)}catch(t){throw this.parseError(t)}return a}async delete(t,e,...a){const{ctx:n,log:i,ctxArgs:o,stub:s}=this.logCtx(a,this.delete),c=r.Model.tableName(t);let l;try{const r=s.createCompositeKey(c,[e+""]);l=await this.read(t,e,...o),i.verbose(`deleting entry with pk ${e} from ${c} table`),await this.deleteState(r,n)}catch(t){throw this.parseError(t)}return l}async deleteState(t,e){const{stub:r}=this.logCtx([e],this.deleteState);await r.deleteState(t)}forPrivate(t){const e=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map(t=>t.name);return new Proxy(this,{get:(r,a,i)=>e.includes(a)?new Proxy(r[a],{async apply(e,r,i){switch(a){case"putState":{const[e,r,a]=i;return await e.putPrivateData(t,r.toString(),a),a}case"deleteState":{const[e,r]=i;return e.deletePrivateData(t,r)}case"readState":{const[e,r]=i;return e.getPrivateData(t,r)}case"queryResult":{const[e,r]=i;return e.getPrivateDataQueryResult(t,r)}case"queryResultPaginated":{const[e,r,a,n]=i,o=await e.getPrivateDataQueryResult(t,r),s=[];let c=0,l=!n,d=null;for(;;){const t=await o.next();if(t.value&&t.value.value.toString()){const e=t.value.key,r=t.value.value.toString("utf8");if(!l){e===n?.toString()&&(l=!0);continue}if(s.push({Key:e,Record:JSON.parse(r)}),d=e,c++,c>=a)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:d}}}if(t.done)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:""}}}}default:throw new n.InternalError("Unsupported method override "+a)}}}):Reflect.get(r,a,i)})}async putState(t,e,r){let a;const{stub:i,log:o}=this.logCtx([r],this.putState);try{a=Buffer.from(x.serializer.serialize(e,!1))}catch(e){throw new n.SerializationError(`Failed to serialize record with id ${t}: ${e}`)}const s=r.get("segregated");return s?await i.putPrivateData(s,t.toString(),a):await i.putState(t.toString(),a),o.silly(`state stored${s?` in ${s} collection`:""} under id ${t}`),e}async readState(t,e){let r;const{stub:a,log:i}=this.logCtx([e],this.readState);let o;const s=e.get("segregated");if(o=s?(await a.getPrivateData(s,t.toString())).toString():(await a.getState(t.toString())).toString(),!o)throw new n.NotFoundError(`Record with id ${t}${s?` in ${s} collection`:""} not found`);i.silly(`state retrieved from${s?` ${s} collection`:""} under id ${t}`);try{r=x.serializer.deserialize(o.toString())}catch(t){throw new n.SerializationError("Failed to parse record: "+t)}return r}async queryResult(t,e,...r){const{ctx:a}=this.logCtx(r,this.readState);let n;const i=a.get("segregated");return n=i?await t.getPrivateDataQueryResult(i,JSON.stringify(e)):await t.getQueryResult(JSON.stringify(e)),n}async queryResultPaginated(t,e,r=250,a,...n){const{ctx:i}=this.logCtx(n,this.readState);let o;const s=i.get("segregated");return s?(e.selector={...e.selector,_id:a?{$gt:a.toString()}:{$gte:""}},o={iterator:await t.getPrivateDataQueryResult(s,JSON.stringify(e)),metadata:{fetchedRecordsCount:r,bookmark:""}}):o=await t.getQueryResultWithPagination(JSON.stringify(e),r,a?.toString()),o}mergeModels(t){const e=t=>Object.entries(t).reduce((t,[e,r])=>(void 0!==r&&(t[e]=r),t),{});let r=t.pop();for(const a of t)r=Object.assign({},e(r),e(a));return r}decode(t){return x.textDecoder.decode(t)}async flags(t,e,r,a,...n){const i={stub:a.stub,segregated:!1};return Object.assign(i,a instanceof l?{logger:a.logger,identity:a.identity,correlationId:a.stub.getTxID()}:{identity:a.clientIdentity,logger:new w(this,void 0,a),correlationId:a.stub.getTxID()}),await super.flags(t,e,i,...n)}index(t){return Promise.resolve(void 0)}async resultIterator(t,e,r=!1){const a=[];let n=await e.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let e={};if(t.debug(n.value.value.toString("utf8")),r){e.TxId=n.value.txId,e.Timestamp=n.value.timestamp;try{e.Value=JSON.parse(n.value.value.toString("utf8"))}catch(r){t.error(r),e.Value=n.value.value.toString("utf8")}}else try{e=JSON.parse(n.value.value.toString("utf8"))}catch(r){t.error(r),e=n.value.value.toString("utf8")}a.push(e)}n=await e.next()}return t.debug(`Closing iterator after ${a.length} results`),e.close(),a}async raw(t,e=!0,...r){const{log:a,stub:n,ctx:i}=this.logCtx(r,this.raw),{skip:o,limit:s}=t;let c;s||o?(delete t.limit,delete t.skip,a.debug(`Retrieving paginated iterator: limit: ${s}/ skip: ${o}`),c=(await this.queryResultPaginated(n,t,s||250,o?.toString(),i)).iterator):(a.debug("Retrieving iterator"),c=await this.queryResult(n,t,i)),a.debug("Iterator acquired");const l=await this.resultIterator(a,c);return a.debug(`returning ${Array.isArray(l)?l.length:1} results`),l}Statement(){return new p(this)}async createAll(t,e,a,...i){if(e.length!==a.length)throw new n.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.createAll),c=r.Model.tableName(t);return o.debug(`Creating ${e.length} entries ${c} table`),Promise.all(e.map((e,r)=>this.create(t,e,a[r],...s)))}async updateAll(t,e,a,...i){if(e.length!==a.length)throw new n.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.updateAll),c=r.Model.tableName(t);return o.debug(`Updating ${e.length} entries ${c} table`),Promise.all(e.map((e,r)=>this.update(t,e,a[r],...s)))}prepare(t,...e){const{log:a}=this.logCtx(e,this.prepare),i=r.Model.tableName(t.constructor),o=r.Model.pk(t.constructor),s=r.Model.segregate(t),c=Object.entries(s.model).reduce((e,[a,i])=>{if(void 0===i)return e;const o=r.Model.columnName(t,a);if(this.isReserved(o))throw new n.InternalError(`Property name ${o} is reserved`);return e[o]=i,e},{});return a.silly(`Preparing record for ${i} table with pk ${t[o]}`),{record:c,id:t[o],transient:s.transient}}revert(t,e,a,i,...o){const{log:s}=this.logCtx(o,this.revert),c={};c[r.Model.pk(e)]=a;const l="string"==typeof e?r.Model.build(c,e):new e(c);s.silly(`Rebuilding model ${l.constructor.name} id ${a}`);const d=Object.keys(l).reduce((e,a)=>(e[a]=t[r.Model.columnName(e,a)],e),l);return i&&(s.debug("re-adding transient properties: "+Object.keys(i).join(", ")),Object.entries(i).forEach(([t,e])=>{if(t in d&&void 0!==d[t])throw new n.InternalError(`Transient property ${t} already exists on model ${l.constructor.name}. should be impossible`);d[t]=e})),d}createPrefix(t,a,n,...i){const{ctxArgs:o}=this.logCtx(i,this.createPrefix),s={};return s[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(s,n),[t,a,s,...o]}updatePrefix(t,a,n,...i){const{ctxArgs:o}=this.logCtx(i,this.updatePrefix),s={};return s[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(s,n),[t,a,s,...o]}createAllPrefix(t,a,i,...o){if(a.length!==i.length)throw new n.InternalError("Ids and models must have the same length");const s=o.pop(),c=a.map((a,n)=>{const o={};return o[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(o,i[n]),o});return[t,a,c,s]}updateAllPrefix(t,a,i,...o){if(a.length!==i.length)throw new n.InternalError("Ids and models must have the same length");const s=o.pop(),c=a.map((a,n)=>{const o={};return o[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(o,i[n]),o});return[t,a,c,s]}parseError(t,e){return x.parseError(e||t)}logCtx(t,e){return x.logCtx.call(this,t,e)}static logCtx(t,e){if(1>t.length)throw new n.InternalError("No context provided");const r=t.pop();if(!(r instanceof a.Context))throw new n.InternalError("No context provided");if(t.filter(t=>t instanceof a.Context).length>1)throw Error("here");const i=this?r.logger.for(this).for(e):r.logger.clear().for(this).for(e);return{ctx:r,log:e?i.for(e):i,stub:r.stub,identity:r.identity,ctxArgs:[...t,r]}}static parseError(t){const e="string"==typeof t?t:t.message;return e.includes(n.NotFoundError.name)?new n.NotFoundError(t):e.includes(n.ConflictError.name)?new n.ConflictError(t):e.includes(n.BadRequestError.name)?new n.BadRequestError(t):e.includes(a.QueryError.name)?new a.QueryError(t):e.includes(a.PagingError.name)?new a.PagingError(t):e.includes(a.UnsupportedError.name)?new a.UnsupportedError(t):e.includes(a.MigrationError.name)?new a.MigrationError(t):e.includes(a.ObserverError.name)?new a.ObserverError(t):e.includes(a.AuthorizationError.name)?new a.AuthorizationError(t):e.includes(a.ForbiddenError.name)?new a.ForbiddenError(t):e.includes(a.ConnectionError.name)?new a.ConnectionError(t):e.includes(n.SerializationError.name)?new n.SerializationError(t):new n.InternalError(t)}static decoration(){super.decoration(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.CREATED_BY).define(n.onCreate(_),o.propMetadata(a.PersistenceKeys.CREATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.UPDATED_BY).define(n.onCreateUpdate(_),o.propMetadata(a.PersistenceKeys.UPDATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.COLUMN).extend(i.Property()).apply(),o.Decoration.flavouredAs(y).for(r.ValidationKeys.DATE).extend(()=>(t,e)=>{i.Property(e,"string:date")(t,e)}),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.TABLE).extend(t=>{const e=[];let r="function"==typeof t?o.Metadata.constr(t):o.Metadata.constr(t.constructor);for(;r&&r!==Object&&r.prototype;)e.push(r),r=Object.getPrototypeOf(r);for(;e.length>0;){const t=e.pop();i.Object()(t)}return i.Object()(t)}).apply()}}x.decoration(),a.Adapter.setCurrent(y);class b extends r.JSONSerializer{constructor(){super()}preSerialize(t){const e=Object.assign({},t);let a;try{a=o.Metadata.modelName(t.constructor)}catch(t){a=void 0}e[r.ModelKeys.ANCHOR]=a||t.constructor.name;const n=function t(e){const r=this;return"object"!=typeof e?e:Array.isArray(e)?e.map(e=>t.call(r,e)):this.preSerialize.call(this,e)}.bind(this);return r.Model.relations(t).forEach(t=>{e[t]=n(e[t])}),e}deserialize(t){const e=JSON.parse(t),a=e[r.ModelKeys.ANCHOR];if(!a)throw Error("Could not find class reference in serialized model");return r.Model.build(e,a)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}i.Object()(Date);class C extends i.Contract{static{this.adapter=new x}static{this.serializer=new b}constructor(t,e){super(t),this.clazz=e,this.initialized=!1,this.repo=a.Repository.forModel(e)}async listBy(t,e,r,...a){const{ctxArgs:n,log:i}=await this.logCtx([...a,t],this.listBy);return i.info(`Running listBy key ${e}, order ${r} and args ${n}`),this.repo.listBy(e,r,...n)}async paginateBy(t,e,r,a,...n){const{ctxArgs:i,log:o}=await this.logCtx([...n,t],this.paginateBy);return o.info(`Running paginateBy key ${e}, order ${r} with size ${a} and args ${i}`),this.repo.paginateBy(e,r,a,...i)}async findOneBy(t,e,r,...a){const{ctxArgs:n,log:i}=await this.logCtx([...a,t],this.findOneBy);return i.info(`Running findOneBy key ${e}, value: ${r} with args ${n}`),this.repo.findOneBy(e,r,...n)}async statement(t,e,...r){const{ctxArgs:a,log:n}=await this.logCtx([...r,t],this.statement);return n.info(`Running statement ${e} with args ${a}`),this.repo.statement(e,...a)}async create(t,e,...a){const{log:n,ctxArgs:i}=await this.logCtx([...a,t],this.create);n.info("CONTRACT CREATE, "+i),"string"==typeof e&&(e=this.deserialize(e)),n.info("Creating model: "+JSON.stringify(e));const o=this.getTransientData(t);return n.info("Merging transient data..."),e=r.Model.merge(e,o,this.clazz),this.repo.create(e,...i)}async read(t,e,...r){const{log:a,ctxArgs:n}=await this.logCtx([...r,t],this.read);return a.info(`reading entry with pk ${e} `),this.repo.read(e,...n)}getTransientData(t){const e=t.stub.getTransient();let r={};return e.has(this.repo.tableName)&&(r=JSON.parse(e.get(this.repo.tableName)?.toString("utf8"))),r}async update(t,e,...a){const{log:n,ctxArgs:i}=await this.logCtx([...a,t],this.update);"string"==typeof e&&(e=this.deserialize(e)),n.info("Updating model: "+JSON.stringify(e));const o=this.getTransientData(t);return n.info("Merging transient data..."),e=r.Model.merge(e,o,this.clazz),this.repo.update(e,...i)}async delete(t,e,...r){const{log:a,ctxArgs:n}=await this.logCtx([...r,t],this.delete);return a.info(`deleting entry with pk ${e} `),this.repo.delete(e+"",...n)}async deleteAll(t,e,...r){const{ctxArgs:a}=await this.logCtx([...r,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.deleteAll(e,...a)}async readAll(t,e,...r){const{ctxArgs:a}=await this.logCtx([...r,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.readAll(e,...a)}async updateAll(t,e,...r){const{log:a,ctxArgs:n}=await this.logCtx([...r,t],this.updateAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),a.info(`updating ${e.length} entries to the table`),this.repo.updateAll(e,...n)}async query(t,e,r,n=a.OrderDirection.ASC,i,o,...s){const{ctxArgs:c}=await this.logCtx([...s,t],this.query);return this.repo.query(e,r,n,i,o,...c)}async raw(t,e,r,...a){const{ctxArgs:n}=await this.logCtx([...a,t],this.raw);return C.adapter.raw(e,r,...n)}serialize(t){return C.serializer.serialize(t)}deserialize(t){return C.serializer.deserialize(t)}async init(t){const{log:e}=await this.logCtx([t],this.init);e.info(`Running contract ${this.getName()} initialization...`),this.initialized=!0,e.info("Contract initialization completed.")}async healthcheck(t){const{log:e}=await this.logCtx([t],this.healthcheck);return e.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(t,e,...r){const{log:a,ctxArgs:n}=await this.logCtx([...r,t],this.createAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),a.info(`adding ${e.length} entries to the table`),this.repo.createAll(e,...n)}async logCtx(t,e){return C.logCtx.bind(this)(t,e)}static async logCtx(t,e){if(1>t.length)throw new n.InternalError("No context provided");const r=t.pop();if(r instanceof l)return{ctx:r,log:r.logger.clear().for(this).for(e),ctxArgs:[...t,r],stub:r.stub,identity:r.identity};if(!(r instanceof i.Context))throw new n.InternalError("No valid context provided");const a={correlationId:r.stub.getTxID()},o=await C.adapter.context((()=>{if("string"==typeof e)return e;switch(e.name){case n.OperationKeys.CREATE:case n.OperationKeys.READ:case n.OperationKeys.UPDATE:case n.OperationKeys.DELETE:case n.BulkCrudOperationKeys.CREATE_ALL:case n.BulkCrudOperationKeys.READ_ALL:case n.BulkCrudOperationKeys.UPDATE_ALL:case n.BulkCrudOperationKeys.DELETE_ALL:}return e.name})(),a,this.clazz,r),s=this?o.logger.for(this).for(e):o.logger.clear().for(this).for(e);return{ctx:o,log:s,stub:o.stub,identity:o.identity,ctxArgs:[...t,o]}}}class S extends C{constructor(t,e){super(t,e)}async create(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.create);r.info("Creating model: "+e);const n=this.deserialize(e);r.info("Model deserialized: "+JSON.stringify(n));const i=await super.create(a,n);return this.serialize(i)}async read(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.read);return r.info("Reading id: "+e),this.serialize(await super.read(a,e))}async update(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.update);return r.info("Updating model: "+e),this.serialize(await super.update(a,e))}async delete(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.delete);return r.info("Deleting id: "+e),this.serialize(await super.delete(a,e))}async deleteAll(t,e){const r=JSON.parse(e),{log:a,ctx:n}=await this.logCtx([t],this.deleteAll);return a.info(`deleting ${r.length} entries from the table`),JSON.stringify((await super.deleteAll(n,r)).map(t=>this.serialize(t)))}async readAll(t,e){const r=JSON.parse(e),{log:a,ctx:n}=await this.logCtx([t],this.readAll);return a.info(`reading ${r.length} entries from the table`),JSON.stringify((await super.readAll(n,r)).map(t=>this.serialize(t)))}async updateAll(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.updateAll),n=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return r.info(`Updating ${n.length} entries to the table`),JSON.stringify((await super.updateAll(a,n)).map(t=>this.serialize(t)))}async statement(t,e,r){const{ctx:a,log:i}=await this.logCtx([t],this.statement);try{r=JSON.parse(r)}catch(t){throw new n.SerializationError("Invalid args: "+t)}if(!Array.isArray(r))throw new n.SerializationError(`Invalid args: ${JSON.stringify(r)}. must be an array`);return i.info("calling prepared statement "+e),i.info("with args "+r),JSON.stringify(await super.statement(a,e,...r))}async listBy(t,e,r){const{ctx:a,log:n}=await this.logCtx([t],this.listBy);return n.info(`Executing listBy with key ${e} and order ${r}`),JSON.stringify(await super.listBy(a,e,r))}async paginateBy(t,e,r,a){const{ctx:n,log:i}=await this.logCtx([t],this.paginateBy);return i.info(`Executing paginateBy with key ${e} and order ${r}`),JSON.stringify(await super.paginateBy(n,e,r,a))}async findOneBy(t,e,r,...a){const{ctx:n,log:i}=await this.logCtx([...a,t],this.findOneBy);return i.info(`Executing findOneBy with key ${e} and value ${r}`),JSON.stringify(await super.findOneBy(n,e,r,...a))}async query(t,e,r,i,o,s){const{ctx:c,log:l}=await this.logCtx([t],this.query);let d;l.info(`Executing query orderedBy ${r} and order ${i}`);try{d=a.Condition.from(JSON.parse(e))}catch(t){throw new n.SerializationError("Invalid condition: "+t)}return l.info("Condition: "+JSON.stringify(d)),JSON.stringify(await super.query(c,d,r,i,o,s))}async init(t){await super.init(t)}async healthcheck(t){const{log:e,ctx:r}=await this.logCtx([t],this.updateAll);return e.debug(`Running Healthcheck: ${this.initialized}...`),JSON.stringify(await super.healthcheck(r))}async createAll(t,e){const{log:r}=await this.logCtx([t],this.createAll),a=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));r.info(`Adding ${a.length} entries to the table`);const n=await super.createAll(t,a);return JSON.stringify(n.map(t=>this.serialize(t)))}}c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"create",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"read",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"update",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"delete",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"deleteAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"readAll",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"updateAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],S.prototype,"statement",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],S.prototype,"listBy",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],S.prototype,"paginateBy",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,String]),c.__metadata("design:returntype",Promise)],S.prototype,"findOneBy",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],S.prototype,"init",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],S.prototype,"healthcheck",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],S.prototype,"createAll",null);class E extends n.InternalError{constructor(t){super(t,E.name)}}class A extends n.InternalError{constructor(t){super(t,A.name)}}class v extends n.InternalError{constructor(t){super(t,v.name)}}class O extends n.BaseError{constructor(t){super(O.name,t,409)}}function k(t,e){const r=t+e;if(t!==r-e||e!==r-t)throw new E(`Addition overflow: ${t} + ${e}`);return r}function N(t,e){const r=t-e;if(t!==r+e||e!==t-r)throw new E(`Subtraction overflow: ${t} - ${e}`);return r}let T=class extends a.BaseModel{constructor(t){super(t)}};c.__decorate([a.pk({type:"String"}),c.__metadata("design:type",String)],T.prototype,"name",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],T.prototype,"owner",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],T.prototype,"symbol",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],T.prototype,"decimals",void 0),T=c.__decorate([a.table("erc20_tokens"),r.model(),c.__metadata("design:paramtypes",[Object])],T);let R=class extends a.BaseModel{constructor(t){super(t)}};c.__decorate([a.pk({type:"String"}),c.__metadata("design:type",String)],R.prototype,"id",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],R.prototype,"token",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],R.prototype,"balance",void 0),c.__decorate([a.column(),c.__metadata("design:type",String)],R.prototype,"captive",void 0),R=c.__decorate([a.table("erc20_wallets"),r.model(),c.__metadata("design:paramtypes",[Object])],R);let B=class extends a.BaseModel{constructor(t){super(t)}};function P(){return function(t,e,r){const i=r.value;return r.value=async function(...t){const r=t[0],o=r.clientIdentity.getID(),s=await this.tokenRepository.select(),c=await s.execute(r);if(0==c.length)throw new n.NotFoundError("No tokens avaialble");if(c.length>1)throw new n.NotFoundError("To many token available : "+c.length);if(c[0].owner!=o)throw new a.AuthorizationError(`User not authorized to run ${e} on the token`);return await i.apply(this,t)},r}}var z;c.__decorate([a.pk({type:"String"}),a.column(),r.required(),c.__metadata("design:type",String)],B.prototype,"owner",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],B.prototype,"spender",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],B.prototype,"value",void 0),B=c.__decorate([a.table("erc20_allowances"),r.model(),c.__metadata("design:paramtypes",[Object])],B),(t=>{t.TRANSFER="Transfer",t.APPROVAL="Approval"})(z||(z={}));class D extends C{constructor(t){super(t,R),D.adapter=D.adapter||new x,this.walletRepository=u.forModel(R,D.adapter.alias),this.tokenRepository=u.forModel(T,D.adapter.alias),this.allowanceRepository=u.forModel(B,D.adapter.alias)}async TokenName(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].name}async Symbol(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].symbol}async Decimals(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].decimals}async TotalSupply(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.walletRepository.select(),a=await r.execute(e);if(0==a.length)throw new n.NotFoundError(`The token ${this.getName()} does not exist`);let i=0;return a.forEach(t=>{i+=t.balance}),i}async BalanceOf(t,e){const{ctx:r}=await this.logCtx([t],this.TokenName);return await this.CheckInitialized(r),(await this.walletRepository.read(e,r)).balance}async Transfer(t,e,r){const{ctx:a}=await this.logCtx([t],this.Transfer);await this.CheckInitialized(a);const i=a.identity.getID();if(!await this._transfer(i,e,r,a))throw new n.InternalError("Failed to transfer");return!0}async TransferFrom(t,e,r,a){const{ctx:i}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(i);const o=i.identity.getID(),s=await this._getAllowance(e,o,i);if(!s||0>s.value)throw new v(`spender ${o} has no allowance from ${e}`);const c=s.value;if(a>c)throw new A("The spender does not have enough allowance to spend.");const l=N(c,a),d=Object.assign({},s,{value:l});if(await this.allowanceRepository.update(d,i),!await this._transfer(e,r,a,i))throw new n.InternalError("Failed to transfer");return!0}async _transfer(t,e,r,i){const o=i.logger;if(t===e)throw new a.AuthorizationError("cannot transfer to and from same client account");if(0>r)throw new A("transfer amount cannot be negative");const s=await this.walletRepository.read(t,i),c=s.balance;if(r>c)throw new A(`client account ${t} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(e,i)}catch(t){if(!(t instanceof n.BaseError))throw new n.InternalError(t);if(404!==t.code)throw new n.InternalError(t.message);l=new R({id:e,balance:0,token:await this.TokenName(i)}),d=!0}const u=l.balance,p=N(c,r),g=k(u,r),h=Object.assign({},s,{balance:p});await this.walletRepository.update(h,i);const y=Object.assign({},l,{balance:g});d?await this.walletRepository.create(y,i):await this.walletRepository.update(y,i);const m={from:t,to:e,value:r};return this.repo.refresh(T,z.TRANSFER,"",m,i).catch(t=>o.error("Failed to notify transfer: "+t)),!0}async Approve(t,e,r){const{ctx:a,ctxArgs:n}=await this.logCtx([t],this.Approve);await this.CheckInitialized(a);const i=a.identity.getID();let o=await this._getAllowance(i,e,a);if((await this.walletRepository.read(i,...n)).balance<r)throw new A(`client account ${i} has insufficient funds.`);o?(o.value=r,await this.allowanceRepository.update(o,...n)):(o=new B({owner:i,spender:e,value:r}),await this.allowanceRepository.create(o,...n));const s={owner:i,spender:e,value:r};return this.repo.refresh(T,z.APPROVAL,"",s,a),!0}async Allowance(t,e,r){const{ctx:a}=await this.logCtx([t],this.Allowance);await this.CheckInitialized(a);const n=await this._getAllowance(e,r,a);if(!n)throw new v(`spender ${r} has no allowance from ${e}`);return n.value}async _getAllowance(t,e,r){const n=a.Condition.and(a.Condition.attribute("owner").eq(t),a.Condition.attribute("spender").eq(e)),i=await this.allowanceRepository.select().where(n).execute(r);return i?.[0]}async Initialize(t,e){const{ctx:r}=await this.logCtx([t],this.Initialize);if((await this.tokenRepository.select().execute(r)).length>0)throw new a.AuthorizationError("contract options are already set, client is not authorized to change them");return e.owner=r.identity.getID(),await this.tokenRepository.create(e,r),!0}async CheckInitialized(t){const{ctx:e}=await this.logCtx([t],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(e)).length)throw new O("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(t,e){const{ctx:r}=await this.logCtx([t],this.Mint);await this.CheckInitialized(r);const a=r.identity.getID();if(0>=e)throw new n.ValidationError("mint amount must be a positive integer");let i;try{i=await this.walletRepository.read(a,r);const t=k(i.balance,e),n=Object.assign({},i,{balance:t});await this.walletRepository.update(n,r)}catch(i){if(!(i instanceof n.BaseError))throw new n.InternalError(i);if(404!==i.code)throw new n.InternalError(i.message);{const n=new R({id:a,balance:e,token:await this.TokenName(t)});await this.walletRepository.create(n,r)}}const o={from:"0x0",to:a,value:e};this.repo.ObserverHandler().updateObservers(T,z.TRANSFER,"",o,r)}async Burn(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.Burn);await this.CheckInitialized(a);const n=a.identity.getID(),i=await this.walletRepository.read(n,a),o=i.balance;if(e>o)throw new A("Minter has insufficient funds.");const s=N(o,e),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,a),r.info(e+" tokens were burned");const l={from:n,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(T,z.TRANSFER,"",l,a)}async BurnFrom(t,e,r){const{log:a,ctx:n}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(n);const i=await this.walletRepository.read(e,n),o=i.balance;if(r>o)throw new A(e+" has insufficient funds.");const s=N(o,r),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,n),a.info(`${r} tokens were burned from ${e}`);const l={from:e,to:"0x0",value:r};this.repo.ObserverHandler().updateObservers(T,z.TRANSFER,"",l,n)}async ClientAccountBalance(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=e.identity.getID(),a=await this.walletRepository.read(r,e);if(!a)throw new A(`The account ${r} does not exist`);return a.balance}async ClientAccountID(t){const{ctx:e}=await this.logCtx([t],this.ClientAccountID);return await this.CheckInitialized(e),e.identity.getID()}}c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"TokenName",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"Symbol",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"Decimals",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"TotalSupply",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],D.prototype,"BalanceOf",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"Transfer",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"TransferFrom",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"Approve",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],D.prototype,"Allowance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,T]),c.__metadata("design:returntype",Promise)],D.prototype,"Initialize",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"CheckInitialized",null),c.__decorate([P(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"Mint",null),c.__decorate([P(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"Burn",null),c.__decorate([P(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],D.prototype,"BurnFrom",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"ClientAccountBalance",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],D.prototype,"ClientAccountID",null);const I=[D],$="##VERSION##",F="##PACKAGE##";o.Metadata.registerLibrary(F,$),t.ContractLogger=w,t.FabricContractAdapter=x,t.FabricContractContext=l,t.FabricContractRepository=u,t.FabricContractRepositoryObservableHandler=d,t.FabricContractSequence=f,t.FabricCrudContract=C,t.FabricStatement=p,t.PACKAGE_NAME=F,t.SerializedCrudContract=S,t.VERSION=$,t.contracts=I,t.createdByOnFabricCreateUpdate=_,t.pkFabricOnCreate=async function(t,e,a,i){if(!e.type||i[a])return;let o;e.name||(e.name=r.Model.sequenceName(i,"pk"));try{o=await this.adapter.Sequence(e)}catch(t){throw new n.InternalError(`Failed to instantiate Sequence ${e.name}: ${t}`)}const s=await o.next(t);Object.defineProperty(i,a,{enumerable:!0,writable:!1,configurable:!0,value:s})}},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@decaf-ts/for-couchdb"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("fabric-contract-api"),require("@decaf-ts/decoration"),require("@decaf-ts/logging"),require("tslib")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/for-couchdb","@decaf-ts/decorator-validation","@decaf-ts/core","@decaf-ts/db-decorators","fabric-contract-api","@decaf-ts/decoration","@decaf-ts/logging","tslib"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["for-fabric"]={},t.decafTsForCouchdb,t.decafTsDecoratorValidation,t.decafTsCore,t.decafTsDbDecorators,t.fabricContractApi,t.decafTsDecoration,t.decafTsLogging,t.tslib);
|
|
2
2
|
//# sourceMappingURL=for-fabric.cjs.map
|
package/dist/for-fabric.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-fabric.cjs","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/constants.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/logging.ts","../src/contracts/FabricContractSequence.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/errors.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/decorators.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.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],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","toString","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","clazz","event","id","args","log","ctx","Adapter","logCtx","owner","payload","table","name","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricContractRepository","Repository","adapter","trackedEvents","_overrides","Object","assign","ignoreValidation","ignoreHandlers","allowRawStatements","forcePrepareSimpleQueries","forcePrepareComplexQueries","createAllPrefix","models","contextArgs","class","context","logger","for","ignoreValidate","length","opts","Model","sequenceFor","info","ids","type","sequenceName","Sequence","range","map","m","i","pk","InternalError","Promise","all","async","generated","enforceDBDecorators","ON","ignoredProps","errors","resolve","hasErrors","errorMessages","reduceErrorsToPrint","ValidationError","paginateBy","key","order","size","PreparedStatementKeys","PAGE_BY","ctxArgs","verbose","tableName","override","select","orderBy","paginate","statement","statements","QueryError","PersistenceKeys","STATEMENT","e","BaseError","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","fromSelector","Metadata","DBKeys","ID","selectSelector","r","processRecord","build","selectors","CouchDBKeys","TABLE","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","keys","values","CouchDBGroupOperator","AND","reduce","accum","val","Error","k","OR","s","entries","result","forEach","orderBySelector","sort","value","rec","CouchDBOperator","BIGGER","limitSelector","limit","offsetSelector","skip","FabricModelKeys","IdentityType","FabricFlavour","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","parse","serialize","model","require","sortKeysRecursive","preSerialize","toSerialize","metadata","modelName","error","undefined","obj","Array","isArray","ModelKeys","ANCHOR","relations","call","ContractLogger","MiniLogger","conf","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","silly","createLog","Logging","setFactory","object","FabricContractSequence","options","current","READ","SequenceModel","startWith","sequence","repo","read","NotFoundError","increment","count","incrementBy","next","toIncrementBy","Number","BigInt","String","Serial","instance","generate","UUID","seq","update","create","ConflictError","argz","UnsupportedError","typeName","createdByOnFabricCreateUpdate","data","user","getID","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","alias","composedKey","createCompositeKey","putState","parseError","readState","delete","deleteState","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","target","prop","receiver","includes","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","reachedBookmark","lastKey","res","recordKey","recordValue","Key","Record","close","fetchedRecordsCount","bookmark","done","Reflect","SerializationError","getState","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","correlationId","getTxID","clientIdentity","index","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Statement","createAll","tableLabel","updateAll","prepare","split","segregate","mappedProp","columnName","isReserved","record","transient","revert","ob","createPrefix","updatePrefix","records","updateAllPrefix","reason","filter","a","clear","message","BadRequestError","PagingError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","COLUMN","extend","FabricProperty","Property","ValidationKeys","DATE","chain","constr","prototype","getPrototypeOf","FabricObject","setCurrent","DeterministicSerializer","deserialization","className","Date","FabricCrudContract","Contract","initialized","forModel","listBy","findOneBy","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","OrderDirection","ASC","init","getName","healthcheck","bind","Ctx","overrides","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","cond","__decorate","Transaction","OverflowError","BalanceError","AllowanceError","NotInitializedError","add","b","c","sub","ERC20Token","BaseModel","column","required","ERC20Wallet","Allowance","Owner","propertyKey","descriptor","originalMethod","acountId","tokens","execute","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","BurnFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","code","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","refresh","TRANSFER","catch","Approve","approvalEvent","APPROVAL","allowanceCondition","where","Initialize","Mint","amount","minter","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","VERSION","PACKAGE_NAME","registerLibrary","defineProperty","enumerable","writable","configurable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"for-fabric.cjs","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/constants.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/logging.ts","../src/contracts/FabricContractSequence.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/errors.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/decorators.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.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],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","toString","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","clazz","event","id","args","log","ctx","Adapter","logCtx","owner","payload","table","name","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricContractRepository","Repository","adapter","trackedEvents","_overrides","Object","assign","ignoreValidation","ignoreHandlers","allowRawStatements","forcePrepareSimpleQueries","forcePrepareComplexQueries","createAllPrefix","models","contextArgs","class","context","logger","for","ignoreValidate","length","opts","Model","sequenceFor","info","ids","type","sequenceName","Sequence","range","map","m","i","pk","InternalError","Promise","all","async","generated","enforceDBDecorators","ON","ignoredProps","errors","resolve","hasErrors","errorMessages","reduceErrorsToPrint","ValidationError","paginateBy","key","order","size","ref","page","bookmark","QueryError","PreparedStatementKeys","PAGE_BY","ctxArgs","paginator","verbose","tableName","override","select","where","attr","gt","orderBy","paginate","paged","serialize","statement","statements","PersistenceKeys","STATEMENT","result","e","BaseError","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","fromSelector","Metadata","DBKeys","ID","selectSelector","r","processRecord","build","selectors","CouchDBKeys","TABLE","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","keys","values","CouchDBGroupOperator","AND","reduce","accum","val","Error","k","OR","s","entries","forEach","orderBySelector","sort","value","rec","CouchDBOperator","BIGGER","limitSelector","limit","offsetSelector","skip","FabricModelKeys","IdentityType","FabricFlavour","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","parse","model","putAnchor","require","sortKeysRecursive","preSerialize","toSerialize","metadata","modelName","error","undefined","obj","Array","isArray","ModelKeys","ANCHOR","relations","call","ContractLogger","MiniLogger","conf","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","silly","createLog","Logging","setFactory","object","FabricContractSequence","options","current","READ","SequenceModel","startWith","sequence","repo","read","NotFoundError","increment","count","incrementBy","next","toIncrementBy","Number","BigInt","String","Serial","instance","generate","UUID","seq","update","create","ConflictError","argz","UnsupportedError","typeName","createdByOnFabricCreateUpdate","data","user","getID","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","alias","composedKey","createCompositeKey","putState","parseError","readState","delete","deleteState","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","target","prop","receiver","includes","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","reachedBookmark","lastKey","res","recordKey","recordValue","Key","Record","close","fetchedRecordsCount","done","Reflect","SerializationError","getState","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","correlationId","getTxID","clientIdentity","index","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Statement","createAll","tableLabel","updateAll","prepare","split","segregate","mappedProp","columnName","isReserved","record","transient","revert","ob","createPrefix","updatePrefix","records","updateAllPrefix","reason","filter","a","clear","message","BadRequestError","PagingError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","COLUMN","extend","FabricProperty","Property","ValidationKeys","DATE","chain","constr","prototype","getPrototypeOf","FabricObject","setCurrent","DeterministicSerializer","self","o","bind","deserialization","className","Date","FabricCrudContract","Contract","initialized","forModel","listBy","findOneBy","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","OrderDirection","ASC","init","getName","healthcheck","Ctx","overrides","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","cond","__decorate","Transaction","OverflowError","BalanceError","AllowanceError","NotInitializedError","add","b","c","sub","ERC20Token","BaseModel","column","required","ERC20Wallet","Allowance","Owner","propertyKey","descriptor","originalMethod","acountId","tokens","execute","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","BurnFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","code","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","refresh","TRANSFER","catch","Approve","approvalEvent","APPROVAL","allowanceCondition","Initialize","Mint","amount","minter","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","VERSION","PACKAGE_NAME","registerLibrary","defineProperty","enumerable","writable","configurable"],"mappings":"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"}
|