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