@decaf-ts/for-fabric 0.1.29 → 0.1.30

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.
@@ -1,2 +1,2 @@
1
- var t,e;t=this,e=function(t,e,r,a,n,i,s,o,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:s}=a.Adapter.logCtx(n,this.updateObservers),{stub:o}=s,[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);o.setEvent(t,Buffer.from(JSON.stringify({id:r})))}else o.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||{}),s=i.context.get("ignoreHandlers"),o=i.context.get("ignoreValidation");if(!t.length)return[t,...i.args];const c=r.Model.sequenceFor(t[0]);let l=[];if(c.type?(c.name||(c.name=r.Model.sequenceName(t[0],"pk")),l=await(await this.adapter.Sequence(c)).range(t.length,...i.args)):l=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),c.type&&(t[this.pk]="String"!==c.type||c.generated?l[e]:""+t[this.pk]),s||await n.enforceDBDecorators(this,i.context,t,n.OperationKeys.CREATE,n.OperationKeys.ON),t)))),!o){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 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:s}=this.logCtx(r.args,this.statement);i.verbose(`Executing prepared statement ${t} with args ${s}`);try{return this[t](...s)}catch(e){if(e instanceof n.BaseError)throw e;throw new n.InternalError(`Failed to execute prepared statement ${t} with args ${s}: ${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),o=r.Model.pk(this.fromSelector),c=s.Metadata.get(this.fromSelector,s.Metadata.key(n.DBKeys.ID,o))?.type;return this.selectSelector?i:i.map((t=>this.processRecord(t,o,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"})(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){return Object.assign({},t)}}class w extends o.MiniLogger{constructor(t,e,r){super(t,e),this.logger=r?r.logging.getLogger(t):new o.MiniLogger(t,e)}log(t,e,r){if(o.NumericLogLevels[this.config("level")]<o.NumericLogLevels[t])return;let a;switch(t){case o.LogLevel.info:a=this.logger.info;break;case o.LogLevel.verbose:a=this.logger.verbose;break;case o.LogLevel.debug:a=this.logger.debug;break;case o.LogLevel.error:a=this.logger.error;break;case o.LogLevel.silly:a=this.logger.silly;break;default:throw new n.InternalError("Invalid log level")}a.call(this.logger,this.createLog(t,e,r))}}o.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:s,name:o}=this.options;let c;const l=e||s;if(l%s!=0)throw new n.InternalError("Value to increment does not consider the incrementBy setting: "+s);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:o,current:c}),r)}catch(s){if(!(s instanceof n.NotFoundError))throw s;try{d=await this.repo.create(new a.SequenceModel({id:o,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,s=await this.current(...i);return this.increment(s,void 0,r)}async range(t,...e){const r=await a.Context.args(n.OperationKeys.UPDATE,a.SequenceModel,e,this.adapter),{context:i,args:s}=r,o=await this.current(...s),c=this.parse(this.options.incrementBy),l=await this.increment(o,this.parse(t)*c,i),d=[];for(let e=1;t>=e;e++)d.push(o+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:s,stub:o}=this.logCtx(n,this.create);s.info("in ADAPTER create with args "+n);const c=r.Model.tableName(t);try{s.info(`adding entry to ${c} table with pk ${e}`);const t=o.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:s}=this.logCtx(a,this.read);i.info("in ADAPTER read with args "+a);const o=r.Model.tableName(t);let c;try{const t=s.createCompositeKey(o,[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:s,stub:o}=this.logCtx(n,this.update),c=r.Model.tableName(t);try{s.verbose(`updating entry to ${c} table with pk ${e}`);const t=o.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:s,stub:o}=this.logCtx(a,this.delete),c=r.Model.tableName(t);let l;try{const r=o.createCompositeKey(c,[e+""]);l=await this.read(t,e,...s),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,s=await e.getPrivateDataQueryResult(t,r),o=[];let c=0,l=!n,d=null;for(;;){const t=await s.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(o.push({Key:e,Record:JSON.parse(r)}),d=e,c++,c>=a)return await s.close(),{iterator:o,metadata:{fetchedRecordsCount:o.length,bookmark:d}}}if(t.done)return await s.close(),{iterator:o,metadata:{fetchedRecordsCount:o.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:s}=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 o=r.get("segregated");return o?await i.putPrivateData(o,t.toString(),a):await i.putState(t.toString(),a),s.silly(`state stored${o?` in ${o} collection`:""} under id ${t}`),e}async readState(t,e){let r;const{stub:a,log:i}=this.logCtx([e],this.readState);let s;const o=e.get("segregated");if(s=o?(await a.getPrivateData(o,t.toString())).toString():(await a.getState(t.toString())).toString(),!s)throw new n.NotFoundError(`Record with id ${t}${o?` in ${o} collection`:""} not found`);i.silly(`state retrieved from${o?` ${o} collection`:""} under id ${t}`);try{r=x.serializer.deserialize(s.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 s;const o=i.get("segregated");return o?(e.selector={...e.selector,_id:a?{$gt:a.toString()}:{$gte:""}},s={iterator:await t.getPrivateDataQueryResult(o,JSON.stringify(e)),metadata:{fetchedRecordsCount:r,bookmark:""}}):s=await t.getQueryResultWithPagination(JSON.stringify(e),r,a?.toString()),s}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:s,limit:o}=t;let c;o||s?(delete t.limit,delete t.skip,a.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${s}`),c=(await this.queryResultPaginated(n,t,o||250,s?.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:s,ctxArgs:o}=this.logCtx(i,this.createAll),c=r.Model.tableName(t);return s.debug(`Creating ${e.length} entries ${c} table`),Promise.all(e.map(((e,r)=>this.create(t,e,a[r],...o))))}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:s,ctxArgs:o}=this.logCtx(i,this.updateAll),c=r.Model.tableName(t);return s.debug(`Updating ${e.length} entries ${c} table`),Promise.all(e.map(((e,r)=>this.update(t,e,a[r],...o))))}prepare(t,...e){const{log:a}=this.logCtx(e,this.prepare),i=r.Model.tableName(t.constructor),s=r.Model.pk(t.constructor),o=r.Model.segregate(t),c=Object.entries(o.model).reduce(((e,[a,i])=>{if(void 0===i)return e;const s=r.Model.columnName(t,a);if(this.isReserved(s))throw new n.InternalError(`Property name ${s} is reserved`);return e[s]=i,e}),{});return a.silly(`Preparing record for ${i} table with pk ${t[s]}`),{record:c,id:t[s],transient:o.transient}}revert(t,e,a,i,...s){const{log:o}=this.logCtx(s,this.revert),c={};c[r.Model.pk(e)]=a;const l="string"==typeof e?r.Model.build(c,e):new e(c);o.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&&(o.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:s}=this.logCtx(i,this.createPrefix),o={};return o[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(o,n),[t,a,o,...s]}updatePrefix(t,a,n,...i){const{ctxArgs:s}=this.logCtx(i,this.updatePrefix),o={};return o[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(o,n),[t,a,o,...s]}createAllPrefix(t,r,a,...i){if(r.length!==a.length)throw new n.InternalError("Ids and models must have the same length");const s=i.pop(),o=r.map(((r,n)=>{const i={};return i[e.CouchDBKeys.TABLE]=t,Object.assign(i,a[n]),i}));return[t,r,o,s]}updateAllPrefix(t,r,a,...i){if(r.length!==a.length)throw new n.InternalError("Ids and models must have the same length");const s=i.pop(),o=r.map(((r,n)=>{const i={};return i[e.CouchDBKeys.TABLE]=t,Object.assign(i,a[n]),i}));return[t,r,o,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(),s.Decoration.flavouredAs(y).for(a.PersistenceKeys.CREATED_BY).define(n.onCreate(_),s.propMetadata(a.PersistenceKeys.CREATED_BY,{})).apply(),s.Decoration.flavouredAs(y).for(a.PersistenceKeys.UPDATED_BY).define(n.onCreateUpdate(_),s.propMetadata(a.PersistenceKeys.UPDATED_BY,{})).apply(),s.Decoration.flavouredAs(y).for(a.PersistenceKeys.COLUMN).extend(i.Property()).apply(),s.Decoration.flavouredAs(y).for(a.PersistenceKeys.TABLE).extend((t=>i.Object()(t))).apply()}}x.decoration(),a.Adapter.setCurrent(y);class C extends r.JSONSerializer{constructor(){super()}deserialize(t){return super.deserialize(t)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}class b extends i.Contract{static{this.adapter=new x}static{this.serializer=new C}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:s}=await this.logCtx([...n,t],this.paginateBy);return s.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 s=this.getTransientData(t);return n.info("Merging transient data..."),e=r.Model.merge(e,s,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 s=this.getTransientData(t);return n.info("Merging transient data..."),e=r.Model.merge(e,s,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,s,...o){const{ctxArgs:c}=await this.logCtx([...o,t],this.query);return this.repo.query(e,r,n,i,s,...c)}async raw(t,e,r,...a){const{ctxArgs:n}=await this.logCtx([...a,t],this.raw);return b.adapter.raw(e,r,...n)}serialize(t){return b.serializer.serialize(t)}deserialize(t){return b.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 b.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()},s=await b.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),o=this?s.logger.for(this).for(e):s.logger.clear().for(this).for(e);return{ctx:s,log:o,stub:s.stub,identity:s.identity,ctxArgs:[...t,s]}}}class S extends b{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,s,o){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,s,o))}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 v extends n.InternalError{constructor(t){super(t,v.name)}}class A extends n.InternalError{constructor(t){super(t,A.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 T(t,e){const r=t-e;if(t!==r+e||e!==t-r)throw new E(`Subtraction overflow: ${t} - ${e}`);return r}let N=class extends a.BaseModel{constructor(t){super(t)}};c.__decorate([a.pk({type:"String"}),c.__metadata("design:type",String)],N.prototype,"name",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],N.prototype,"owner",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],N.prototype,"symbol",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],N.prototype,"decimals",void 0),N=c.__decorate([a.table("erc20_tokens"),r.model(),c.__metadata("design:paramtypes",[Object])],N);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],s=r.clientIdentity.getID(),o=await this.tokenRepository.select(),c=await o.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!=s)throw new a.AuthorizationError(`User not authorized to run ${e} on the token`);return await i.apply(this,t)},r}}var I;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"})(I||(I={}));class P extends b{constructor(t){super(t,R),P.adapter=P.adapter||new x,this.walletRepository=u.forModel(R,P.adapter.alias),this.tokenRepository=u.forModel(N,P.adapter.alias),this.allowanceRepository=u.forModel(B,P.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 s=i.identity.getID(),o=await this._getAllowance(e,s,i);if(!o||0>o.value)throw new A(`spender ${s} has no allowance from ${e}`);const c=o.value;if(a>c)throw new v("The spender does not have enough allowance to spend.");const l=T(c,a),d=Object.assign({},o,{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 s=i.logger;if(t===e)throw new a.AuthorizationError("cannot transfer to and from same client account");if(0>r)throw new v("transfer amount cannot be negative");const o=await this.walletRepository.read(t,i),c=o.balance;if(r>c)throw new v(`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=k(u,r),h=Object.assign({},o,{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(N,I.TRANSFER,"",m,i).catch((t=>s.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 s=await this._getAllowance(i,e,a);if((await this.walletRepository.read(i,...n)).balance<r)throw new v(`client account ${i} has insufficient funds.`);s?(s.value=r,await this.allowanceRepository.update(s,...n)):(s=new B({owner:i,spender:e,value:r}),await this.allowanceRepository.create(s,...n));const o={owner:i,spender:e,value:r};return this.repo.refresh(N,I.APPROVAL,"",o,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 A(`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 s={from:"0x0",to:a,value:e};this.repo.ObserverHandler().updateObservers(N,I.TRANSFER,"",s,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),s=i.balance;if(e>s)throw new v("Minter has insufficient funds.");const o=T(s,e),c=Object.assign({},i,{balance:o});await this.walletRepository.update(c,a),r.info(e+" tokens were burned");const l={from:n,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(N,I.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),s=i.balance;if(r>s)throw new v(e+" has insufficient funds.");const o=T(s,r),c=Object.assign({},i,{balance:o});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(N,I.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 v(`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)],P.prototype,"TokenName",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],P.prototype,"Symbol",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],P.prototype,"Decimals",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],P.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)],P.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)],P.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)],P.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)],P.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)],P.prototype,"Allowance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,N]),c.__metadata("design:returntype",Promise)],P.prototype,"Initialize",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],P.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)],P.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)],P.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)],P.prototype,"BurnFrom",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],P.prototype,"ClientAccountBalance",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],P.prototype,"ClientAccountID",null);const $=[P],D="##VERSION##",F="##PACKAGE##";s.Metadata.registerLibrary(F,D),t.ContractLogger=w,t.FabricContractAdapter=x,t.FabricContractContext=l,t.FabricContractRepository=u,t.FabricContractRepositoryObservableHandler=d,t.FabricContractSequence=f,t.FabricCrudContract=b,t.FabricStatement=p,t.PACKAGE_NAME=F,t.SerializedCrudContract=S,t.VERSION=D,t.contracts=$,t.createdByOnFabricCreateUpdate=_,t.pkFabricOnCreate=async function(t,e,a,i){if(!e.type||i[a])return;let s;e.name||(e.name=r.Model.sequenceName(i,"pk"));try{s=await this.adapter.Sequence(e)}catch(t){throw new n.InternalError(`Failed to instantiate Sequence ${e.name}: ${t}`)}const o=await s.next(t);Object.defineProperty(i,a,{enumerable:!0,writable:!1,configurable:!0,value:o})}},"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.get("ignoreHandlers"),s=i.context.get("ignoreValidation");if(!t.length)return[t,...i.args];const c=r.Model.sequenceFor(t[0]);let l=[];if(c.type?(c.name||(c.name=r.Model.sequenceName(t[0],"pk")),l=await(await this.adapter.Sequence(c)).range(t.length,...i.args)):l=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),c.type&&(t[this.pk]="String"!==c.type||c.generated?l[e]:""+t[this.pk]),o||await n.enforceDBDecorators(this,i.context,t,n.OperationKeys.CREATE,n.OperationKeys.ON),t)))),!s){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 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"})(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){return Object.assign({},t)}}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,r,a,...i){if(r.length!==a.length)throw new n.InternalError("Ids and models must have the same length");const o=i.pop(),s=r.map(((r,n)=>{const i={};return i[e.CouchDBKeys.TABLE]=t,Object.assign(i,a[n]),i}));return[t,r,s,o]}updateAllPrefix(t,r,a,...i){if(r.length!==a.length)throw new n.InternalError("Ids and models must have the same length");const o=i.pop(),s=r.map(((r,n)=>{const i={};return i[e.CouchDBKeys.TABLE]=t,Object.assign(i,a[n]),i}));return[t,r,s,o]}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(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()}deserialize(t){return super.deserialize(t)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}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 v extends n.InternalError{constructor(t){super(t,v.name)}}class A extends n.InternalError{constructor(t){super(t,A.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 T(t,e){const r=t-e;if(t!==r+e||e!==t-r)throw new E(`Subtraction overflow: ${t} - ${e}`);return r}let N=class extends a.BaseModel{constructor(t){super(t)}};c.__decorate([a.pk({type:"String"}),c.__metadata("design:type",String)],N.prototype,"name",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],N.prototype,"owner",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],N.prototype,"symbol",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],N.prototype,"decimals",void 0),N=c.__decorate([a.table("erc20_tokens"),r.model(),c.__metadata("design:paramtypes",[Object])],N);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 I extends C{constructor(t){super(t,R),I.adapter=I.adapter||new x,this.walletRepository=u.forModel(R,I.adapter.alias),this.tokenRepository=u.forModel(N,I.adapter.alias),this.allowanceRepository=u.forModel(B,I.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 A(`spender ${o} has no allowance from ${e}`);const c=s.value;if(a>c)throw new v("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 v("transfer amount cannot be negative");const s=await this.walletRepository.read(t,i),c=s.balance;if(r>c)throw new v(`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=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(N,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 v(`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(N,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 A(`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(N,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 v("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(N,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 v(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(N,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 v(`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)],I.prototype,"TokenName",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],I.prototype,"Symbol",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],I.prototype,"Decimals",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],I.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)],I.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)],I.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)],I.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)],I.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)],I.prototype,"Allowance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,N]),c.__metadata("design:returntype",Promise)],I.prototype,"Initialize",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],I.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)],I.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)],I.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)],I.prototype,"BurnFrom",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],I.prototype,"ClientAccountBalance",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],I.prototype,"ClientAccountID",null);const $=[I],D="##VERSION##",F="##PACKAGE##";o.Metadata.registerLibrary(F,D),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=D,t.contracts=$,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
@@ -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","ignoreValidate","length","opts","Model","sequenceFor","ids","type","sequenceName","Sequence","range","map","m","i","pk","InternalError","Promise","all","async","generated","enforceDBDecorators","ON","ignoredProps","errors","resolve","hasErrors","errorMessages","reduceErrorsToPrint","ValidationError","statement","statements","QueryError","PersistenceKeys","STATEMENT","logger","info","ctxArgs","verbose","e","BaseError","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","fromSelector","Metadata","key","DBKeys","ID","selectSelector","r","processRecord","build","selectors","CouchDBKeys","TABLE","tableName","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","ContractLogger","MiniLogger","conf","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","error","silly","call","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","undefined","UnsupportedError","typeName","createdByOnFabricCreateUpdate","data","user","getID","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","alias","for","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","metadata","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","Array","isArray","Statement","createAll","tableLabel","updateAll","prepare","split","segregate","mappedProp","columnName","isReserved","record","transient","revert","obj","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","FabricObject","setCurrent","DeterministicSerializer","FabricCrudContract","Contract","initialized","forModel","listBy","order","paginateBy","size","findOneBy","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","orderBy","OrderDirection","ASC","init","getName","healthcheck","bind","Ctx","overrides","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","cond","__decorate","Transaction","prototype","OverflowError","BalanceError","AllowanceError","NotInitializedError","add","b","c","sub","ERC20Token","BaseModel","column","required","ERC20Wallet","Allowance","Owner","propertyKey","descriptor","originalMethod","acountId","select","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","ignoreValidate","length","opts","Model","sequenceFor","ids","type","sequenceName","Sequence","range","map","m","i","pk","InternalError","Promise","all","async","generated","enforceDBDecorators","ON","ignoredProps","errors","resolve","hasErrors","errorMessages","reduceErrorsToPrint","ValidationError","statement","statements","QueryError","PersistenceKeys","STATEMENT","logger","info","ctxArgs","verbose","e","BaseError","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","fromSelector","Metadata","key","DBKeys","ID","selectSelector","r","processRecord","build","selectors","CouchDBKeys","TABLE","tableName","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","ContractLogger","MiniLogger","conf","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","error","silly","call","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","undefined","UnsupportedError","typeName","createdByOnFabricCreateUpdate","data","user","getID","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","alias","for","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","metadata","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","Array","isArray","Statement","createAll","tableLabel","updateAll","prepare","split","segregate","mappedProp","columnName","isReserved","record","transient","revert","obj","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","chain","constr","prototype","getPrototypeOf","FabricObject","setCurrent","DeterministicSerializer","FabricCrudContract","Contract","initialized","forModel","listBy","order","paginateBy","size","findOneBy","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","orderBy","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","select","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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"}