@decaf-ts/for-fabric 0.1.16 → 0.1.17

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 e,t;e=this,t=function(e,t,a,r,n,i,o,s,c){"use strict";class l extends r.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 i.ObserverHandler{constructor(e=[r.OperationKeys.CREATE,r.OperationKeys.UPDATE,r.OperationKeys.DELETE,r.BulkCrudOperationKeys.CREATE_ALL,r.BulkCrudOperationKeys.UPDATE_ALL,r.BulkCrudOperationKeys.DELETE_ALL]){super(),this.supportedEvents=e}async updateObservers(e,t,a,...r){const{log:n,ctx:o}=i.Adapter.logCtx(r,this.updateObservers),{stub:s}=o,[c,l]=r,d="string"==typeof e?e:e.name;if(-1!==this.supportedEvents.indexOf(t)){n.debug(`Emitting ${t} event`);const e=((e,t,a)=>{const r=[e,t];return a&&r.push(a),r.join("_")})(d,t,c);s.setEvent(e,Buffer.from(JSON.stringify({id:a})))}else s.setEvent(t,Buffer.from(JSON.stringify(l)))}}class u extends i.Repository{constructor(e,t,a){super(e,t),this.trackedEvents=a}ObserverHandler(){return new d}async updateObservers(e,t,a,...r){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(t))return await super.updateObservers(e,t,a,...r)}}class p extends t.CouchDBStatement{constructor(e){super(e)}async raw(e,...t){const{ctx:n}=this.logCtx(t,this.raw),i=await this.adapter.raw(e,!0,n),s=a.Model.pk(this.fromSelector),c=o.Metadata.get(this.fromSelector,o.Metadata.key(r.DBKeys.ID,s))?.type;return this.selectSelector?i:i.map(e=>this.processRecord(e,s,c,n))}build(){const e={};e[t.CouchDBKeys.TABLE]={},e[t.CouchDBKeys.TABLE]=a.Model.tableName(this.fromSelector);const r={selector:e};if(this.selectSelector&&(r.fields=this.selectSelector),this.whereCondition){const e=this.parseCondition(i.Condition.and(this.whereCondition,i.Condition.attribute(t.CouchDBKeys.TABLE).eq(r.selector[t.CouchDBKeys.TABLE]))).selector,a=Object.keys(e);if(1===a.length&&-1!==Object.values(t.CouchDBGroupOperator).indexOf(a[0]))switch(a[0]){case t.CouchDBGroupOperator.AND:e[t.CouchDBGroupOperator.AND]=[...Object.values(e[t.CouchDBGroupOperator.AND]).reduce((e,a)=>{const r=Object.keys(a);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const n=r[0];return n===t.CouchDBGroupOperator.AND?e.push(...a[n]):e.push(a),e},[])],r.selector=e;break;case t.CouchDBGroupOperator.OR:{const a={};a[t.CouchDBGroupOperator.AND]=[e,...Object.entries(r.selector).map(([e,t])=>{const a={};return a[e]=t,a})],r.selector=a;break}default:throw Error("This should be impossible")}else Object.entries(e).forEach(([e,t])=>{r.selector[e],r.selector[e]=t})}if(this.orderBySelector){r.sort=r.sort||[],r.selector=r.selector||{};const[e,a]=this.orderBySelector,n={};n[e]=a,r.sort.push(n),r.selector[e]||(r.selector[e]={},r.selector[e][t.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(r.limit=this.limitSelector),this.offsetSelector&&(r.skip=this.offsetSelector),r}}let h=class extends i.BaseModel{constructor(e){super(e)}};s.__decorate([i.pk(),s.__metadata("design:type",String)],h.prototype,"id",void 0),s.__decorate([a.required(),i.index(),s.__metadata("design:type",Object)],h.prototype,"current",void 0),h=s.__decorate([i.table(t.CouchDBKeys.SEQUENCE),a.model(),s.__metadata("design:paramtypes",[Object])],h);class g extends i.Sequence{constructor(e,t){super(e,t),this.repo=i.Repository.forModel(h,t.alias)}async current(...e){const t=(await r.Context.args(r.OperationKeys.READ,h,e,this.adapter)).context,{name:a,startWith:n}=this.options;try{const e=await this.repo.read(a,t);return this.parse(e.current)}catch(e){if(e instanceof r.NotFoundError){if(void 0===n)throw new r.InternalError("Starting value is not defined for a non existing sequence");try{return this.parse(n)}catch(e){throw new r.InternalError(`Failed to parse initial value for sequence ${n}: ${e}`)}}throw new r.InternalError(`Failed to retrieve current value for sequence ${a}: ${e}`)}}async increment(e,t,a){const{type:n,incrementBy:i,name:o}=this.options;let s;const c=t||i;if(c%i!==0)throw new r.InternalError("Value to increment does not consider the incrementBy setting: "+i);switch(n){case"Number":s=this.parse(e)+c;break;case"BigInt":s=this.parse(e)+BigInt(c);break;default:throw new r.InternalError("Should never happen")}let l;try{l=await this.repo.update(new h({id:o,current:s}),a)}catch(e){if(!(e instanceof r.NotFoundError))throw e;l=await this.repo.create(new h({id:o,current:s}),a)}return l.current}async next(...e){const t=await r.Context.args(r.OperationKeys.UPDATE,h,e,this.adapter),{context:a,args:n}=t,i=await this.current(...n);return this.increment(i,void 0,a)}async range(e,...t){const a=await r.Context.args(r.OperationKeys.UPDATE,h,t,this.adapter),{context:n,args:i}=a,o=await this.current(...i),s=this.parse(this.options.incrementBy),c=await this.increment(o,this.parse(e)*s,n),l=[];for(let t=1;e>=t;t++)l.push(o+s*this.parse(t));if(l[l.length-1]!==c&&"String"!==this.options.type)throw new r.InternalError("Miscalculation of range");return l}}var y,m;(e=>{e.PRIVATE="private",e.SHARED="shared",e.FABRIC="fabric.",e.OWNEDBY="owned-by"})(y||(y={})),(e=>{e.X509="X.509"})(m||(m={}));const w="hlf-fabric";class f extends a.JSONSerializer{constructor(){super()}deserialize(e,t){return JSON.parse(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}preSerialize(e){return Object.assign({},e)}}async function _(e,t,n,o){const s=o[n];if(!s)return;if("object"!=typeof s){const t=i.repositoryFromTypeMetadata(o,n,this.adapter.alias),a=await t.read(s,e);return await i.cacheModelForPopulate(e,o,n,s,a),void(o[n]=s)}t.class="string"==typeof t.class?t.class:t.class().name;const c=a.Model.get(t.class);if(!c)throw new r.InternalError("Could not find model "+t.class);const l=i.Repository.forModel(c,this.adapter.alias),d=await l.create(s,e),u=a.Model.pk(d);await i.cacheModelForPopulate(e,o,n,d[u],d),o[n]=d[u]}async function b(e,t,r,n){const o=n[r];if(!o)return;if(t.cascade.update!==i.Cascade.CASCADE)return;if("object"!=typeof o){const t=i.repositoryFromTypeMetadata(n,r,this.adapter.alias),a=await t.read(o,e);return await i.cacheModelForPopulate(e,n,r,o,a),void(n[r]=o)}const s=await i.createOrUpdate(n[r],e,this.adapter.alias),c=a.Model.pk(s);await i.cacheModelForPopulate(e,n,r,s[c],s),n[r]=s[c]}async function C(e,t,r,n){const o=n[r];if(!o)return;if(t.cascade.update!==i.Cascade.CASCADE)return;const s=i.repositoryFromTypeMetadata(n,r,this.adapter.alias);let c;c=o instanceof a.Model?await s.delete(n[r][a.Model.pk(s.class)],e):await s.delete(n[r],e),await i.cacheModelForPopulate(e,n,r,c[a.Model.pk(s.class)],c)}async function x(e,t,n,o){const s=o[n];if(!s||!s.length)return;const c=typeof s[0];if(!s.every(e=>typeof e===c))throw new r.InternalError(`Invalid operation. All elements of property ${n} must match the same type.`);const l=new Set([...s]);if("object"!==c){const t=i.repositoryFromTypeMetadata(o,n,this.adapter.alias);for(const a of l){const r=await t.read(a,e);await i.cacheModelForPopulate(e,o,n,a,r)}return void(o[n]=[...l])}const d=a.Model.pk(s[0]),u=new Set;for(const t of s){const a=await i.createOrUpdate(t,e,this.adapter.alias);await i.cacheModelForPopulate(e,o,n,a[d],a),u.add(a[d])}o[n]=[...u]}async function E(e,t,n,o){if(t.cascade.delete!==i.Cascade.CASCADE)return;const s=o[n];if(!s||!s.length)return;const c=typeof s[0];if(!s.every(e=>typeof e===c))throw new r.InternalError(`Invalid operation. All elements of property ${n} must match the same type.`);const l="object"===c,d=l?i.Repository.forModel(s[0],this.adapter.alias):i.repositoryFromTypeMetadata(o,n,this.adapter.alias),u=new Set([...l?s.map(e=>e[a.Model.pk(this.class)]):s]);for(const t of u.values()){const a=await d.delete(t,e);await i.cacheModelForPopulate(e,o,n,t,a)}o[n]=[...u]}async function A(e,t,a,n){if(!t.populate)return;const o=n[a],s=Array.isArray(o);if(void 0===o||s&&0===o.length)return;const c=await(async(t,a,n,o,s)=>{let c,l;const d=[];for(const u of o){c=i.getPopulateKey(a.constructor.name,n,u);try{l=await t.get(c)}catch(t){const o=i.repositoryFromTypeMetadata(a,n,s);if(!o)throw new r.InternalError("Could not find repo");l=await o.read(u,e)}d.push(l)}return d})(e,n,a,s?o:[o],this.adapter.alias);n[a]=s?c:c[0]}async function v(e,t,a,r){try{const t=e.get("identity");r[a]=t.getID()}catch(e){throw new i.UnsupportedError("No User found in context. Please provide a user in the context")}}async function S(e,t,n,i){if(!t.type||i[n])return;let o;t.name||(t.name=a.Model.sequenceName(i,"pk"));try{o=await this.adapter.Sequence(t)}catch(e){throw new r.InternalError(`Failed to instantiate Sequence ${t.name}: ${e}`)}const s=await o.next(e);Object.defineProperty(i,n,{enumerable:!0,writable:!1,configurable:!0,value:s})}class O extends t.CouchDBAdapter{getClient(){throw new i.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new f}repository(){return u}constructor(e,t){super(e,w,t),this.Context=l}for(e,...t){return super.for(e,...t)}async create(e,t,r,...n){const{ctx:i,log:o}=this.logCtx(n,this.create);o.info("in ADAPTER create with args "+n);const{stub:s}=i,c=a.Model.tableName(e);try{o.info(`adding entry to ${c} table with pk ${t}`);const e=s.createCompositeKey(c,[t+""]);r=await this.putState(e,r,i)}catch(e){throw this.parseError(e)}return r}async read(e,t,...r){const{ctx:n,log:i}=this.logCtx(r,this.read);i.info("in ADAPTER read with args "+r);const{stub:o}=n,s=a.Model.tableName(e);let c;try{const e=o.createCompositeKey(s,[t+""]);c=await this.readState(e,n)}catch(e){throw this.parseError(e)}return c}async update(e,t,r,...n){const{ctx:i,log:o}=this.logCtx(n,this.update),{stub:s}=i,c=a.Model.tableName(e);try{o.verbose(`updating entry to ${c} table with pk ${t}`);const e=s.createCompositeKey(c,[t+""]);r=await this.putState(e,r,i)}catch(e){throw this.parseError(e)}return r}async delete(e,t,...r){const{ctx:n,log:i,ctxArgs:o}=this.logCtx(r,this.delete),{stub:s}=n,c=a.Model.tableName(e);let l;try{const a=s.createCompositeKey(c,[t+""]);l=await this.read(e,t,...o),i.verbose(`deleting entry with pk ${t} from ${c} table`),await this.deleteState(a,n)}catch(e){throw this.parseError(e)}return l}async deleteState(e,t){const{stub:a,logger:r}=t;r.for(this.deleteState),await a.deleteState(e)}forPrivate(e){const t=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map(e=>e.name);return new Proxy(this,{get:(a,n,i)=>t.includes(n)?new Proxy(a[n],{async apply(t,a,i){switch(n){case"putState":{const[t,a,r]=i;return await t.putPrivateData(e,a.toString(),r),r}case"deleteState":{const[t,a]=i;return t.deletePrivateData(e,a)}case"readState":{const[t,a]=i;return t.getPrivateData(e,a)}case"queryResult":{const[t,a]=i;return t.getPrivateDataQueryResult(e,a)}case"queryResultPaginated":{const[t,a,r,n]=i,o=await t.getPrivateDataQueryResult(e,a),s=[];let c=0,l=!n,d=null;for(;;){const e=await o.next();if(e.value&&e.value.value.toString()){const t=e.value.key,a=e.value.value.toString("utf8");if(!l){t===n?.toString()&&(l=!0);continue}if(s.push({Key:t,Record:JSON.parse(a)}),d=t,c++,c>=r)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:d}}}if(e.done)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:""}}}}default:throw new r.InternalError("Unsupported method override "+n)}}}):Reflect.get(a,n,i)})}async putState(e,t,a){let n;const{stub:i,logger:o}=a,s=o.for(this.putState);try{n=Buffer.from(O.serializer.serialize(t))}catch(t){throw new r.SerializationError(`Failed to serialize record with id ${e}: ${t}`)}return await i.putState(e.toString(),n),s.silly("state stored under id "+e),t}async readState(e,t){let a;const{stub:n,logger:i}=t,o=i.for(this.readState),s=(await n.getState(e)).toString();if(!s)throw new r.NotFoundError(`Record with id ${e} not found`);o.silly("Read state for id "+e);try{a=O.serializer.deserialize(s.toString())}catch(e){throw new r.SerializationError("Failed to parse record: "+e)}return a}async queryResult(e,t,...a){return await e.getQueryResult(JSON.stringify(t))}async queryResultPaginated(e,t,a=250,r,...n){return await e.getQueryResultWithPagination(JSON.stringify(t),a,r?.toString())}mergeModels(e){const t=e=>Object.entries(e).reduce((e,[t,a])=>(void 0!==a&&(e[t]=a),e),{});let a=e.pop();for(const r of e)a=Object.assign({},t(a),t(r));return a}decode(e){return O.textDecoder.decode(e)}async flags(e,t,a,r,...n){const i=e=>{const t=e??this.log.for(this.flags);return"function"!=typeof t.clear&&(t.clear=()=>t),"function"!=typeof t.for&&(t.for=()=>t),t},o=r instanceof l?r.accumulate({logger:i(r.logger)}):(new l).accumulate({stub:r.stub,identity:r.clientIdentity,logger:i()}),s=Object.assign({},a,{logger:o.logger});return Object.assign(await super.flags(e,t,s,...n),{stub:r.stub,identity:r.clientIdentity??o.identity,logger:o.logger,correlationId:r.stub.getTxID()})}index(e){return Promise.resolve(void 0)}async resultIterator(e,t,a=!1){const r=[];let n=await t.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let t={};if(e.debug(n.value.value.toString("utf8")),a){t.TxId=n.value.txId,t.Timestamp=n.value.timestamp;try{t.Value=JSON.parse(n.value.value.toString("utf8"))}catch(a){e.error(a),t.Value=n.value.value.toString("utf8")}}else try{t=JSON.parse(n.value.value.toString("utf8"))}catch(a){e.error(a),t=n.value.value.toString("utf8")}r.push(t)}n=await t.next()}return e.debug(`Closing iterator after ${r.length} results`),t.close(),r}async raw(e,...t){const{ctx:a,log:r,ctxArgs:n}=this.logCtx(t,this.raw);"boolean"==typeof n[0]&&n.shift();const{stub:i}=a,{skip:o,limit:s}=e;let c;s||o?(delete e.limit,delete e.skip,r.debug(`Retrieving paginated iterator: limit: ${s}/ skip: ${o}`),c=(await this.queryResultPaginated(i,e,s||250,o?.toString())).iterator):(r.debug("Retrieving iterator"),c=await this.queryResult(i,e)),r.debug("Iterator acquired");const l=await this.resultIterator(r,c);return r.debug("returning {0} results",""+(Array.isArray(l)?l.length:1)),l}Statement(){return new p(this)}async Sequence(e){return new g(e,this)}async createAll(e,t,n,...i){if(t.length!==n.length)throw new r.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.createAll),c=a.Model.tableName(e);return o.debug(`Creating ${t.length} entries ${c} table`),Promise.all(t.map((t,a)=>this.create(e,t,n[a],...s)))}async updateAll(e,t,n,...i){if(t.length!==n.length)throw new r.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.updateAll),c=a.Model.tableName(e);return o.debug(`Updating ${t.length} entries ${c} table`),Promise.all(t.map((t,a)=>this.update(e,t,n[a],...s)))}prepare(e,...t){const{log:n}=this.logCtx(t,this.prepare),i=a.Model.tableName(e.constructor),o=a.Model.pk(e.constructor),s=a.Model.segregate(e),c=Object.entries(s.model).reduce((t,[n,i])=>{if(void 0===i)return t;const o=a.Model.columnName(e,n);if(this.isReserved(o))throw new r.InternalError(`Property name ${o} is reserved`);return t[o]=i,t},{});return n.silly(`Preparing record for ${i} table with pk ${e[o]}`),{record:c,id:e[o],transient:s.transient}}revert(e,t,n,i,...o){const{log:s}=this.logCtx(o,this.revert),c={};c[a.Model.pk(t)]=n;const l="string"==typeof t?a.Model.build(c,t):new t(c);s.silly(`Rebuilding model ${l.constructor.name} id ${n}`);const d=Object.keys(l).reduce((t,r)=>(t[r]=e[a.Model.columnName(t,r)],t),l);return i&&(s.debug("re-adding transient properties: "+Object.keys(i).join(", ")),Object.entries(i).forEach(([e,t])=>{if(e in d&&void 0!==d[e])throw new r.InternalError(`Transient property ${e} already exists on model ${l.constructor.name}. should be impossible`);d[e]=t})),d}createPrefix(e,r,n,...i){const{ctxArgs:o}=this.logCtx(i,this.createPrefix),s={};return s[t.CouchDBKeys.TABLE]=a.Model.tableName(e),Object.assign(s,n),[e,r,s,...o]}updatePrefix(e,r,n,...i){const{ctxArgs:o}=this.logCtx(i,this.updatePrefix),s={};return s[t.CouchDBKeys.TABLE]=a.Model.tableName(e),Object.assign(s,n),[e,r,s,...o]}createAllPrefix(e,a,n,...i){if(a.length!==n.length)throw new r.InternalError("Ids and models must have the same length");const o=i.pop(),s=a.map((a,r)=>{const i={};return i[t.CouchDBKeys.TABLE]=e,Object.assign(i,n[r]),i});return[e,a,s,o]}updateAllPrefix(e,a,n,...i){if(a.length!==n.length)throw new r.InternalError("Ids and models must have the same length");const o=i.pop(),s=a.map((a,r)=>{const i={};return i[t.CouchDBKeys.TABLE]=e,Object.assign(i,n[r]),i});return[e,a,s,o]}parseError(e,t){return O.parseError(t||e)}static parseError(e){const t="string"==typeof e?e:e.message;return t.includes(r.NotFoundError.name)?new r.NotFoundError(e):t.includes(r.ConflictError.name)?new r.ConflictError(e):t.includes(r.BadRequestError.name)?new r.BadRequestError(e):t.includes(i.QueryError.name)?new i.QueryError(e):t.includes(i.PagingError.name)?new i.PagingError(e):t.includes(i.UnsupportedError.name)?new i.UnsupportedError(e):t.includes(i.MigrationError.name)?new i.MigrationError(e):t.includes(i.ObserverError.name)?new i.ObserverError(e):t.includes(i.AuthorizationError.name)?new i.AuthorizationError(e):t.includes(i.ForbiddenError.name)?new i.ForbiddenError(e):t.includes(i.ConnectionError.name)?new i.ConnectionError(e):t.includes(r.SerializationError.name)?new r.SerializationError(e):new r.InternalError(e)}static decoration(){super.decoration(),o.Decoration.flavouredAs(w).for(i.PersistenceKeys.CREATED_BY).define(r.onCreate(v),o.propMetadata(i.PersistenceKeys.CREATED_BY,{})).apply(),o.Decoration.flavouredAs(w).for(i.PersistenceKeys.UPDATED_BY).define(r.onCreateUpdate(v),o.propMetadata(i.PersistenceKeys.UPDATED_BY,{})).apply(),o.Decoration.flavouredAs(w).for(r.DBKeys.ID).define({decorator:(e,t)=>(n,i)=>o.apply(a.required(),r.readonly(),o.propMetadata(o.Metadata.key(r.DBKeys.ID,i),e),r.onCreate(S,e,t))(n,i)}).apply(),o.Decoration.flavouredAs(w).for(i.PersistenceKeys.COLUMN).extend(n.Property()).apply(),o.Decoration.flavouredAs(w).for(i.PersistenceKeys.TABLE).extend(e=>n.Object()(e)).apply(),o.Decoration.flavouredAs(w).for(i.PersistenceKeys.ONE_TO_ONE).define({decorator:(e,t,n,s,c)=>{const l={class:e,cascade:t,populate:n};return s&&(l.joinTable=s),c&&(l.name=c),o.apply(o.prop(),i.relation(i.PersistenceKeys.ONE_TO_ONE,l),a.type([e,String,Number,BigInt]),r.onCreate(_,l),r.onUpdate(b,l),r.onDelete(C,l),r.afterAny(A,l),o.propMetadata(i.PersistenceKeys.ONE_TO_ONE,l))}}).apply(),o.Decoration.for(i.PersistenceKeys.ONE_TO_MANY).define({decorator:(e,t,n,s,c)=>{const l={class:e,cascade:t,populate:n};return s&&(l.joinTable=s),c&&(l.name=c),o.apply(o.prop(),i.relation(i.PersistenceKeys.ONE_TO_MANY,l),a.list([e,String,Number]),r.onCreate(x,l),r.onUpdate(i.oneToManyOnUpdate,l),r.onDelete(E,l),r.afterAny(A,l),o.propMetadata(i.PersistenceKeys.ONE_TO_MANY,l))}}).apply()}}O.decoration(),i.Adapter.setCurrent(w);class T extends a.JSONSerializer{constructor(){super()}deserialize(e){return super.deserialize(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}}class k extends n.Contract{static{this.adapter=new O}static{this.serializer=new T}constructor(e,t){super(e),this.clazz=t,this.initialized=!1,this.repo=i.Repository.forModel(t)}async create(e,t,...r){const{log:n,ctxArgs:i}=await this.logCtx([...r,e],this.create);n.info("CONTRACT CREATE, "+i),"string"==typeof t&&(t=this.deserialize(t)),n.info("Creating model: "+JSON.stringify(t));const o=this.getTransientData(e);return n.info("Merging transient data..."),t=a.Model.merge(t,o,this.clazz),this.repo.create(t,...i)}async read(e,t,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,e],this.read);return r.info(`reading entry with pk ${t} `),this.repo.read(t,...n)}getTransientData(e){const t=e.stub.getTransient();let a={};return t.has(this.repo.tableName)&&(a=JSON.parse(t.get(this.repo.tableName)?.toString("utf8"))),a}async update(e,t,...r){const{log:n,ctxArgs:i}=await this.logCtx([...r,e],this.update);"string"==typeof t&&(t=this.deserialize(t)),n.info("Updating model: "+JSON.stringify(t));const o=this.getTransientData(e);return n.info("Merging transient data..."),t=a.Model.merge(t,o,this.clazz),this.repo.update(t,...i)}async delete(e,t,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,e],this.delete);return r.info(`deleting entry with pk ${t} `),this.repo.delete(t+"",...n)}async deleteAll(e,t,...a){const{ctxArgs:r}=await this.logCtx([...a,e],this.readAll);return"string"==typeof t&&(t=JSON.parse(t)),this.repo.deleteAll(t,...r)}async readAll(e,t,...a){const{ctxArgs:r}=await this.logCtx([...a,e],this.readAll);return"string"==typeof t&&(t=JSON.parse(t)),this.repo.readAll(t,...r)}async updateAll(e,t,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,e],this.updateAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),r.info(`updating ${t.length} entries to the table`),this.repo.updateAll(t,...n)}async raw(e,t,a,...r){const{ctxArgs:n}=await this.logCtx([...r,e],this.raw);return"string"==typeof t&&(t=JSON.parse(t)),k.adapter.raw(t,a,...n)}serialize(e){return k.serializer.serialize(e)}deserialize(e){return k.serializer.deserialize(e)}async init(e){const{log:t}=await this.logCtx([e],this.init);t.info("Running contract initialization..."),this.initialized=!0,t.info("Contract initialization completed.")}async healthcheck(e){const{log:t}=await this.logCtx([e],this.healthcheck);return t.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(e,t,...a){const{log:r}=await this.logCtx([...a,e],this.createAll);return"string"==typeof t&&(t=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e))),r.info(`adding ${t.length} entries to the table`),this.repo.createAll(t,e,...a)}async logCtx(e,t){return k.logCtx.bind(this)(e,t)}static async logCtx(e,t){if(1>e.length)throw new r.InternalError("No context provided");const a=e.pop();if(a instanceof l)return{ctx:a,log:a.logger.clear().for(this).for(t),ctxArgs:[...e,a]};if(!(a instanceof n.Context))throw new r.InternalError("No valid context provided");const i={correlationId:a.stub.getTxID()},o=await k.adapter.context((()=>{if("string"==typeof t)return t;switch(t.name){case r.OperationKeys.CREATE:case r.OperationKeys.READ:case r.OperationKeys.UPDATE:case r.OperationKeys.DELETE:case r.BulkCrudOperationKeys.CREATE_ALL:case r.BulkCrudOperationKeys.READ_ALL:case r.BulkCrudOperationKeys.UPDATE_ALL:case r.BulkCrudOperationKeys.DELETE_ALL:}return t.name})(),i,this.clazz,a),s=this?o.logger.for(this).for(t):o.logger.clear().for(this).for(t);return{ctx:o,log:s,ctxArgs:[...e,o]}}}class N extends k{constructor(e,t){super(e,t)}async create(e,t){const{log:a}=await this.logCtx([e],this.create);a.info("Creating model: "+t);const r=this.deserialize(t);return a.info("Model deserialized: "+JSON.stringify(r)),this.serialize(await super.create(e,r))}async read(e,t){const{log:a}=await this.logCtx([e],this.read);return a.info("Reading id: "+t),this.serialize(await super.read(e,t))}async update(e,t){const{log:a}=await this.logCtx([e],this.update);return a.info("Updating model: "+t),this.serialize(await super.update(e,t))}async delete(e,t){const{log:a}=await this.logCtx([e],this.delete);return a.info("Deleting id: "+t),this.serialize(await super.delete(e,t))}async deleteAll(e,t){const a=JSON.parse(t),{log:r}=await this.logCtx([e],this.deleteAll);return r.info(`deleting ${a.length} entries from the table`),JSON.stringify((await super.deleteAll(e,a)).map(e=>this.serialize(e)))}async readAll(e,t){const a=JSON.parse(t),{log:r}=await this.logCtx([e],this.readAll);return r.info(`reading ${a.length} entries from the table`),JSON.stringify((await super.readAll(e,a)).map(e=>this.serialize(e)))}async updateAll(e,t){const{log:a}=await this.logCtx([e],this.updateAll),r=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return a.info(`Updating ${r.length} entries to the table`),JSON.stringify((await super.updateAll(e,r)).map(e=>this.serialize(e)))}async raw(e,t,a){const{ctx:r}=await this.logCtx([e],this.raw),n=JSON.parse(t);return super.raw(r,n,a)}async init(e){await super.init(e)}async healthcheck(e){return JSON.stringify(await super.healthcheck(e))}async createAll(e,t){const{log:a}=await this.logCtx([e],this.createAll),r=JSON.parse(t).map(e=>this.deserialize(e)).map(e=>new this.clazz(e));return a.info(`Adding ${r.length} entries to the table`),JSON.stringify((await super.createAll(e,r)).map(e=>this.serialize(e)))}}s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],N.prototype,"create",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],N.prototype,"read",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],N.prototype,"update",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],N.prototype,"delete",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],N.prototype,"deleteAll",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],N.prototype,"readAll",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],N.prototype,"updateAll",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,Boolean]),s.__metadata("design:returntype",Promise)],N.prototype,"raw",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],N.prototype,"init",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],N.prototype,"healthcheck",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],N.prototype,"createAll",null);class D extends r.InternalError{constructor(e){super(e,D.name)}}class R extends r.InternalError{constructor(e){super(e,R.name)}}class I extends r.InternalError{constructor(e){super(e,I.name)}}class z extends r.BaseError{constructor(e){super(z.name,e,409)}}function P(e,t){const a=e+t;if(e!==a-t||t!==a-e)throw new D(`Addition overflow: ${e} + ${t}`);return a}function F(e,t){const a=e-t;if(e!==a+t||t!==e-a)throw new D(`Subtraction overflow: ${e} - ${t}`);return a}let M=class extends i.BaseModel{constructor(e){super(e)}};s.__decorate([i.pk({type:"String"}),s.__metadata("design:type",String)],M.prototype,"name",void 0),s.__decorate([i.column(),a.required(),s.__metadata("design:type",String)],M.prototype,"owner",void 0),s.__decorate([i.column(),a.required(),s.__metadata("design:type",String)],M.prototype,"symbol",void 0),s.__decorate([i.column(),a.required(),s.__metadata("design:type",Number)],M.prototype,"decimals",void 0),M=s.__decorate([i.table("erc20_tokens"),a.model(),s.__metadata("design:paramtypes",[Object])],M);let B=class extends i.BaseModel{constructor(e){super(e)}};s.__decorate([i.pk({type:"String"}),s.__metadata("design:type",String)],B.prototype,"id",void 0),s.__decorate([i.column(),a.required(),s.__metadata("design:type",String)],B.prototype,"token",void 0),s.__decorate([i.column(),a.required(),s.__metadata("design:type",Number)],B.prototype,"balance",void 0),s.__decorate([i.column(),s.__metadata("design:type",String)],B.prototype,"captive",void 0),B=s.__decorate([i.table("erc20_wallets"),a.model(),s.__metadata("design:paramtypes",[Object])],B);let $=class extends i.BaseModel{constructor(e){super(e)}};function L(){return function(e,t,a){const n=a.value;return a.value=async function(...e){const a=e[0],o=a.clientIdentity.getID(),s=await this.tokenRepository.select(),c=await s.execute(a);if(0==c.length)throw new r.NotFoundError("No tokens avaialble");if(c.length>1)throw new r.NotFoundError("To many token available : "+c.length);if(c[0].owner!=o)throw new i.AuthorizationError(`User not authorized to run ${t} on the token`);return await n.apply(this,e)},a}}var K;s.__decorate([i.pk({type:"String"}),i.column(),a.required(),s.__metadata("design:type",String)],$.prototype,"owner",void 0),s.__decorate([i.column(),a.required(),s.__metadata("design:type",String)],$.prototype,"spender",void 0),s.__decorate([i.column(),a.required(),s.__metadata("design:type",Number)],$.prototype,"value",void 0),$=s.__decorate([i.table("erc20_allowances"),a.model(),s.__metadata("design:paramtypes",[Object])],$),(e=>{e.TRANSFER="Transfer",e.APPROVAL="Approval"})(K||(K={}));class q extends k{constructor(e){super(e,B),q.adapter=q.adapter||new O,this.walletRepository=u.forModel(B,q.adapter.alias),this.tokenRepository=u.forModel(M,q.adapter.alias),this.allowanceRepository=u.forModel($,q.adapter.alias)}async TokenName(e){await this.CheckInitialized(e);const t=await this.tokenRepository.select();return(await t.execute(e))[0].name}async Symbol(e){await this.CheckInitialized(e);const t=await this.tokenRepository.select();return(await t.execute(e))[0].symbol}async Decimals(e){await this.CheckInitialized(e);const t=await this.tokenRepository.select();return(await t.execute(e))[0].decimals}async TotalSupply(e){await this.CheckInitialized(e);const t=await this.walletRepository.select(),a=await t.execute(e);if(0==a.length)throw new r.NotFoundError(`The token ${this.getName()} does not exist`);let n=0;return a.forEach(e=>{n+=e.balance}),n}async BalanceOf(e,t){return await this.CheckInitialized(e),(await this.walletRepository.read(t,e)).balance}async Transfer(e,t,a){await this.CheckInitialized(e);const{ctx:n}=await this.logCtx([e],this.Transfer),i=n.identity.getID();if(!await this._transfer(i,t,a,n))throw new r.InternalError("Failed to transfer");return!0}async TransferFrom(e,t,a,n){await this.CheckInitialized(e);const{ctx:i}=await this.logCtx([e],this.BurnFrom),o=i.identity.getID(),s=await this._getAllowance(t,o,i);if(!s||0>s.value)throw new I(`spender ${o} has no allowance from ${t}`);const c=s.value;if(n>c)throw new R("The spender does not have enough allowance to spend.");const l=F(c,n),d=Object.assign({},s,{value:l});if(await this.allowanceRepository.update(d,i),!await this._transfer(t,a,n,i))throw new r.InternalError("Failed to transfer");return!0}async _transfer(e,t,a,n){const o=n.logger;if(e===t)throw new i.AuthorizationError("cannot transfer to and from same client account");if(0>a)throw new R("transfer amount cannot be negative");const s=await this.walletRepository.read(e,n),c=s.balance;if(a>c)throw new R(`client account ${e} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(t,n)}catch(e){if(!(e instanceof r.BaseError))throw new r.InternalError(e);if(404!==e.code)throw new r.InternalError(e.message);l=new B({id:t,balance:0,token:await this.TokenName(n)}),d=!0}const u=l.balance,p=F(c,a),h=P(u,a),g=Object.assign({},s,{balance:p});await this.walletRepository.update(g,n);const y=Object.assign({},l,{balance:h});d?await this.walletRepository.create(y,n):await this.walletRepository.update(y,n);const m={from:e,to:t,value:a};return this.repo.refresh(M,K.TRANSFER,"",m,n).catch(e=>o.error("Failed to notify transfer: "+e)),!0}async Approve(e,t,a){await this.CheckInitialized(e);const{ctx:r,ctxArgs:n}=await this.logCtx([e],this.Approve),i=r.identity.getID();let o=await this._getAllowance(i,t,r);if((await this.walletRepository.read(i,...n)).balance<a)throw new R(`client account ${i} has insufficient funds.`);o?(o.value=a,await this.allowanceRepository.update(o,...n)):(o=new $({owner:i,spender:t,value:a}),await this.allowanceRepository.create(o,...n));const s={owner:i,spender:t,value:a};return this.repo.refresh(M,K.APPROVAL,"",s,r),!0}async Allowance(e,t,a){await this.CheckInitialized(e);const{ctx:r}=await this.logCtx([e],this.Allowance),n=await this._getAllowance(t,a,r);if(!n)throw new I(`spender ${a} has no allowance from ${t}`);return n.value}async _getAllowance(e,t,a){const r=i.Condition.and(i.Condition.attribute("owner").eq(e),i.Condition.attribute("spender").eq(t)),n=await this.allowanceRepository.select().where(r).execute(a);return n?.[0]}async Initialize(e,t){const{ctx:a}=await this.logCtx([e],this.Initialize);if((await this.tokenRepository.select().execute(a)).length>0)throw new i.AuthorizationError("contract options are already set, client is not authorized to change them");return t.owner=a.identity.getID(),await this.tokenRepository.create(t,a),!0}async CheckInitialized(e){const{ctx:t}=await this.logCtx([e],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(t)).length)throw new z("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(e,t){await this.CheckInitialized(e);const{ctx:a}=await this.logCtx([e],this.Mint),n=a.identity.getID();if(0>=t)throw new r.ValidationError("mint amount must be a positive integer");let i;try{i=await this.walletRepository.read(n,a);const e=P(i.balance,t),r=Object.assign({},i,{balance:e});await this.walletRepository.update(r,a)}catch(i){if(!(i instanceof r.BaseError))throw new r.InternalError(i);if(404!==i.code)throw new r.InternalError(i.message);{const r=new B({id:n,balance:t,token:await this.TokenName(e)});await this.walletRepository.create(r,a)}}const o={from:"0x0",to:n,value:t};this.repo.ObserverHandler().updateObservers(M,K.TRANSFER,"",o,a)}async Burn(e,t){await this.CheckInitialized(e);const{log:a,ctx:r}=await this.logCtx([e],this.Burn),n=r.identity.getID(),i=await this.walletRepository.read(n,r),o=i.balance;if(t>o)throw new R("Minter has insufficient funds.");const s=F(o,t),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,r),a.info(t+" tokens were burned");const l={from:n,to:"0x0",value:t};this.repo.ObserverHandler().updateObservers(M,K.TRANSFER,"",l,r)}async BurnFrom(e,t,a){await this.CheckInitialized(e);const{log:r,ctx:n}=await this.logCtx([e],this.BurnFrom),i=await this.walletRepository.read(t,n),o=i.balance;if(a>o)throw new R(t+" has insufficient funds.");const s=F(o,a),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,n),r.info(`${a} tokens were burned from ${t}`);const l={from:t,to:"0x0",value:a};this.repo.ObserverHandler().updateObservers(M,K.TRANSFER,"",l,n)}async ClientAccountBalance(e){await this.CheckInitialized(e);const t=e.clientIdentity.getID(),a=await this.walletRepository.read(t,e);if(!a)throw new R(`The account ${t} does not exist`);return a.balance}async ClientAccountID(e){await this.CheckInitialized(e);const{ctx:t}=await this.logCtx([e],this.ClientAccountID);return t.identity.getID()}}s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],q.prototype,"TokenName",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],q.prototype,"Symbol",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],q.prototype,"Decimals",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],q.prototype,"TotalSupply",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],q.prototype,"BalanceOf",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,Number]),s.__metadata("design:returntype",Promise)],q.prototype,"Transfer",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,String,Number]),s.__metadata("design:returntype",Promise)],q.prototype,"TransferFrom",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,Number]),s.__metadata("design:returntype",Promise)],q.prototype,"Approve",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,String]),s.__metadata("design:returntype",Promise)],q.prototype,"Allowance",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,M]),s.__metadata("design:returntype",Promise)],q.prototype,"Initialize",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],q.prototype,"CheckInitialized",null),s.__decorate([L(),n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,Number]),s.__metadata("design:returntype",Promise)],q.prototype,"Mint",null),s.__decorate([L(),n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,Number]),s.__metadata("design:returntype",Promise)],q.prototype,"Burn",null),s.__decorate([L(),n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,Number]),s.__metadata("design:returntype",Promise)],q.prototype,"BurnFrom",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],q.prototype,"ClientAccountBalance",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],q.prototype,"ClientAccountID",null);const j=[q];class J extends c.MiniLogger{constructor(e,t,a){super(e,t),this.logger=a?a.logging.getLogger(e):new c.MiniLogger(e,t)}log(e,t,a){if(c.NumericLogLevels[this.config("level")]<c.NumericLogLevels[e])return;let n;switch(e){case c.LogLevel.info:n=this.logger.info;break;case c.LogLevel.verbose:n=this.logger.verbose;break;case c.LogLevel.debug:n=this.logger.debug;break;case c.LogLevel.error:n=this.logger.error;break;case c.LogLevel.silly:n=this.logger.silly;break;default:throw new r.InternalError("Invalid log level")}n.call(this.logger,this.createLog(e,t,a))}}c.Logging.setFactory((e,t,a)=>new J(e||J.name,t||{},a));const U="##VERSION##",G="##PACKAGE##";o.Metadata.registerLibrary(G,U),e.ContractLogger=J,e.FabricContractAdapter=O,e.FabricContractContext=l,e.FabricContractRepository=u,e.FabricContractRepositoryObservableHandler=d,e.FabricContractSequence=g,e.FabricCrudContract=k,e.FabricStatement=p,e.PACKAGE_NAME=G,e.SerializedCrudContract=N,e.VERSION=U,e.contracts=j,e.createdByOnFabricCreateUpdate=v,e.pkFabricOnCreate=S},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/for-couchdb"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/db-decorators"),require("fabric-contract-api"),require("@decaf-ts/core"),require("@decaf-ts/decoration"),require("tslib"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/for-couchdb","@decaf-ts/decorator-validation","@decaf-ts/db-decorators","fabric-contract-api","@decaf-ts/core","@decaf-ts/decoration","tslib","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-fabric"]={},e.decafTsForCouchdb,e.decafTsDecoratorValidation,e.decafTsDbDecorators,e.fabricContractApi,e.decafTsCore,e.decafTsDecoration,e.tslib,e.decafTsLogging);
1
+ var e,t;e=this,t=function(e,t,a,r,n,o,i,s,c){"use strict";class l extends r.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 o.ObserverHandler{constructor(e=[r.OperationKeys.CREATE,r.OperationKeys.UPDATE,r.OperationKeys.DELETE,r.BulkCrudOperationKeys.CREATE_ALL,r.BulkCrudOperationKeys.UPDATE_ALL,r.BulkCrudOperationKeys.DELETE_ALL]){super(),this.supportedEvents=e}async updateObservers(e,t,a,...r){const{log:n,ctx:i}=o.Adapter.logCtx(r,this.updateObservers),{stub:s}=i,[c,l]=r,d="string"==typeof e?e:e.name;if(-1!==this.supportedEvents.indexOf(t)){n.debug(`Emitting ${t} event`);const e=((e,t,a)=>{const r=[e,t];return a&&r.push(a),r.join("_")})(d,t,c);s.setEvent(e,Buffer.from(JSON.stringify({id:a})))}else s.setEvent(t,Buffer.from(JSON.stringify(l)))}}class u extends o.Repository{constructor(e,t,a){super(e,t),this.trackedEvents=a}ObserverHandler(){return new d}async updateObservers(e,t,a,...r){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(t))return await super.updateObservers(e,t,a,...r)}}class p extends t.CouchDBStatement{constructor(e){super(e)}async raw(e,...t){const{ctx:n}=this.logCtx(t,this.raw),o=await this.adapter.raw(e,!0,n),s=a.Model.pk(this.fromSelector),c=i.Metadata.get(this.fromSelector,i.Metadata.key(r.DBKeys.ID,s))?.type;return this.selectSelector?o:o.map((e=>this.processRecord(e,s,c,n)))}build(){const e={};e[t.CouchDBKeys.TABLE]={},e[t.CouchDBKeys.TABLE]=a.Model.tableName(this.fromSelector);const r={selector:e};if(this.selectSelector&&(r.fields=this.selectSelector),this.whereCondition){const e=this.parseCondition(o.Condition.and(this.whereCondition,o.Condition.attribute(t.CouchDBKeys.TABLE).eq(r.selector[t.CouchDBKeys.TABLE]))).selector,a=Object.keys(e);if(1===a.length&&-1!==Object.values(t.CouchDBGroupOperator).indexOf(a[0]))switch(a[0]){case t.CouchDBGroupOperator.AND:e[t.CouchDBGroupOperator.AND]=[...Object.values(e[t.CouchDBGroupOperator.AND]).reduce(((e,a)=>{const r=Object.keys(a);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const n=r[0];return n===t.CouchDBGroupOperator.AND?e.push(...a[n]):e.push(a),e}),[])],r.selector=e;break;case t.CouchDBGroupOperator.OR:{const a={};a[t.CouchDBGroupOperator.AND]=[e,...Object.entries(r.selector).map((([e,t])=>{const a={};return a[e]=t,a}))],r.selector=a;break}default:throw Error("This should be impossible")}else Object.entries(e).forEach((([e,t])=>{r.selector[e],r.selector[e]=t}))}if(this.orderBySelector){r.sort=r.sort||[],r.selector=r.selector||{};const[e,a]=this.orderBySelector,n={};n[e]=a,r.sort.push(n),r.selector[e]||(r.selector[e]={},r.selector[e][t.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(r.limit=this.limitSelector),this.offsetSelector&&(r.skip=this.offsetSelector),r}}var h,g;(e=>{e.PRIVATE="private",e.SHARED="shared",e.FABRIC="fabric.",e.OWNEDBY="owned-by"})(h||(h={})),(e=>{e.X509="X.509"})(g||(g={}));const y="hlf-fabric";class m extends a.JSONSerializer{constructor(){super()}deserialize(e,t){return JSON.parse(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}preSerialize(e){return Object.assign({},e)}}async function f(e,t,n,i){const s=i[n];if(!s)return;if("object"!=typeof s){const t=o.repositoryFromTypeMetadata(i,n,this.adapter.alias),a=await t.read(s,e);return await o.cacheModelForPopulate(e,i,n,s,a),void(i[n]=s)}t.class="string"==typeof t.class?t.class:t.class().name;const c=a.Model.get(t.class);if(!c)throw new r.InternalError("Could not find model "+t.class);const l=o.Repository.forModel(c,this.adapter.alias),d=await l.create(s,e),u=a.Model.pk(d);await o.cacheModelForPopulate(e,i,n,d[u],d),i[n]=d[u]}async function w(e,t,r,n){const i=n[r];if(!i)return;if(t.cascade.update!==o.Cascade.CASCADE)return;if("object"!=typeof i){const t=o.repositoryFromTypeMetadata(n,r,this.adapter.alias),a=await t.read(i,e);return await o.cacheModelForPopulate(e,n,r,i,a),void(n[r]=i)}const s=await o.createOrUpdate(n[r],e,this.adapter.alias),c=a.Model.pk(s);await o.cacheModelForPopulate(e,n,r,s[c],s),n[r]=s[c]}async function _(e,t,r,n){const i=n[r];if(!i)return;if(t.cascade.update!==o.Cascade.CASCADE)return;const s=o.repositoryFromTypeMetadata(n,r,this.adapter.alias);let c;c=i instanceof a.Model?await s.delete(n[r][a.Model.pk(s.class)],e):await s.delete(n[r],e),await o.cacheModelForPopulate(e,n,r,c[a.Model.pk(s.class)],c)}async function b(e,t,n,i){const s=i[n];if(!s||!s.length)return;const c=typeof s[0];if(!s.every((e=>typeof e===c)))throw new r.InternalError(`Invalid operation. All elements of property ${n} must match the same type.`);const l=new Set([...s]);if("object"!==c){const t=o.repositoryFromTypeMetadata(i,n,this.adapter.alias);for(const a of l){const r=await t.read(a,e);await o.cacheModelForPopulate(e,i,n,a,r)}return void(i[n]=[...l])}const d=a.Model.pk(s[0]),u=new Set;for(const t of s){const a=await o.createOrUpdate(t,e,this.adapter.alias);await o.cacheModelForPopulate(e,i,n,a[d],a),u.add(a[d])}i[n]=[...u]}async function C(e,t,n,i){if(t.cascade.delete!==o.Cascade.CASCADE)return;const s=i[n];if(!s||!s.length)return;const c=typeof s[0];if(!s.every((e=>typeof e===c)))throw new r.InternalError(`Invalid operation. All elements of property ${n} must match the same type.`);const l="object"===c,d=l?o.Repository.forModel(s[0],this.adapter.alias):o.repositoryFromTypeMetadata(i,n,this.adapter.alias),u=new Set([...l?s.map((e=>e[a.Model.pk(this.class)])):s]);for(const t of u.values()){const a=await d.delete(t,e);await o.cacheModelForPopulate(e,i,n,t,a)}i[n]=[...u]}async function x(e,t,a,n){if(!t.populate)return;const i=n[a],s=Array.isArray(i);if(void 0===i||s&&0===i.length)return;const c=await(async(t,a,n,i,s)=>{let c,l;const d=[];for(const u of i){c=o.getPopulateKey(a.constructor.name,n,u);try{l=await t.get(c)}catch(t){const i=o.repositoryFromTypeMetadata(a,n,s);if(!i)throw new r.InternalError("Could not find repo");l=await i.read(u,e)}d.push(l)}return d})(e,n,a,s?i:[i],this.adapter.alias);n[a]=s?c:c[0]}async function A(e,t,a,r){try{const t=e.get("identity");r[a]=t.getID()}catch(e){throw new o.UnsupportedError("No User found in context. Please provide a user in the context")}}async function E(e,t,n,o){if(!t.type||o[n])return;let i;t.name||(t.name=a.Model.sequenceName(o,"pk"));try{i=await this.adapter.Sequence(t)}catch(e){throw new r.InternalError(`Failed to instantiate Sequence ${t.name}: ${e}`)}const s=await i.next(e);Object.defineProperty(o,n,{enumerable:!0,writable:!1,configurable:!0,value:s})}class v extends t.CouchDBAdapter{getClient(){throw new o.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new m}repository(){return u}constructor(e,t){super(e,y,t),this.Context=l}for(e,...t){return super.for(e,...t)}async create(e,t,r,...n){const{ctx:o,log:i}=this.logCtx(n,this.create);i.info("in ADAPTER create with args "+n);const{stub:s}=o,c=a.Model.tableName(e);try{i.info(`adding entry to ${c} table with pk ${t}`);const e=s.createCompositeKey(c,[t+""]);r=await this.putState(e,r,o)}catch(e){throw this.parseError(e)}return r}async read(e,t,...r){const{ctx:n,log:o}=this.logCtx(r,this.read);o.info("in ADAPTER read with args "+r);const{stub:i}=n,s=a.Model.tableName(e);let c;try{const e=i.createCompositeKey(s,[t+""]);c=await this.readState(e,n)}catch(e){throw this.parseError(e)}return c}async update(e,t,r,...n){const{ctx:o,log:i}=this.logCtx(n,this.update),{stub:s}=o,c=a.Model.tableName(e);try{i.verbose(`updating entry to ${c} table with pk ${t}`);const e=s.createCompositeKey(c,[t+""]);r=await this.putState(e,r,o)}catch(e){throw this.parseError(e)}return r}async delete(e,t,...r){const{ctx:n,log:o,ctxArgs:i}=this.logCtx(r,this.delete),{stub:s}=n,c=a.Model.tableName(e);let l;try{const a=s.createCompositeKey(c,[t+""]);l=await this.read(e,t,...i),o.verbose(`deleting entry with pk ${t} from ${c} table`),await this.deleteState(a,n)}catch(e){throw this.parseError(e)}return l}async deleteState(e,t){const{stub:a,logger:r}=t;r.for(this.deleteState),await a.deleteState(e)}forPrivate(e){const t=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map((e=>e.name));return new Proxy(this,{get:(a,n,o)=>t.includes(n)?new Proxy(a[n],{async apply(t,a,o){switch(n){case"putState":{const[t,a,r]=o;return await t.putPrivateData(e,a.toString(),r),r}case"deleteState":{const[t,a]=o;return t.deletePrivateData(e,a)}case"readState":{const[t,a]=o;return t.getPrivateData(e,a)}case"queryResult":{const[t,a]=o;return t.getPrivateDataQueryResult(e,a)}case"queryResultPaginated":{const[t,a,r,n]=o,i=await t.getPrivateDataQueryResult(e,a),s=[];let c=0,l=!n,d=null;for(;;){const e=await i.next();if(e.value&&e.value.value.toString()){const t=e.value.key,a=e.value.value.toString("utf8");if(!l){t===n?.toString()&&(l=!0);continue}if(s.push({Key:t,Record:JSON.parse(a)}),d=t,c++,c>=r)return await i.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:d}}}if(e.done)return await i.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:""}}}}default:throw new r.InternalError("Unsupported method override "+n)}}}):Reflect.get(a,n,o)})}async putState(e,t,a){let n;const{stub:o,logger:i}=a,s=i.for(this.putState);try{n=Buffer.from(v.serializer.serialize(t))}catch(t){throw new r.SerializationError(`Failed to serialize record with id ${e}: ${t}`)}return await o.putState(e.toString(),n),s.silly("state stored under id "+e),t}async readState(e,t){let a;const{stub:n,logger:o}=t,i=o.for(this.readState),s=(await n.getState(e)).toString();if(!s)throw new r.NotFoundError(`Record with id ${e} not found`);i.silly("Read state for id "+e);try{a=v.serializer.deserialize(s.toString())}catch(e){throw new r.SerializationError("Failed to parse record: "+e)}return a}async queryResult(e,t,...a){return await e.getQueryResult(JSON.stringify(t))}async queryResultPaginated(e,t,a=250,r,...n){return await e.getQueryResultWithPagination(JSON.stringify(t),a,r?.toString())}mergeModels(e){const t=e=>Object.entries(e).reduce(((e,[t,a])=>(void 0!==a&&(e[t]=a),e)),{});let a=e.pop();for(const r of e)a=Object.assign({},t(a),t(r));return a}decode(e){return v.textDecoder.decode(e)}async flags(e,t,a,r,...n){const o=e=>{const t=e??this.log.for(this.flags);return"function"!=typeof t.clear&&(t.clear=()=>t),"function"!=typeof t.for&&(t.for=()=>t),t},i=r instanceof l?r.accumulate({logger:o(r.logger)}):(new l).accumulate({stub:r.stub,identity:r.clientIdentity,logger:o()}),s=Object.assign({},a,{logger:i.logger});return Object.assign(await super.flags(e,t,s,...n),{stub:r.stub,identity:r.clientIdentity??i.identity,logger:i.logger,correlationId:r.stub.getTxID()})}index(e){return Promise.resolve(void 0)}async resultIterator(e,t,a=!1){const r=[];let n=await t.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let t={};if(e.debug(n.value.value.toString("utf8")),a){t.TxId=n.value.txId,t.Timestamp=n.value.timestamp;try{t.Value=JSON.parse(n.value.value.toString("utf8"))}catch(a){e.error(a),t.Value=n.value.value.toString("utf8")}}else try{t=JSON.parse(n.value.value.toString("utf8"))}catch(a){e.error(a),t=n.value.value.toString("utf8")}r.push(t)}n=await t.next()}return e.debug(`Closing iterator after ${r.length} results`),t.close(),r}async raw(e,...t){const{ctx:a,log:r,ctxArgs:n}=this.logCtx(t,this.raw);"boolean"==typeof n[0]&&n.shift();const{stub:o}=a,{skip:i,limit:s}=e;let c;s||i?(delete e.limit,delete e.skip,r.debug(`Retrieving paginated iterator: limit: ${s}/ skip: ${i}`),c=(await this.queryResultPaginated(o,e,s||250,i?.toString())).iterator):(r.debug("Retrieving iterator"),c=await this.queryResult(o,e)),r.debug("Iterator acquired");const l=await this.resultIterator(r,c);return r.debug("returning {0} results",""+(Array.isArray(l)?l.length:1)),l}Statement(){return new p(this)}async createAll(e,t,n,...o){if(t.length!==n.length)throw new r.InternalError("Ids and models must have the same length");const{log:i,ctxArgs:s}=this.logCtx(o,this.createAll),c=a.Model.tableName(e);return i.debug(`Creating ${t.length} entries ${c} table`),Promise.all(t.map(((t,a)=>this.create(e,t,n[a],...s))))}async updateAll(e,t,n,...o){if(t.length!==n.length)throw new r.InternalError("Ids and models must have the same length");const{log:i,ctxArgs:s}=this.logCtx(o,this.updateAll),c=a.Model.tableName(e);return i.debug(`Updating ${t.length} entries ${c} table`),Promise.all(t.map(((t,a)=>this.update(e,t,n[a],...s))))}prepare(e,...t){const{log:n}=this.logCtx(t,this.prepare),o=a.Model.tableName(e.constructor),i=a.Model.pk(e.constructor),s=a.Model.segregate(e),c=Object.entries(s.model).reduce(((t,[n,o])=>{if(void 0===o)return t;const i=a.Model.columnName(e,n);if(this.isReserved(i))throw new r.InternalError(`Property name ${i} is reserved`);return t[i]=o,t}),{});return n.silly(`Preparing record for ${o} table with pk ${e[i]}`),{record:c,id:e[i],transient:s.transient}}revert(e,t,n,o,...i){const{log:s}=this.logCtx(i,this.revert),c={};c[a.Model.pk(t)]=n;const l="string"==typeof t?a.Model.build(c,t):new t(c);s.silly(`Rebuilding model ${l.constructor.name} id ${n}`);const d=Object.keys(l).reduce(((t,r)=>(t[r]=e[a.Model.columnName(t,r)],t)),l);return o&&(s.debug("re-adding transient properties: "+Object.keys(o).join(", ")),Object.entries(o).forEach((([e,t])=>{if(e in d&&void 0!==d[e])throw new r.InternalError(`Transient property ${e} already exists on model ${l.constructor.name}. should be impossible`);d[e]=t}))),d}createPrefix(e,r,n,...o){const{ctxArgs:i}=this.logCtx(o,this.createPrefix),s={};return s[t.CouchDBKeys.TABLE]=a.Model.tableName(e),Object.assign(s,n),[e,r,s,...i]}updatePrefix(e,r,n,...o){const{ctxArgs:i}=this.logCtx(o,this.updatePrefix),s={};return s[t.CouchDBKeys.TABLE]=a.Model.tableName(e),Object.assign(s,n),[e,r,s,...i]}createAllPrefix(e,a,n,...o){if(a.length!==n.length)throw new r.InternalError("Ids and models must have the same length");const i=o.pop(),s=a.map(((a,r)=>{const o={};return o[t.CouchDBKeys.TABLE]=e,Object.assign(o,n[r]),o}));return[e,a,s,i]}updateAllPrefix(e,a,n,...o){if(a.length!==n.length)throw new r.InternalError("Ids and models must have the same length");const i=o.pop(),s=a.map(((a,r)=>{const o={};return o[t.CouchDBKeys.TABLE]=e,Object.assign(o,n[r]),o}));return[e,a,s,i]}parseError(e,t){return v.parseError(t||e)}static parseError(e){const t="string"==typeof e?e:e.message;return t.includes(r.NotFoundError.name)?new r.NotFoundError(e):t.includes(r.ConflictError.name)?new r.ConflictError(e):t.includes(r.BadRequestError.name)?new r.BadRequestError(e):t.includes(o.QueryError.name)?new o.QueryError(e):t.includes(o.PagingError.name)?new o.PagingError(e):t.includes(o.UnsupportedError.name)?new o.UnsupportedError(e):t.includes(o.MigrationError.name)?new o.MigrationError(e):t.includes(o.ObserverError.name)?new o.ObserverError(e):t.includes(o.AuthorizationError.name)?new o.AuthorizationError(e):t.includes(o.ForbiddenError.name)?new o.ForbiddenError(e):t.includes(o.ConnectionError.name)?new o.ConnectionError(e):t.includes(r.SerializationError.name)?new r.SerializationError(e):new r.InternalError(e)}static decoration(){super.decoration(),i.Decoration.flavouredAs(y).for(o.PersistenceKeys.CREATED_BY).define(r.onCreate(A),i.propMetadata(o.PersistenceKeys.CREATED_BY,{})).apply(),i.Decoration.flavouredAs(y).for(o.PersistenceKeys.UPDATED_BY).define(r.onCreateUpdate(A),i.propMetadata(o.PersistenceKeys.UPDATED_BY,{})).apply(),i.Decoration.flavouredAs(y).for(r.DBKeys.ID).define({decorator:(e,t)=>(n,o)=>i.apply(a.required(),r.readonly(),i.propMetadata(i.Metadata.key(r.DBKeys.ID,o),e),r.onCreate(E,e,t))(n,o)}).apply(),i.Decoration.flavouredAs(y).for(o.PersistenceKeys.COLUMN).extend(n.Property()).apply(),i.Decoration.flavouredAs(y).for(o.PersistenceKeys.TABLE).extend((e=>n.Object()(e))).apply(),i.Decoration.flavouredAs(y).for(o.PersistenceKeys.ONE_TO_ONE).define({decorator:(e,t,n,s,c)=>{const l={class:e,cascade:t,populate:n};return s&&(l.joinTable=s),c&&(l.name=c),i.apply(i.prop(),o.relation(o.PersistenceKeys.ONE_TO_ONE,l),a.type([e,String,Number,BigInt]),r.onCreate(f,l),r.onUpdate(w,l),r.onDelete(_,l),r.afterAny(x,l),i.propMetadata(o.PersistenceKeys.ONE_TO_ONE,l))}}).apply(),i.Decoration.for(o.PersistenceKeys.ONE_TO_MANY).define({decorator:(e,t,n,s,c)=>{const l={class:e,cascade:t,populate:n};return s&&(l.joinTable=s),c&&(l.name=c),i.apply(i.prop(),o.relation(o.PersistenceKeys.ONE_TO_MANY,l),a.list([e,String,Number]),r.onCreate(b,l),r.onUpdate(o.oneToManyOnUpdate,l),r.onDelete(C,l),r.afterAny(x,l),i.propMetadata(o.PersistenceKeys.ONE_TO_MANY,l))}}).apply()}}v.decoration(),o.Adapter.setCurrent(y);class S extends a.JSONSerializer{constructor(){super()}deserialize(e){return super.deserialize(e)}serialize(e){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(e)))}}class O extends n.Contract{static{this.adapter=new v}static{this.serializer=new S}constructor(e,t){super(e),this.clazz=t,this.initialized=!1,this.repo=o.Repository.forModel(t)}async create(e,t,...r){const{log:n,ctxArgs:o}=await this.logCtx([...r,e],this.create);n.info("CONTRACT CREATE, "+o),"string"==typeof t&&(t=this.deserialize(t)),n.info("Creating model: "+JSON.stringify(t));const i=this.getTransientData(e);return n.info("Merging transient data..."),t=a.Model.merge(t,i,this.clazz),this.repo.create(t,...o)}async read(e,t,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,e],this.read);return r.info(`reading entry with pk ${t} `),this.repo.read(t,...n)}getTransientData(e){const t=e.stub.getTransient();let a={};return t.has(this.repo.tableName)&&(a=JSON.parse(t.get(this.repo.tableName)?.toString("utf8"))),a}async update(e,t,...r){const{log:n,ctxArgs:o}=await this.logCtx([...r,e],this.update);"string"==typeof t&&(t=this.deserialize(t)),n.info("Updating model: "+JSON.stringify(t));const i=this.getTransientData(e);return n.info("Merging transient data..."),t=a.Model.merge(t,i,this.clazz),this.repo.update(t,...o)}async delete(e,t,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,e],this.delete);return r.info(`deleting entry with pk ${t} `),this.repo.delete(t+"",...n)}async deleteAll(e,t,...a){const{ctxArgs:r}=await this.logCtx([...a,e],this.readAll);return"string"==typeof t&&(t=JSON.parse(t)),this.repo.deleteAll(t,...r)}async readAll(e,t,...a){const{ctxArgs:r}=await this.logCtx([...a,e],this.readAll);return"string"==typeof t&&(t=JSON.parse(t)),this.repo.readAll(t,...r)}async updateAll(e,t,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,e],this.updateAll);return"string"==typeof t&&(t=JSON.parse(t).map((e=>this.deserialize(e))).map((e=>new this.clazz(e)))),r.info(`updating ${t.length} entries to the table`),this.repo.updateAll(t,...n)}async raw(e,t,a,...r){const{ctxArgs:n}=await this.logCtx([...r,e],this.raw);return"string"==typeof t&&(t=JSON.parse(t)),O.adapter.raw(t,a,...n)}serialize(e){return O.serializer.serialize(e)}deserialize(e){return O.serializer.deserialize(e)}async init(e){const{log:t}=await this.logCtx([e],this.init);t.info("Running contract initialization..."),this.initialized=!0,t.info("Contract initialization completed.")}async healthcheck(e){const{log:t}=await this.logCtx([e],this.healthcheck);return t.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(e,t,...a){const{log:r}=await this.logCtx([...a,e],this.createAll);return"string"==typeof t&&(t=JSON.parse(t).map((e=>this.deserialize(e))).map((e=>new this.clazz(e)))),r.info(`adding ${t.length} entries to the table`),this.repo.createAll(t,e,...a)}async logCtx(e,t){return O.logCtx.bind(this)(e,t)}static async logCtx(e,t){if(1>e.length)throw new r.InternalError("No context provided");const a=e.pop();if(a instanceof l)return{ctx:a,log:a.logger.clear().for(this).for(t),ctxArgs:[...e,a]};if(!(a instanceof n.Context))throw new r.InternalError("No valid context provided");const o={correlationId:a.stub.getTxID()},i=await O.adapter.context((()=>{if("string"==typeof t)return t;switch(t.name){case r.OperationKeys.CREATE:case r.OperationKeys.READ:case r.OperationKeys.UPDATE:case r.OperationKeys.DELETE:case r.BulkCrudOperationKeys.CREATE_ALL:case r.BulkCrudOperationKeys.READ_ALL:case r.BulkCrudOperationKeys.UPDATE_ALL:case r.BulkCrudOperationKeys.DELETE_ALL:}return t.name})(),o,this.clazz,a),s=this?i.logger.for(this).for(t):i.logger.clear().for(this).for(t);return{ctx:i,log:s,ctxArgs:[...e,i]}}}class T extends O{constructor(e,t){super(e,t)}async create(e,t){const{log:a}=await this.logCtx([e],this.create);a.info("Creating model: "+t);const r=this.deserialize(t);return a.info("Model deserialized: "+JSON.stringify(r)),this.serialize(await super.create(e,r))}async read(e,t){const{log:a}=await this.logCtx([e],this.read);return a.info("Reading id: "+t),this.serialize(await super.read(e,t))}async update(e,t){const{log:a}=await this.logCtx([e],this.update);return a.info("Updating model: "+t),this.serialize(await super.update(e,t))}async delete(e,t){const{log:a}=await this.logCtx([e],this.delete);return a.info("Deleting id: "+t),this.serialize(await super.delete(e,t))}async deleteAll(e,t){const a=JSON.parse(t),{log:r}=await this.logCtx([e],this.deleteAll);return r.info(`deleting ${a.length} entries from the table`),JSON.stringify((await super.deleteAll(e,a)).map((e=>this.serialize(e))))}async readAll(e,t){const a=JSON.parse(t),{log:r}=await this.logCtx([e],this.readAll);return r.info(`reading ${a.length} entries from the table`),JSON.stringify((await super.readAll(e,a)).map((e=>this.serialize(e))))}async updateAll(e,t){const{log:a}=await this.logCtx([e],this.updateAll),r=JSON.parse(t).map((e=>this.deserialize(e))).map((e=>new this.clazz(e)));return a.info(`Updating ${r.length} entries to the table`),JSON.stringify((await super.updateAll(e,r)).map((e=>this.serialize(e))))}async raw(e,t,a){const{ctx:r}=await this.logCtx([e],this.raw),n=JSON.parse(t);return super.raw(r,n,a)}async init(e){await super.init(e)}async healthcheck(e){return JSON.stringify(await super.healthcheck(e))}async createAll(e,t){const{log:a}=await this.logCtx([e],this.createAll),r=JSON.parse(t).map((e=>this.deserialize(e))).map((e=>new this.clazz(e)));return a.info(`Adding ${r.length} entries to the table`),JSON.stringify((await super.createAll(e,r)).map((e=>this.serialize(e))))}}s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],T.prototype,"create",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],T.prototype,"read",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],T.prototype,"update",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],T.prototype,"delete",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],T.prototype,"deleteAll",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],T.prototype,"readAll",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],T.prototype,"updateAll",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,Boolean]),s.__metadata("design:returntype",Promise)],T.prototype,"raw",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],T.prototype,"init",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],T.prototype,"healthcheck",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],T.prototype,"createAll",null);class k extends r.InternalError{constructor(e){super(e,k.name)}}class N extends r.InternalError{constructor(e){super(e,N.name)}}class z extends r.InternalError{constructor(e){super(e,z.name)}}class D extends r.BaseError{constructor(e){super(D.name,e,409)}}function R(e,t){const a=e+t;if(e!==a-t||t!==a-e)throw new k(`Addition overflow: ${e} + ${t}`);return a}function P(e,t){const a=e-t;if(e!==a+t||t!==e-a)throw new k(`Subtraction overflow: ${e} - ${t}`);return a}let I=class extends o.BaseModel{constructor(e){super(e)}};s.__decorate([o.pk({type:"String"}),s.__metadata("design:type",String)],I.prototype,"name",void 0),s.__decorate([o.column(),a.required(),s.__metadata("design:type",String)],I.prototype,"owner",void 0),s.__decorate([o.column(),a.required(),s.__metadata("design:type",String)],I.prototype,"symbol",void 0),s.__decorate([o.column(),a.required(),s.__metadata("design:type",Number)],I.prototype,"decimals",void 0),I=s.__decorate([o.table("erc20_tokens"),a.model(),s.__metadata("design:paramtypes",[Object])],I);let F=class extends o.BaseModel{constructor(e){super(e)}};s.__decorate([o.pk({type:"String"}),s.__metadata("design:type",String)],F.prototype,"id",void 0),s.__decorate([o.column(),a.required(),s.__metadata("design:type",String)],F.prototype,"token",void 0),s.__decorate([o.column(),a.required(),s.__metadata("design:type",Number)],F.prototype,"balance",void 0),s.__decorate([o.column(),s.__metadata("design:type",String)],F.prototype,"captive",void 0),F=s.__decorate([o.table("erc20_wallets"),a.model(),s.__metadata("design:paramtypes",[Object])],F);let M=class extends o.BaseModel{constructor(e){super(e)}};function B(){return function(e,t,a){const n=a.value;return a.value=async function(...e){const a=e[0],i=a.clientIdentity.getID(),s=await this.tokenRepository.select(),c=await s.execute(a);if(0==c.length)throw new r.NotFoundError("No tokens avaialble");if(c.length>1)throw new r.NotFoundError("To many token available : "+c.length);if(c[0].owner!=i)throw new o.AuthorizationError(`User not authorized to run ${t} on the token`);return await n.apply(this,e)},a}}var L;s.__decorate([o.pk({type:"String"}),o.column(),a.required(),s.__metadata("design:type",String)],M.prototype,"owner",void 0),s.__decorate([o.column(),a.required(),s.__metadata("design:type",String)],M.prototype,"spender",void 0),s.__decorate([o.column(),a.required(),s.__metadata("design:type",Number)],M.prototype,"value",void 0),M=s.__decorate([o.table("erc20_allowances"),a.model(),s.__metadata("design:paramtypes",[Object])],M),(e=>{e.TRANSFER="Transfer",e.APPROVAL="Approval"})(L||(L={}));class $ extends O{constructor(e){super(e,F),$.adapter=$.adapter||new v,this.walletRepository=u.forModel(F,$.adapter.alias),this.tokenRepository=u.forModel(I,$.adapter.alias),this.allowanceRepository=u.forModel(M,$.adapter.alias)}async TokenName(e){await this.CheckInitialized(e);const t=await this.tokenRepository.select();return(await t.execute(e))[0].name}async Symbol(e){await this.CheckInitialized(e);const t=await this.tokenRepository.select();return(await t.execute(e))[0].symbol}async Decimals(e){await this.CheckInitialized(e);const t=await this.tokenRepository.select();return(await t.execute(e))[0].decimals}async TotalSupply(e){await this.CheckInitialized(e);const t=await this.walletRepository.select(),a=await t.execute(e);if(0==a.length)throw new r.NotFoundError(`The token ${this.getName()} does not exist`);let n=0;return a.forEach((e=>{n+=e.balance})),n}async BalanceOf(e,t){return await this.CheckInitialized(e),(await this.walletRepository.read(t,e)).balance}async Transfer(e,t,a){await this.CheckInitialized(e);const{ctx:n}=await this.logCtx([e],this.Transfer),o=n.identity.getID();if(!await this._transfer(o,t,a,n))throw new r.InternalError("Failed to transfer");return!0}async TransferFrom(e,t,a,n){await this.CheckInitialized(e);const{ctx:o}=await this.logCtx([e],this.BurnFrom),i=o.identity.getID(),s=await this._getAllowance(t,i,o);if(!s||0>s.value)throw new z(`spender ${i} has no allowance from ${t}`);const c=s.value;if(n>c)throw new N("The spender does not have enough allowance to spend.");const l=P(c,n),d=Object.assign({},s,{value:l});if(await this.allowanceRepository.update(d,o),!await this._transfer(t,a,n,o))throw new r.InternalError("Failed to transfer");return!0}async _transfer(e,t,a,n){const i=n.logger;if(e===t)throw new o.AuthorizationError("cannot transfer to and from same client account");if(0>a)throw new N("transfer amount cannot be negative");const s=await this.walletRepository.read(e,n),c=s.balance;if(a>c)throw new N(`client account ${e} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(t,n)}catch(e){if(!(e instanceof r.BaseError))throw new r.InternalError(e);if(404!==e.code)throw new r.InternalError(e.message);l=new F({id:t,balance:0,token:await this.TokenName(n)}),d=!0}const u=l.balance,p=P(c,a),h=R(u,a),g=Object.assign({},s,{balance:p});await this.walletRepository.update(g,n);const y=Object.assign({},l,{balance:h});d?await this.walletRepository.create(y,n):await this.walletRepository.update(y,n);const m={from:e,to:t,value:a};return this.repo.refresh(I,L.TRANSFER,"",m,n).catch((e=>i.error("Failed to notify transfer: "+e))),!0}async Approve(e,t,a){await this.CheckInitialized(e);const{ctx:r,ctxArgs:n}=await this.logCtx([e],this.Approve),o=r.identity.getID();let i=await this._getAllowance(o,t,r);if((await this.walletRepository.read(o,...n)).balance<a)throw new N(`client account ${o} has insufficient funds.`);i?(i.value=a,await this.allowanceRepository.update(i,...n)):(i=new M({owner:o,spender:t,value:a}),await this.allowanceRepository.create(i,...n));const s={owner:o,spender:t,value:a};return this.repo.refresh(I,L.APPROVAL,"",s,r),!0}async Allowance(e,t,a){await this.CheckInitialized(e);const{ctx:r}=await this.logCtx([e],this.Allowance),n=await this._getAllowance(t,a,r);if(!n)throw new z(`spender ${a} has no allowance from ${t}`);return n.value}async _getAllowance(e,t,a){const r=o.Condition.and(o.Condition.attribute("owner").eq(e),o.Condition.attribute("spender").eq(t)),n=await this.allowanceRepository.select().where(r).execute(a);return n?.[0]}async Initialize(e,t){const{ctx:a}=await this.logCtx([e],this.Initialize);if((await this.tokenRepository.select().execute(a)).length>0)throw new o.AuthorizationError("contract options are already set, client is not authorized to change them");return t.owner=a.identity.getID(),await this.tokenRepository.create(t,a),!0}async CheckInitialized(e){const{ctx:t}=await this.logCtx([e],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(t)).length)throw new D("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(e,t){await this.CheckInitialized(e);const{ctx:a}=await this.logCtx([e],this.Mint),n=a.identity.getID();if(0>=t)throw new r.ValidationError("mint amount must be a positive integer");let o;try{o=await this.walletRepository.read(n,a);const e=R(o.balance,t),r=Object.assign({},o,{balance:e});await this.walletRepository.update(r,a)}catch(o){if(!(o instanceof r.BaseError))throw new r.InternalError(o);if(404!==o.code)throw new r.InternalError(o.message);{const r=new F({id:n,balance:t,token:await this.TokenName(e)});await this.walletRepository.create(r,a)}}const i={from:"0x0",to:n,value:t};this.repo.ObserverHandler().updateObservers(I,L.TRANSFER,"",i,a)}async Burn(e,t){await this.CheckInitialized(e);const{log:a,ctx:r}=await this.logCtx([e],this.Burn),n=r.identity.getID(),o=await this.walletRepository.read(n,r),i=o.balance;if(t>i)throw new N("Minter has insufficient funds.");const s=P(i,t),c=Object.assign({},o,{balance:s});await this.walletRepository.update(c,r),a.info(t+" tokens were burned");const l={from:n,to:"0x0",value:t};this.repo.ObserverHandler().updateObservers(I,L.TRANSFER,"",l,r)}async BurnFrom(e,t,a){await this.CheckInitialized(e);const{log:r,ctx:n}=await this.logCtx([e],this.BurnFrom),o=await this.walletRepository.read(t,n),i=o.balance;if(a>i)throw new N(t+" has insufficient funds.");const s=P(i,a),c=Object.assign({},o,{balance:s});await this.walletRepository.update(c,n),r.info(`${a} tokens were burned from ${t}`);const l={from:t,to:"0x0",value:a};this.repo.ObserverHandler().updateObservers(I,L.TRANSFER,"",l,n)}async ClientAccountBalance(e){await this.CheckInitialized(e);const t=e.clientIdentity.getID(),a=await this.walletRepository.read(t,e);if(!a)throw new N(`The account ${t} does not exist`);return a.balance}async ClientAccountID(e){await this.CheckInitialized(e);const{ctx:t}=await this.logCtx([e],this.ClientAccountID);return t.identity.getID()}}s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],$.prototype,"TokenName",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],$.prototype,"Symbol",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],$.prototype,"Decimals",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],$.prototype,"TotalSupply",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String]),s.__metadata("design:returntype",Promise)],$.prototype,"BalanceOf",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,Number]),s.__metadata("design:returntype",Promise)],$.prototype,"Transfer",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,String,Number]),s.__metadata("design:returntype",Promise)],$.prototype,"TransferFrom",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,Number]),s.__metadata("design:returntype",Promise)],$.prototype,"Approve",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,String]),s.__metadata("design:returntype",Promise)],$.prototype,"Allowance",null),s.__decorate([n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,I]),s.__metadata("design:returntype",Promise)],$.prototype,"Initialize",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],$.prototype,"CheckInitialized",null),s.__decorate([B(),n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,Number]),s.__metadata("design:returntype",Promise)],$.prototype,"Mint",null),s.__decorate([B(),n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,Number]),s.__metadata("design:returntype",Promise)],$.prototype,"Burn",null),s.__decorate([B(),n.Transaction(),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context,String,Number]),s.__metadata("design:returntype",Promise)],$.prototype,"BurnFrom",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],$.prototype,"ClientAccountBalance",null),s.__decorate([n.Transaction(!1),s.__metadata("design:type",Function),s.__metadata("design:paramtypes",[n.Context]),s.__metadata("design:returntype",Promise)],$.prototype,"ClientAccountID",null);const K=[$];class j extends c.MiniLogger{constructor(e,t,a){super(e,t),this.logger=a?a.logging.getLogger(e):new c.MiniLogger(e,t)}log(e,t,a){if(c.NumericLogLevels[this.config("level")]<c.NumericLogLevels[e])return;let n;switch(e){case c.LogLevel.info:n=this.logger.info;break;case c.LogLevel.verbose:n=this.logger.verbose;break;case c.LogLevel.debug:n=this.logger.debug;break;case c.LogLevel.error:n=this.logger.error;break;case c.LogLevel.silly:n=this.logger.silly;break;default:throw new r.InternalError("Invalid log level")}n.call(this.logger,this.createLog(e,t,a))}}c.Logging.setFactory(((e,t,a)=>new j(e||j.name,t||{},a)));const q="##VERSION##",J="##PACKAGE##";i.Metadata.registerLibrary(J,q),e.ContractLogger=j,e.FabricContractAdapter=v,e.FabricContractContext=l,e.FabricContractRepository=u,e.FabricContractRepositoryObservableHandler=d,e.FabricCrudContract=O,e.FabricStatement=p,e.PACKAGE_NAME=J,e.SerializedCrudContract=T,e.VERSION=q,e.contracts=K,e.createdByOnFabricCreateUpdate=A,e.pkFabricOnCreate=E},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/for-couchdb"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/db-decorators"),require("fabric-contract-api"),require("@decaf-ts/core"),require("@decaf-ts/decoration"),require("tslib"),require("@decaf-ts/logging")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/for-couchdb","@decaf-ts/decorator-validation","@decaf-ts/db-decorators","fabric-contract-api","@decaf-ts/core","@decaf-ts/decoration","tslib","@decaf-ts/logging"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["for-fabric"]={},e.decafTsForCouchdb,e.decafTsDecoratorValidation,e.decafTsDbDecorators,e.fabricContractApi,e.decafTsCore,e.decafTsDecoration,e.tslib,e.decafTsLogging);
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/model/Sequence.ts","../src/contracts/FabricContractSequence.ts","../src/shared/constants.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/FabricConstruction.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/contracts/logging.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"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","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","Model","pk","fromSelector","type","Metadata","key","DBKeys","ID","selectSelector","map","r","processRecord","build","selectors","CouchDBKeys","TABLE","tableName","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","Object","keys","length","values","CouchDBGroupOperator","AND","reduce","accum","val","Error","k","OR","s","entries","result","forEach","orderBySelector","sort","value","rec","CouchDBOperator","BIGGER","limitSelector","limit","offsetSelector","skip","SequenceModel","BaseModel","seq","__decorate","prototype","required","index","SEQUENCE","model","FabricContractSequence","Sequence","options","repo","forModel","alias","current","READ","context","startWith","sequence","read","parse","e","NotFoundError","InternalError","increment","count","incrementBy","next","toIncrementBy","BigInt","update","create","argz","contextArgs","undefined","range","i","FabricModelKeys","IdentityType","FabricFlavour","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","serialize","require","sortKeysRecursive","preSerialize","assign","async","oneToOneOnCreate","data","propertyValue","innerRepo","repositoryFromTypeMetadata","cacheModelForPopulate","class","created","oneToOneOnUpdate","cascade","Cascade","CASCADE","updated","createOrUpdate","oneToOneOnDelete","deleted","delete","oneToManyOnCreate","propertyValues","arrayType","every","item","uniqueValues","Set","pkName","m","record","add","oneToManyOnDelete","isInstantiated","v","populate","nested","isArr","Array","isArray","res","c","propName","propKeyValues","cacheKey","proKeyValue","getPopulateKey","fetchPopulateValues","createdByOnFabricCreateUpdate","user","getID","UnsupportedError","pkFabricOnCreate","sequenceName","defineProperty","enumerable","writable","configurable","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","config","for","info","composedKey","createCompositeKey","String","putState","parseError","readState","verbose","ctxArgs","deleteState","logger","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","target","prop","receiver","includes","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","reachedBookmark","lastKey","recordKey","recordValue","Key","Record","close","metadata","fetchedRecordsCount","bookmark","done","Reflect","SerializationError","silly","getState","getQueryResult","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","ensureLogger","base","clear","fabricCtx","accumulate","clientIdentity","baseFlags","correlationId","getTxID","models","Promise","resolve","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","error","shift","Statement","createAll","tableLabel","all","updateAll","prepare","split","segregate","mappedProp","columnName","isReserved","transient","revert","obj","ob","createPrefix","updatePrefix","createAllPrefix","ids","records","updateAllPrefix","reason","msg","message","ConflictError","BadRequestError","QueryError","PagingError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","PersistenceKeys","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","decorator","groupsort","attr","readonly","COLUMN","extend","FabricProperty","Property","FabricObject","ONE_TO_ONE","joinColumnOpts","fk","meta","joinTable","relation","Number","onUpdate","onDelete","afterAny","ONE_TO_MANY","joinTableOpts","list","oneToManyOnUpdate","setCurrent","DeterministicSerializer","FabricCrudContract","Contract","initialized","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","docsOnly","init","healthcheck","method","bind","overrides","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","parsedInput","Transaction","Ctx","Boolean","OverflowError","BalanceError","AllowanceError","NotInitializedError","BaseError","a","b","sub","ERC20Token","column","ERC20Wallet","Allowance","Owner","propertyKey","descriptor","originalMethod","acountId","select","tokens","execute","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","getName","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","ValidationError","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","ContractLogger","MiniLogger","conf","logging","getLogger","level","stack","NumericLogLevels","LogLevel","call","createLog","Logging","setFactory","object","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
1
+ {"version":3,"file":"for-fabric.cjs","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/constants.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/FabricConstruction.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/contracts/logging.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"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","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","Model","pk","fromSelector","type","Metadata","key","DBKeys","ID","selectSelector","map","r","processRecord","build","selectors","CouchDBKeys","TABLE","tableName","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","Object","keys","length","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","assign","async","oneToOneOnCreate","context","data","propertyValue","innerRepo","repositoryFromTypeMetadata","alias","read","cacheModelForPopulate","class","InternalError","repo","forModel","created","create","oneToOneOnUpdate","cascade","update","Cascade","CASCADE","updated","createOrUpdate","oneToOneOnDelete","deleted","delete","oneToManyOnCreate","propertyValues","arrayType","every","item","uniqueValues","Set","pkName","m","record","add","oneToManyOnDelete","isInstantiated","v","populate","nested","isArr","Array","isArray","res","c","propName","propKeyValues","cacheKey","proKeyValue","getPopulateKey","e","fetchPopulateValues","createdByOnFabricCreateUpdate","user","getID","UnsupportedError","pkFabricOnCreate","sequence","sequenceName","Sequence","next","defineProperty","enumerable","writable","configurable","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","config","for","info","composedKey","createCompositeKey","String","putState","parseError","readState","verbose","ctxArgs","deleteState","logger","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","target","prop","receiver","includes","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","count","reachedBookmark","lastKey","recordKey","recordValue","Key","Record","close","metadata","fetchedRecordsCount","bookmark","done","Reflect","SerializationError","silly","getState","NotFoundError","getQueryResult","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","ensureLogger","base","clear","fabricCtx","accumulate","clientIdentity","baseFlags","correlationId","getTxID","index","models","Promise","resolve","undefined","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","error","shift","Statement","createAll","tableLabel","all","i","updateAll","prepare","split","segregate","mappedProp","columnName","isReserved","transient","revert","obj","ob","createPrefix","updatePrefix","createAllPrefix","ids","records","updateAllPrefix","reason","msg","message","ConflictError","BadRequestError","QueryError","PagingError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","PersistenceKeys","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","decorator","options","groupsort","attr","required","readonly","COLUMN","extend","FabricProperty","Property","FabricObject","ONE_TO_ONE","joinColumnOpts","fk","meta","joinTable","relation","Number","BigInt","onUpdate","onDelete","afterAny","ONE_TO_MANY","joinTableOpts","list","oneToManyOnUpdate","setCurrent","DeterministicSerializer","FabricCrudContract","Contract","initialized","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","docsOnly","init","healthcheck","method","bind","overrides","READ","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","parsedInput","__decorate","Transaction","Ctx","prototype","Boolean","OverflowError","BalanceError","AllowanceError","NotInitializedError","BaseError","a","b","sub","ERC20Token","BaseModel","column","ERC20Wallet","Allowance","Owner","propertyKey","descriptor","originalMethod","acountId","select","tokens","execute","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","getName","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","ValidationError","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","ContractLogger","MiniLogger","conf","logging","getLogger","level","stack","NumericLogLevels","LogLevel","call","createLog","Logging","setFactory","object","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}