@decaf-ts/for-fabric 0.1.23 → 0.1.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/for-fabric.cjs +1 -1
- package/dist/for-fabric.cjs.map +1 -1
- package/dist/for-fabric.js +1 -1
- package/dist/for-fabric.js.map +1 -1
- package/lib/client/FabricClientAdapter.cjs +19 -0
- package/lib/client/FabricClientAdapter.d.ts +2 -2
- package/lib/client/FabricClientAdapter.js.map +1 -1
- package/lib/client/FabricClientRepository.cjs +1 -1
- package/lib/client/FabricClientRepository.js.map +1 -1
- package/lib/client/fabric-fs.d.ts +1 -1
- package/lib/contract/Address.cjs +73 -0
- package/lib/contract/Address.d.ts +13 -0
- package/lib/contract/Address.js.map +1 -0
- package/lib/contract/AddressContract.cjs +34 -0
- package/lib/contract/AddressContract.d.ts +5 -0
- package/lib/contract/AddressContract.js.map +1 -0
- package/lib/contract/index.cjs +6 -1
- package/lib/contract/index.js.map +1 -1
- package/lib/esm/client/FabricClientAdapter.d.ts +2 -2
- package/lib/esm/client/FabricClientAdapter.js +19 -0
- package/lib/esm/client/FabricClientAdapter.js.map +1 -1
- package/lib/esm/client/FabricClientRepository.js +1 -1
- package/lib/esm/client/FabricClientRepository.js.map +1 -1
- package/lib/esm/client/fabric-fs.d.ts +1 -1
- package/lib/esm/contract/Address.d.ts +13 -0
- package/lib/esm/contract/Address.js +70 -0
- package/lib/esm/contract/Address.js.map +1 -0
- package/lib/esm/contract/AddressContract.d.ts +5 -0
- package/lib/esm/contract/AddressContract.js +31 -0
- package/lib/esm/contract/AddressContract.js.map +1 -0
- package/lib/esm/contract/index.js +6 -1
- package/lib/esm/contract/index.js.map +1 -1
- package/lib/esm/shared/decorators.d.ts +1 -1
- package/lib/esm/shared/decorators.js +1 -1
- package/lib/esm/shared/errors.d.ts +3 -0
- package/lib/esm/shared/errors.js +5 -0
- package/lib/esm/shared/errors.js.map +1 -1
- package/lib/esm/shared/utils.d.ts +1 -1
- package/lib/esm/version.d.ts +1 -1
- package/lib/esm/version.js +1 -1
- package/lib/shared/decorators.cjs +2 -2
- package/lib/shared/decorators.d.ts +1 -1
- package/lib/shared/errors.cjs +7 -1
- package/lib/shared/errors.d.ts +3 -0
- package/lib/shared/errors.js.map +1 -1
- package/lib/shared/utils.d.ts +1 -1
- package/lib/version.cjs +1 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
package/dist/for-fabric.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var t,e;t=this,e=function(t,e,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 r.ObserverHandler{constructor(t=[n.OperationKeys.CREATE,n.OperationKeys.UPDATE,n.OperationKeys.DELETE,n.BulkCrudOperationKeys.CREATE_ALL,n.BulkCrudOperationKeys.UPDATE_ALL,n.BulkCrudOperationKeys.DELETE_ALL]){super(),this.supportedEvents=t}async updateObservers(t,e,a,...n){const{log:i,ctx:o}=r.Adapter.logCtx(n,this.updateObservers),{stub:s}=o,[c,l]=n,d="string"==typeof t?t:t.name;if(-1!==this.supportedEvents.indexOf(e)){i.debug(`Emitting ${e} event`);const t=((t,e,a)=>{const r=[t,e];return a&&r.push(a),r.join("_")})(d,e,c);s.setEvent(t,Buffer.from(JSON.stringify({id:a})))}else s.setEvent(e,Buffer.from(JSON.stringify(l)))}}class u extends r.Repository{constructor(t,e,a){super(t,e),this.trackedEvents=a}ObserverHandler(){return new d}async updateObservers(t,e,a,...r){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(e))return await super.updateObservers(t,e,a,...r)}}class p extends e.CouchDBStatement{constructor(t){super(t)}async raw(t,...e){const{ctx:r}=this.logCtx(e,this.raw),i=await this.adapter.raw(t,!0,r),s=a.Model.pk(this.fromSelector),c=o.Metadata.get(this.fromSelector,o.Metadata.key(n.DBKeys.ID,s))?.type;return this.selectSelector?i:i.map((t=>this.processRecord(t,s,c,r)))}build(){const t={};t[e.CouchDBKeys.TABLE]={},t[e.CouchDBKeys.TABLE]=a.Model.tableName(this.fromSelector);const n={selector:t};if(this.selectSelector&&(n.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(r.Condition.and(this.whereCondition,r.Condition.attribute(e.CouchDBKeys.TABLE).eq(n.selector[e.CouchDBKeys.TABLE]))).selector,a=Object.keys(t);if(1===a.length&&-1!==Object.values(e.CouchDBGroupOperator).indexOf(a[0]))switch(a[0]){case e.CouchDBGroupOperator.AND:t[e.CouchDBGroupOperator.AND]=[...Object.values(t[e.CouchDBGroupOperator.AND]).reduce(((t,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===e.CouchDBGroupOperator.AND?t.push(...a[n]):t.push(a),t}),[])],n.selector=t;break;case e.CouchDBGroupOperator.OR:{const a={};a[e.CouchDBGroupOperator.AND]=[t,...Object.entries(n.selector).map((([t,e])=>{const a={};return a[t]=e,a}))],n.selector=a;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach((([t,e])=>{n.selector[t],n.selector[t]=e}))}if(this.orderBySelector){n.sort=n.sort||[],n.selector=n.selector||{};const[t,a]=this.orderBySelector,r={};r[t]=a,n.sort.push(r),n.selector[t]||(n.selector[t]={},n.selector[t][e.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(n.limit=this.limitSelector),this.offsetSelector&&(n.skip=this.offsetSelector),n}}var g,h;(t=>{t.PRIVATE="private",t.SHARED="shared",t.FABRIC="fabric.",t.OWNEDBY="owned-by"})(g||(g={})),(t=>{t.X509="X.509"})(h||(h={}));const y="hlf-fabric";class m extends a.JSONSerializer{constructor(){super()}deserialize(t,e){return JSON.parse(t)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}preSerialize(t){return Object.assign({},t)}}async function w(t,e,i,o){const s=o[i];if(!s)return;if("object"!=typeof s){const e=r.repositoryFromTypeMetadata(o,i,this.adapter.alias),a=await e.read(s,t);return await r.cacheModelForPopulate(t,o,i,s,a),void(o[i]=s)}e.class="string"==typeof e.class?e.class:e.class().name;const c=a.Model.get(e.class);if(!c)throw new n.InternalError("Could not find model "+e.class);const l=r.Repository.forModel(c,this.adapter.alias),d=await l.create(s,t),u=a.Model.pk(d);await r.cacheModelForPopulate(t,o,i,d[u],d),o[i]=d[u]}async function f(t,e,n,i){const o=i[n];if(!o)return;if(e.cascade.update!==r.Cascade.CASCADE)return;if("object"!=typeof o){const e=r.repositoryFromTypeMetadata(i,n,this.adapter.alias),a=await e.read(o,t);return await r.cacheModelForPopulate(t,i,n,o,a),void(i[n]=o)}const s=await r.createOrUpdate(i[n],t,this.adapter.alias),c=a.Model.pk(s);await r.cacheModelForPopulate(t,i,n,s[c],s),i[n]=s[c]}async function _(t,e,n,i){const o=i[n];if(!o)return;if(e.cascade.update!==r.Cascade.CASCADE)return;const s=r.repositoryFromTypeMetadata(i,n,this.adapter.alias);let c;c=o instanceof a.Model?await s.delete(i[n][a.Model.pk(s.class)],t):await s.delete(i[n],t),await r.cacheModelForPopulate(t,i,n,c[a.Model.pk(s.class)],c)}async function x(t,e,i,o){const s=o[i];if(!s||!s.length)return;const c=typeof s[0];if(!s.every((t=>typeof t===c)))throw new n.InternalError(`Invalid operation. All elements of property ${i} must match the same type.`);const l=new Set([...s]);if("object"!==c){const e=r.repositoryFromTypeMetadata(o,i,this.adapter.alias);for(const a of l){const n=await e.read(a,t);await r.cacheModelForPopulate(t,o,i,a,n)}return void(o[i]=[...l])}const d=a.Model.pk(s[0]),u=new Set;for(const e of s){const a=await r.createOrUpdate(e,t,this.adapter.alias);await r.cacheModelForPopulate(t,o,i,a[d],a),u.add(a[d])}o[i]=[...u]}async function C(t,e,i,o){if(e.cascade.delete!==r.Cascade.CASCADE)return;const s=o[i];if(!s||!s.length)return;const c=typeof s[0];if(!s.every((t=>typeof t===c)))throw new n.InternalError(`Invalid operation. All elements of property ${i} must match the same type.`);const l="object"===c,d=l?r.Repository.forModel(s[0],this.adapter.alias):r.repositoryFromTypeMetadata(o,i,this.adapter.alias),u=new Set([...l?s.map((t=>t[a.Model.pk(this.class)])):s]);for(const e of u.values()){const a=await d.delete(e,t);await r.cacheModelForPopulate(t,o,i,e,a)}o[i]=[...u]}async function b(t,e,a,i){if(!e.populate)return;const o=i[a],s=Array.isArray(o);if(void 0===o||s&&0===o.length)return;const c=await(async(e,a,i,o,s)=>{let c,l;const d=[];for(const u of o){c=r.getPopulateKey(a.constructor.name,i,u);try{l=await e.get(c)}catch(e){const o=r.repositoryFromTypeMetadata(a,i,s);if(!o)throw new n.InternalError("Could not find repo");l=await o.read(u,t)}d.push(l)}return d})(t,i,a,s?o:[o],this.adapter.alias);i[a]=s?c:c[0]}class A extends s.MiniLogger{constructor(t,e,a){super(t,e),this.logger=a?a.logging.getLogger(t):new s.MiniLogger(t,e)}log(t,e,a){if(s.NumericLogLevels[this.config("level")]<s.NumericLogLevels[t])return;let r;switch(t){case s.LogLevel.info:r=this.logger.info;break;case s.LogLevel.verbose:r=this.logger.verbose;break;case s.LogLevel.debug:r=this.logger.debug;break;case s.LogLevel.error:r=this.logger.error;break;case s.LogLevel.silly:r=this.logger.silly;break;default:throw new n.InternalError("Invalid log level")}r.call(this.logger,this.createLog(t,e,a))}}async function S(t,e,a,n){try{const e=t.get("identity");n[a]=e.getID()}catch(t){throw new r.UnsupportedError("No User found in context. Please provide a user in the context")}}async function E(t,e,r,i){if(!e.type||i[r])return;let o;e.name||(e.name=a.Model.sequenceName(i,"pk"));try{o=await this.adapter.Sequence(e)}catch(t){throw new n.InternalError(`Failed to instantiate Sequence ${e.name}: ${t}`)}const s=await o.next(t);Object.defineProperty(i,r,{enumerable:!0,writable:!1,configurable:!0,value:s})}s.Logging.setFactory(((t,e,a)=>new A(t||A.name,e||{},a)));class v extends e.CouchDBAdapter{getClient(){throw new r.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new m}repository(){return u}constructor(t,e){super(t,y,e),this.Context=l}for(t,...e){return super.for(t,...e)}async create(t,e,r,...n){const{ctx:i,log:o,stub:s}=this.logCtx(n,this.create);o.info("in ADAPTER create with args "+n);const c=a.Model.tableName(t);try{o.info(`adding entry to ${c} table with pk ${e}`);const t=s.createCompositeKey(c,[e+""]);r=await this.putState(t,r,i)}catch(t){throw this.parseError(t)}return r}async read(t,e,...r){const{ctx:n,log:i,stub:o}=this.logCtx(r,this.read);i.info("in ADAPTER read with args "+r);const s=a.Model.tableName(t);let c;try{const t=o.createCompositeKey(s,[e+""]);c=await this.readState(t,n)}catch(t){throw this.parseError(t)}return c}async update(t,e,r,...n){const{ctx:i,log:o,stub:s}=this.logCtx(n,this.update),c=a.Model.tableName(t);try{o.verbose(`updating entry to ${c} table with pk ${e}`);const t=s.createCompositeKey(c,[e+""]);r=await this.putState(t,r,i)}catch(t){throw this.parseError(t)}return r}async delete(t,e,...r){const{ctx:n,log:i,ctxArgs:o,stub:s}=this.logCtx(r,this.delete),c=a.Model.tableName(t);let l;try{const a=s.createCompositeKey(c,[e+""]);l=await this.read(t,e,...o),i.verbose(`deleting entry with pk ${e} from ${c} table`),await this.deleteState(a,n)}catch(t){throw this.parseError(t)}return l}async deleteState(t,e){const{stub:a}=this.logCtx([e],this.deleteState);await a.deleteState(t)}forPrivate(t){const e=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map((t=>t.name));return new Proxy(this,{get:(a,r,i)=>e.includes(r)?new Proxy(a[r],{async apply(e,a,i){switch(r){case"putState":{const[e,a,r]=i;return await e.putPrivateData(t,a.toString(),r),r}case"deleteState":{const[e,a]=i;return e.deletePrivateData(t,a)}case"readState":{const[e,a]=i;return e.getPrivateData(t,a)}case"queryResult":{const[e,a]=i;return e.getPrivateDataQueryResult(t,a)}case"queryResultPaginated":{const[e,a,r,n]=i,o=await e.getPrivateDataQueryResult(t,a),s=[];let c=0,l=!n,d=null;for(;;){const t=await o.next();if(t.value&&t.value.value.toString()){const e=t.value.key,a=t.value.value.toString("utf8");if(!l){e===n?.toString()&&(l=!0);continue}if(s.push({Key:e,Record:JSON.parse(a)}),d=e,c++,c>=r)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:d}}}if(t.done)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:""}}}}default:throw new n.InternalError("Unsupported method override "+r)}}}):Reflect.get(a,r,i)})}async putState(t,e,a){let r;const{stub:i,log:o}=this.logCtx([a],this.putState);try{r=Buffer.from(v.serializer.serialize(e))}catch(e){throw new n.SerializationError(`Failed to serialize record with id ${t}: ${e}`)}const s=a.get("segregated");return s?await i.putPrivateData(s,t.toString(),r):await i.putState(t.toString(),r),o.silly(`state stored${s?` in ${s} collection`:""} under id ${t}`),e}async readState(t,e){let a;const{stub:r,log:i}=this.logCtx([e],this.readState);let o;const s=e.get("segregated");if(o=s?(await r.getPrivateData(s,t.toString())).toString():(await r.getState(t.toString())).toString(),!o)throw new n.NotFoundError(`Record with id ${t}${s?` in ${s} collection`:""} not found`);i.silly(`state retrieved from${s?` ${s} collection`:""} under id ${t}`);try{a=v.serializer.deserialize(o.toString())}catch(t){throw new n.SerializationError("Failed to parse record: "+t)}return a}async queryResult(t,e,...a){const{ctx:r}=this.logCtx(a,this.readState);let n;const i=r.get("segregated");return n=i?await t.getPrivateDataQueryResult(i,JSON.stringify(e)):await t.getQueryResult(JSON.stringify(e)),n}async queryResultPaginated(t,e,a=250,r,...n){const{ctx:i}=this.logCtx(n,this.readState);let o;const s=i.get("segregated");return s?(e.selector={...e.selector,_id:r?{$gt:r.toString()}:{$gte:""}},o={iterator:await t.getPrivateDataQueryResult(s,JSON.stringify(e)),metadata:{fetchedRecordsCount:a,bookmark:""}}):o=await t.getQueryResultWithPagination(JSON.stringify(e),a,r?.toString()),o}mergeModels(t){const e=t=>Object.entries(t).reduce(((t,[e,a])=>(void 0!==a&&(t[e]=a),t)),{});let a=t.pop();for(const r of t)a=Object.assign({},e(a),e(r));return a}decode(t){return v.textDecoder.decode(t)}async flags(t,e,a,r,...n){const i={stub:r.stub,segregated:!1};return Object.assign(i,r instanceof l?{logger:r.logger,identity:r.identity,correlationId:r.stub.getTxID()}:{identity:r.clientIdentity,logger:new A(this,void 0,r),correlationId:r.stub.getTxID()}),await super.flags(t,e,i,...n)}index(t){return Promise.resolve(void 0)}async resultIterator(t,e,a=!1){const r=[];let n=await e.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let e={};if(t.debug(n.value.value.toString("utf8")),a){e.TxId=n.value.txId,e.Timestamp=n.value.timestamp;try{e.Value=JSON.parse(n.value.value.toString("utf8"))}catch(a){t.error(a),e.Value=n.value.value.toString("utf8")}}else try{e=JSON.parse(n.value.value.toString("utf8"))}catch(a){t.error(a),e=n.value.value.toString("utf8")}r.push(e)}n=await e.next()}return t.debug(`Closing iterator after ${r.length} results`),e.close(),r}async raw(t,e=!0,...a){const{log:r,stub:n}=this.logCtx(a,this.raw),{skip:i,limit:o}=t;let s;o||i?(delete t.limit,delete t.skip,r.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${i}`),s=(await this.queryResultPaginated(n,t,o||250,i?.toString())).iterator):(r.debug("Retrieving iterator"),s=await this.queryResult(n,t)),r.debug("Iterator acquired");const c=await this.resultIterator(r,s);return r.debug(`returning ${Array.isArray(c)?c.length:1} results`),c}Statement(){return new p(this)}async createAll(t,e,r,...i){if(e.length!==r.length)throw new n.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.createAll),c=a.Model.tableName(t);return o.debug(`Creating ${e.length} entries ${c} table`),Promise.all(e.map(((e,a)=>this.create(t,e,r[a],...s))))}async updateAll(t,e,r,...i){if(e.length!==r.length)throw new n.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.updateAll),c=a.Model.tableName(t);return o.debug(`Updating ${e.length} entries ${c} table`),Promise.all(e.map(((e,a)=>this.update(t,e,r[a],...s))))}prepare(t,...e){const{log:r}=this.logCtx(e,this.prepare),i=a.Model.tableName(t.constructor),o=a.Model.pk(t.constructor),s=a.Model.segregate(t),c=Object.entries(s.model).reduce(((e,[r,i])=>{if(void 0===i)return e;const o=a.Model.columnName(t,r);if(this.isReserved(o))throw new n.InternalError(`Property name ${o} is reserved`);return e[o]=i,e}),{});return r.silly(`Preparing record for ${i} table with pk ${t[o]}`),{record:c,id:t[o],transient:s.transient}}revert(t,e,r,i,...o){const{log:s}=this.logCtx(o,this.revert),c={};c[a.Model.pk(e)]=r;const l="string"==typeof e?a.Model.build(c,e):new e(c);s.silly(`Rebuilding model ${l.constructor.name} id ${r}`);const d=Object.keys(l).reduce(((e,r)=>(e[r]=t[a.Model.columnName(e,r)],e)),l);return i&&(s.debug("re-adding transient properties: "+Object.keys(i).join(", ")),Object.entries(i).forEach((([t,e])=>{if(t in d&&void 0!==d[t])throw new n.InternalError(`Transient property ${t} already exists on model ${l.constructor.name}. should be impossible`);d[t]=e}))),d}createPrefix(t,r,n,...i){const{ctxArgs:o}=this.logCtx(i,this.createPrefix),s={};return s[e.CouchDBKeys.TABLE]=a.Model.tableName(t),Object.assign(s,n),[t,r,s,...o]}updatePrefix(t,r,n,...i){const{ctxArgs:o}=this.logCtx(i,this.updatePrefix),s={};return s[e.CouchDBKeys.TABLE]=a.Model.tableName(t),Object.assign(s,n),[t,r,s,...o]}createAllPrefix(t,a,r,...i){if(a.length!==r.length)throw new n.InternalError("Ids and models must have the same length");const o=i.pop(),s=a.map(((a,n)=>{const i={};return i[e.CouchDBKeys.TABLE]=t,Object.assign(i,r[n]),i}));return[t,a,s,o]}updateAllPrefix(t,a,r,...i){if(a.length!==r.length)throw new n.InternalError("Ids and models must have the same length");const o=i.pop(),s=a.map(((a,n)=>{const i={};return i[e.CouchDBKeys.TABLE]=t,Object.assign(i,r[n]),i}));return[t,a,s,o]}parseError(t,e){return v.parseError(e||t)}logCtx(t,e){return v.logCtx.call(this,t,e)}static logCtx(t,e){if(1>t.length)throw new n.InternalError("No context provided");const a=t.pop();if(!(a instanceof r.Context))throw new n.InternalError("No context provided");if(t.filter((t=>t instanceof r.Context)).length>1)throw Error("here");const i=this?a.logger.for(this).for(e):a.logger.clear().for(this).for(e);return{ctx:a,log:e?i.for(e):i,stub:a.stub,identity:a.identity,ctxArgs:[...t,a]}}static parseError(t){const e="string"==typeof t?t:t.message;return e.includes(n.NotFoundError.name)?new n.NotFoundError(t):e.includes(n.ConflictError.name)?new n.ConflictError(t):e.includes(n.BadRequestError.name)?new n.BadRequestError(t):e.includes(r.QueryError.name)?new r.QueryError(t):e.includes(r.PagingError.name)?new r.PagingError(t):e.includes(r.UnsupportedError.name)?new r.UnsupportedError(t):e.includes(r.MigrationError.name)?new r.MigrationError(t):e.includes(r.ObserverError.name)?new r.ObserverError(t):e.includes(r.AuthorizationError.name)?new r.AuthorizationError(t):e.includes(r.ForbiddenError.name)?new r.ForbiddenError(t):e.includes(r.ConnectionError.name)?new r.ConnectionError(t):e.includes(n.SerializationError.name)?new n.SerializationError(t):new n.InternalError(t)}static decoration(){super.decoration(),o.Decoration.flavouredAs(y).for(r.PersistenceKeys.CREATED_BY).define(n.onCreate(S),o.propMetadata(r.PersistenceKeys.CREATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(r.PersistenceKeys.UPDATED_BY).define(n.onCreateUpdate(S),o.propMetadata(r.PersistenceKeys.UPDATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(n.DBKeys.ID).define({decorator:(t,e)=>(r,i)=>o.apply(a.required(),n.readonly(),o.propMetadata(o.Metadata.key(n.DBKeys.ID,i),t),n.onCreate(E,t,e))(r,i)}).apply(),o.Decoration.flavouredAs(y).for(r.PersistenceKeys.COLUMN).extend(i.Property()).apply(),o.Decoration.flavouredAs(y).for(r.PersistenceKeys.TABLE).extend((t=>i.Object()(t))).apply(),o.Decoration.flavouredAs(y).for(r.PersistenceKeys.ONE_TO_ONE).define({decorator:(t,e,i,s,c)=>{const l={class:t,cascade:e,populate:i};return s&&(l.joinTable=s),c&&(l.name=c),o.apply(o.prop(),r.relation(r.PersistenceKeys.ONE_TO_ONE,l),a.type([t,String,Number,BigInt]),n.onCreate(w,l),n.onUpdate(f,l),n.onDelete(_,l),n.afterAny(b,l),o.propMetadata(r.PersistenceKeys.ONE_TO_ONE,l))}}).apply(),o.Decoration.for(r.PersistenceKeys.ONE_TO_MANY).define({decorator:(t,e,i,s,c)=>{const l={class:t,cascade:e,populate:i};return s&&(l.joinTable=s),c&&(l.name=c),o.apply(o.prop(),r.relation(r.PersistenceKeys.ONE_TO_MANY,l),a.list([t,String,Number]),n.onCreate(x,l),n.onUpdate(r.oneToManyOnUpdate,l),n.onDelete(C,l),n.afterAny(b,l),o.propMetadata(r.PersistenceKeys.ONE_TO_MANY,l))}}).apply()}}v.decoration(),r.Adapter.setCurrent(y);class O extends a.JSONSerializer{constructor(){super()}deserialize(t){return super.deserialize(t)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}class T extends i.Contract{static{this.adapter=new v}static{this.serializer=new O}constructor(t,e){super(t),this.clazz=e,this.initialized=!1,this.repo=r.Repository.forModel(e)}async listBy(t,e,a,...r){const{ctxArgs:n}=await this.logCtx([...r,t],this.listBy);return this.repo.listBy(e,a,...n)}async paginateBy(t,e,a,r,...n){const{ctxArgs:i}=await this.logCtx([...n,t],this.paginateBy);return this.repo.paginateBy(e,a,r,...i)}async findOneBy(t,e,a,...r){const{ctxArgs:n}=await this.logCtx([...r,t],this.findOneBy);return this.repo.findOneBy(e,a,...n)}async statement(t,e,...a){const{ctxArgs:r}=await this.logCtx([...a,t],this.statement);return this.repo.statement(e,...r)}async create(t,e,...r){const{log:n,ctxArgs:i}=await this.logCtx([...r,t],this.create);n.info("CONTRACT CREATE, "+i),"string"==typeof e&&(e=this.deserialize(e)),n.info("Creating model: "+JSON.stringify(e));const o=this.getTransientData(t);return n.info("Merging transient data..."),e=a.Model.merge(e,o,this.clazz),this.repo.create(e,...i)}async read(t,e,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,t],this.read);return r.info(`reading entry with pk ${e} `),this.repo.read(e,...n)}getTransientData(t){const e=t.stub.getTransient();let a={};return e.has(this.repo.tableName)&&(a=JSON.parse(e.get(this.repo.tableName)?.toString("utf8"))),a}async update(t,e,...r){const{log:n,ctxArgs:i}=await this.logCtx([...r,t],this.update);"string"==typeof e&&(e=this.deserialize(e)),n.info("Updating model: "+JSON.stringify(e));const o=this.getTransientData(t);return n.info("Merging transient data..."),e=a.Model.merge(e,o,this.clazz),this.repo.update(e,...i)}async delete(t,e,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,t],this.delete);return r.info(`deleting entry with pk ${e} `),this.repo.delete(e+"",...n)}async deleteAll(t,e,...a){const{ctxArgs:r}=await this.logCtx([...a,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.deleteAll(e,...r)}async readAll(t,e,...a){const{ctxArgs:r}=await this.logCtx([...a,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.readAll(e,...r)}async updateAll(t,e,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,t],this.updateAll);return"string"==typeof e&&(e=JSON.parse(e).map((t=>this.deserialize(t))).map((t=>new this.clazz(t)))),r.info(`updating ${e.length} entries to the table`),this.repo.updateAll(e,...n)}async query(t,e,a,n=r.OrderDirection.ASC,i,o,...s){const{ctxArgs:c}=await this.logCtx([...s,t],this.query);return this.repo.query(e,a,n,i,o,...c)}async raw(t,e,a,...r){const{ctxArgs:n}=await this.logCtx([...r,t],this.raw);return"string"==typeof e&&(e=JSON.parse(e)),T.adapter.raw(e,a,...n)}serialize(t){return T.serializer.serialize(t)}deserialize(t){return T.serializer.deserialize(t)}async init(t){const{log:e}=await this.logCtx([t],this.init);e.info(`Running contract ${this.getName()} initialization...`),this.initialized=!0,e.info("Contract initialization completed.")}async healthcheck(t){const{log:e}=await this.logCtx([t],this.healthcheck);return e.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(t,e,...a){const{log:r}=await this.logCtx([...a,t],this.createAll);return"string"==typeof e&&(e=JSON.parse(e).map((t=>this.deserialize(t))).map((t=>new this.clazz(t)))),r.info(`adding ${e.length} entries to the table`),this.repo.createAll(e,t,...a)}async logCtx(t,e){return T.logCtx.bind(this)(t,e)}static async logCtx(t,e){if(1>t.length)throw new n.InternalError("No context provided");const a=t.pop();if(a instanceof l)return{ctx:a,log:a.logger.clear().for(this).for(e),ctxArgs:[...t,a],stub:a.stub,identity:a.identity};if(!(a instanceof i.Context))throw new n.InternalError("No valid context provided");const r={correlationId:a.stub.getTxID()},o=await T.adapter.context((()=>{if("string"==typeof e)return e;switch(e.name){case n.OperationKeys.CREATE:case n.OperationKeys.READ:case n.OperationKeys.UPDATE:case n.OperationKeys.DELETE:case n.BulkCrudOperationKeys.CREATE_ALL:case n.BulkCrudOperationKeys.READ_ALL:case n.BulkCrudOperationKeys.UPDATE_ALL:case n.BulkCrudOperationKeys.DELETE_ALL:}return e.name})(),r,this.clazz,a),s=this?o.logger.for(this).for(e):o.logger.clear().for(this).for(e);return{ctx:o,log:s,stub:o.stub,identity:o.identity,ctxArgs:[...t,o]}}}class N extends T{constructor(t,e){super(t,e)}async create(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.create);a.info("Creating model: "+e);const n=this.deserialize(e);return a.info("Model deserialized: "+JSON.stringify(n)),this.serialize(await super.create(r,n))}async read(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.read);return a.info("Reading id: "+e),this.serialize(await super.read(r,e))}async update(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.update);return a.info("Updating model: "+e),this.serialize(await super.update(r,e))}async delete(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.delete);return a.info("Deleting id: "+e),this.serialize(await super.delete(r,e))}async deleteAll(t,e){const a=JSON.parse(e),{log:r,ctx:n}=await this.logCtx([t],this.deleteAll);return r.info(`deleting ${a.length} entries from the table`),JSON.stringify((await super.deleteAll(n,a)).map((t=>this.serialize(t))))}async readAll(t,e){const a=JSON.parse(e),{log:r,ctx:n}=await this.logCtx([t],this.readAll);return r.info(`reading ${a.length} entries from the table`),JSON.stringify((await super.readAll(n,a)).map((t=>this.serialize(t))))}async updateAll(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.updateAll),n=JSON.parse(e).map((t=>this.deserialize(t))).map((t=>new this.clazz(t)));return a.info(`Updating ${n.length} entries to the table`),JSON.stringify((await super.updateAll(r,n)).map((t=>this.serialize(t))))}async statement(t,e,...a){const{ctx:r,log:n}=await this.logCtx([...a,t],this.statement);return a=a.map((t=>{try{return JSON.parse(t)}catch(e){return t}})),n.info("calling prepared statement "+e),n.debug("with args "+a),super.statement(r,e,...a)}async listBy(t,e,a,...r){const{ctx:n}=await this.logCtx([...r,t],this.listBy);return super.listBy(n,e,a)}async paginateBy(t,e,a,r,...n){const{ctx:i}=await this.logCtx([...n,t],this.paginateBy);return super.paginateBy(i,e,a,r)}async findOneBy(t,e,a,...r){const{ctx:n}=await this.logCtx([...r,t],this.paginateBy);return super.findOneBy(n,e,a,...r)}async query(t,e,a,i,o,s,...c){const{ctx:l}=await this.logCtx([t],this.query);let d;try{d=r.Condition.from(JSON.parse(e))}catch(t){throw new n.SerializationError("Invalid condition: "+t)}return super.query(l,d,a,i,o,s,...c)}async raw(t,e,a,...r){const{ctx:n}=await this.logCtx([t],this.raw),i=JSON.parse(e);return super.raw(n,i,a,...r)}async init(t){await super.init(t)}async healthcheck(t){const{log:e,ctx:a}=await this.logCtx([t],this.updateAll);return e.debug(`Running Healthcheck: ${this.initialized}...`),JSON.stringify(await super.healthcheck(a))}async createAll(t,e){const{log:a}=await this.logCtx([t],this.createAll),r=JSON.parse(e).map((t=>this.deserialize(t))).map((t=>new this.clazz(t)));return a.info(`Adding ${r.length} entries to the table`),JSON.stringify((await super.createAll(t,r)).map((t=>this.serialize(t))))}}c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"create",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"read",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"update",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"delete",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"deleteAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"readAll",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"updateAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],N.prototype,"statement",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,String]),c.__metadata("design:returntype",Promise)],N.prototype,"listBy",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,Number,String]),c.__metadata("design:returntype",Promise)],N.prototype,"paginateBy",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,String]),c.__metadata("design:returntype",Promise)],N.prototype,"findOneBy",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],N.prototype,"init",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],N.prototype,"healthcheck",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"createAll",null);class k extends n.InternalError{constructor(t){super(t,k.name)}}class D extends n.InternalError{constructor(t){super(t,D.name)}}class P extends n.InternalError{constructor(t){super(t,P.name)}}class R extends n.BaseError{constructor(t){super(R.name,t,409)}}function z(t,e){const a=t+e;if(t!==a-e||e!==a-t)throw new k(`Addition overflow: ${t} + ${e}`);return a}function B(t,e){const a=t-e;if(t!==a+e||e!==t-a)throw new k(`Subtraction overflow: ${t} - ${e}`);return a}let I=class extends r.BaseModel{constructor(t){super(t)}};c.__decorate([r.pk({type:"String"}),c.__metadata("design:type",String)],I.prototype,"name",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",String)],I.prototype,"owner",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",String)],I.prototype,"symbol",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",Number)],I.prototype,"decimals",void 0),I=c.__decorate([r.table("erc20_tokens"),a.model(),c.__metadata("design:paramtypes",[Object])],I);let F=class extends r.BaseModel{constructor(t){super(t)}};c.__decorate([r.pk({type:"String"}),c.__metadata("design:type",String)],F.prototype,"id",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",String)],F.prototype,"token",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",Number)],F.prototype,"balance",void 0),c.__decorate([r.column(),c.__metadata("design:type",String)],F.prototype,"captive",void 0),F=c.__decorate([r.table("erc20_wallets"),a.model(),c.__metadata("design:paramtypes",[Object])],F);let M=class extends r.BaseModel{constructor(t){super(t)}};function $(){return function(t,e,a){const i=a.value;return a.value=async function(...t){const a=t[0],o=a.clientIdentity.getID(),s=await this.tokenRepository.select(),c=await s.execute(a);if(0==c.length)throw new n.NotFoundError("No tokens avaialble");if(c.length>1)throw new n.NotFoundError("To many token available : "+c.length);if(c[0].owner!=o)throw new r.AuthorizationError(`User not authorized to run ${e} on the token`);return await i.apply(this,t)},a}}var L;c.__decorate([r.pk({type:"String"}),r.column(),a.required(),c.__metadata("design:type",String)],M.prototype,"owner",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",String)],M.prototype,"spender",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",Number)],M.prototype,"value",void 0),M=c.__decorate([r.table("erc20_allowances"),a.model(),c.__metadata("design:paramtypes",[Object])],M),(t=>{t.TRANSFER="Transfer",t.APPROVAL="Approval"})(L||(L={}));class q extends T{constructor(t){super(t,F),q.adapter=q.adapter||new v,this.walletRepository=u.forModel(F,q.adapter.alias),this.tokenRepository=u.forModel(I,q.adapter.alias),this.allowanceRepository=u.forModel(M,q.adapter.alias)}async TokenName(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const a=this.tokenRepository.select();return(await a.execute(e))[0].name}async Symbol(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const a=this.tokenRepository.select();return(await a.execute(e))[0].symbol}async Decimals(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const a=this.tokenRepository.select();return(await a.execute(e))[0].decimals}async TotalSupply(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const a=this.walletRepository.select(),r=await a.execute(e);if(0==r.length)throw new n.NotFoundError(`The token ${this.getName()} does not exist`);let i=0;return r.forEach((t=>{i+=t.balance})),i}async BalanceOf(t,e){const{ctx:a}=await this.logCtx([t],this.TokenName);return await this.CheckInitialized(a),(await this.walletRepository.read(e,a)).balance}async Transfer(t,e,a){const{ctx:r}=await this.logCtx([t],this.Transfer);await this.CheckInitialized(r);const i=r.identity.getID();if(!await this._transfer(i,e,a,r))throw new n.InternalError("Failed to transfer");return!0}async TransferFrom(t,e,a,r){const{ctx:i}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(i);const o=i.identity.getID(),s=await this._getAllowance(e,o,i);if(!s||0>s.value)throw new P(`spender ${o} has no allowance from ${e}`);const c=s.value;if(r>c)throw new D("The spender does not have enough allowance to spend.");const l=B(c,r),d=Object.assign({},s,{value:l});if(await this.allowanceRepository.update(d,i),!await this._transfer(e,a,r,i))throw new n.InternalError("Failed to transfer");return!0}async _transfer(t,e,a,i){const o=i.logger;if(t===e)throw new r.AuthorizationError("cannot transfer to and from same client account");if(0>a)throw new D("transfer amount cannot be negative");const s=await this.walletRepository.read(t,i),c=s.balance;if(a>c)throw new D(`client account ${t} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(e,i)}catch(t){if(!(t instanceof n.BaseError))throw new n.InternalError(t);if(404!==t.code)throw new n.InternalError(t.message);l=new F({id:e,balance:0,token:await this.TokenName(i)}),d=!0}const u=l.balance,p=B(c,a),g=z(u,a),h=Object.assign({},s,{balance:p});await this.walletRepository.update(h,i);const y=Object.assign({},l,{balance:g});d?await this.walletRepository.create(y,i):await this.walletRepository.update(y,i);const m={from:t,to:e,value:a};return this.repo.refresh(I,L.TRANSFER,"",m,i).catch((t=>o.error("Failed to notify transfer: "+t))),!0}async Approve(t,e,a){const{ctx:r,ctxArgs:n}=await this.logCtx([t],this.Approve);await this.CheckInitialized(r);const i=r.identity.getID();let o=await this._getAllowance(i,e,r);if((await this.walletRepository.read(i,...n)).balance<a)throw new D(`client account ${i} has insufficient funds.`);o?(o.value=a,await this.allowanceRepository.update(o,...n)):(o=new M({owner:i,spender:e,value:a}),await this.allowanceRepository.create(o,...n));const s={owner:i,spender:e,value:a};return this.repo.refresh(I,L.APPROVAL,"",s,r),!0}async Allowance(t,e,a){const{ctx:r}=await this.logCtx([t],this.Allowance);await this.CheckInitialized(r);const n=await this._getAllowance(e,a,r);if(!n)throw new P(`spender ${a} has no allowance from ${e}`);return n.value}async _getAllowance(t,e,a){const n=r.Condition.and(r.Condition.attribute("owner").eq(t),r.Condition.attribute("spender").eq(e)),i=await this.allowanceRepository.select().where(n).execute(a);return i?.[0]}async Initialize(t,e){const{ctx:a}=await this.logCtx([t],this.Initialize);if((await this.tokenRepository.select().execute(a)).length>0)throw new r.AuthorizationError("contract options are already set, client is not authorized to change them");return e.owner=a.identity.getID(),await this.tokenRepository.create(e,a),!0}async CheckInitialized(t){const{ctx:e}=await this.logCtx([t],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(e)).length)throw new R("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(t,e){const{ctx:a}=await this.logCtx([t],this.Mint);await this.CheckInitialized(a);const r=a.identity.getID();if(0>=e)throw new n.ValidationError("mint amount must be a positive integer");let i;try{i=await this.walletRepository.read(r,a);const t=z(i.balance,e),n=Object.assign({},i,{balance:t});await this.walletRepository.update(n,a)}catch(i){if(!(i instanceof n.BaseError))throw new n.InternalError(i);if(404!==i.code)throw new n.InternalError(i.message);{const n=new F({id:r,balance:e,token:await this.TokenName(t)});await this.walletRepository.create(n,a)}}const o={from:"0x0",to:r,value:e};this.repo.ObserverHandler().updateObservers(I,L.TRANSFER,"",o,a)}async Burn(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.Burn);await this.CheckInitialized(r);const n=r.identity.getID(),i=await this.walletRepository.read(n,r),o=i.balance;if(e>o)throw new D("Minter has insufficient funds.");const s=B(o,e),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,r),a.info(e+" tokens were burned");const l={from:n,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(I,L.TRANSFER,"",l,r)}async BurnFrom(t,e,a){const{log:r,ctx:n}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(n);const i=await this.walletRepository.read(e,n),o=i.balance;if(a>o)throw new D(e+" has insufficient funds.");const s=B(o,a),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,n),r.info(`${a} tokens were burned from ${e}`);const l={from:e,to:"0x0",value:a};this.repo.ObserverHandler().updateObservers(I,L.TRANSFER,"",l,n)}async ClientAccountBalance(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const a=e.identity.getID(),r=await this.walletRepository.read(a,e);if(!r)throw new D(`The account ${a} does not exist`);return r.balance}async ClientAccountID(t){const{ctx:e}=await this.logCtx([t],this.ClientAccountID);return await this.CheckInitialized(e),e.identity.getID()}}c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"TokenName",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"Symbol",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"Decimals",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"TotalSupply",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],q.prototype,"BalanceOf",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Transfer",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"TransferFrom",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Approve",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],q.prototype,"Allowance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,I]),c.__metadata("design:returntype",Promise)],q.prototype,"Initialize",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"CheckInitialized",null),c.__decorate([$(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Mint",null),c.__decorate([$(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Burn",null),c.__decorate([$(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"BurnFrom",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"ClientAccountBalance",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"ClientAccountID",null);const K=[q],j="##VERSION##",J="##PACKAGE##";o.Metadata.registerLibrary(J,j),t.ContractLogger=A,t.FabricContractAdapter=v,t.FabricContractContext=l,t.FabricContractRepository=u,t.FabricContractRepositoryObservableHandler=d,t.FabricCrudContract=T,t.FabricStatement=p,t.PACKAGE_NAME=J,t.SerializedCrudContract=N,t.VERSION=j,t.contracts=K,t.createdByOnFabricCreateUpdate=S,t.pkFabricOnCreate=E},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@decaf-ts/for-couchdb"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("fabric-contract-api"),require("@decaf-ts/decoration"),require("@decaf-ts/logging"),require("tslib")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/for-couchdb","@decaf-ts/decorator-validation","@decaf-ts/core","@decaf-ts/db-decorators","fabric-contract-api","@decaf-ts/decoration","@decaf-ts/logging","tslib"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["for-fabric"]={},t.decafTsForCouchdb,t.decafTsDecoratorValidation,t.decafTsCore,t.decafTsDbDecorators,t.fabricContractApi,t.decafTsDecoration,t.decafTsLogging,t.tslib);
|
|
1
|
+
var t,e;t=this,e=function(t,e,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 r.ObserverHandler{constructor(t=[n.OperationKeys.CREATE,n.OperationKeys.UPDATE,n.OperationKeys.DELETE,n.BulkCrudOperationKeys.CREATE_ALL,n.BulkCrudOperationKeys.UPDATE_ALL,n.BulkCrudOperationKeys.DELETE_ALL]){super(),this.supportedEvents=t}async updateObservers(t,e,a,...n){const{log:i,ctx:o}=r.Adapter.logCtx(n,this.updateObservers),{stub:s}=o,[c,l]=n,d="string"==typeof t?t:t.name;if(-1!==this.supportedEvents.indexOf(e)){i.debug(`Emitting ${e} event`);const t=((t,e,a)=>{const r=[t,e];return a&&r.push(a),r.join("_")})(d,e,c);s.setEvent(t,Buffer.from(JSON.stringify({id:a})))}else s.setEvent(e,Buffer.from(JSON.stringify(l)))}}class u extends r.Repository{constructor(t,e,a){super(t,e),this.trackedEvents=a}ObserverHandler(){return new d}async updateObservers(t,e,a,...r){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(e))return await super.updateObservers(t,e,a,...r)}}class p extends e.CouchDBStatement{constructor(t){super(t)}async raw(t,...e){const{ctx:r}=this.logCtx(e,this.raw),i=await this.adapter.raw(t,!0,r),s=a.Model.pk(this.fromSelector),c=o.Metadata.get(this.fromSelector,o.Metadata.key(n.DBKeys.ID,s))?.type;return this.selectSelector?i:i.map(t=>this.processRecord(t,s,c,r))}build(){const t={};t[e.CouchDBKeys.TABLE]={},t[e.CouchDBKeys.TABLE]=a.Model.tableName(this.fromSelector);const n={selector:t};if(this.selectSelector&&(n.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(r.Condition.and(this.whereCondition,r.Condition.attribute(e.CouchDBKeys.TABLE).eq(n.selector[e.CouchDBKeys.TABLE]))).selector,a=Object.keys(t);if(1===a.length&&-1!==Object.values(e.CouchDBGroupOperator).indexOf(a[0]))switch(a[0]){case e.CouchDBGroupOperator.AND:t[e.CouchDBGroupOperator.AND]=[...Object.values(t[e.CouchDBGroupOperator.AND]).reduce((t,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===e.CouchDBGroupOperator.AND?t.push(...a[n]):t.push(a),t},[])],n.selector=t;break;case e.CouchDBGroupOperator.OR:{const a={};a[e.CouchDBGroupOperator.AND]=[t,...Object.entries(n.selector).map(([t,e])=>{const a={};return a[t]=e,a})],n.selector=a;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,e])=>{n.selector[t],n.selector[t]=e})}if(this.orderBySelector){n.sort=n.sort||[],n.selector=n.selector||{};const[t,a]=this.orderBySelector,r={};r[t]=a,n.sort.push(r),n.selector[t]||(n.selector[t]={},n.selector[t][e.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(n.limit=this.limitSelector),this.offsetSelector&&(n.skip=this.offsetSelector),n}}var g,h;(t=>{t.PRIVATE="private",t.SHARED="shared",t.FABRIC="fabric.",t.OWNEDBY="owned-by"})(g||(g={})),(t=>{t.X509="X.509"})(h||(h={}));const y="hlf-fabric";class m extends a.JSONSerializer{constructor(){super()}deserialize(t,e){return JSON.parse(t)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}preSerialize(t){return Object.assign({},t)}}async function w(t,e,i,o){const s=o[i];if(!s)return;if("object"!=typeof s){const e=r.repositoryFromTypeMetadata(o,i,this.adapter.alias),a=await e.read(s,t);return await r.cacheModelForPopulate(t,o,i,s,a),void(o[i]=s)}e.class="string"==typeof e.class?e.class:e.class().name;const c=a.Model.get(e.class);if(!c)throw new n.InternalError("Could not find model "+e.class);const l=r.Repository.forModel(c,this.adapter.alias),d=await l.create(s,t),u=a.Model.pk(d);await r.cacheModelForPopulate(t,o,i,d[u],d),o[i]=d[u]}async function f(t,e,n,i){const o=i[n];if(!o)return;if(e.cascade.update!==r.Cascade.CASCADE)return;if("object"!=typeof o){const e=r.repositoryFromTypeMetadata(i,n,this.adapter.alias),a=await e.read(o,t);return await r.cacheModelForPopulate(t,i,n,o,a),void(i[n]=o)}const s=await r.createOrUpdate(i[n],t,this.adapter.alias),c=a.Model.pk(s);await r.cacheModelForPopulate(t,i,n,s[c],s),i[n]=s[c]}async function _(t,e,n,i){const o=i[n];if(!o)return;if(e.cascade.update!==r.Cascade.CASCADE)return;const s=r.repositoryFromTypeMetadata(i,n,this.adapter.alias);let c;c=o instanceof a.Model?await s.delete(i[n][a.Model.pk(s.class)],t):await s.delete(i[n],t),await r.cacheModelForPopulate(t,i,n,c[a.Model.pk(s.class)],c)}async function x(t,e,i,o){const s=o[i];if(!s||!s.length)return;const c=typeof s[0];if(!s.every(t=>typeof t===c))throw new n.InternalError(`Invalid operation. All elements of property ${i} must match the same type.`);const l=new Set([...s]);if("object"!==c){const e=r.repositoryFromTypeMetadata(o,i,this.adapter.alias);for(const a of l){const n=await e.read(a,t);await r.cacheModelForPopulate(t,o,i,a,n)}return void(o[i]=[...l])}const d=a.Model.pk(s[0]),u=new Set;for(const e of s){const a=await r.createOrUpdate(e,t,this.adapter.alias);await r.cacheModelForPopulate(t,o,i,a[d],a),u.add(a[d])}o[i]=[...u]}async function C(t,e,i,o){if(e.cascade.delete!==r.Cascade.CASCADE)return;const s=o[i];if(!s||!s.length)return;const c=typeof s[0];if(!s.every(t=>typeof t===c))throw new n.InternalError(`Invalid operation. All elements of property ${i} must match the same type.`);const l="object"===c,d=l?r.Repository.forModel(s[0],this.adapter.alias):r.repositoryFromTypeMetadata(o,i,this.adapter.alias),u=new Set([...l?s.map(t=>t[a.Model.pk(this.class)]):s]);for(const e of u.values()){const a=await d.delete(e,t);await r.cacheModelForPopulate(t,o,i,e,a)}o[i]=[...u]}async function b(t,e,a,i){if(!e.populate)return;const o=i[a],s=Array.isArray(o);if(void 0===o||s&&0===o.length)return;const c=await(async(e,a,i,o,s)=>{let c,l;const d=[];for(const u of o){c=r.getPopulateKey(a.constructor.name,i,u);try{l=await e.get(c)}catch(e){const o=r.repositoryFromTypeMetadata(a,i,s);if(!o)throw new n.InternalError("Could not find repo");l=await o.read(u,t)}d.push(l)}return d})(t,i,a,s?o:[o],this.adapter.alias);i[a]=s?c:c[0]}class A extends s.MiniLogger{constructor(t,e,a){super(t,e),this.logger=a?a.logging.getLogger(t):new s.MiniLogger(t,e)}log(t,e,a){if(s.NumericLogLevels[this.config("level")]<s.NumericLogLevels[t])return;let r;switch(t){case s.LogLevel.info:r=this.logger.info;break;case s.LogLevel.verbose:r=this.logger.verbose;break;case s.LogLevel.debug:r=this.logger.debug;break;case s.LogLevel.error:r=this.logger.error;break;case s.LogLevel.silly:r=this.logger.silly;break;default:throw new n.InternalError("Invalid log level")}r.call(this.logger,this.createLog(t,e,a))}}async function S(t,e,a,n){try{const e=t.get("identity");n[a]=e.getID()}catch(t){throw new r.UnsupportedError("No User found in context. Please provide a user in the context")}}async function E(t,e,r,i){if(!e.type||i[r])return;let o;e.name||(e.name=a.Model.sequenceName(i,"pk"));try{o=await this.adapter.Sequence(e)}catch(t){throw new n.InternalError(`Failed to instantiate Sequence ${e.name}: ${t}`)}const s=await o.next(t);Object.defineProperty(i,r,{enumerable:!0,writable:!1,configurable:!0,value:s})}s.Logging.setFactory((t,e,a)=>new A(t||A.name,e||{},a));class v extends e.CouchDBAdapter{getClient(){throw new r.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new m}repository(){return u}constructor(t,e){super(t,y,e),this.Context=l}for(t,...e){return super.for(t,...e)}async create(t,e,r,...n){const{ctx:i,log:o,stub:s}=this.logCtx(n,this.create);o.info("in ADAPTER create with args "+n);const c=a.Model.tableName(t);try{o.info(`adding entry to ${c} table with pk ${e}`);const t=s.createCompositeKey(c,[e+""]);r=await this.putState(t,r,i)}catch(t){throw this.parseError(t)}return r}async read(t,e,...r){const{ctx:n,log:i,stub:o}=this.logCtx(r,this.read);i.info("in ADAPTER read with args "+r);const s=a.Model.tableName(t);let c;try{const t=o.createCompositeKey(s,[e+""]);c=await this.readState(t,n)}catch(t){throw this.parseError(t)}return c}async update(t,e,r,...n){const{ctx:i,log:o,stub:s}=this.logCtx(n,this.update),c=a.Model.tableName(t);try{o.verbose(`updating entry to ${c} table with pk ${e}`);const t=s.createCompositeKey(c,[e+""]);r=await this.putState(t,r,i)}catch(t){throw this.parseError(t)}return r}async delete(t,e,...r){const{ctx:n,log:i,ctxArgs:o,stub:s}=this.logCtx(r,this.delete),c=a.Model.tableName(t);let l;try{const a=s.createCompositeKey(c,[e+""]);l=await this.read(t,e,...o),i.verbose(`deleting entry with pk ${e} from ${c} table`),await this.deleteState(a,n)}catch(t){throw this.parseError(t)}return l}async deleteState(t,e){const{stub:a}=this.logCtx([e],this.deleteState);await a.deleteState(t)}forPrivate(t){const e=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map(t=>t.name);return new Proxy(this,{get:(a,r,i)=>e.includes(r)?new Proxy(a[r],{async apply(e,a,i){switch(r){case"putState":{const[e,a,r]=i;return await e.putPrivateData(t,a.toString(),r),r}case"deleteState":{const[e,a]=i;return e.deletePrivateData(t,a)}case"readState":{const[e,a]=i;return e.getPrivateData(t,a)}case"queryResult":{const[e,a]=i;return e.getPrivateDataQueryResult(t,a)}case"queryResultPaginated":{const[e,a,r,n]=i,o=await e.getPrivateDataQueryResult(t,a),s=[];let c=0,l=!n,d=null;for(;;){const t=await o.next();if(t.value&&t.value.value.toString()){const e=t.value.key,a=t.value.value.toString("utf8");if(!l){e===n?.toString()&&(l=!0);continue}if(s.push({Key:e,Record:JSON.parse(a)}),d=e,c++,c>=r)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:d}}}if(t.done)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:""}}}}default:throw new n.InternalError("Unsupported method override "+r)}}}):Reflect.get(a,r,i)})}async putState(t,e,a){let r;const{stub:i,log:o}=this.logCtx([a],this.putState);try{r=Buffer.from(v.serializer.serialize(e))}catch(e){throw new n.SerializationError(`Failed to serialize record with id ${t}: ${e}`)}const s=a.get("segregated");return s?await i.putPrivateData(s,t.toString(),r):await i.putState(t.toString(),r),o.silly(`state stored${s?` in ${s} collection`:""} under id ${t}`),e}async readState(t,e){let a;const{stub:r,log:i}=this.logCtx([e],this.readState);let o;const s=e.get("segregated");if(o=s?(await r.getPrivateData(s,t.toString())).toString():(await r.getState(t.toString())).toString(),!o)throw new n.NotFoundError(`Record with id ${t}${s?` in ${s} collection`:""} not found`);i.silly(`state retrieved from${s?` ${s} collection`:""} under id ${t}`);try{a=v.serializer.deserialize(o.toString())}catch(t){throw new n.SerializationError("Failed to parse record: "+t)}return a}async queryResult(t,e,...a){const{ctx:r}=this.logCtx(a,this.readState);let n;const i=r.get("segregated");return n=i?await t.getPrivateDataQueryResult(i,JSON.stringify(e)):await t.getQueryResult(JSON.stringify(e)),n}async queryResultPaginated(t,e,a=250,r,...n){const{ctx:i}=this.logCtx(n,this.readState);let o;const s=i.get("segregated");return s?(e.selector={...e.selector,_id:r?{$gt:r.toString()}:{$gte:""}},o={iterator:await t.getPrivateDataQueryResult(s,JSON.stringify(e)),metadata:{fetchedRecordsCount:a,bookmark:""}}):o=await t.getQueryResultWithPagination(JSON.stringify(e),a,r?.toString()),o}mergeModels(t){const e=t=>Object.entries(t).reduce((t,[e,a])=>(void 0!==a&&(t[e]=a),t),{});let a=t.pop();for(const r of t)a=Object.assign({},e(a),e(r));return a}decode(t){return v.textDecoder.decode(t)}async flags(t,e,a,r,...n){const i={stub:r.stub,segregated:!1};return Object.assign(i,r instanceof l?{logger:r.logger,identity:r.identity,correlationId:r.stub.getTxID()}:{identity:r.clientIdentity,logger:new A(this,void 0,r),correlationId:r.stub.getTxID()}),await super.flags(t,e,i,...n)}index(t){return Promise.resolve(void 0)}async resultIterator(t,e,a=!1){const r=[];let n=await e.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let e={};if(t.debug(n.value.value.toString("utf8")),a){e.TxId=n.value.txId,e.Timestamp=n.value.timestamp;try{e.Value=JSON.parse(n.value.value.toString("utf8"))}catch(a){t.error(a),e.Value=n.value.value.toString("utf8")}}else try{e=JSON.parse(n.value.value.toString("utf8"))}catch(a){t.error(a),e=n.value.value.toString("utf8")}r.push(e)}n=await e.next()}return t.debug(`Closing iterator after ${r.length} results`),e.close(),r}async raw(t,e=!0,...a){const{log:r,stub:n}=this.logCtx(a,this.raw),{skip:i,limit:o}=t;let s;o||i?(delete t.limit,delete t.skip,r.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${i}`),s=(await this.queryResultPaginated(n,t,o||250,i?.toString())).iterator):(r.debug("Retrieving iterator"),s=await this.queryResult(n,t)),r.debug("Iterator acquired");const c=await this.resultIterator(r,s);return r.debug(`returning ${Array.isArray(c)?c.length:1} results`),c}Statement(){return new p(this)}async createAll(t,e,r,...i){if(e.length!==r.length)throw new n.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.createAll),c=a.Model.tableName(t);return o.debug(`Creating ${e.length} entries ${c} table`),Promise.all(e.map((e,a)=>this.create(t,e,r[a],...s)))}async updateAll(t,e,r,...i){if(e.length!==r.length)throw new n.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(i,this.updateAll),c=a.Model.tableName(t);return o.debug(`Updating ${e.length} entries ${c} table`),Promise.all(e.map((e,a)=>this.update(t,e,r[a],...s)))}prepare(t,...e){const{log:r}=this.logCtx(e,this.prepare),i=a.Model.tableName(t.constructor),o=a.Model.pk(t.constructor),s=a.Model.segregate(t),c=Object.entries(s.model).reduce((e,[r,i])=>{if(void 0===i)return e;const o=a.Model.columnName(t,r);if(this.isReserved(o))throw new n.InternalError(`Property name ${o} is reserved`);return e[o]=i,e},{});return r.silly(`Preparing record for ${i} table with pk ${t[o]}`),{record:c,id:t[o],transient:s.transient}}revert(t,e,r,i,...o){const{log:s}=this.logCtx(o,this.revert),c={};c[a.Model.pk(e)]=r;const l="string"==typeof e?a.Model.build(c,e):new e(c);s.silly(`Rebuilding model ${l.constructor.name} id ${r}`);const d=Object.keys(l).reduce((e,r)=>(e[r]=t[a.Model.columnName(e,r)],e),l);return i&&(s.debug("re-adding transient properties: "+Object.keys(i).join(", ")),Object.entries(i).forEach(([t,e])=>{if(t in d&&void 0!==d[t])throw new n.InternalError(`Transient property ${t} already exists on model ${l.constructor.name}. should be impossible`);d[t]=e})),d}createPrefix(t,r,n,...i){const{ctxArgs:o}=this.logCtx(i,this.createPrefix),s={};return s[e.CouchDBKeys.TABLE]=a.Model.tableName(t),Object.assign(s,n),[t,r,s,...o]}updatePrefix(t,r,n,...i){const{ctxArgs:o}=this.logCtx(i,this.updatePrefix),s={};return s[e.CouchDBKeys.TABLE]=a.Model.tableName(t),Object.assign(s,n),[t,r,s,...o]}createAllPrefix(t,a,r,...i){if(a.length!==r.length)throw new n.InternalError("Ids and models must have the same length");const o=i.pop(),s=a.map((a,n)=>{const i={};return i[e.CouchDBKeys.TABLE]=t,Object.assign(i,r[n]),i});return[t,a,s,o]}updateAllPrefix(t,a,r,...i){if(a.length!==r.length)throw new n.InternalError("Ids and models must have the same length");const o=i.pop(),s=a.map((a,n)=>{const i={};return i[e.CouchDBKeys.TABLE]=t,Object.assign(i,r[n]),i});return[t,a,s,o]}parseError(t,e){return v.parseError(e||t)}logCtx(t,e){return v.logCtx.call(this,t,e)}static logCtx(t,e){if(1>t.length)throw new n.InternalError("No context provided");const a=t.pop();if(!(a instanceof r.Context))throw new n.InternalError("No context provided");if(t.filter(t=>t instanceof r.Context).length>1)throw Error("here");const i=this?a.logger.for(this).for(e):a.logger.clear().for(this).for(e);return{ctx:a,log:e?i.for(e):i,stub:a.stub,identity:a.identity,ctxArgs:[...t,a]}}static parseError(t){const e="string"==typeof t?t:t.message;return e.includes(n.NotFoundError.name)?new n.NotFoundError(t):e.includes(n.ConflictError.name)?new n.ConflictError(t):e.includes(n.BadRequestError.name)?new n.BadRequestError(t):e.includes(r.QueryError.name)?new r.QueryError(t):e.includes(r.PagingError.name)?new r.PagingError(t):e.includes(r.UnsupportedError.name)?new r.UnsupportedError(t):e.includes(r.MigrationError.name)?new r.MigrationError(t):e.includes(r.ObserverError.name)?new r.ObserverError(t):e.includes(r.AuthorizationError.name)?new r.AuthorizationError(t):e.includes(r.ForbiddenError.name)?new r.ForbiddenError(t):e.includes(r.ConnectionError.name)?new r.ConnectionError(t):e.includes(n.SerializationError.name)?new n.SerializationError(t):new n.InternalError(t)}static decoration(){super.decoration(),o.Decoration.flavouredAs(y).for(r.PersistenceKeys.CREATED_BY).define(n.onCreate(S),o.propMetadata(r.PersistenceKeys.CREATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(r.PersistenceKeys.UPDATED_BY).define(n.onCreateUpdate(S),o.propMetadata(r.PersistenceKeys.UPDATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(n.DBKeys.ID).define({decorator:(t,e)=>(r,i)=>o.apply(a.required(),n.readonly(),o.propMetadata(o.Metadata.key(n.DBKeys.ID,i),t),n.onCreate(E,t,e))(r,i)}).apply(),o.Decoration.flavouredAs(y).for(r.PersistenceKeys.COLUMN).extend(i.Property()).apply(),o.Decoration.flavouredAs(y).for(r.PersistenceKeys.TABLE).extend(t=>i.Object()(t)).apply(),o.Decoration.flavouredAs(y).for(r.PersistenceKeys.ONE_TO_ONE).define({decorator:(t,e,i,s,c)=>{const l={class:t,cascade:e,populate:i};return s&&(l.joinTable=s),c&&(l.name=c),o.apply(o.prop(),r.relation(r.PersistenceKeys.ONE_TO_ONE,l),a.type([t,String,Number,BigInt]),n.onCreate(w,l),n.onUpdate(f,l),n.onDelete(_,l),n.afterAny(b,l),o.propMetadata(r.PersistenceKeys.ONE_TO_ONE,l))}}).apply(),o.Decoration.for(r.PersistenceKeys.ONE_TO_MANY).define({decorator:(t,e,i,s,c)=>{const l={class:t,cascade:e,populate:i};return s&&(l.joinTable=s),c&&(l.name=c),o.apply(o.prop(),r.relation(r.PersistenceKeys.ONE_TO_MANY,l),a.list([t,String,Number]),n.onCreate(x,l),n.onUpdate(r.oneToManyOnUpdate,l),n.onDelete(C,l),n.afterAny(b,l),o.propMetadata(r.PersistenceKeys.ONE_TO_MANY,l))}}).apply()}}v.decoration(),r.Adapter.setCurrent(y);class O extends a.JSONSerializer{constructor(){super()}deserialize(t){return super.deserialize(t)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}class T extends i.Contract{static{this.adapter=new v}static{this.serializer=new O}constructor(t,e){super(t),this.clazz=e,this.initialized=!1,this.repo=r.Repository.forModel(e)}async listBy(t,e,a,...r){const{ctxArgs:n}=await this.logCtx([...r,t],this.listBy);return this.repo.listBy(e,a,...n)}async paginateBy(t,e,a,r,...n){const{ctxArgs:i}=await this.logCtx([...n,t],this.paginateBy);return this.repo.paginateBy(e,a,r,...i)}async findOneBy(t,e,a,...r){const{ctxArgs:n}=await this.logCtx([...r,t],this.findOneBy);return this.repo.findOneBy(e,a,...n)}async statement(t,e,...a){const{ctxArgs:r}=await this.logCtx([...a,t],this.statement);return this.repo.statement(e,...r)}async create(t,e,...r){const{log:n,ctxArgs:i}=await this.logCtx([...r,t],this.create);n.info("CONTRACT CREATE, "+i),"string"==typeof e&&(e=this.deserialize(e)),n.info("Creating model: "+JSON.stringify(e));const o=this.getTransientData(t);return n.info("Merging transient data..."),e=a.Model.merge(e,o,this.clazz),this.repo.create(e,...i)}async read(t,e,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,t],this.read);return r.info(`reading entry with pk ${e} `),this.repo.read(e,...n)}getTransientData(t){const e=t.stub.getTransient();let a={};return e.has(this.repo.tableName)&&(a=JSON.parse(e.get(this.repo.tableName)?.toString("utf8"))),a}async update(t,e,...r){const{log:n,ctxArgs:i}=await this.logCtx([...r,t],this.update);"string"==typeof e&&(e=this.deserialize(e)),n.info("Updating model: "+JSON.stringify(e));const o=this.getTransientData(t);return n.info("Merging transient data..."),e=a.Model.merge(e,o,this.clazz),this.repo.update(e,...i)}async delete(t,e,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,t],this.delete);return r.info(`deleting entry with pk ${e} `),this.repo.delete(e+"",...n)}async deleteAll(t,e,...a){const{ctxArgs:r}=await this.logCtx([...a,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.deleteAll(e,...r)}async readAll(t,e,...a){const{ctxArgs:r}=await this.logCtx([...a,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.readAll(e,...r)}async updateAll(t,e,...a){const{log:r,ctxArgs:n}=await this.logCtx([...a,t],this.updateAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),r.info(`updating ${e.length} entries to the table`),this.repo.updateAll(e,...n)}async query(t,e,a,n=r.OrderDirection.ASC,i,o,...s){const{ctxArgs:c}=await this.logCtx([...s,t],this.query);return this.repo.query(e,a,n,i,o,...c)}async raw(t,e,a,...r){const{ctxArgs:n}=await this.logCtx([...r,t],this.raw);return"string"==typeof e&&(e=JSON.parse(e)),T.adapter.raw(e,a,...n)}serialize(t){return T.serializer.serialize(t)}deserialize(t){return T.serializer.deserialize(t)}async init(t){const{log:e}=await this.logCtx([t],this.init);e.info(`Running contract ${this.getName()} initialization...`),this.initialized=!0,e.info("Contract initialization completed.")}async healthcheck(t){const{log:e}=await this.logCtx([t],this.healthcheck);return e.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(t,e,...a){const{log:r}=await this.logCtx([...a,t],this.createAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),r.info(`adding ${e.length} entries to the table`),this.repo.createAll(e,t,...a)}async logCtx(t,e){return T.logCtx.bind(this)(t,e)}static async logCtx(t,e){if(1>t.length)throw new n.InternalError("No context provided");const a=t.pop();if(a instanceof l)return{ctx:a,log:a.logger.clear().for(this).for(e),ctxArgs:[...t,a],stub:a.stub,identity:a.identity};if(!(a instanceof i.Context))throw new n.InternalError("No valid context provided");const r={correlationId:a.stub.getTxID()},o=await T.adapter.context((()=>{if("string"==typeof e)return e;switch(e.name){case n.OperationKeys.CREATE:case n.OperationKeys.READ:case n.OperationKeys.UPDATE:case n.OperationKeys.DELETE:case n.BulkCrudOperationKeys.CREATE_ALL:case n.BulkCrudOperationKeys.READ_ALL:case n.BulkCrudOperationKeys.UPDATE_ALL:case n.BulkCrudOperationKeys.DELETE_ALL:}return e.name})(),r,this.clazz,a),s=this?o.logger.for(this).for(e):o.logger.clear().for(this).for(e);return{ctx:o,log:s,stub:o.stub,identity:o.identity,ctxArgs:[...t,o]}}}class N extends T{constructor(t,e){super(t,e)}async create(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.create);a.info("Creating model: "+e);const n=this.deserialize(e);return a.info("Model deserialized: "+JSON.stringify(n)),this.serialize(await super.create(r,n))}async read(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.read);return a.info("Reading id: "+e),this.serialize(await super.read(r,e))}async update(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.update);return a.info("Updating model: "+e),this.serialize(await super.update(r,e))}async delete(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.delete);return a.info("Deleting id: "+e),this.serialize(await super.delete(r,e))}async deleteAll(t,e){const a=JSON.parse(e),{log:r,ctx:n}=await this.logCtx([t],this.deleteAll);return r.info(`deleting ${a.length} entries from the table`),JSON.stringify((await super.deleteAll(n,a)).map(t=>this.serialize(t)))}async readAll(t,e){const a=JSON.parse(e),{log:r,ctx:n}=await this.logCtx([t],this.readAll);return r.info(`reading ${a.length} entries from the table`),JSON.stringify((await super.readAll(n,a)).map(t=>this.serialize(t)))}async updateAll(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.updateAll),n=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return a.info(`Updating ${n.length} entries to the table`),JSON.stringify((await super.updateAll(r,n)).map(t=>this.serialize(t)))}async statement(t,e,...a){const{ctx:r,log:n}=await this.logCtx([...a,t],this.statement);return a=a.map(t=>{try{return JSON.parse(t)}catch(e){return t}}),n.info("calling prepared statement "+e),n.debug("with args "+a),super.statement(r,e,...a)}async listBy(t,e,a,...r){const{ctx:n}=await this.logCtx([...r,t],this.listBy);return super.listBy(n,e,a)}async paginateBy(t,e,a,r,...n){const{ctx:i}=await this.logCtx([...n,t],this.paginateBy);return super.paginateBy(i,e,a,r)}async findOneBy(t,e,a,...r){const{ctx:n}=await this.logCtx([...r,t],this.paginateBy);return super.findOneBy(n,e,a,...r)}async query(t,e,a,i,o,s,...c){const{ctx:l}=await this.logCtx([t],this.query);let d;try{d=r.Condition.from(JSON.parse(e))}catch(t){throw new n.SerializationError("Invalid condition: "+t)}return super.query(l,d,a,i,o,s,...c)}async raw(t,e,a,...r){const{ctx:n}=await this.logCtx([t],this.raw),i=JSON.parse(e);return super.raw(n,i,a,...r)}async init(t){await super.init(t)}async healthcheck(t){const{log:e,ctx:a}=await this.logCtx([t],this.updateAll);return e.debug(`Running Healthcheck: ${this.initialized}...`),JSON.stringify(await super.healthcheck(a))}async createAll(t,e){const{log:a}=await this.logCtx([t],this.createAll),r=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return a.info(`Adding ${r.length} entries to the table`),JSON.stringify((await super.createAll(t,r)).map(t=>this.serialize(t)))}}c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"create",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"read",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"update",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"delete",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"deleteAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"readAll",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"updateAll",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],N.prototype,"statement",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,String]),c.__metadata("design:returntype",Promise)],N.prototype,"listBy",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,Number,String]),c.__metadata("design:returntype",Promise)],N.prototype,"paginateBy",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,String]),c.__metadata("design:returntype",Promise)],N.prototype,"findOneBy",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],N.prototype,"init",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],N.prototype,"healthcheck",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"createAll",null);class k extends n.InternalError{constructor(t){super(t,k.name)}}class D extends n.InternalError{constructor(t){super(t,D.name)}}class P extends n.InternalError{constructor(t){super(t,P.name)}}class R extends n.BaseError{constructor(t){super(R.name,t,409)}}function z(t,e){const a=t+e;if(t!==a-e||e!==a-t)throw new k(`Addition overflow: ${t} + ${e}`);return a}function B(t,e){const a=t-e;if(t!==a+e||e!==t-a)throw new k(`Subtraction overflow: ${t} - ${e}`);return a}let I=class extends r.BaseModel{constructor(t){super(t)}};c.__decorate([r.pk({type:"String"}),c.__metadata("design:type",String)],I.prototype,"name",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",String)],I.prototype,"owner",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",String)],I.prototype,"symbol",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",Number)],I.prototype,"decimals",void 0),I=c.__decorate([r.table("erc20_tokens"),a.model(),c.__metadata("design:paramtypes",[Object])],I);let F=class extends r.BaseModel{constructor(t){super(t)}};c.__decorate([r.pk({type:"String"}),c.__metadata("design:type",String)],F.prototype,"id",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",String)],F.prototype,"token",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",Number)],F.prototype,"balance",void 0),c.__decorate([r.column(),c.__metadata("design:type",String)],F.prototype,"captive",void 0),F=c.__decorate([r.table("erc20_wallets"),a.model(),c.__metadata("design:paramtypes",[Object])],F);let M=class extends r.BaseModel{constructor(t){super(t)}};function $(){return function(t,e,a){const i=a.value;return a.value=async function(...t){const a=t[0],o=a.clientIdentity.getID(),s=await this.tokenRepository.select(),c=await s.execute(a);if(0==c.length)throw new n.NotFoundError("No tokens avaialble");if(c.length>1)throw new n.NotFoundError("To many token available : "+c.length);if(c[0].owner!=o)throw new r.AuthorizationError(`User not authorized to run ${e} on the token`);return await i.apply(this,t)},a}}var L;c.__decorate([r.pk({type:"String"}),r.column(),a.required(),c.__metadata("design:type",String)],M.prototype,"owner",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",String)],M.prototype,"spender",void 0),c.__decorate([r.column(),a.required(),c.__metadata("design:type",Number)],M.prototype,"value",void 0),M=c.__decorate([r.table("erc20_allowances"),a.model(),c.__metadata("design:paramtypes",[Object])],M),(t=>{t.TRANSFER="Transfer",t.APPROVAL="Approval"})(L||(L={}));class q extends T{constructor(t){super(t,F),q.adapter=q.adapter||new v,this.walletRepository=u.forModel(F,q.adapter.alias),this.tokenRepository=u.forModel(I,q.adapter.alias),this.allowanceRepository=u.forModel(M,q.adapter.alias)}async TokenName(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const a=this.tokenRepository.select();return(await a.execute(e))[0].name}async Symbol(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const a=this.tokenRepository.select();return(await a.execute(e))[0].symbol}async Decimals(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const a=this.tokenRepository.select();return(await a.execute(e))[0].decimals}async TotalSupply(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const a=this.walletRepository.select(),r=await a.execute(e);if(0==r.length)throw new n.NotFoundError(`The token ${this.getName()} does not exist`);let i=0;return r.forEach(t=>{i+=t.balance}),i}async BalanceOf(t,e){const{ctx:a}=await this.logCtx([t],this.TokenName);return await this.CheckInitialized(a),(await this.walletRepository.read(e,a)).balance}async Transfer(t,e,a){const{ctx:r}=await this.logCtx([t],this.Transfer);await this.CheckInitialized(r);const i=r.identity.getID();if(!await this._transfer(i,e,a,r))throw new n.InternalError("Failed to transfer");return!0}async TransferFrom(t,e,a,r){const{ctx:i}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(i);const o=i.identity.getID(),s=await this._getAllowance(e,o,i);if(!s||0>s.value)throw new P(`spender ${o} has no allowance from ${e}`);const c=s.value;if(r>c)throw new D("The spender does not have enough allowance to spend.");const l=B(c,r),d=Object.assign({},s,{value:l});if(await this.allowanceRepository.update(d,i),!await this._transfer(e,a,r,i))throw new n.InternalError("Failed to transfer");return!0}async _transfer(t,e,a,i){const o=i.logger;if(t===e)throw new r.AuthorizationError("cannot transfer to and from same client account");if(0>a)throw new D("transfer amount cannot be negative");const s=await this.walletRepository.read(t,i),c=s.balance;if(a>c)throw new D(`client account ${t} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(e,i)}catch(t){if(!(t instanceof n.BaseError))throw new n.InternalError(t);if(404!==t.code)throw new n.InternalError(t.message);l=new F({id:e,balance:0,token:await this.TokenName(i)}),d=!0}const u=l.balance,p=B(c,a),g=z(u,a),h=Object.assign({},s,{balance:p});await this.walletRepository.update(h,i);const y=Object.assign({},l,{balance:g});d?await this.walletRepository.create(y,i):await this.walletRepository.update(y,i);const m={from:t,to:e,value:a};return this.repo.refresh(I,L.TRANSFER,"",m,i).catch(t=>o.error("Failed to notify transfer: "+t)),!0}async Approve(t,e,a){const{ctx:r,ctxArgs:n}=await this.logCtx([t],this.Approve);await this.CheckInitialized(r);const i=r.identity.getID();let o=await this._getAllowance(i,e,r);if((await this.walletRepository.read(i,...n)).balance<a)throw new D(`client account ${i} has insufficient funds.`);o?(o.value=a,await this.allowanceRepository.update(o,...n)):(o=new M({owner:i,spender:e,value:a}),await this.allowanceRepository.create(o,...n));const s={owner:i,spender:e,value:a};return this.repo.refresh(I,L.APPROVAL,"",s,r),!0}async Allowance(t,e,a){const{ctx:r}=await this.logCtx([t],this.Allowance);await this.CheckInitialized(r);const n=await this._getAllowance(e,a,r);if(!n)throw new P(`spender ${a} has no allowance from ${e}`);return n.value}async _getAllowance(t,e,a){const n=r.Condition.and(r.Condition.attribute("owner").eq(t),r.Condition.attribute("spender").eq(e)),i=await this.allowanceRepository.select().where(n).execute(a);return i?.[0]}async Initialize(t,e){const{ctx:a}=await this.logCtx([t],this.Initialize);if((await this.tokenRepository.select().execute(a)).length>0)throw new r.AuthorizationError("contract options are already set, client is not authorized to change them");return e.owner=a.identity.getID(),await this.tokenRepository.create(e,a),!0}async CheckInitialized(t){const{ctx:e}=await this.logCtx([t],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(e)).length)throw new R("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(t,e){const{ctx:a}=await this.logCtx([t],this.Mint);await this.CheckInitialized(a);const r=a.identity.getID();if(0>=e)throw new n.ValidationError("mint amount must be a positive integer");let i;try{i=await this.walletRepository.read(r,a);const t=z(i.balance,e),n=Object.assign({},i,{balance:t});await this.walletRepository.update(n,a)}catch(i){if(!(i instanceof n.BaseError))throw new n.InternalError(i);if(404!==i.code)throw new n.InternalError(i.message);{const n=new F({id:r,balance:e,token:await this.TokenName(t)});await this.walletRepository.create(n,a)}}const o={from:"0x0",to:r,value:e};this.repo.ObserverHandler().updateObservers(I,L.TRANSFER,"",o,a)}async Burn(t,e){const{log:a,ctx:r}=await this.logCtx([t],this.Burn);await this.CheckInitialized(r);const n=r.identity.getID(),i=await this.walletRepository.read(n,r),o=i.balance;if(e>o)throw new D("Minter has insufficient funds.");const s=B(o,e),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,r),a.info(e+" tokens were burned");const l={from:n,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(I,L.TRANSFER,"",l,r)}async BurnFrom(t,e,a){const{log:r,ctx:n}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(n);const i=await this.walletRepository.read(e,n),o=i.balance;if(a>o)throw new D(e+" has insufficient funds.");const s=B(o,a),c=Object.assign({},i,{balance:s});await this.walletRepository.update(c,n),r.info(`${a} tokens were burned from ${e}`);const l={from:e,to:"0x0",value:a};this.repo.ObserverHandler().updateObservers(I,L.TRANSFER,"",l,n)}async ClientAccountBalance(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const a=e.identity.getID(),r=await this.walletRepository.read(a,e);if(!r)throw new D(`The account ${a} does not exist`);return r.balance}async ClientAccountID(t){const{ctx:e}=await this.logCtx([t],this.ClientAccountID);return await this.CheckInitialized(e),e.identity.getID()}}c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"TokenName",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"Symbol",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"Decimals",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"TotalSupply",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String]),c.__metadata("design:returntype",Promise)],q.prototype,"BalanceOf",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Transfer",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"TransferFrom",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Approve",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,String]),c.__metadata("design:returntype",Promise)],q.prototype,"Allowance",null),c.__decorate([i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,I]),c.__metadata("design:returntype",Promise)],q.prototype,"Initialize",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"CheckInitialized",null),c.__decorate([$(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Mint",null),c.__decorate([$(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"Burn",null),c.__decorate([$(),i.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context,String,Number]),c.__metadata("design:returntype",Promise)],q.prototype,"BurnFrom",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"ClientAccountBalance",null),c.__decorate([i.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[i.Context]),c.__metadata("design:returntype",Promise)],q.prototype,"ClientAccountID",null);const K=[q],j="##VERSION##",J="##PACKAGE##";o.Metadata.registerLibrary(J,j),t.ContractLogger=A,t.FabricContractAdapter=v,t.FabricContractContext=l,t.FabricContractRepository=u,t.FabricContractRepositoryObservableHandler=d,t.FabricCrudContract=T,t.FabricStatement=p,t.PACKAGE_NAME=J,t.SerializedCrudContract=N,t.VERSION=j,t.contracts=K,t.createdByOnFabricCreateUpdate=S,t.pkFabricOnCreate=E},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@decaf-ts/for-couchdb"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("fabric-contract-api"),require("@decaf-ts/decoration"),require("@decaf-ts/logging"),require("tslib")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/for-couchdb","@decaf-ts/decorator-validation","@decaf-ts/core","@decaf-ts/db-decorators","fabric-contract-api","@decaf-ts/decoration","@decaf-ts/logging","tslib"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["for-fabric"]={},t.decafTsForCouchdb,t.decafTsDecoratorValidation,t.decafTsCore,t.decafTsDbDecorators,t.fabricContractApi,t.decafTsDecoration,t.decafTsLogging,t.tslib);
|
|
2
2
|
//# sourceMappingURL=for-fabric.cjs.map
|
package/dist/for-fabric.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"for-fabric.cjs","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/constants.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/FabricConstruction.ts","../src/contracts/logging.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/errors.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/decorators.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","toString","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","clazz","event","id","args","log","ctx","Adapter","logCtx","owner","payload","table","name","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricContractRepository","Repository","adapter","trackedEvents","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","ContractLogger","MiniLogger","conf","logger","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","info","verbose","error","silly","call","createLog","createdByOnFabricCreateUpdate","user","getID","UnsupportedError","pkFabricOnCreate","sequence","sequenceName","Sequence","next","defineProperty","enumerable","writable","configurable","Logging","setFactory","object","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","for","composedKey","createCompositeKey","String","putState","parseError","readState","ctxArgs","deleteState","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","getState","NotFoundError","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","correlationId","getTxID","clientIdentity","undefined","index","models","Promise","resolve","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Statement","createAll","tableLabel","all","i","updateAll","prepare","split","segregate","mappedProp","columnName","isReserved","transient","revert","obj","ob","createPrefix","updatePrefix","createAllPrefix","ids","records","updateAllPrefix","reason","filter","a","clear","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","listBy","order","paginateBy","size","findOneBy","statement","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","orderBy","OrderDirection","ASC","init","getName","healthcheck","bind","Ctx","overrides","READ","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","cond","parsedInput","__decorate","Transaction","prototype","OverflowError","BalanceError","AllowanceError","NotInitializedError","BaseError","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","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","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/logging.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/errors.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/decorators.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","toString","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","clazz","event","id","args","log","ctx","Adapter","logCtx","owner","payload","table","name","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricContractRepository","Repository","adapter","trackedEvents","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","ContractLogger","MiniLogger","conf","logger","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","info","verbose","error","silly","call","createLog","createdByOnFabricCreateUpdate","user","getID","UnsupportedError","pkFabricOnCreate","sequence","sequenceName","Sequence","next","defineProperty","enumerable","writable","configurable","Logging","setFactory","object","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","for","composedKey","createCompositeKey","String","putState","parseError","readState","ctxArgs","deleteState","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","getState","NotFoundError","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","correlationId","getTxID","clientIdentity","undefined","index","models","Promise","resolve","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Statement","createAll","tableLabel","all","i","updateAll","prepare","split","segregate","mappedProp","columnName","isReserved","transient","revert","obj","ob","createPrefix","updatePrefix","createAllPrefix","ids","records","updateAllPrefix","reason","filter","a","clear","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","listBy","order","paginateBy","size","findOneBy","statement","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","orderBy","OrderDirection","ASC","init","getName","healthcheck","bind","Ctx","overrides","READ","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","cond","parsedInput","__decorate","Transaction","prototype","OverflowError","BalanceError","AllowanceError","NotInitializedError","BaseError","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","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","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
|