@decaf-ts/for-fabric 0.1.27 → 0.1.29

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.
Files changed (101) hide show
  1. package/dist/for-fabric.cjs +1 -1
  2. package/dist/for-fabric.cjs.map +1 -1
  3. package/dist/for-fabric.js +1 -1
  4. package/dist/for-fabric.js.map +1 -1
  5. package/lib/bin/compile-indexes.cjs +22 -13
  6. package/lib/bin/compile-indexes.js.map +1 -1
  7. package/lib/client/FabricClientAdapter.cjs +38 -71
  8. package/lib/client/FabricClientAdapter.d.ts +27 -37
  9. package/lib/client/FabricClientAdapter.js.map +1 -1
  10. package/lib/client/FabricClientDispatch.cjs +6 -2
  11. package/lib/client/FabricClientDispatch.d.ts +4 -4
  12. package/lib/client/FabricClientDispatch.js.map +1 -1
  13. package/lib/client/FabricClientRepository.cjs +19 -5
  14. package/lib/client/FabricClientRepository.d.ts +1 -1
  15. package/lib/client/FabricClientRepository.js.map +1 -1
  16. package/lib/client/FabricClientStatement.cjs +72 -0
  17. package/lib/client/FabricClientStatement.d.ts +5 -1
  18. package/lib/client/FabricClientStatement.js.map +1 -1
  19. package/lib/client/constants.cjs +10 -0
  20. package/lib/client/constants.d.ts +2 -0
  21. package/lib/client/constants.js.map +1 -0
  22. package/lib/client/erc20/FabricERC20ClientRepository.cjs +48 -22
  23. package/lib/client/erc20/FabricERC20ClientRepository.js.map +1 -1
  24. package/lib/client/fabric-fs.d.ts +1 -1
  25. package/lib/client/indexes/generation.cjs +27 -49
  26. package/lib/client/indexes/generation.d.ts +1 -0
  27. package/lib/client/indexes/generation.js.map +1 -1
  28. package/lib/client/types.cjs +3 -0
  29. package/lib/client/types.d.ts +7 -0
  30. package/lib/client/types.js.map +1 -0
  31. package/lib/contract/Address.cjs +4 -0
  32. package/lib/contract/Address.js.map +1 -1
  33. package/lib/contracts/ContractAdapter.cjs +13 -3
  34. package/lib/contracts/ContractAdapter.d.ts +8 -1
  35. package/lib/contracts/ContractAdapter.js.map +1 -1
  36. package/lib/contracts/FabricContractRepository.cjs +62 -0
  37. package/lib/contracts/FabricContractRepository.d.ts +4 -2
  38. package/lib/contracts/FabricContractRepository.js.map +1 -1
  39. package/lib/contracts/FabricContractSequence.cjs +188 -0
  40. package/lib/contracts/FabricContractSequence.d.ts +86 -0
  41. package/lib/contracts/FabricContractSequence.js.map +1 -0
  42. package/lib/contracts/crud/crud-contract.cjs +8 -4
  43. package/lib/contracts/crud/crud-contract.js.map +1 -1
  44. package/lib/contracts/crud/serialized-crud-contract.cjs +26 -22
  45. package/lib/contracts/crud/serialized-crud-contract.d.ts +4 -4
  46. package/lib/contracts/crud/serialized-crud-contract.js.map +1 -1
  47. package/lib/contracts/index.cjs +1 -0
  48. package/lib/contracts/index.d.ts +1 -0
  49. package/lib/contracts/index.js.map +1 -1
  50. package/lib/esm/bin/compile-indexes.js +22 -10
  51. package/lib/esm/bin/compile-indexes.js.map +1 -1
  52. package/lib/esm/client/FabricClientAdapter.d.ts +27 -37
  53. package/lib/esm/client/FabricClientAdapter.js +38 -71
  54. package/lib/esm/client/FabricClientAdapter.js.map +1 -1
  55. package/lib/esm/client/FabricClientDispatch.d.ts +4 -4
  56. package/lib/esm/client/FabricClientDispatch.js +6 -2
  57. package/lib/esm/client/FabricClientDispatch.js.map +1 -1
  58. package/lib/esm/client/FabricClientRepository.d.ts +1 -1
  59. package/lib/esm/client/FabricClientRepository.js +19 -5
  60. package/lib/esm/client/FabricClientRepository.js.map +1 -1
  61. package/lib/esm/client/FabricClientStatement.d.ts +5 -1
  62. package/lib/esm/client/FabricClientStatement.js +73 -1
  63. package/lib/esm/client/FabricClientStatement.js.map +1 -1
  64. package/lib/esm/client/constants.d.ts +2 -0
  65. package/lib/esm/client/constants.js +7 -0
  66. package/lib/esm/client/constants.js.map +1 -0
  67. package/lib/esm/client/erc20/FabricERC20ClientRepository.js +49 -23
  68. package/lib/esm/client/erc20/FabricERC20ClientRepository.js.map +1 -1
  69. package/lib/esm/client/fabric-fs.d.ts +1 -1
  70. package/lib/esm/client/indexes/generation.d.ts +1 -0
  71. package/lib/esm/client/indexes/generation.js +26 -16
  72. package/lib/esm/client/indexes/generation.js.map +1 -1
  73. package/lib/esm/client/types.d.ts +7 -0
  74. package/lib/esm/client/types.js +2 -0
  75. package/lib/esm/client/types.js.map +1 -0
  76. package/lib/esm/contract/Address.js +5 -1
  77. package/lib/esm/contract/Address.js.map +1 -1
  78. package/lib/esm/contracts/ContractAdapter.d.ts +8 -1
  79. package/lib/esm/contracts/ContractAdapter.js +14 -4
  80. package/lib/esm/contracts/ContractAdapter.js.map +1 -1
  81. package/lib/esm/contracts/FabricContractRepository.d.ts +4 -2
  82. package/lib/esm/contracts/FabricContractRepository.js +63 -1
  83. package/lib/esm/contracts/FabricContractRepository.js.map +1 -1
  84. package/lib/esm/contracts/FabricContractSequence.d.ts +86 -0
  85. package/lib/esm/contracts/FabricContractSequence.js +184 -0
  86. package/lib/esm/contracts/FabricContractSequence.js.map +1 -0
  87. package/lib/esm/contracts/crud/crud-contract.js +8 -4
  88. package/lib/esm/contracts/crud/crud-contract.js.map +1 -1
  89. package/lib/esm/contracts/crud/serialized-crud-contract.d.ts +4 -4
  90. package/lib/esm/contracts/crud/serialized-crud-contract.js +26 -22
  91. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -1
  92. package/lib/esm/contracts/index.d.ts +1 -0
  93. package/lib/esm/contracts/index.js +1 -0
  94. package/lib/esm/contracts/index.js.map +1 -1
  95. package/lib/esm/shared/utils.d.ts +1 -1
  96. package/lib/esm/version.d.ts +1 -1
  97. package/lib/esm/version.js +1 -1
  98. package/lib/shared/utils.d.ts +1 -1
  99. package/lib/version.cjs +1 -1
  100. package/lib/version.d.ts +1 -1
  101. package/package.json +2 -1
@@ -1,2 +1,2 @@
1
- import{CouchDBStatement as t,CouchDBKeys as e,CouchDBGroupOperator as i,CouchDBOperator as r,CouchDBAdapter as s}from"@decaf-ts/for-couchdb";import{Model as n,JSONSerializer as a,required as o,model as l}from"@decaf-ts/decorator-validation";import{Context as c,ObserverHandler as u,Adapter as d,Repository as g,Condition as p,UnsupportedError as h,QueryError as y,PagingError as w,MigrationError as f,ObserverError as m,AuthorizationError as x,ForbiddenError as b,ConnectionError as S,PersistenceKeys as A,OrderDirection as v,pk as C,column as O,table as k,BaseModel as N}from"@decaf-ts/core";import{OperationKeys as R,BulkCrudOperationKeys as z,DBKeys as E,InternalError as P,SerializationError as T,NotFoundError as $,ConflictError as D,BadRequestError as I,onCreate as B,onCreateUpdate as F,BaseError as j,ValidationError as J}from"@decaf-ts/db-decorators";import{Property as L,Object as q,Contract as _,Context as U,Transaction as M}from"fabric-contract-api";import{Metadata as H,Decoration as Q,propMetadata as V}from"@decaf-ts/decoration";import{Logging as K,MiniLogger as Y,NumericLogLevels as G,LogLevel as W}from"@decaf-ts/logging";import{__decorate as X,__metadata as Z}from"tslib";class tt extends c{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 et extends u{constructor(t=[R.CREATE,R.UPDATE,R.DELETE,z.CREATE_ALL,z.UPDATE_ALL,z.DELETE_ALL]){super(),this.supportedEvents=t}async updateObservers(t,e,i,...r){const{log:s,ctx:n}=d.logCtx(r,this.updateObservers),{stub:a}=n,[o,l]=r,c="string"==typeof t?t:t.name;if(-1!==this.supportedEvents.indexOf(e)){s.debug(`Emitting ${e} event`);const t=((t,e,i)=>{const r=[t,e];return i&&r.push(i),r.join("_")})(c,e,o);a.setEvent(t,Buffer.from(JSON.stringify({id:i})))}else a.setEvent(e,Buffer.from(JSON.stringify(l)))}}class it extends g{constructor(t,e,i){super(t,e),this.trackedEvents=i,this._overrides=Object.assign({},super._overrides,{ignoreValidation:!1,ignoreHandlers:!1,allowRawStatements:!0,forcePrepareSimpleQueries:!1,forcePrepareComplexQueries:!1})}ObserverHandler(){return new et}async updateObservers(t,e,i,...r){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(e))return await super.updateObservers(t,e,i,...r)}}class rt extends t{constructor(t){super(t)}async raw(t,...e){const{ctx:i}=this.logCtx(e,this.raw),r=await this.adapter.raw(t,!0,i),s=n.pk(this.fromSelector),a=H.get(this.fromSelector,H.key(E.ID,s))?.type;return this.selectSelector?r:r.map(t=>this.processRecord(t,s,a,i))}build(){const t={};t[e.TABLE]={},t[e.TABLE]=n.tableName(this.fromSelector);const s={selector:t};if(this.selectSelector&&(s.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(p.and(this.whereCondition,p.attribute(e.TABLE).eq(s.selector[e.TABLE]))).selector,r=Object.keys(t);if(1===r.length&&-1!==Object.values(i).indexOf(r[0]))switch(r[0]){case i.AND:t[i.AND]=[...Object.values(t[i.AND]).reduce((t,e)=>{const r=Object.keys(e);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const s=r[0];return s===i.AND?t.push(...e[s]):t.push(e),t},[])],s.selector=t;break;case i.OR:{const e={};e[i.AND]=[t,...Object.entries(s.selector).map(([t,e])=>{const i={};return i[t]=e,i})],s.selector=e;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,e])=>{s.selector[t],s.selector[t]=e})}if(this.orderBySelector){s.sort=s.sort||[],s.selector=s.selector||{};const[t,e]=this.orderBySelector,i={};i[t]=e,s.sort.push(i),s.selector[t]||(s.selector[t]={},s.selector[t][r.BIGGER]=null)}return this.limitSelector&&(s.limit=this.limitSelector),this.offsetSelector&&(s.skip=this.offsetSelector),s}}var st,nt;(t=>{t.PRIVATE="private",t.SHARED="shared",t.FABRIC="fabric.",t.OWNEDBY="owned-by"})(st||(st={})),(t=>{t.X509="X.509"})(nt||(nt={}));const at="hlf-fabric";class ot extends a{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 lt extends Y{constructor(t,e,i){super(t,e),this.logger=i?i.logging.getLogger(t):new Y(t,e)}log(t,e,i){if(G[this.config("level")]<G[t])return;let r;switch(t){case W.info:r=this.logger.info;break;case W.verbose:r=this.logger.verbose;break;case W.debug:r=this.logger.debug;break;case W.error:r=this.logger.error;break;case W.silly:r=this.logger.silly;break;default:throw new P("Invalid log level")}r.call(this.logger,this.createLog(t,e,i))}}async function ct(t,e,i,r){try{const e=t.get("identity");r[i]=e.getID()}catch(t){throw new h("No User found in context. Please provide a user in the context")}}async function ut(t,e,i,r){if(!e.type||r[i])return;let s;e.name||(e.name=n.sequenceName(r,"pk"));try{s=await this.adapter.Sequence(e)}catch(t){throw new P(`Failed to instantiate Sequence ${e.name}: ${t}`)}const a=await s.next(t);Object.defineProperty(r,i,{enumerable:!0,writable:!1,configurable:!0,value:a})}K.setFactory((t,e,i)=>new lt(t||lt.name,e||{},i));class dt extends s{getClient(){throw new h("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new ot}repository(){return it}constructor(t,e){super(t,at,e),this.Context=tt}for(t,...e){return super.for(t,...e)}async create(t,e,i,...r){const{ctx:s,log:a,stub:o}=this.logCtx(r,this.create);a.info("in ADAPTER create with args "+r);const l=n.tableName(t);try{a.info(`adding entry to ${l} table with pk ${e}`);const t=o.createCompositeKey(l,[e+""]);i=await this.putState(t,i,s)}catch(t){throw this.parseError(t)}return i}async read(t,e,...i){const{ctx:r,log:s,stub:a}=this.logCtx(i,this.read);s.info("in ADAPTER read with args "+i);const o=n.tableName(t);let l;try{const t=a.createCompositeKey(o,[e+""]);l=await this.readState(t,r)}catch(t){throw this.parseError(t)}return l}async update(t,e,i,...r){const{ctx:s,log:a,stub:o}=this.logCtx(r,this.update),l=n.tableName(t);try{a.verbose(`updating entry to ${l} table with pk ${e}`);const t=o.createCompositeKey(l,[e+""]);i=await this.putState(t,i,s)}catch(t){throw this.parseError(t)}return i}async delete(t,e,...i){const{ctx:r,log:s,ctxArgs:a,stub:o}=this.logCtx(i,this.delete),l=n.tableName(t);let c;try{const i=o.createCompositeKey(l,[e+""]);c=await this.read(t,e,...a),s.verbose(`deleting entry with pk ${e} from ${l} table`),await this.deleteState(i,r)}catch(t){throw this.parseError(t)}return c}async deleteState(t,e){const{stub:i}=this.logCtx([e],this.deleteState);await i.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:(i,r,s)=>e.includes(r)?new Proxy(i[r],{async apply(e,i,s){switch(r){case"putState":{const[e,i,r]=s;return await e.putPrivateData(t,i.toString(),r),r}case"deleteState":{const[e,i]=s;return e.deletePrivateData(t,i)}case"readState":{const[e,i]=s;return e.getPrivateData(t,i)}case"queryResult":{const[e,i]=s;return e.getPrivateDataQueryResult(t,i)}case"queryResultPaginated":{const[e,i,r,n]=s,a=await e.getPrivateDataQueryResult(t,i),o=[];let l=0,c=!n,u=null;for(;;){const t=await a.next();if(t.value&&t.value.value.toString()){const e=t.value.key,i=t.value.value.toString("utf8");if(!c){e===n?.toString()&&(c=!0);continue}if(o.push({Key:e,Record:JSON.parse(i)}),u=e,l++,l>=r)return await a.close(),{iterator:o,metadata:{fetchedRecordsCount:o.length,bookmark:u}}}if(t.done)return await a.close(),{iterator:o,metadata:{fetchedRecordsCount:o.length,bookmark:""}}}}default:throw new P("Unsupported method override "+r)}}}):Reflect.get(i,r,s)})}async putState(t,e,i){let r;const{stub:s,log:n}=this.logCtx([i],this.putState);try{r=Buffer.from(dt.serializer.serialize(e))}catch(e){throw new T(`Failed to serialize record with id ${t}: ${e}`)}const a=i.get("segregated");return a?await s.putPrivateData(a,t.toString(),r):await s.putState(t.toString(),r),n.silly(`state stored${a?` in ${a} collection`:""} under id ${t}`),e}async readState(t,e){let i;const{stub:r,log:s}=this.logCtx([e],this.readState);let n;const a=e.get("segregated");if(n=a?(await r.getPrivateData(a,t.toString())).toString():(await r.getState(t.toString())).toString(),!n)throw new $(`Record with id ${t}${a?` in ${a} collection`:""} not found`);s.silly(`state retrieved from${a?` ${a} collection`:""} under id ${t}`);try{i=dt.serializer.deserialize(n.toString())}catch(t){throw new T("Failed to parse record: "+t)}return i}async queryResult(t,e,...i){const{ctx:r}=this.logCtx(i,this.readState);let s;const n=r.get("segregated");return s=n?await t.getPrivateDataQueryResult(n,JSON.stringify(e)):await t.getQueryResult(JSON.stringify(e)),s}async queryResultPaginated(t,e,i=250,r,...s){const{ctx:n}=this.logCtx(s,this.readState);let a;const o=n.get("segregated");return o?(e.selector={...e.selector,_id:r?{$gt:r.toString()}:{$gte:""}},a={iterator:await t.getPrivateDataQueryResult(o,JSON.stringify(e)),metadata:{fetchedRecordsCount:i,bookmark:""}}):a=await t.getQueryResultWithPagination(JSON.stringify(e),i,r?.toString()),a}mergeModels(t){const e=t=>Object.entries(t).reduce((t,[e,i])=>(void 0!==i&&(t[e]=i),t),{});let i=t.pop();for(const r of t)i=Object.assign({},e(i),e(r));return i}decode(t){return dt.textDecoder.decode(t)}async flags(t,e,i,r,...s){const n={stub:r.stub,segregated:!1};return Object.assign(n,r instanceof tt?{logger:r.logger,identity:r.identity,correlationId:r.stub.getTxID()}:{identity:r.clientIdentity,logger:new lt(this,void 0,r),correlationId:r.stub.getTxID()}),await super.flags(t,e,n,...s)}index(t){return Promise.resolve(void 0)}async resultIterator(t,e,i=!1){const r=[];let s=await e.next();for(;!s.done;){if(s.value&&s.value.value.toString()){let e={};if(t.debug(s.value.value.toString("utf8")),i){e.TxId=s.value.txId,e.Timestamp=s.value.timestamp;try{e.Value=JSON.parse(s.value.value.toString("utf8"))}catch(i){t.error(i),e.Value=s.value.value.toString("utf8")}}else try{e=JSON.parse(s.value.value.toString("utf8"))}catch(i){t.error(i),e=s.value.value.toString("utf8")}r.push(e)}s=await e.next()}return t.debug(`Closing iterator after ${r.length} results`),e.close(),r}async raw(t,e=!0,...i){const{log:r,stub:s}=this.logCtx(i,this.raw),{skip:n,limit:a}=t;let o;a||n?(delete t.limit,delete t.skip,r.debug(`Retrieving paginated iterator: limit: ${a}/ skip: ${n}`),o=(await this.queryResultPaginated(s,t,a||250,n?.toString())).iterator):(r.debug("Retrieving iterator"),o=await this.queryResult(s,t)),r.debug("Iterator acquired");const l=await this.resultIterator(r,o);return r.debug(`returning ${Array.isArray(l)?l.length:1} results`),l}Statement(){return new rt(this)}async createAll(t,e,i,...r){if(e.length!==i.length)throw new P("Ids and models must have the same length");const{log:s,ctxArgs:a}=this.logCtx(r,this.createAll),o=n.tableName(t);return s.debug(`Creating ${e.length} entries ${o} table`),Promise.all(e.map((e,r)=>this.create(t,e,i[r],...a)))}async updateAll(t,e,i,...r){if(e.length!==i.length)throw new P("Ids and models must have the same length");const{log:s,ctxArgs:a}=this.logCtx(r,this.updateAll),o=n.tableName(t);return s.debug(`Updating ${e.length} entries ${o} table`),Promise.all(e.map((e,r)=>this.update(t,e,i[r],...a)))}prepare(t,...e){const{log:i}=this.logCtx(e,this.prepare),r=n.tableName(t.constructor),s=n.pk(t.constructor),a=n.segregate(t),o=Object.entries(a.model).reduce((e,[i,r])=>{if(void 0===r)return e;const s=n.columnName(t,i);if(this.isReserved(s))throw new P(`Property name ${s} is reserved`);return e[s]=r,e},{});return i.silly(`Preparing record for ${r} table with pk ${t[s]}`),{record:o,id:t[s],transient:a.transient}}revert(t,e,i,r,...s){const{log:a}=this.logCtx(s,this.revert),o={};o[n.pk(e)]=i;const l="string"==typeof e?n.build(o,e):new e(o);a.silly(`Rebuilding model ${l.constructor.name} id ${i}`);const c=Object.keys(l).reduce((e,i)=>(e[i]=t[n.columnName(e,i)],e),l);return r&&(a.debug("re-adding transient properties: "+Object.keys(r).join(", ")),Object.entries(r).forEach(([t,e])=>{if(t in c&&void 0!==c[t])throw new P(`Transient property ${t} already exists on model ${l.constructor.name}. should be impossible`);c[t]=e})),c}createPrefix(t,i,r,...s){const{ctxArgs:a}=this.logCtx(s,this.createPrefix),o={};return o[e.TABLE]=n.tableName(t),Object.assign(o,r),[t,i,o,...a]}updatePrefix(t,i,r,...s){const{ctxArgs:a}=this.logCtx(s,this.updatePrefix),o={};return o[e.TABLE]=n.tableName(t),Object.assign(o,r),[t,i,o,...a]}createAllPrefix(t,i,r,...s){if(i.length!==r.length)throw new P("Ids and models must have the same length");const n=s.pop(),a=i.map((i,s)=>{const n={};return n[e.TABLE]=t,Object.assign(n,r[s]),n});return[t,i,a,n]}updateAllPrefix(t,i,r,...s){if(i.length!==r.length)throw new P("Ids and models must have the same length");const n=s.pop(),a=i.map((i,s)=>{const n={};return n[e.TABLE]=t,Object.assign(n,r[s]),n});return[t,i,a,n]}parseError(t,e){return dt.parseError(e||t)}logCtx(t,e){return dt.logCtx.call(this,t,e)}static logCtx(t,e){if(1>t.length)throw new P("No context provided");const i=t.pop();if(!(i instanceof c))throw new P("No context provided");if(t.filter(t=>t instanceof c).length>1)throw Error("here");const r=this?i.logger.for(this).for(e):i.logger.clear().for(this).for(e);return{ctx:i,log:e?r.for(e):r,stub:i.stub,identity:i.identity,ctxArgs:[...t,i]}}static parseError(t){const e="string"==typeof t?t:t.message;return e.includes($.name)?new $(t):e.includes(D.name)?new D(t):e.includes(I.name)?new I(t):e.includes(y.name)?new y(t):e.includes(w.name)?new w(t):e.includes(h.name)?new h(t):e.includes(f.name)?new f(t):e.includes(m.name)?new m(t):e.includes(x.name)?new x(t):e.includes(b.name)?new b(t):e.includes(S.name)?new S(t):e.includes(T.name)?new T(t):new P(t)}static decoration(){super.decoration(),Q.flavouredAs(at).for(A.CREATED_BY).define(B(ct),V(A.CREATED_BY,{})).apply(),Q.flavouredAs(at).for(A.UPDATED_BY).define(F(ct),V(A.UPDATED_BY,{})).apply(),Q.flavouredAs(at).for(A.COLUMN).extend(L()).apply(),Q.flavouredAs(at).for(A.TABLE).extend(t=>q()(t)).apply()}}dt.decoration(),d.setCurrent(at);class gt extends a{constructor(){super()}deserialize(t){return super.deserialize(t)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}class pt extends _{static{this.adapter=new dt}static{this.serializer=new gt}constructor(t,e){super(t),this.clazz=e,this.initialized=!1,this.repo=g.forModel(e)}async listBy(t,e,i,...r){const{ctxArgs:s}=await this.logCtx([...r,t],this.listBy);return this.repo.listBy(e,i,...s)}async paginateBy(t,e,i,r,...s){const{ctxArgs:n}=await this.logCtx([...s,t],this.paginateBy);return this.repo.paginateBy(e,i,r,...n)}async findOneBy(t,e,i,...r){const{ctxArgs:s}=await this.logCtx([...r,t],this.findOneBy);return this.repo.findOneBy(e,i,...s)}async statement(t,e,...i){const{ctxArgs:r}=await this.logCtx([...i,t],this.statement);return this.repo.statement(e,...r)}async create(t,e,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.create);r.info("CONTRACT CREATE, "+s),"string"==typeof e&&(e=this.deserialize(e)),r.info("Creating model: "+JSON.stringify(e));const a=this.getTransientData(t);return r.info("Merging transient data..."),e=n.merge(e,a,this.clazz),this.repo.create(e,...s)}async read(t,e,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.read);return r.info(`reading entry with pk ${e} `),this.repo.read(e,...s)}getTransientData(t){const e=t.stub.getTransient();let i={};return e.has(this.repo.tableName)&&(i=JSON.parse(e.get(this.repo.tableName)?.toString("utf8"))),i}async update(t,e,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.update);"string"==typeof e&&(e=this.deserialize(e)),r.info("Updating model: "+JSON.stringify(e));const a=this.getTransientData(t);return r.info("Merging transient data..."),e=n.merge(e,a,this.clazz),this.repo.update(e,...s)}async delete(t,e,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.delete);return r.info(`deleting entry with pk ${e} `),this.repo.delete(e+"",...s)}async deleteAll(t,e,...i){const{ctxArgs:r}=await this.logCtx([...i,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.deleteAll(e,...r)}async readAll(t,e,...i){const{ctxArgs:r}=await this.logCtx([...i,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.readAll(e,...r)}async updateAll(t,e,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.updateAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),r.info(`updating ${e.length} entries to the table`),this.repo.updateAll(e,...s)}async query(t,e,i,r=v.ASC,s,n,...a){const{ctxArgs:o}=await this.logCtx([...a,t],this.query);return this.repo.query(e,i,r,s,n,...o)}async raw(t,e,i,...r){const{ctxArgs:s}=await this.logCtx([...r,t],this.raw);return pt.adapter.raw(e,i,...s)}serialize(t){return pt.serializer.serialize(t)}deserialize(t){return pt.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,...i){const{log:r,ctxArgs:s}=await this.logCtx([...i,t],this.createAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),r.info(`adding ${e.length} entries to the table`),this.repo.createAll(e,...s)}async logCtx(t,e){return pt.logCtx.bind(this)(t,e)}static async logCtx(t,e){if(1>t.length)throw new P("No context provided");const i=t.pop();if(i instanceof tt)return{ctx:i,log:i.logger.clear().for(this).for(e),ctxArgs:[...t,i],stub:i.stub,identity:i.identity};if(!(i instanceof U))throw new P("No valid context provided");const r={correlationId:i.stub.getTxID()},s=await pt.adapter.context((()=>{if("string"==typeof e)return e;switch(e.name){case R.CREATE:case R.READ:case R.UPDATE:case R.DELETE:case z.CREATE_ALL:case z.READ_ALL:case z.UPDATE_ALL:case z.DELETE_ALL:}return e.name})(),r,this.clazz,i),n=this?s.logger.for(this).for(e):s.logger.clear().for(this).for(e);return{ctx:s,log:n,stub:s.stub,identity:s.identity,ctxArgs:[...t,s]}}}class ht extends pt{constructor(t,e){super(t,e)}async create(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.create);i.info("Creating model: "+e);const s=this.deserialize(e);return i.info("Model deserialized: "+JSON.stringify(s)),this.serialize(await super.create(r,s))}async read(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.read);return i.info("Reading id: "+e),this.serialize(await super.read(r,e))}async update(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.update);return i.info("Updating model: "+e),this.serialize(await super.update(r,e))}async delete(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.delete);return i.info("Deleting id: "+e),this.serialize(await super.delete(r,e))}async deleteAll(t,e){const i=JSON.parse(e),{log:r,ctx:s}=await this.logCtx([t],this.deleteAll);return r.info(`deleting ${i.length} entries from the table`),JSON.stringify((await super.deleteAll(s,i)).map(t=>this.serialize(t)))}async readAll(t,e){const i=JSON.parse(e),{log:r,ctx:s}=await this.logCtx([t],this.readAll);return r.info(`reading ${i.length} entries from the table`),JSON.stringify((await super.readAll(s,i)).map(t=>this.serialize(t)))}async updateAll(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.updateAll),s=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return i.info(`Updating ${s.length} entries to the table`),JSON.stringify((await super.updateAll(r,s)).map(t=>this.serialize(t)))}async statement(t,e,...i){const{ctx:r,log:s}=await this.logCtx([...i,t],this.statement);return i=i.map(t=>{try{return JSON.parse(t)}catch(e){return t}}),s.info("calling prepared statement "+e),s.debug("with args "+i),JSON.stringify(await super.statement(r,e,...i))}async listBy(t,e,i,...r){const{ctx:s}=await this.logCtx([...r,t],this.listBy);return JSON.stringify(await super.listBy(s,e,i))}async paginateBy(t,e,i,r,...s){const{ctx:n}=await this.logCtx([...s,t],this.paginateBy);return JSON.stringify(await super.paginateBy(n,e,i,r))}async findOneBy(t,e,i,...r){const{ctx:s}=await this.logCtx([...r,t],this.paginateBy);return JSON.stringify(await super.findOneBy(s,e,i,...r))}async query(t,e,i,r,s,n,...a){const{ctx:o}=await this.logCtx([t],this.query);let l;try{l=p.from(JSON.parse(e))}catch(t){throw new T("Invalid condition: "+t)}return JSON.stringify(await super.query(o,l,i,r,s,n,...a))}async init(t){await super.init(t)}async healthcheck(t){const{log:e,ctx:i}=await this.logCtx([t],this.updateAll);return e.debug(`Running Healthcheck: ${this.initialized}...`),JSON.stringify(await super.healthcheck(i))}async createAll(t,e){const{log:i}=await this.logCtx([t],this.createAll),r=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return i.info(`Adding ${r.length} entries to the table`),JSON.stringify((await super.createAll(t,r)).map(t=>this.serialize(t)))}}X([M(),Z("design:type",Function),Z("design:paramtypes",[U,String]),Z("design:returntype",Promise)],ht.prototype,"create",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U,String]),Z("design:returntype",Promise)],ht.prototype,"read",null),X([M(),Z("design:type",Function),Z("design:paramtypes",[U,String]),Z("design:returntype",Promise)],ht.prototype,"update",null),X([M(),Z("design:type",Function),Z("design:paramtypes",[U,String]),Z("design:returntype",Promise)],ht.prototype,"delete",null),X([M(),Z("design:type",Function),Z("design:paramtypes",[U,String]),Z("design:returntype",Promise)],ht.prototype,"deleteAll",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U,String]),Z("design:returntype",Promise)],ht.prototype,"readAll",null),X([M(),Z("design:type",Function),Z("design:paramtypes",[U,String]),Z("design:returntype",Promise)],ht.prototype,"updateAll",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U,String,String]),Z("design:returntype",Promise)],ht.prototype,"statement",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U,String,String,String]),Z("design:returntype",Promise)],ht.prototype,"listBy",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U,String,String,Number,String]),Z("design:returntype",Promise)],ht.prototype,"paginateBy",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U,String,String,String]),Z("design:returntype",Promise)],ht.prototype,"findOneBy",null),X([M(),Z("design:type",Function),Z("design:paramtypes",[U]),Z("design:returntype",Promise)],ht.prototype,"init",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U]),Z("design:returntype",Promise)],ht.prototype,"healthcheck",null),X([M(),Z("design:type",Function),Z("design:paramtypes",[U,String]),Z("design:returntype",Promise)],ht.prototype,"createAll",null);class yt extends P{constructor(t){super(t,yt.name)}}class wt extends P{constructor(t){super(t,wt.name)}}class ft extends P{constructor(t){super(t,ft.name)}}class mt extends j{constructor(t){super(mt.name,t,409)}}function xt(t,e){const i=t+e;if(t!==i-e||e!==i-t)throw new yt(`Addition overflow: ${t} + ${e}`);return i}function bt(t,e){const i=t-e;if(t!==i+e||e!==t-i)throw new yt(`Subtraction overflow: ${t} - ${e}`);return i}let St=class extends N{constructor(t){super(t)}};X([C({type:"String"}),Z("design:type",String)],St.prototype,"name",void 0),X([O(),o(),Z("design:type",String)],St.prototype,"owner",void 0),X([O(),o(),Z("design:type",String)],St.prototype,"symbol",void 0),X([O(),o(),Z("design:type",Number)],St.prototype,"decimals",void 0),St=X([k("erc20_tokens"),l(),Z("design:paramtypes",[Object])],St);let At=class extends N{constructor(t){super(t)}};X([C({type:"String"}),Z("design:type",String)],At.prototype,"id",void 0),X([O(),o(),Z("design:type",String)],At.prototype,"token",void 0),X([O(),o(),Z("design:type",Number)],At.prototype,"balance",void 0),X([O(),Z("design:type",String)],At.prototype,"captive",void 0),At=X([k("erc20_wallets"),l(),Z("design:paramtypes",[Object])],At);let vt=class extends N{constructor(t){super(t)}};function Ct(){return function(t,e,i){const r=i.value;return i.value=async function(...t){const i=t[0],s=i.clientIdentity.getID(),n=await this.tokenRepository.select(),a=await n.execute(i);if(0==a.length)throw new $("No tokens avaialble");if(a.length>1)throw new $("To many token available : "+a.length);if(a[0].owner!=s)throw new x(`User not authorized to run ${e} on the token`);return await r.apply(this,t)},i}}var Ot;X([C({type:"String"}),O(),o(),Z("design:type",String)],vt.prototype,"owner",void 0),X([O(),o(),Z("design:type",String)],vt.prototype,"spender",void 0),X([O(),o(),Z("design:type",Number)],vt.prototype,"value",void 0),vt=X([k("erc20_allowances"),l(),Z("design:paramtypes",[Object])],vt),(t=>{t.TRANSFER="Transfer",t.APPROVAL="Approval"})(Ot||(Ot={}));class kt extends pt{constructor(t){super(t,At),kt.adapter=kt.adapter||new dt,this.walletRepository=it.forModel(At,kt.adapter.alias),this.tokenRepository=it.forModel(St,kt.adapter.alias),this.allowanceRepository=it.forModel(vt,kt.adapter.alias)}async TokenName(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].name}async Symbol(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].symbol}async Decimals(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].decimals}async TotalSupply(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.walletRepository.select(),r=await i.execute(e);if(0==r.length)throw new $(`The token ${this.getName()} does not exist`);let s=0;return r.forEach(t=>{s+=t.balance}),s}async BalanceOf(t,e){const{ctx:i}=await this.logCtx([t],this.TokenName);return await this.CheckInitialized(i),(await this.walletRepository.read(e,i)).balance}async Transfer(t,e,i){const{ctx:r}=await this.logCtx([t],this.Transfer);await this.CheckInitialized(r);const s=r.identity.getID();if(!await this._transfer(s,e,i,r))throw new P("Failed to transfer");return!0}async TransferFrom(t,e,i,r){const{ctx:s}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(s);const n=s.identity.getID(),a=await this._getAllowance(e,n,s);if(!a||0>a.value)throw new ft(`spender ${n} has no allowance from ${e}`);const o=a.value;if(r>o)throw new wt("The spender does not have enough allowance to spend.");const l=bt(o,r),c=Object.assign({},a,{value:l});if(await this.allowanceRepository.update(c,s),!await this._transfer(e,i,r,s))throw new P("Failed to transfer");return!0}async _transfer(t,e,i,r){const s=r.logger;if(t===e)throw new x("cannot transfer to and from same client account");if(0>i)throw new wt("transfer amount cannot be negative");const n=await this.walletRepository.read(t,r),a=n.balance;if(i>a)throw new wt(`client account ${t} has insufficient funds.`);let o,l=!1;try{o=await this.walletRepository.read(e,r)}catch(t){if(!(t instanceof j))throw new P(t);if(404!==t.code)throw new P(t.message);o=new At({id:e,balance:0,token:await this.TokenName(r)}),l=!0}const c=o.balance,u=bt(a,i),d=xt(c,i),g=Object.assign({},n,{balance:u});await this.walletRepository.update(g,r);const p=Object.assign({},o,{balance:d});l?await this.walletRepository.create(p,r):await this.walletRepository.update(p,r);const h={from:t,to:e,value:i};return this.repo.refresh(St,Ot.TRANSFER,"",h,r).catch(t=>s.error("Failed to notify transfer: "+t)),!0}async Approve(t,e,i){const{ctx:r,ctxArgs:s}=await this.logCtx([t],this.Approve);await this.CheckInitialized(r);const n=r.identity.getID();let a=await this._getAllowance(n,e,r);if((await this.walletRepository.read(n,...s)).balance<i)throw new wt(`client account ${n} has insufficient funds.`);a?(a.value=i,await this.allowanceRepository.update(a,...s)):(a=new vt({owner:n,spender:e,value:i}),await this.allowanceRepository.create(a,...s));const o={owner:n,spender:e,value:i};return this.repo.refresh(St,Ot.APPROVAL,"",o,r),!0}async Allowance(t,e,i){const{ctx:r}=await this.logCtx([t],this.Allowance);await this.CheckInitialized(r);const s=await this._getAllowance(e,i,r);if(!s)throw new ft(`spender ${i} has no allowance from ${e}`);return s.value}async _getAllowance(t,e,i){const r=p.and(p.attribute("owner").eq(t),p.attribute("spender").eq(e)),s=await this.allowanceRepository.select().where(r).execute(i);return s?.[0]}async Initialize(t,e){const{ctx:i}=await this.logCtx([t],this.Initialize);if((await this.tokenRepository.select().execute(i)).length>0)throw new x("contract options are already set, client is not authorized to change them");return e.owner=i.identity.getID(),await this.tokenRepository.create(e,i),!0}async CheckInitialized(t){const{ctx:e}=await this.logCtx([t],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(e)).length)throw new mt("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(t,e){const{ctx:i}=await this.logCtx([t],this.Mint);await this.CheckInitialized(i);const r=i.identity.getID();if(0>=e)throw new J("mint amount must be a positive integer");let s;try{s=await this.walletRepository.read(r,i);const t=xt(s.balance,e),n=Object.assign({},s,{balance:t});await this.walletRepository.update(n,i)}catch(s){if(!(s instanceof j))throw new P(s);if(404!==s.code)throw new P(s.message);{const s=new At({id:r,balance:e,token:await this.TokenName(t)});await this.walletRepository.create(s,i)}}const n={from:"0x0",to:r,value:e};this.repo.ObserverHandler().updateObservers(St,Ot.TRANSFER,"",n,i)}async Burn(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.Burn);await this.CheckInitialized(r);const s=r.identity.getID(),n=await this.walletRepository.read(s,r),a=n.balance;if(e>a)throw new wt("Minter has insufficient funds.");const o=bt(a,e),l=Object.assign({},n,{balance:o});await this.walletRepository.update(l,r),i.info(e+" tokens were burned");const c={from:s,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(St,Ot.TRANSFER,"",c,r)}async BurnFrom(t,e,i){const{log:r,ctx:s}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(s);const n=await this.walletRepository.read(e,s),a=n.balance;if(i>a)throw new wt(e+" has insufficient funds.");const o=bt(a,i),l=Object.assign({},n,{balance:o});await this.walletRepository.update(l,s),r.info(`${i} tokens were burned from ${e}`);const c={from:e,to:"0x0",value:i};this.repo.ObserverHandler().updateObservers(St,Ot.TRANSFER,"",c,s)}async ClientAccountBalance(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=e.identity.getID(),r=await this.walletRepository.read(i,e);if(!r)throw new wt(`The account ${i} does not exist`);return r.balance}async ClientAccountID(t){const{ctx:e}=await this.logCtx([t],this.ClientAccountID);return await this.CheckInitialized(e),e.identity.getID()}}X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U]),Z("design:returntype",Promise)],kt.prototype,"TokenName",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U]),Z("design:returntype",Promise)],kt.prototype,"Symbol",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U]),Z("design:returntype",Promise)],kt.prototype,"Decimals",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U]),Z("design:returntype",Promise)],kt.prototype,"TotalSupply",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U,String]),Z("design:returntype",Promise)],kt.prototype,"BalanceOf",null),X([M(),Z("design:type",Function),Z("design:paramtypes",[U,String,Number]),Z("design:returntype",Promise)],kt.prototype,"Transfer",null),X([M(),Z("design:type",Function),Z("design:paramtypes",[U,String,String,Number]),Z("design:returntype",Promise)],kt.prototype,"TransferFrom",null),X([M(),Z("design:type",Function),Z("design:paramtypes",[U,String,Number]),Z("design:returntype",Promise)],kt.prototype,"Approve",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U,String,String]),Z("design:returntype",Promise)],kt.prototype,"Allowance",null),X([M(),Z("design:type",Function),Z("design:paramtypes",[U,St]),Z("design:returntype",Promise)],kt.prototype,"Initialize",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U]),Z("design:returntype",Promise)],kt.prototype,"CheckInitialized",null),X([Ct(),M(),Z("design:type",Function),Z("design:paramtypes",[U,Number]),Z("design:returntype",Promise)],kt.prototype,"Mint",null),X([Ct(),M(),Z("design:type",Function),Z("design:paramtypes",[U,Number]),Z("design:returntype",Promise)],kt.prototype,"Burn",null),X([Ct(),M(),Z("design:type",Function),Z("design:paramtypes",[U,String,Number]),Z("design:returntype",Promise)],kt.prototype,"BurnFrom",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U]),Z("design:returntype",Promise)],kt.prototype,"ClientAccountBalance",null),X([M(!1),Z("design:type",Function),Z("design:paramtypes",[U]),Z("design:returntype",Promise)],kt.prototype,"ClientAccountID",null);const Nt=[kt],Rt="##VERSION##",zt="##PACKAGE##";H.registerLibrary(zt,Rt);export{lt as ContractLogger,dt as FabricContractAdapter,tt as FabricContractContext,it as FabricContractRepository,et as FabricContractRepositoryObservableHandler,pt as FabricCrudContract,rt as FabricStatement,zt as PACKAGE_NAME,ht as SerializedCrudContract,Rt as VERSION,Nt as contracts,ct as createdByOnFabricCreateUpdate,ut as pkFabricOnCreate};
1
+ import{CouchDBStatement as t,CouchDBKeys as e,CouchDBGroupOperator as i,CouchDBOperator as r,CouchDBAdapter as n}from"@decaf-ts/for-couchdb";import{Model as s,JSONSerializer as a,required as o,model as c}from"@decaf-ts/decorator-validation";import{Context as l,ObserverHandler as u,Adapter as p,Repository as g,QueryError as d,PersistenceKeys as h,Condition as y,Sequence as w,SequenceModel as f,UUID as m,Serial as x,UnsupportedError as b,PagingError as S,MigrationError as v,ObserverError as A,AuthorizationError as C,ForbiddenError as k,ConnectionError as O,OrderDirection as R,pk as N,column as $,table as E,BaseModel as z}from"@decaf-ts/core";import{OperationKeys as P,BulkCrudOperationKeys as T,InternalError as B,enforceDBDecorators as D,reduceErrorsToPrint as I,ValidationError as F,BaseError as J,DBKeys as q,NotFoundError as j,ConflictError as L,SerializationError as _,BadRequestError as U,onCreate as M,onCreateUpdate as V}from"@decaf-ts/db-decorators";import{Property as H,Object as Q,Contract as K,Context as Y,Transaction as G}from"fabric-contract-api";import{Metadata as W,Decoration as X,propMetadata as Z}from"@decaf-ts/decoration";import{Logging as tt,MiniLogger as et,NumericLogLevels as it,LogLevel as rt}from"@decaf-ts/logging";import{__decorate as nt,__metadata as st}from"tslib";class at extends l{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 ot extends u{constructor(t=[P.CREATE,P.UPDATE,P.DELETE,T.CREATE_ALL,T.UPDATE_ALL,T.DELETE_ALL]){super(),this.supportedEvents=t}async updateObservers(t,e,i,...r){const{log:n,ctx:s}=p.logCtx(r,this.updateObservers),{stub:a}=s,[o,c]=r,l="string"==typeof t?t:t.name;if(-1!==this.supportedEvents.indexOf(e)){n.debug(`Emitting ${e} event`);const t=((t,e,i)=>{const r=[t,e];return i&&r.push(i),r.join("_")})(l,e,o);a.setEvent(t,Buffer.from(JSON.stringify({id:i})))}else a.setEvent(e,Buffer.from(JSON.stringify(c)))}}class ct extends g{constructor(t,e,i){super(t,e),this.trackedEvents=i,this._overrides=Object.assign({},super._overrides,{ignoreValidation:!1,ignoreHandlers:!1,allowRawStatements:!0,forcePrepareSimpleQueries:!1,forcePrepareComplexQueries:!1})}async createAllPrefix(t,...e){const i=await l.args(P.CREATE,this.class,e,this.adapter,this._overrides||{}),r=i.context.get("ignoreHandlers"),n=i.context.get("ignoreValidation");if(!t.length)return[t,...i.args];const a=s.sequenceFor(t[0]);let o=[];if(a.type?(a.name||(a.name=s.sequenceName(t[0],"pk")),o=await(await this.adapter.Sequence(a)).range(t.length,...i.args)):o=t.map(((t,e)=>{if(void 0===t[this.pk])throw new B("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),a.type&&(t[this.pk]="String"!==a.type||a.generated?o[e]:""+t[this.pk]),r||await D(this,i.context,t,P.CREATE,P.ON),t)))),!n){const e=i.context.get("ignoredValidationProperties")||[],r=await Promise.all(t.map((t=>Promise.resolve(t.hasErrors(...e))))),n=I(r);if(n)throw new F(n)}return[t,...i.args]}async statement(t,...e){if(!g.statements(this,t))throw new d("Invalid prepared statement requested "+t);const i=await l.args(h.STATEMENT,this.class,e,this.adapter,this._overrides||{});i.context.logger&&i.context.logger.info(`Repo statement: ${t} + ${e}`);const{log:r,ctxArgs:n}=this.logCtx(i.args,this.statement);r.verbose(`Executing prepared statement ${t} with args ${n}`);try{return this[t](...n)}catch(e){if(e instanceof J)throw e;throw new B(`Failed to execute prepared statement ${t} with args ${n}: ${e}`)}}ObserverHandler(){return new ot}async updateObservers(t,e,i,...r){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(e))return await super.updateObservers(t,e,i,...r)}}class lt extends t{constructor(t){super(t)}async raw(t,...e){const{ctx:i}=this.logCtx(e,this.raw),r=await this.adapter.raw(t,!0,i),n=s.pk(this.fromSelector),a=W.get(this.fromSelector,W.key(q.ID,n))?.type;return this.selectSelector?r:r.map((t=>this.processRecord(t,n,a,i)))}build(){const t={};t[e.TABLE]={},t[e.TABLE]=s.tableName(this.fromSelector);const n={selector:t};if(this.selectSelector&&(n.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(y.and(this.whereCondition,y.attribute(e.TABLE).eq(n.selector[e.TABLE]))).selector,r=Object.keys(t);if(1===r.length&&-1!==Object.values(i).indexOf(r[0]))switch(r[0]){case i.AND:t[i.AND]=[...Object.values(t[i.AND]).reduce(((t,e)=>{const r=Object.keys(e);if(1!==r.length)throw Error("Too many keys in query selector. should be one");const n=r[0];return n===i.AND?t.push(...e[n]):t.push(e),t}),[])],n.selector=t;break;case i.OR:{const e={};e[i.AND]=[t,...Object.entries(n.selector).map((([t,e])=>{const i={};return i[t]=e,i}))],n.selector=e;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,e]=this.orderBySelector,i={};i[t]=e,n.sort.push(i),n.selector[t]||(n.selector[t]={},n.selector[t][r.BIGGER]=null)}return this.limitSelector&&(n.limit=this.limitSelector),this.offsetSelector&&(n.skip=this.offsetSelector),n}}var ut,pt;(t=>{t.PRIVATE="private",t.SHARED="shared",t.FABRIC="fabric.",t.OWNEDBY="owned-by"})(ut||(ut={})),(t=>{t.X509="X.509"})(pt||(pt={}));const gt="hlf-fabric";class dt extends a{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 ht extends et{constructor(t,e,i){super(t,e),this.logger=i?i.logging.getLogger(t):new et(t,e)}log(t,e,i){if(it[this.config("level")]<it[t])return;let r;switch(t){case rt.info:r=this.logger.info;break;case rt.verbose:r=this.logger.verbose;break;case rt.debug:r=this.logger.debug;break;case rt.error:r=this.logger.error;break;case rt.silly:r=this.logger.silly;break;default:throw new B("Invalid log level")}r.call(this.logger,this.createLog(t,e,i))}}tt.setFactory(((t,e,i)=>new ht(t||ht.name,e||{},i)));class yt extends w{constructor(t,e){super(t,e)}async current(...t){const e=(await l.args(P.READ,f,t,this.adapter)).context,{name:i,startWith:r}=this.options;try{const t=await this.repo.read(i,e);return this.parse(t.current)}catch(t){if(t instanceof j){if(void 0===r)throw new B("Starting value is not defined for a non existing sequence");try{return this.parse(r)}catch(t){throw new B(`Failed to parse initial value for sequence ${r}: ${t}`)}}throw new B(`Failed to retrieve current value for sequence ${i}: ${t}`)}}async increment(t,e,i){const{type:r,incrementBy:n,name:s}=this.options;let a;const o=e||n;if(o%n!=0)throw new B("Value to increment does not consider the incrementBy setting: "+n);switch("function"==typeof r&&r?.name?r.name:r){case Number.name:a=this.parse(t)+o;break;case BigInt.name:a=this.parse(t)+BigInt(o);break;case String.name:a=this.parse(t);break;case"serial":a=x.instance.generate(t);break;case"uuid":a=m.instance.generate(t);break;default:throw new B("Should never happen")}let c;try{c=await this.repo.update(new f({id:s,current:a}),i)}catch(n){if(!(n instanceof j))throw n;try{c=await this.repo.create(new f({id:s,current:a}),i)}catch(n){if(!(n instanceof L)||"uuid"!==r)throw n;return this.increment(t,e,i)}}return c.current}async next(...t){const e=await l.args(P.UPDATE,f,t,this.adapter),{context:i,args:r}=e,n=await this.current(...r);return this.increment(n,void 0,i)}async range(t,...e){const i=await l.args(P.UPDATE,f,e,this.adapter),{context:r,args:n}=i,s=await this.current(...n),a=this.parse(this.options.incrementBy),o=await this.increment(s,this.parse(t)*a,r),c=[];for(let e=1;t>=e;e++)c.push(s+a*this.parse(e));if("uuid"===this.options.type||"serial"===this.options.type)throw new b(`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(c[c.length-1]!==o&&"String"!==u)throw new B("Miscalculation of range");return c}}async function wt(t,e,i,r){try{const e=t.get("identity");r[i]=e.getID()}catch(t){throw new b("No User found in context. Please provide a user in the context")}}async function ft(t,e,i,r){if(!e.type||r[i])return;let n;e.name||(e.name=s.sequenceName(r,"pk"));try{n=await this.adapter.Sequence(e)}catch(t){throw new B(`Failed to instantiate Sequence ${e.name}: ${t}`)}const a=await n.next(t);Object.defineProperty(r,i,{enumerable:!0,writable:!1,configurable:!0,value:a})}class mt extends n{getClient(){throw new b("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new dt}repository(){return ct}async Sequence(t){return new yt(t,this)}constructor(t,e){super(t,gt,e),this.Context=at}for(t,...e){return super.for(t,...e)}async create(t,e,i,...r){const{ctx:n,log:a,stub:o}=this.logCtx(r,this.create);a.info("in ADAPTER create with args "+r);const c=s.tableName(t);try{a.info(`adding entry to ${c} table with pk ${e}`);const t=o.createCompositeKey(c,[e+""]);i=await this.putState(t,i,n)}catch(t){throw this.parseError(t)}return i}async read(t,e,...i){const{ctx:r,log:n,stub:a}=this.logCtx(i,this.read);n.info("in ADAPTER read with args "+i);const o=s.tableName(t);let c;try{const t=a.createCompositeKey(o,[e+""]);c=await this.readState(t,r)}catch(t){throw this.parseError(t)}return c}async update(t,e,i,...r){const{ctx:n,log:a,stub:o}=this.logCtx(r,this.update),c=s.tableName(t);try{a.verbose(`updating entry to ${c} table with pk ${e}`);const t=o.createCompositeKey(c,[e+""]);i=await this.putState(t,i,n)}catch(t){throw this.parseError(t)}return i}async delete(t,e,...i){const{ctx:r,log:n,ctxArgs:a,stub:o}=this.logCtx(i,this.delete),c=s.tableName(t);let l;try{const i=o.createCompositeKey(c,[e+""]);l=await this.read(t,e,...a),n.verbose(`deleting entry with pk ${e} from ${c} table`),await this.deleteState(i,r)}catch(t){throw this.parseError(t)}return l}async deleteState(t,e){const{stub:i}=this.logCtx([e],this.deleteState);await i.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:(i,r,n)=>e.includes(r)?new Proxy(i[r],{async apply(e,i,n){switch(r){case"putState":{const[e,i,r]=n;return await e.putPrivateData(t,i.toString(),r),r}case"deleteState":{const[e,i]=n;return e.deletePrivateData(t,i)}case"readState":{const[e,i]=n;return e.getPrivateData(t,i)}case"queryResult":{const[e,i]=n;return e.getPrivateDataQueryResult(t,i)}case"queryResultPaginated":{const[e,i,r,s]=n,a=await e.getPrivateDataQueryResult(t,i),o=[];let c=0,l=!s,u=null;for(;;){const t=await a.next();if(t.value&&t.value.value.toString()){const e=t.value.key,i=t.value.value.toString("utf8");if(!l){e===s?.toString()&&(l=!0);continue}if(o.push({Key:e,Record:JSON.parse(i)}),u=e,c++,c>=r)return await a.close(),{iterator:o,metadata:{fetchedRecordsCount:o.length,bookmark:u}}}if(t.done)return await a.close(),{iterator:o,metadata:{fetchedRecordsCount:o.length,bookmark:""}}}}default:throw new B("Unsupported method override "+r)}}}):Reflect.get(i,r,n)})}async putState(t,e,i){let r;const{stub:n,log:s}=this.logCtx([i],this.putState);try{r=Buffer.from(mt.serializer.serialize(e))}catch(e){throw new _(`Failed to serialize record with id ${t}: ${e}`)}const a=i.get("segregated");return a?await n.putPrivateData(a,t.toString(),r):await n.putState(t.toString(),r),s.silly(`state stored${a?` in ${a} collection`:""} under id ${t}`),e}async readState(t,e){let i;const{stub:r,log:n}=this.logCtx([e],this.readState);let s;const a=e.get("segregated");if(s=a?(await r.getPrivateData(a,t.toString())).toString():(await r.getState(t.toString())).toString(),!s)throw new j(`Record with id ${t}${a?` in ${a} collection`:""} not found`);n.silly(`state retrieved from${a?` ${a} collection`:""} under id ${t}`);try{i=mt.serializer.deserialize(s.toString())}catch(t){throw new _("Failed to parse record: "+t)}return i}async queryResult(t,e,...i){const{ctx:r}=this.logCtx(i,this.readState);let n;const s=r.get("segregated");return n=s?await t.getPrivateDataQueryResult(s,JSON.stringify(e)):await t.getQueryResult(JSON.stringify(e)),n}async queryResultPaginated(t,e,i=250,r,...n){const{ctx:s}=this.logCtx(n,this.readState);let a;const o=s.get("segregated");return o?(e.selector={...e.selector,_id:r?{$gt:r.toString()}:{$gte:""}},a={iterator:await t.getPrivateDataQueryResult(o,JSON.stringify(e)),metadata:{fetchedRecordsCount:i,bookmark:""}}):a=await t.getQueryResultWithPagination(JSON.stringify(e),i,r?.toString()),a}mergeModels(t){const e=t=>Object.entries(t).reduce(((t,[e,i])=>(void 0!==i&&(t[e]=i),t)),{});let i=t.pop();for(const r of t)i=Object.assign({},e(i),e(r));return i}decode(t){return mt.textDecoder.decode(t)}async flags(t,e,i,r,...n){const s={stub:r.stub,segregated:!1};return Object.assign(s,r instanceof at?{logger:r.logger,identity:r.identity,correlationId:r.stub.getTxID()}:{identity:r.clientIdentity,logger:new ht(this,void 0,r),correlationId:r.stub.getTxID()}),await super.flags(t,e,s,...n)}index(t){return Promise.resolve(void 0)}async resultIterator(t,e,i=!1){const r=[];let n=await e.next();for(;!n.done;){if(n.value&&n.value.value.toString()){let e={};if(t.debug(n.value.value.toString("utf8")),i){e.TxId=n.value.txId,e.Timestamp=n.value.timestamp;try{e.Value=JSON.parse(n.value.value.toString("utf8"))}catch(i){t.error(i),e.Value=n.value.value.toString("utf8")}}else try{e=JSON.parse(n.value.value.toString("utf8"))}catch(i){t.error(i),e=n.value.value.toString("utf8")}r.push(e)}n=await e.next()}return t.debug(`Closing iterator after ${r.length} results`),e.close(),r}async raw(t,e=!0,...i){const{log:r,stub:n,ctx:s}=this.logCtx(i,this.raw),{skip:a,limit:o}=t;let c;o||a?(delete t.limit,delete t.skip,r.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${a}`),c=(await this.queryResultPaginated(n,t,o||250,a?.toString(),s)).iterator):(r.debug("Retrieving iterator"),c=await this.queryResult(n,t,s)),r.debug("Iterator acquired");const l=await this.resultIterator(r,c);return r.debug(`returning ${Array.isArray(l)?l.length:1} results`),l}Statement(){return new lt(this)}async createAll(t,e,i,...r){if(e.length!==i.length)throw new B("Ids and models must have the same length");const{log:n,ctxArgs:a}=this.logCtx(r,this.createAll),o=s.tableName(t);return n.debug(`Creating ${e.length} entries ${o} table`),Promise.all(e.map(((e,r)=>this.create(t,e,i[r],...a))))}async updateAll(t,e,i,...r){if(e.length!==i.length)throw new B("Ids and models must have the same length");const{log:n,ctxArgs:a}=this.logCtx(r,this.updateAll),o=s.tableName(t);return n.debug(`Updating ${e.length} entries ${o} table`),Promise.all(e.map(((e,r)=>this.update(t,e,i[r],...a))))}prepare(t,...e){const{log:i}=this.logCtx(e,this.prepare),r=s.tableName(t.constructor),n=s.pk(t.constructor),a=s.segregate(t),o=Object.entries(a.model).reduce(((e,[i,r])=>{if(void 0===r)return e;const n=s.columnName(t,i);if(this.isReserved(n))throw new B(`Property name ${n} is reserved`);return e[n]=r,e}),{});return i.silly(`Preparing record for ${r} table with pk ${t[n]}`),{record:o,id:t[n],transient:a.transient}}revert(t,e,i,r,...n){const{log:a}=this.logCtx(n,this.revert),o={};o[s.pk(e)]=i;const c="string"==typeof e?s.build(o,e):new e(o);a.silly(`Rebuilding model ${c.constructor.name} id ${i}`);const l=Object.keys(c).reduce(((e,i)=>(e[i]=t[s.columnName(e,i)],e)),c);return r&&(a.debug("re-adding transient properties: "+Object.keys(r).join(", ")),Object.entries(r).forEach((([t,e])=>{if(t in l&&void 0!==l[t])throw new B(`Transient property ${t} already exists on model ${c.constructor.name}. should be impossible`);l[t]=e}))),l}createPrefix(t,i,r,...n){const{ctxArgs:a}=this.logCtx(n,this.createPrefix),o={};return o[e.TABLE]=s.tableName(t),Object.assign(o,r),[t,i,o,...a]}updatePrefix(t,i,r,...n){const{ctxArgs:a}=this.logCtx(n,this.updatePrefix),o={};return o[e.TABLE]=s.tableName(t),Object.assign(o,r),[t,i,o,...a]}createAllPrefix(t,i,r,...n){if(i.length!==r.length)throw new B("Ids and models must have the same length");const s=n.pop(),a=i.map(((i,n)=>{const s={};return s[e.TABLE]=t,Object.assign(s,r[n]),s}));return[t,i,a,s]}updateAllPrefix(t,i,r,...n){if(i.length!==r.length)throw new B("Ids and models must have the same length");const s=n.pop(),a=i.map(((i,n)=>{const s={};return s[e.TABLE]=t,Object.assign(s,r[n]),s}));return[t,i,a,s]}parseError(t,e){return mt.parseError(e||t)}logCtx(t,e){return mt.logCtx.call(this,t,e)}static logCtx(t,e){if(1>t.length)throw new B("No context provided");const i=t.pop();if(!(i instanceof l))throw new B("No context provided");if(t.filter((t=>t instanceof l)).length>1)throw Error("here");const r=this?i.logger.for(this).for(e):i.logger.clear().for(this).for(e);return{ctx:i,log:e?r.for(e):r,stub:i.stub,identity:i.identity,ctxArgs:[...t,i]}}static parseError(t){const e="string"==typeof t?t:t.message;return e.includes(j.name)?new j(t):e.includes(L.name)?new L(t):e.includes(U.name)?new U(t):e.includes(d.name)?new d(t):e.includes(S.name)?new S(t):e.includes(b.name)?new b(t):e.includes(v.name)?new v(t):e.includes(A.name)?new A(t):e.includes(C.name)?new C(t):e.includes(k.name)?new k(t):e.includes(O.name)?new O(t):e.includes(_.name)?new _(t):new B(t)}static decoration(){super.decoration(),X.flavouredAs(gt).for(h.CREATED_BY).define(M(wt),Z(h.CREATED_BY,{})).apply(),X.flavouredAs(gt).for(h.UPDATED_BY).define(V(wt),Z(h.UPDATED_BY,{})).apply(),X.flavouredAs(gt).for(h.COLUMN).extend(H()).apply(),X.flavouredAs(gt).for(h.TABLE).extend((t=>Q()(t))).apply()}}mt.decoration(),p.setCurrent(gt);class xt extends a{constructor(){super()}deserialize(t){return super.deserialize(t)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}class bt extends K{static{this.adapter=new mt}static{this.serializer=new xt}constructor(t,e){super(t),this.clazz=e,this.initialized=!1,this.repo=g.forModel(e)}async listBy(t,e,i,...r){const{ctxArgs:n,log:s}=await this.logCtx([...r,t],this.listBy);return s.info(`Running listBy key ${e}, order ${i} and args ${n}`),this.repo.listBy(e,i,...n)}async paginateBy(t,e,i,r,...n){const{ctxArgs:s,log:a}=await this.logCtx([...n,t],this.paginateBy);return a.info(`Running paginateBy key ${e}, order ${i} with size ${r} and args ${s}`),this.repo.paginateBy(e,i,r,...s)}async findOneBy(t,e,i,...r){const{ctxArgs:n,log:s}=await this.logCtx([...r,t],this.findOneBy);return s.info(`Running findOneBy key ${e}, value: ${i} with args ${n}`),this.repo.findOneBy(e,i,...n)}async statement(t,e,...i){const{ctxArgs:r,log:n}=await this.logCtx([...i,t],this.statement);return n.info(`Running statement ${e} with args ${r}`),this.repo.statement(e,...r)}async create(t,e,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.create);r.info("CONTRACT CREATE, "+n),"string"==typeof e&&(e=this.deserialize(e)),r.info("Creating model: "+JSON.stringify(e));const a=this.getTransientData(t);return r.info("Merging transient data..."),e=s.merge(e,a,this.clazz),this.repo.create(e,...n)}async read(t,e,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.read);return r.info(`reading entry with pk ${e} `),this.repo.read(e,...n)}getTransientData(t){const e=t.stub.getTransient();let i={};return e.has(this.repo.tableName)&&(i=JSON.parse(e.get(this.repo.tableName)?.toString("utf8"))),i}async update(t,e,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.update);"string"==typeof e&&(e=this.deserialize(e)),r.info("Updating model: "+JSON.stringify(e));const a=this.getTransientData(t);return r.info("Merging transient data..."),e=s.merge(e,a,this.clazz),this.repo.update(e,...n)}async delete(t,e,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.delete);return r.info(`deleting entry with pk ${e} `),this.repo.delete(e+"",...n)}async deleteAll(t,e,...i){const{ctxArgs:r}=await this.logCtx([...i,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.deleteAll(e,...r)}async readAll(t,e,...i){const{ctxArgs:r}=await this.logCtx([...i,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.readAll(e,...r)}async updateAll(t,e,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.updateAll);return"string"==typeof e&&(e=JSON.parse(e).map((t=>this.deserialize(t))).map((t=>new this.clazz(t)))),r.info(`updating ${e.length} entries to the table`),this.repo.updateAll(e,...n)}async query(t,e,i,r=R.ASC,n,s,...a){const{ctxArgs:o}=await this.logCtx([...a,t],this.query);return this.repo.query(e,i,r,n,s,...o)}async raw(t,e,i,...r){const{ctxArgs:n}=await this.logCtx([...r,t],this.raw);return bt.adapter.raw(e,i,...n)}serialize(t){return bt.serializer.serialize(t)}deserialize(t){return bt.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,...i){const{log:r,ctxArgs:n}=await this.logCtx([...i,t],this.createAll);return"string"==typeof e&&(e=JSON.parse(e).map((t=>this.deserialize(t))).map((t=>new this.clazz(t)))),r.info(`adding ${e.length} entries to the table`),this.repo.createAll(e,...n)}async logCtx(t,e){return bt.logCtx.bind(this)(t,e)}static async logCtx(t,e){if(1>t.length)throw new B("No context provided");const i=t.pop();if(i instanceof at)return{ctx:i,log:i.logger.clear().for(this).for(e),ctxArgs:[...t,i],stub:i.stub,identity:i.identity};if(!(i instanceof Y))throw new B("No valid context provided");const r={correlationId:i.stub.getTxID()},n=await bt.adapter.context((()=>{if("string"==typeof e)return e;switch(e.name){case P.CREATE:case P.READ:case P.UPDATE:case P.DELETE:case T.CREATE_ALL:case T.READ_ALL:case T.UPDATE_ALL:case T.DELETE_ALL:}return e.name})(),r,this.clazz,i),s=this?n.logger.for(this).for(e):n.logger.clear().for(this).for(e);return{ctx:n,log:s,stub:n.stub,identity:n.identity,ctxArgs:[...t,n]}}}class St extends bt{constructor(t,e){super(t,e)}async create(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.create);i.info("Creating model: "+e);const n=this.deserialize(e);return i.info("Model deserialized: "+JSON.stringify(n)),this.serialize(await super.create(r,n))}async read(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.read);return i.info("Reading id: "+e),this.serialize(await super.read(r,e))}async update(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.update);return i.info("Updating model: "+e),this.serialize(await super.update(r,e))}async delete(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.delete);return i.info("Deleting id: "+e),this.serialize(await super.delete(r,e))}async deleteAll(t,e){const i=JSON.parse(e),{log:r,ctx:n}=await this.logCtx([t],this.deleteAll);return r.info(`deleting ${i.length} entries from the table`),JSON.stringify((await super.deleteAll(n,i)).map((t=>this.serialize(t))))}async readAll(t,e){const i=JSON.parse(e),{log:r,ctx:n}=await this.logCtx([t],this.readAll);return r.info(`reading ${i.length} entries from the table`),JSON.stringify((await super.readAll(n,i)).map((t=>this.serialize(t))))}async updateAll(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.updateAll),n=JSON.parse(e).map((t=>this.deserialize(t))).map((t=>new this.clazz(t)));return i.info(`Updating ${n.length} entries to the table`),JSON.stringify((await super.updateAll(r,n)).map((t=>this.serialize(t))))}async statement(t,e,i){const{ctx:r,log:n}=await this.logCtx([t],this.statement);try{i=JSON.parse(i)}catch(t){throw new _("Invalid args: "+t)}if(!Array.isArray(i))throw new _(`Invalid args: ${JSON.stringify(i)}. must be an array`);return n.info("calling prepared statement "+e),n.info("with args "+i),JSON.stringify(await super.statement(r,e,...i))}async listBy(t,e,i){const{ctx:r,log:n}=await this.logCtx([t],this.listBy);return n.info(`Executing listBy with key ${e} and order ${i}`),JSON.stringify(await super.listBy(r,e,i))}async paginateBy(t,e,i,r){const{ctx:n,log:s}=await this.logCtx([t],this.paginateBy);return s.info(`Executing paginateBy with key ${e} and order ${i}`),JSON.stringify(await super.paginateBy(n,e,i,r))}async findOneBy(t,e,i,...r){const{ctx:n,log:s}=await this.logCtx([...r,t],this.findOneBy);return s.info(`Executing findOneBy with key ${e} and value ${i}`),JSON.stringify(await super.findOneBy(n,e,i,...r))}async query(t,e,i,r,n,s){const{ctx:a,log:o}=await this.logCtx([t],this.query);let c;o.info(`Executing query orderedBy ${i} and order ${r}`);try{c=y.from(JSON.parse(e))}catch(t){throw new _("Invalid condition: "+t)}return o.info("Condition: "+JSON.stringify(c)),JSON.stringify(await super.query(a,c,i,r,n,s))}async init(t){await super.init(t)}async healthcheck(t){const{log:e,ctx:i}=await this.logCtx([t],this.updateAll);return e.debug(`Running Healthcheck: ${this.initialized}...`),JSON.stringify(await super.healthcheck(i))}async createAll(t,e){const{log:i}=await this.logCtx([t],this.createAll),r=JSON.parse(e).map((t=>this.deserialize(t))).map((t=>new this.clazz(t)));return i.info(`Adding ${r.length} entries to the table`),JSON.stringify((await super.createAll(t,r)).map((t=>this.serialize(t))))}}nt([G(),st("design:type",Function),st("design:paramtypes",[Y,String]),st("design:returntype",Promise)],St.prototype,"create",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y,String]),st("design:returntype",Promise)],St.prototype,"read",null),nt([G(),st("design:type",Function),st("design:paramtypes",[Y,String]),st("design:returntype",Promise)],St.prototype,"update",null),nt([G(),st("design:type",Function),st("design:paramtypes",[Y,String]),st("design:returntype",Promise)],St.prototype,"delete",null),nt([G(),st("design:type",Function),st("design:paramtypes",[Y,String]),st("design:returntype",Promise)],St.prototype,"deleteAll",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y,String]),st("design:returntype",Promise)],St.prototype,"readAll",null),nt([G(),st("design:type",Function),st("design:paramtypes",[Y,String]),st("design:returntype",Promise)],St.prototype,"updateAll",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y,String,String]),st("design:returntype",Promise)],St.prototype,"statement",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y,String,String]),st("design:returntype",Promise)],St.prototype,"listBy",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y,String,String,Number]),st("design:returntype",Promise)],St.prototype,"paginateBy",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y,String,String,String]),st("design:returntype",Promise)],St.prototype,"findOneBy",null),nt([G(),st("design:type",Function),st("design:paramtypes",[Y]),st("design:returntype",Promise)],St.prototype,"init",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y]),st("design:returntype",Promise)],St.prototype,"healthcheck",null),nt([G(),st("design:type",Function),st("design:paramtypes",[Y,String]),st("design:returntype",Promise)],St.prototype,"createAll",null);class vt extends B{constructor(t){super(t,vt.name)}}class At extends B{constructor(t){super(t,At.name)}}class Ct extends B{constructor(t){super(t,Ct.name)}}class kt extends J{constructor(t){super(kt.name,t,409)}}function Ot(t,e){const i=t+e;if(t!==i-e||e!==i-t)throw new vt(`Addition overflow: ${t} + ${e}`);return i}function Rt(t,e){const i=t-e;if(t!==i+e||e!==t-i)throw new vt(`Subtraction overflow: ${t} - ${e}`);return i}let Nt=class extends z{constructor(t){super(t)}};nt([N({type:"String"}),st("design:type",String)],Nt.prototype,"name",void 0),nt([$(),o(),st("design:type",String)],Nt.prototype,"owner",void 0),nt([$(),o(),st("design:type",String)],Nt.prototype,"symbol",void 0),nt([$(),o(),st("design:type",Number)],Nt.prototype,"decimals",void 0),Nt=nt([E("erc20_tokens"),c(),st("design:paramtypes",[Object])],Nt);let $t=class extends z{constructor(t){super(t)}};nt([N({type:"String"}),st("design:type",String)],$t.prototype,"id",void 0),nt([$(),o(),st("design:type",String)],$t.prototype,"token",void 0),nt([$(),o(),st("design:type",Number)],$t.prototype,"balance",void 0),nt([$(),st("design:type",String)],$t.prototype,"captive",void 0),$t=nt([E("erc20_wallets"),c(),st("design:paramtypes",[Object])],$t);let Et=class extends z{constructor(t){super(t)}};function zt(){return function(t,e,i){const r=i.value;return i.value=async function(...t){const i=t[0],n=i.clientIdentity.getID(),s=await this.tokenRepository.select(),a=await s.execute(i);if(0==a.length)throw new j("No tokens avaialble");if(a.length>1)throw new j("To many token available : "+a.length);if(a[0].owner!=n)throw new C(`User not authorized to run ${e} on the token`);return await r.apply(this,t)},i}}var Pt;nt([N({type:"String"}),$(),o(),st("design:type",String)],Et.prototype,"owner",void 0),nt([$(),o(),st("design:type",String)],Et.prototype,"spender",void 0),nt([$(),o(),st("design:type",Number)],Et.prototype,"value",void 0),Et=nt([E("erc20_allowances"),c(),st("design:paramtypes",[Object])],Et),(t=>{t.TRANSFER="Transfer",t.APPROVAL="Approval"})(Pt||(Pt={}));class Tt extends bt{constructor(t){super(t,$t),Tt.adapter=Tt.adapter||new mt,this.walletRepository=ct.forModel($t,Tt.adapter.alias),this.tokenRepository=ct.forModel(Nt,Tt.adapter.alias),this.allowanceRepository=ct.forModel(Et,Tt.adapter.alias)}async TokenName(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].name}async Symbol(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].symbol}async Decimals(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.tokenRepository.select();return(await i.execute(e))[0].decimals}async TotalSupply(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=this.walletRepository.select(),r=await i.execute(e);if(0==r.length)throw new j(`The token ${this.getName()} does not exist`);let n=0;return r.forEach((t=>{n+=t.balance})),n}async BalanceOf(t,e){const{ctx:i}=await this.logCtx([t],this.TokenName);return await this.CheckInitialized(i),(await this.walletRepository.read(e,i)).balance}async Transfer(t,e,i){const{ctx:r}=await this.logCtx([t],this.Transfer);await this.CheckInitialized(r);const n=r.identity.getID();if(!await this._transfer(n,e,i,r))throw new B("Failed to transfer");return!0}async TransferFrom(t,e,i,r){const{ctx:n}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(n);const s=n.identity.getID(),a=await this._getAllowance(e,s,n);if(!a||0>a.value)throw new Ct(`spender ${s} has no allowance from ${e}`);const o=a.value;if(r>o)throw new At("The spender does not have enough allowance to spend.");const c=Rt(o,r),l=Object.assign({},a,{value:c});if(await this.allowanceRepository.update(l,n),!await this._transfer(e,i,r,n))throw new B("Failed to transfer");return!0}async _transfer(t,e,i,r){const n=r.logger;if(t===e)throw new C("cannot transfer to and from same client account");if(0>i)throw new At("transfer amount cannot be negative");const s=await this.walletRepository.read(t,r),a=s.balance;if(i>a)throw new At(`client account ${t} has insufficient funds.`);let o,c=!1;try{o=await this.walletRepository.read(e,r)}catch(t){if(!(t instanceof J))throw new B(t);if(404!==t.code)throw new B(t.message);o=new $t({id:e,balance:0,token:await this.TokenName(r)}),c=!0}const l=o.balance,u=Rt(a,i),p=Ot(l,i),g=Object.assign({},s,{balance:u});await this.walletRepository.update(g,r);const d=Object.assign({},o,{balance:p});c?await this.walletRepository.create(d,r):await this.walletRepository.update(d,r);const h={from:t,to:e,value:i};return this.repo.refresh(Nt,Pt.TRANSFER,"",h,r).catch((t=>n.error("Failed to notify transfer: "+t))),!0}async Approve(t,e,i){const{ctx:r,ctxArgs:n}=await this.logCtx([t],this.Approve);await this.CheckInitialized(r);const s=r.identity.getID();let a=await this._getAllowance(s,e,r);if((await this.walletRepository.read(s,...n)).balance<i)throw new At(`client account ${s} has insufficient funds.`);a?(a.value=i,await this.allowanceRepository.update(a,...n)):(a=new Et({owner:s,spender:e,value:i}),await this.allowanceRepository.create(a,...n));const o={owner:s,spender:e,value:i};return this.repo.refresh(Nt,Pt.APPROVAL,"",o,r),!0}async Allowance(t,e,i){const{ctx:r}=await this.logCtx([t],this.Allowance);await this.CheckInitialized(r);const n=await this._getAllowance(e,i,r);if(!n)throw new Ct(`spender ${i} has no allowance from ${e}`);return n.value}async _getAllowance(t,e,i){const r=y.and(y.attribute("owner").eq(t),y.attribute("spender").eq(e)),n=await this.allowanceRepository.select().where(r).execute(i);return n?.[0]}async Initialize(t,e){const{ctx:i}=await this.logCtx([t],this.Initialize);if((await this.tokenRepository.select().execute(i)).length>0)throw new C("contract options are already set, client is not authorized to change them");return e.owner=i.identity.getID(),await this.tokenRepository.create(e,i),!0}async CheckInitialized(t){const{ctx:e}=await this.logCtx([t],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(e)).length)throw new kt("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(t,e){const{ctx:i}=await this.logCtx([t],this.Mint);await this.CheckInitialized(i);const r=i.identity.getID();if(0>=e)throw new F("mint amount must be a positive integer");let n;try{n=await this.walletRepository.read(r,i);const t=Ot(n.balance,e),s=Object.assign({},n,{balance:t});await this.walletRepository.update(s,i)}catch(n){if(!(n instanceof J))throw new B(n);if(404!==n.code)throw new B(n.message);{const n=new $t({id:r,balance:e,token:await this.TokenName(t)});await this.walletRepository.create(n,i)}}const s={from:"0x0",to:r,value:e};this.repo.ObserverHandler().updateObservers(Nt,Pt.TRANSFER,"",s,i)}async Burn(t,e){const{log:i,ctx:r}=await this.logCtx([t],this.Burn);await this.CheckInitialized(r);const n=r.identity.getID(),s=await this.walletRepository.read(n,r),a=s.balance;if(e>a)throw new At("Minter has insufficient funds.");const o=Rt(a,e),c=Object.assign({},s,{balance:o});await this.walletRepository.update(c,r),i.info(e+" tokens were burned");const l={from:n,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(Nt,Pt.TRANSFER,"",l,r)}async BurnFrom(t,e,i){const{log:r,ctx:n}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(n);const s=await this.walletRepository.read(e,n),a=s.balance;if(i>a)throw new At(e+" has insufficient funds.");const o=Rt(a,i),c=Object.assign({},s,{balance:o});await this.walletRepository.update(c,n),r.info(`${i} tokens were burned from ${e}`);const l={from:e,to:"0x0",value:i};this.repo.ObserverHandler().updateObservers(Nt,Pt.TRANSFER,"",l,n)}async ClientAccountBalance(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const i=e.identity.getID(),r=await this.walletRepository.read(i,e);if(!r)throw new At(`The account ${i} does not exist`);return r.balance}async ClientAccountID(t){const{ctx:e}=await this.logCtx([t],this.ClientAccountID);return await this.CheckInitialized(e),e.identity.getID()}}nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y]),st("design:returntype",Promise)],Tt.prototype,"TokenName",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y]),st("design:returntype",Promise)],Tt.prototype,"Symbol",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y]),st("design:returntype",Promise)],Tt.prototype,"Decimals",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y]),st("design:returntype",Promise)],Tt.prototype,"TotalSupply",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y,String]),st("design:returntype",Promise)],Tt.prototype,"BalanceOf",null),nt([G(),st("design:type",Function),st("design:paramtypes",[Y,String,Number]),st("design:returntype",Promise)],Tt.prototype,"Transfer",null),nt([G(),st("design:type",Function),st("design:paramtypes",[Y,String,String,Number]),st("design:returntype",Promise)],Tt.prototype,"TransferFrom",null),nt([G(),st("design:type",Function),st("design:paramtypes",[Y,String,Number]),st("design:returntype",Promise)],Tt.prototype,"Approve",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y,String,String]),st("design:returntype",Promise)],Tt.prototype,"Allowance",null),nt([G(),st("design:type",Function),st("design:paramtypes",[Y,Nt]),st("design:returntype",Promise)],Tt.prototype,"Initialize",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y]),st("design:returntype",Promise)],Tt.prototype,"CheckInitialized",null),nt([zt(),G(),st("design:type",Function),st("design:paramtypes",[Y,Number]),st("design:returntype",Promise)],Tt.prototype,"Mint",null),nt([zt(),G(),st("design:type",Function),st("design:paramtypes",[Y,Number]),st("design:returntype",Promise)],Tt.prototype,"Burn",null),nt([zt(),G(),st("design:type",Function),st("design:paramtypes",[Y,String,Number]),st("design:returntype",Promise)],Tt.prototype,"BurnFrom",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y]),st("design:returntype",Promise)],Tt.prototype,"ClientAccountBalance",null),nt([G(!1),st("design:type",Function),st("design:paramtypes",[Y]),st("design:returntype",Promise)],Tt.prototype,"ClientAccountID",null);const Bt=[Tt],Dt="##VERSION##",It="##PACKAGE##";W.registerLibrary(It,Dt);export{ht as ContractLogger,mt as FabricContractAdapter,at as FabricContractContext,ct as FabricContractRepository,ot as FabricContractRepositoryObservableHandler,yt as FabricContractSequence,bt as FabricCrudContract,lt as FabricStatement,It as PACKAGE_NAME,St as SerializedCrudContract,Dt as VERSION,Bt as contracts,wt as createdByOnFabricCreateUpdate,ft as pkFabricOnCreate};
2
2
  //# sourceMappingURL=for-fabric.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-fabric.js","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/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],"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","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","Model","pk","fromSelector","type","Metadata","key","DBKeys","ID","selectSelector","map","r","processRecord","build","selectors","CouchDBKeys","TABLE","tableName","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","keys","length","values","CouchDBGroupOperator","AND","reduce","accum","val","Error","k","OR","s","entries","result","forEach","orderBySelector","sort","value","rec","CouchDBOperator","BIGGER","limitSelector","limit","offsetSelector","skip","FabricModelKeys","IdentityType","FabricFlavour","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","parse","serialize","model","require","sortKeysRecursive","preSerialize","ContractLogger","MiniLogger","context","conf","logger","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","info","verbose","error","silly","InternalError","call","createLog","async","createdByOnFabricCreateUpdate","data","user","getID","e","UnsupportedError","pkFabricOnCreate","sequence","sequenceName","Sequence","next","defineProperty","enumerable","writable","configurable","Logging","setFactory","object","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","alias","for","create","composedKey","createCompositeKey","String","putState","parseError","read","readState","update","ctxArgs","delete","deleteState","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","target","prop","receiver","includes","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","count","reachedBookmark","lastKey","res","recordKey","recordValue","Key","Record","close","metadata","fetchedRecordsCount","bookmark","done","Reflect","SerializationError","getState","NotFoundError","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","correlationId","getTxID","clientIdentity","undefined","index","models","Promise","resolve","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Array","isArray","Statement","createAll","tableLabel","all","i","updateAll","prepare","split","segregate","mappedProp","columnName","isReserved","record","transient","revert","obj","ob","m","createPrefix","updatePrefix","createAllPrefix","ids","records","updateAllPrefix","reason","filter","a","clear","message","ConflictError","BadRequestError","QueryError","PagingError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","PersistenceKeys","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","COLUMN","extend","FabricProperty","FabricObject","setCurrent","DeterministicSerializer","FabricCrudContract","Contract","initialized","repo","forModel","listBy","order","paginateBy","size","findOneBy","statement","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","orderBy","OrderDirection","ASC","init","getName","healthcheck","bind","Ctx","overrides","READ","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","cond","__decorate","Transaction","prototype","Number","OverflowError","BalanceError","AllowanceError","NotInitializedError","BaseError","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","ValidationError","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
1
+ {"version":3,"file":"for-fabric.js","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/constants.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/logging.ts","../src/contracts/FabricContractSequence.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/errors.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/decorators.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","toString","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","clazz","event","id","args","log","ctx","Adapter","logCtx","owner","payload","table","name","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricContractRepository","Repository","adapter","trackedEvents","_overrides","Object","assign","ignoreValidation","ignoreHandlers","allowRawStatements","forcePrepareSimpleQueries","forcePrepareComplexQueries","createAllPrefix","models","contextArgs","class","context","ignoreValidate","length","opts","Model","sequenceFor","ids","type","sequenceName","Sequence","range","map","m","i","pk","InternalError","Promise","all","async","generated","enforceDBDecorators","ON","ignoredProps","errors","resolve","hasErrors","errorMessages","reduceErrorsToPrint","ValidationError","statement","statements","QueryError","PersistenceKeys","STATEMENT","logger","info","ctxArgs","verbose","e","BaseError","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","fromSelector","Metadata","key","DBKeys","ID","selectSelector","r","processRecord","build","selectors","CouchDBKeys","TABLE","tableName","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","keys","values","CouchDBGroupOperator","AND","reduce","accum","val","Error","k","OR","s","entries","result","forEach","orderBySelector","sort","value","rec","CouchDBOperator","BIGGER","limitSelector","limit","offsetSelector","skip","FabricModelKeys","IdentityType","FabricFlavour","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","parse","serialize","model","require","sortKeysRecursive","preSerialize","ContractLogger","MiniLogger","conf","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","error","silly","call","createLog","Logging","setFactory","object","FabricContractSequence","options","current","READ","SequenceModel","startWith","sequence","repo","read","NotFoundError","increment","count","incrementBy","next","toIncrementBy","Number","BigInt","String","Serial","instance","generate","UUID","seq","update","create","ConflictError","argz","undefined","UnsupportedError","typeName","createdByOnFabricCreateUpdate","data","user","getID","pkFabricOnCreate","defineProperty","enumerable","writable","configurable","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","scope","alias","for","composedKey","createCompositeKey","putState","parseError","readState","delete","deleteState","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","target","prop","receiver","includes","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","reachedBookmark","lastKey","res","recordKey","recordValue","Key","Record","close","metadata","fetchedRecordsCount","bookmark","done","Reflect","SerializationError","getState","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","correlationId","getTxID","clientIdentity","index","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Array","isArray","Statement","createAll","tableLabel","updateAll","prepare","split","segregate","mappedProp","columnName","isReserved","record","transient","revert","obj","ob","createPrefix","updatePrefix","records","updateAllPrefix","reason","filter","a","clear","message","BadRequestError","PagingError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","COLUMN","extend","FabricProperty","FabricObject","setCurrent","DeterministicSerializer","FabricCrudContract","Contract","initialized","forModel","listBy","order","paginateBy","size","findOneBy","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","orderBy","OrderDirection","ASC","init","getName","healthcheck","bind","Ctx","overrides","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","cond","__decorate","Transaction","prototype","OverflowError","BalanceError","AllowanceError","NotInitializedError","add","b","c","sub","ERC20Token","BaseModel","column","required","ERC20Wallet","Allowance","Owner","propertyKey","descriptor","originalMethod","acountId","select","tokens","execute","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","BurnFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","code","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","refresh","TRANSFER","catch","Approve","approvalEvent","APPROVAL","allowanceCondition","where","Initialize","Mint","amount","minter","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","VERSION","PACKAGE_NAME","registerLibrary"],"mappings":"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"}
@@ -1,30 +1,39 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const path_1 = __importDefault(require("path"));
7
3
  const commander_1 = require("commander");
8
4
  const db_decorators_1 = require("@decaf-ts/db-decorators");
9
- const index_1 = require("./../client/index.cjs");
5
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
6
+ const index_1 = require("./../client/indexes/index.cjs");
7
+ const logging_1 = require("@decaf-ts/logging");
10
8
  const program = new commander_1.Command();
11
9
  program
12
10
  .command("compile-indexes")
11
+ .option("--file [String]", "the model file")
12
+ .option("--folder [String]", "the model folder")
13
+ .option("--outDir <String>", "the outdir. should match your contract folder")
13
14
  .description("Creates a the JSON index files to be submitted to along with the contract")
14
- .option("--file", "path to the Model Class file", false)
15
- .option("--folder", "path to the folder with Model Class Files", false)
16
- .option("--dev", "compiles contracts without minification", false)
17
- .option("--debug", "makes attaching debugger possible", false)
18
15
  .action(async (options) => {
19
16
  // eslint-disable-next-line prefer-const
20
- let { file, folder } = options;
17
+ let { file, folder, outDir } = options;
18
+ const log = logging_1.Logging.get();
19
+ const models = [];
21
20
  if (file) {
22
- folder = path_1.default.dirname(file);
21
+ models.push(...(0, index_1.readModelFile)(file));
23
22
  }
23
+ if (folder) {
24
+ log.info(`Loading models from ${folder}...`);
25
+ models.push(...(await (0, index_1.readModelFolders)(folder)));
26
+ }
27
+ const result = {};
24
28
  if (!file && !folder)
25
29
  throw new db_decorators_1.InternalError(`Must pass a file or a folder`);
26
- const adapter = new index_1.FabricClientAdapter({});
27
- await adapter["index"](folder);
30
+ for (const m of models) {
31
+ log.verbose(`Extracting indexes for table ${decorator_validation_1.Model.tableName(m)}`);
32
+ (0, index_1.generateModelIndexes)(m, result);
33
+ }
34
+ log.verbose(`Found ${Object.keys(result).length} indexes to create`);
35
+ log.debug(`Indexes: ${JSON.stringify(result)}`);
36
+ (0, index_1.writeIndexes)(Object.values(result), outDir);
28
37
  });
29
38
  program.parse(process.argv);
30
39
  //# sourceMappingURL=compile-indexes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile-indexes.js","sourceRoot":"","sources":["../../src/bin/compile-indexes.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,yCAAoC;AACpC,2DAAwD;AACxD,iDAAsD;AACtD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CACV,2EAA2E,CAC5E;KACA,MAAM,CAAC,QAAQ,EAAE,8BAA8B,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,UAAU,EAAE,2CAA2C,EAAE,KAAK,CAAC;KACtE,MAAM,CAAC,OAAO,EAAE,yCAAyC,EAAE,KAAK,CAAC;KACjE,MAAM,CAAC,SAAS,EAAE,mCAAmC,EAAE,KAAK,CAAC;KAC7D,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC7B,wCAAwC;IACxC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE/B,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;QAClB,MAAM,IAAI,6BAAa,CAAC,8BAA8B,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,IAAI,2BAAmB,CAAC,EAAS,CAAC,CAAC;IACnD,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"compile-indexes.js","sourceRoot":"","sources":["../../src/bin/compile-indexes.ts"],"names":[],"mappings":";;AACA,yCAAoC;AACpC,2DAAwD;AACxD,yEAAuD;AACvD,yDAKiC;AACjC,+CAA4C;AAC5C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,MAAM,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;KAC3C,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;KAC/C,MAAM,CAAC,mBAAmB,EAAE,+CAA+C,CAAC;KAC5E,WAAW,CACV,2EAA2E,CAC5E;KACA,MAAM,CAAC,KAAK,EAAE,OAAY,EAAE,EAAE;IAC7B,wCAAwC;IACxC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,GAAG,GAAG,iBAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,IAAI,CAAC,GAAG,IAAA,qBAAa,EAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,uBAAuB,MAAM,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAA,wBAAgB,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;QAClB,MAAM,IAAI,6BAAa,CAAC,8BAA8B,CAAC,CAAC;IAE1D,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,gCAAgC,4BAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClE,IAAA,4BAAoB,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,GAAG,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,oBAAoB,CAAC,CAAC;IACrE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChD,IAAA,oBAAY,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}