@decaf-ts/for-fabric 0.0.2 → 0.0.3

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 (232) hide show
  1. package/LICENSE.md +159 -17
  2. package/README.md +26 -285
  3. package/dist/for-fabric.cjs +2 -6223
  4. package/dist/for-fabric.cjs.map +1 -0
  5. package/dist/for-fabric.js +2 -0
  6. package/dist/for-fabric.js.map +1 -0
  7. package/lib/bin/build-contracts.cjs +47 -0
  8. package/lib/bin/build-contracts.d.ts +1 -0
  9. package/lib/bin/build-contracts.js.map +1 -0
  10. package/lib/client/FabricClientAdapter.cjs +7 -7
  11. package/lib/client/FabricClientAdapter.js.map +1 -0
  12. package/lib/client/FabricClientDispatch.cjs +1 -1
  13. package/lib/client/FabricClientDispatch.js.map +1 -0
  14. package/lib/client/FabricClientRepository.cjs +1 -1
  15. package/lib/client/FabricClientRepository.js.map +1 -0
  16. package/lib/client/erc20/erc20ClientRepository.cjs +1 -1
  17. package/lib/client/erc20/erc20ClientRepository.js.map +1 -0
  18. package/lib/client/fabric-fs.cjs +1 -1
  19. package/lib/client/fabric-fs.js.map +1 -0
  20. package/lib/client/index.cjs +1 -1
  21. package/lib/client/index.js.map +1 -0
  22. package/lib/client/logging.cjs +1 -1
  23. package/lib/client/logging.js.map +1 -0
  24. package/lib/client/services/LoggedService.cjs +1 -1
  25. package/lib/client/services/LoggedService.js.map +1 -0
  26. package/lib/client/services/constants.cjs +1 -1
  27. package/lib/client/services/constants.js.map +1 -0
  28. package/lib/client/services/enrollementService.cjs +1 -1
  29. package/lib/client/services/enrollementService.js.map +1 -0
  30. package/lib/client/services/index.cjs +1 -1
  31. package/lib/client/services/index.js.map +1 -0
  32. package/lib/contracts/ContractAdapter.cjs +2 -2
  33. package/lib/contracts/ContractAdapter.js.map +1 -0
  34. package/lib/contracts/ContractContext.cjs +1 -1
  35. package/lib/contracts/ContractContext.js.map +1 -0
  36. package/lib/contracts/ContractPrivateDataAdapter.cjs +1 -1
  37. package/lib/contracts/ContractPrivateDataAdapter.js.map +1 -0
  38. package/lib/contracts/FabricConstruction.cjs +1 -1
  39. package/lib/contracts/FabricConstruction.js.map +1 -0
  40. package/lib/contracts/FabricContractRepository.cjs +7 -5
  41. package/lib/contracts/FabricContractRepository.d.ts +2 -2
  42. package/lib/contracts/FabricContractRepository.js.map +1 -0
  43. package/lib/contracts/FabricContractRepositoryObservableHandler.cjs +1 -1
  44. package/lib/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
  45. package/lib/contracts/FabricContractSequence.cjs +4 -3
  46. package/lib/contracts/FabricContractSequence.d.ts +2 -1
  47. package/lib/contracts/FabricContractSequence.js.map +1 -0
  48. package/lib/contracts/FabricContractStatement.cjs +3 -2
  49. package/lib/contracts/FabricContractStatement.d.ts +2 -1
  50. package/lib/contracts/FabricContractStatement.js.map +1 -0
  51. package/lib/contracts/PrivateSequence.cjs +1 -1
  52. package/lib/contracts/PrivateSequence.js.map +1 -0
  53. package/lib/contracts/crud/crud-contract.cjs +1 -1
  54. package/lib/contracts/crud/crud-contract.js.map +1 -0
  55. package/lib/contracts/crud/index.cjs +1 -1
  56. package/lib/contracts/crud/index.js.map +1 -0
  57. package/lib/contracts/crud/serialized-crud-contract.cjs +1 -1
  58. package/lib/contracts/crud/serialized-crud-contract.js.map +1 -0
  59. package/lib/contracts/erc20/erc20contract.cjs +1 -1
  60. package/lib/contracts/erc20/erc20contract.js.map +1 -0
  61. package/lib/contracts/erc20/index.cjs +1 -1
  62. package/lib/contracts/erc20/index.js.map +1 -0
  63. package/lib/contracts/erc20/models.cjs +1 -1
  64. package/lib/contracts/erc20/models.js.map +1 -0
  65. package/lib/contracts/index.cjs +1 -1
  66. package/lib/contracts/index.js.map +1 -0
  67. package/lib/contracts/logging.cjs +1 -1
  68. package/lib/contracts/logging.js.map +1 -0
  69. package/lib/contracts/private-data.cjs +1 -1
  70. package/lib/contracts/private-data.js.map +1 -0
  71. package/lib/contracts/types.cjs +1 -1
  72. package/lib/contracts/types.js.map +1 -0
  73. package/lib/esm/bin/build-contracts.d.ts +1 -0
  74. package/lib/esm/bin/build-contracts.js +42 -0
  75. package/lib/esm/bin/build-contracts.js.map +1 -0
  76. package/lib/esm/client/FabricClientAdapter.js +7 -7
  77. package/lib/esm/client/FabricClientAdapter.js.map +1 -0
  78. package/lib/esm/client/FabricClientDispatch.js +1 -1
  79. package/lib/esm/client/FabricClientDispatch.js.map +1 -0
  80. package/lib/esm/client/FabricClientRepository.js +1 -1
  81. package/lib/esm/client/FabricClientRepository.js.map +1 -0
  82. package/lib/esm/client/erc20/erc20ClientRepository.js +1 -1
  83. package/lib/esm/client/erc20/erc20ClientRepository.js.map +1 -0
  84. package/lib/esm/client/fabric-fs.js +1 -1
  85. package/lib/esm/client/fabric-fs.js.map +1 -0
  86. package/lib/esm/client/index.js +1 -1
  87. package/lib/esm/client/index.js.map +1 -0
  88. package/lib/esm/client/logging.js +1 -1
  89. package/lib/esm/client/logging.js.map +1 -0
  90. package/lib/esm/client/services/LoggedService.js +1 -1
  91. package/lib/esm/client/services/LoggedService.js.map +1 -0
  92. package/lib/esm/client/services/constants.js +1 -1
  93. package/lib/esm/client/services/constants.js.map +1 -0
  94. package/lib/esm/client/services/enrollementService.js +1 -1
  95. package/lib/esm/client/services/enrollementService.js.map +1 -0
  96. package/lib/esm/client/services/index.js +1 -1
  97. package/lib/esm/client/services/index.js.map +1 -0
  98. package/lib/esm/contracts/ContractAdapter.js +2 -2
  99. package/lib/esm/contracts/ContractAdapter.js.map +1 -0
  100. package/lib/esm/contracts/ContractContext.js +1 -1
  101. package/lib/esm/contracts/ContractContext.js.map +1 -0
  102. package/lib/esm/contracts/ContractPrivateDataAdapter.js +1 -1
  103. package/lib/esm/contracts/ContractPrivateDataAdapter.js.map +1 -0
  104. package/lib/esm/contracts/FabricConstruction.js +1 -1
  105. package/lib/esm/contracts/FabricConstruction.js.map +1 -0
  106. package/lib/esm/contracts/FabricContractRepository.d.ts +2 -2
  107. package/lib/esm/contracts/FabricContractRepository.js +4 -2
  108. package/lib/esm/contracts/FabricContractRepository.js.map +1 -0
  109. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  110. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
  111. package/lib/esm/contracts/FabricContractSequence.d.ts +2 -1
  112. package/lib/esm/contracts/FabricContractSequence.js +3 -2
  113. package/lib/esm/contracts/FabricContractSequence.js.map +1 -0
  114. package/lib/esm/contracts/FabricContractStatement.d.ts +2 -1
  115. package/lib/esm/contracts/FabricContractStatement.js +3 -2
  116. package/lib/esm/contracts/FabricContractStatement.js.map +1 -0
  117. package/lib/esm/contracts/PrivateSequence.js +1 -1
  118. package/lib/esm/contracts/PrivateSequence.js.map +1 -0
  119. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  120. package/lib/esm/contracts/crud/crud-contract.js.map +1 -0
  121. package/lib/esm/contracts/crud/index.js +1 -1
  122. package/lib/esm/contracts/crud/index.js.map +1 -0
  123. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  124. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -0
  125. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  126. package/lib/esm/contracts/erc20/erc20contract.js.map +1 -0
  127. package/lib/esm/contracts/erc20/index.js +1 -1
  128. package/lib/esm/contracts/erc20/index.js.map +1 -0
  129. package/lib/esm/contracts/erc20/models.js +1 -1
  130. package/lib/esm/contracts/erc20/models.js.map +1 -0
  131. package/lib/esm/contracts/index.js +1 -1
  132. package/lib/esm/contracts/index.js.map +1 -0
  133. package/lib/esm/contracts/logging.js +1 -1
  134. package/lib/esm/contracts/logging.js.map +1 -0
  135. package/lib/esm/contracts/private-data.js +2 -2
  136. package/lib/esm/contracts/private-data.js.map +1 -0
  137. package/lib/esm/contracts/types.js +1 -1
  138. package/lib/esm/contracts/types.js.map +1 -0
  139. package/lib/esm/index.d.ts +1 -0
  140. package/lib/esm/index.js +2 -1
  141. package/lib/esm/index.js.map +1 -0
  142. package/lib/esm/shared/ClientSerializer.js +1 -1
  143. package/lib/esm/shared/ClientSerializer.js.map +1 -0
  144. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  145. package/lib/esm/shared/DeterministicSerializer.js.map +1 -0
  146. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  147. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +1 -0
  148. package/lib/esm/shared/constants.d.ts +0 -7
  149. package/lib/esm/shared/constants.js +1 -8
  150. package/lib/esm/shared/constants.js.map +1 -0
  151. package/lib/esm/shared/crypto.js +2 -2
  152. package/lib/esm/shared/crypto.js.map +1 -0
  153. package/lib/esm/shared/decorators.js +1 -1
  154. package/lib/esm/shared/decorators.js.map +1 -0
  155. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  156. package/lib/esm/shared/erc20/erc20-constants.js.map +1 -0
  157. package/lib/esm/shared/errors.js +1 -1
  158. package/lib/esm/shared/errors.js.map +1 -0
  159. package/lib/esm/shared/events.d.ts +2 -0
  160. package/lib/esm/shared/events.js +2 -2
  161. package/lib/esm/shared/events.js.map +1 -0
  162. package/lib/esm/shared/fabric-types.js +1 -1
  163. package/lib/esm/shared/fabric-types.js.map +1 -0
  164. package/lib/esm/shared/index.js +1 -1
  165. package/lib/esm/shared/index.js.map +1 -0
  166. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  167. package/lib/esm/shared/interfaces/Checkable.js.map +1 -0
  168. package/lib/esm/shared/math.js +1 -1
  169. package/lib/esm/shared/math.js.map +1 -0
  170. package/lib/esm/shared/model/Identity.js +1 -1
  171. package/lib/esm/shared/model/Identity.js.map +1 -0
  172. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  173. package/lib/esm/shared/model/IdentityCredentials.js.map +1 -0
  174. package/lib/esm/shared/model/index.js +1 -1
  175. package/lib/esm/shared/model/index.js.map +1 -0
  176. package/lib/esm/shared/types.js +1 -1
  177. package/lib/esm/shared/types.js.map +1 -0
  178. package/lib/esm/shared/utils.js +1 -1
  179. package/lib/esm/shared/utils.js.map +1 -0
  180. package/lib/esm/version.d.ts +2 -0
  181. package/lib/esm/version.js +5 -0
  182. package/lib/esm/version.js.map +1 -0
  183. package/lib/index.cjs +2 -1
  184. package/lib/index.d.ts +1 -0
  185. package/lib/index.js.map +1 -0
  186. package/lib/shared/ClientSerializer.cjs +1 -1
  187. package/lib/shared/ClientSerializer.js.map +1 -0
  188. package/lib/shared/DeterministicSerializer.cjs +1 -1
  189. package/lib/shared/DeterministicSerializer.js.map +1 -0
  190. package/lib/shared/SimpleDeterministicSerializer.cjs +1 -1
  191. package/lib/shared/SimpleDeterministicSerializer.js.map +1 -0
  192. package/lib/shared/constants.cjs +2 -9
  193. package/lib/shared/constants.d.ts +0 -7
  194. package/lib/shared/constants.js.map +1 -0
  195. package/lib/shared/crypto.cjs +3 -3
  196. package/lib/shared/crypto.js.map +1 -0
  197. package/lib/shared/decorators.cjs +1 -1
  198. package/lib/shared/decorators.js.map +1 -0
  199. package/lib/shared/erc20/erc20-constants.cjs +1 -1
  200. package/lib/shared/erc20/erc20-constants.js.map +1 -0
  201. package/lib/shared/errors.cjs +1 -1
  202. package/lib/shared/errors.js.map +1 -0
  203. package/lib/shared/events.cjs +2 -2
  204. package/lib/shared/events.d.ts +2 -0
  205. package/lib/shared/events.js.map +1 -0
  206. package/lib/shared/fabric-types.cjs +1 -1
  207. package/lib/shared/fabric-types.js.map +1 -0
  208. package/lib/shared/index.cjs +1 -1
  209. package/lib/shared/index.js.map +1 -0
  210. package/lib/shared/interfaces/Checkable.cjs +1 -1
  211. package/lib/shared/interfaces/Checkable.js.map +1 -0
  212. package/lib/shared/math.cjs +1 -1
  213. package/lib/shared/math.js.map +1 -0
  214. package/lib/shared/model/Identity.cjs +1 -1
  215. package/lib/shared/model/Identity.js.map +1 -0
  216. package/lib/shared/model/IdentityCredentials.cjs +1 -1
  217. package/lib/shared/model/IdentityCredentials.js.map +1 -0
  218. package/lib/shared/model/index.cjs +1 -1
  219. package/lib/shared/model/index.js.map +1 -0
  220. package/lib/shared/types.cjs +1 -1
  221. package/lib/shared/types.js.map +1 -0
  222. package/lib/shared/utils.cjs +1 -1
  223. package/lib/shared/utils.js.map +1 -0
  224. package/lib/version.cjs +8 -0
  225. package/lib/version.d.ts +2 -0
  226. package/lib/version.js.map +1 -0
  227. package/package.json +43 -65
  228. package/dist/for-fabric.esm.cjs +0 -6180
  229. package/lib/esm/shared/model/utils.d.ts +0 -60
  230. package/lib/esm/shared/model/utils.js +0 -108
  231. package/lib/shared/model/utils.cjs +0 -114
  232. package/lib/shared/model/utils.d.ts +0 -60
@@ -0,0 +1 @@
1
+ {"version":3,"file":"for-fabric.cjs","sources":["../src/client/fabric-fs.ts","../src/client/FabricClientRepository.ts","../src/shared/constants.ts","../src/shared/ClientSerializer.ts","../src/shared/events.ts","../src/client/FabricClientDispatch.ts","../src/client/FabricClientAdapter.ts","../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/decorators.ts","../src/contracts/private-data.ts","../src/shared/errors.ts","../src/contracts/PrivateSequence.ts","../src/contracts/FabricContractSequence.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/FabricConstruction.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/ContractPrivateDataAdapter.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/contracts/logging.ts","../src/shared/utils.ts","../src/shared/model/IdentityCredentials.ts","../src/shared/model/Identity.ts","../src/shared/crypto.ts","../src/client/services/enrollementService.ts","../src/client/services/LoggedService.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["log","Logging","for","async","contentOfLoadFile","contentOrPath","fileReader","Uint8Array","match","getIdentity","mspId","certDirectoryPath","credentials","path","promises","normalizeImport","import","certPath","getFirstDirFileName","readFile","dirPath","join","readdir","getSigner","keyDirectoryPath","privateKeyPem","keyPath","privateKey","extractPrivateKey","k","Object","getOwnPropertySymbols","signers","newPrivateKeySigner","pem","subtle","isBrowser","globalThis","crypto","lib","webcrypto","Error","str","toString","replace","replaceAll","binaryDer","buf","ArrayBuffer","length","bufView","i","strLen","charCodeAt","str2ab","Buffer","from","importKey","name","namedCurve","e","InternalError","FabricClientRepository","Repository","constructor","adapter","clazz","super","createPrefix","model","args","contextArgs","Context","OperationKeys","CREATE","this","class","_overrides","createAllPrefix","models","readPrefix","key","READ","readAllPrefix","keys","updatePrefix","UPDATE","updateAllPrefix","deletePrefix","DELETE","read","deleteAllPrefix","readAll","FabricModelKeys","exports","IdentityType","FabricFlavour","ClientSerializer","JSONSerializer","preSerialize","table","toSerialize","assign","metadata","getMetadata","SerializationError","ModelKeys","ANCHOR","deserialize","deserialization","JSON","parse","className","Model","build","serialize","stringify","generateFabricEventName","event","owner","params","push","parseEventName","parts","split","undefined","FabricClientDispatch","Dispatch","client","decoder","TextDecoder","close","listeningStack","parsePayload","jsonBytes","json","decode","observe","observer","FabricClientAdapter","UnsupportedError","Adapter","alias","initialize","then","verbose","updateObservers","payload","refresh","id","handleEvents","config","info","chaincodeName","channel","evt","eventName","error","network","getGateway","getNetwork","getChaincodeEvents","CouchDBAdapter","serializer","data","repository","createAll","tableName","ids","transient","result","submitTransaction","BulkCrudOperationKeys","CREATE_ALL","map","m","r","READ_ALL","updateAll","UPDATE_ALL","deleteAll","DELETE_ALL","prepare","pk","modelToTransient","PersistenceKeys","METADATA","silly","defineProperty","enumerable","writable","configurable","value","record","revert","obj","ob","reduce","accum","entries","forEach","val","flavour","index","create","debug","evaluateTransaction","update","delete","raw","rawInput","process","input","transactionResult","parseError","Array","isArray","el","isModel","getClient","_client","Gateway","Contract","getContract","transaction","api","submit","transientData","endorsingOrganizations","gateway","contract","contractName","a","method","evaluate","proposalOptions","arguments","call","code","details","message","err","reason","channelName","getConnection","tlsCredentials","grpc","createSsl","tlsCert","peerEndpoint","Client","certCertOrDirectoryPath","identity","keyCertOrDirectoryPath","options","signer","evaluateOptions","deadline","Date","now","endorseOptions","submitOptions","commitStatusOptions","connect","__decorate","prototype","final","decoration","setCurrent","FabricContractContext","stub","get","timestamp","getDateTimestamp","_","logger","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","ctx","indexOf","setEvent","Owner","target","propertyKey","descriptor","originalMethod","acountId","clientIdentity","getID","select","selectWithContext","tokens","execute","NotFoundError","AuthorizationError","apply","ownedByOnCreate","context","getCreator","mspid","getFabricModelKey","FABRIC","privateData","collection","PRIVATE","attribute","meta","Reflect","collections","propMetadata","Set","isPrivate","MISSING_PRIVATE_DATA_REGEX","getClassPrivateDataMetadata","isModelPrivate","modelToPrivate","hasPrivateData","decs","getAllPropertyDecoratorsRecursive","modelCollections","private","find","props","OverflowError","msg","BalanceError","AllowanceError","RegistrationError","MissingContextError","UnauthorizedPrivateDataAccess","BaseError","NotInitializedError","CustomizableSequence","BaseModel","seq","required","CouchDBKeys","SEQUENCE","FabricContractSequence","Sequence","repo","forModel","current","startWith","sequence","parseValue","type","increment","count","incrementBy","next","toIncrementBy","BigInt","range","FabricContractRepository","trackedEvents","logFor","c","prepared","p","records","transients","filter","u","docsOnly","pop","transformedArgs","CTX","selector","Ctx","Statement","opts","getSequenceOptions","Promise","all","enforceDBDecorators","ON","ignoredProps","errorMessages","resolve","hasErrors","ValidationError","String","ConflictError","FabricStatement","CouchDBStatement","results","pkDef","findPrimaryKey","fromSelector","pkAttr","selectSelector","processRecord","selectors","TABLE","query","fields","whereCondition","condition","parseCondition","Condition","and","eq","selectorKeys","values","CouchDBGroupOperator","AND","OR","s","orderBySelector","sort","rec","CouchDBOperator","BIGGER","limitSelector","limit","offsetSelector","skip","SimpleDeterministicSerializer","require","sortKeysRecursive","oneToOneOnCreate","propertyValue","innerRepo","repositoryFromTypeMetadata","cacheModelForPopulate","created","oneToOneOnUpdate","cascade","Cascade","CASCADE","updated","createOrUpdate","oneToOneOnDelete","deleted","oneToManyOnCreate","propertyValues","arrayType","every","item","uniqueValues","pkName","add","oneToManyOnDelete","isInstantiated","v","populate","nested","isArr","res","propName","propKeyValues","cacheKey","proKeyValue","getPopulateKey","fetchPopulateValues","createdByOnFabricCreateUpdate","user","pkFabricOnCreate","sequenceNameForModel","FabricContractAdapter","textDecoder","scope","putState","readState","mergeModels","deleteState","composedKey","createCompositeKey","getState","queryResult","getQueryResult","queryResultPaginated","getQueryResultWithPagination","extract","finalModel","buffer","flags","operation","resultIterator","iterator","isHistory","allResults","done","jsonRes","TxId","txId","Timestamp","Value","shift","mappedProp","column","isReserved","createdByKey","CREATED_BY","updatedByKey","UPDATED_BY","Decoration","flavouredAs","define","onCreate","onCreateUpdate","pkKey","DBKeys","ID","OrderDirection","ASC","DSC","readonly","NumericSequence","columnKey","COLUMN","extend","FabricProperty","Property","tableKey","FabricObject","oneToOnekey","ONE_TO_ONE","decorator","joinColumnOpts","fk","joinTable","prop","RELATIONS","Number","onUpdate","onDelete","afterAny","oneToManyKey","ONE_TO_MANY","joinTableOpts","list","oneToManyOnUpdate","DeterministicSerializer","FabricContractPrivateDataAdapter","instance","transformModel","processModel","putPrivateData","getPrivateData","test","deletePrivateData","getPrivateDataQueryResult","reachedBookmark","lastKey","recordKey","recordValue","Key","Record","fetchedRecordsCount","bookmark","FabricCrudContract","initialized","getAdapter","pvt","getTransientData","merge","transientMap","getTransient","has","init","healthcheck","SerializedCrudContract","parsedKeys","modelList","parsedInput","b","sub","Transaction","Boolean","ERC20Token","ERC20Wallet","Allowance","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","getName","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","TRANSFER","Approve","approvalEvent","APPROVAL","allowanceCondition","where","Initialize","Mint","amount","minter","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","BurnFrom","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","__metadata","contracts","ContractLogger","MiniLogger","conf","level","stack","NumericLogLevels","LogLevel","createLog","setFactory","object","CoreUtils","getCAUser","userName","certificate","stringFormat","User","cryptoSuite","newCryptoSuite","setCryptoSuite","importedKey","createKeyFromRaw","setEnrollment","getFirstDirFileNameContent","files","getFileContent","filePath","window","Crypto","IdentityCredentials","arg","rootCertificate","Identity","X509","oneToOne","BASE_ALPHABET","CRYPTO","HFCAIdentityType","HFCAIdentityAttributes","x509","cryptoProvider","set","BaseEncoder","alphabet","baseMap","j","x","charAt","xc","base","leader","factor","Math","iFactor","encode","source","isView","byteOffset","byteLength","zeroes","pbegin","pend","size","b58","carry","it1","it2","repeat","decodeUnsafe","psz","b256","it3","it4","vch","CryptoUtils","b58encoder","BASE58","fabricIdFromCertificate","cert","X509Certificate","subject","issuer","decoded","stringToArrayBuffer","extractKey","usages","RegExp","toUpperCase","extractPublicKey","sign","buff","hash","padStart","verify","signature","publicKey","export","encrypt","getSubtleCrypto","decrypt","getMaster","textEncoder","TextEncoder","genGenesis","randomUUID","KEY_ALGORYTHM","iv","getDerivationKey","salt","saltBuffer","saltHashed","digest","HASH","iterations","ITERATIONS","derivation","deriveBits","KEYLENGTH","getKey","derivedKey","slice","ALGORYTHM","encryptPin","text","keyObject","textBuffer","decryptPin","encryptedText","decryptedText","LoggedService","_log","FabricEnrollmentService","caConfig","caName","caCert","caKey","url","CA","ca","tls","trustedRoots","root","cwd","FabricCAServices","Certificate","certificateService","newCertificateService","Affiliations","affiliationService","newAffiliationService","Identities","identityService","newIdentityService","getCertificates","request","doMap","response","certs","PEM","getIdentities","identitiesService","getAll","identities","exec","getAffiliations","enrollmentId","getOne","success","errors","register","isSuperUser","affiliation","userRole","attrs","maxEnrollments","registration","password","enrollmentID","enrollmentSecret","identityFromEnrollment","enrollment","clientId","toBytes","createdOn","updatedOn","enroll","registerAndEnroll","revoke","VERSION","PACKAGE_NAME","Metadata","registerLibrary","OWNEDBY"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{normalizeImport as t}from"@decaf-ts/utils";import{Logging as e,isBrowser as r,debug as i,MiniLogger as a,NumericLogLevels as n,LogLevel as s}from"@decaf-ts/logging";import{User as o}from"fabric-common";import{signers as c,connect as l}from"@hyperledger/fabric-gateway";import{InternalError as d,Context as p,OperationKeys as h,SerializationError as u,BulkCrudOperationKeys as g,modelToTransient as f,NotFoundError as y,transient as w,readonly as m,onCreate as b,getAllPropertyDecoratorsRecursive as v,BaseError as A,enforceDBDecorators as S,ValidationError as E,ConflictError as C,findPrimaryKey as O,onCreateUpdate as R,DBKeys as N,onUpdate as T,onDelete as $,afterAny as k}from"@decaf-ts/db-decorators";import{__decorate as I,__metadata as F}from"tslib";import{CouchDBAdapter as P,CouchDBKeys as x,CouchDBStatement as D,CouchDBGroupOperator as z,CouchDBOperator as j}from"@decaf-ts/for-couchdb";import*as B from"@grpc/grpc-js";import{Client as L}from"@grpc/grpc-js";import{JSONSerializer as M,getMetadata as K,ModelKeys as _,Model as J,Decoration as U,propMetadata as H,required as q,model as G,prop as Y,type as V,list as W,stringFormat as Q}from"@decaf-ts/decorator-validation";import{Repository as X,Dispatch as Z,UnsupportedError as tt,Adapter as et,PersistenceKeys as rt,final as it,ObserverHandler as at,AuthorizationError as nt,pk as st,index as ot,table as ct,BaseModel as lt,Sequence as dt,Condition as pt,repositoryFromTypeMetadata as ht,cacheModelForPopulate as ut,Cascade as gt,createOrUpdate as ft,getPopulateKey as yt,OrderDirection as wt,NumericSequence as mt,sequenceNameForModel as bt,oneToManyOnUpdate as vt,column as At,oneToOne as St}from"@decaf-ts/core";import{Property as Et,Object as Ct,Contract as Ot,Transaction as Rt,Context as Nt}from"fabric-contract-api";import{apply as Tt}from"@decaf-ts/reflection";import $t from"fabric-ca-client";import*as kt from"@peculiar/x509";import{Crypto as It}from"@peculiar/webcrypto";import{Metadata as Ft}from"@decaf-ts/decoration";const Pt=e.for("fabric-fs");async function xt(t,e){return t instanceof Uint8Array||t.match(/-----BEGIN (CERTIFICATE|KEY|PRIVATE KEY)-----.+?-----END \1-----$/gms)?t:await e(t)}async function Dt(e){return"string"!=typeof e?e:await(async e=>{const{promises:r}=await t(import("fs"));return await r.readFile(e)})(e)}async function zt(t,e,r,i){Pt.debug(`Creating a CA ${i} user ${t} with certificate ${r}`);const a=new o(t),n=o.newCryptoSuite();a.setCryptoSuite(n);const s=n.createKeyFromRaw(e);return await a.setEnrollment(s,r,i),a}async function jt(e,r){return{mspId:e,credentials:await xt(r,async e=>{const{promises:r}=await t(import("fs")),i=await Bt(e);return await r.readFile(i)})}}async function Bt(e){const{promises:r}=await t(import("fs")),{join:i}=await t(import("path"));return i(e,(await r.readdir(e))[0])}async function Lt(e){const{promises:r}=await t(import("fs")),{join:i}=await t(import("path")),a=await r.readdir(e);return(await r.readFile(i(e,a[0]))).toString()}async function Mt(e){const r=await xt(e,async e=>{const{promises:r}=await t(import("fs")),i=await Bt(e);return await r.readFile(i)}),i=await Kt(r),a=i[Object.getOwnPropertySymbols(i)[0]];return c.newPrivateKeySigner(a)}async function Kt(e){let i;if(r())i=globalThis.crypto.subtle;else{const e=await t(import("crypto"));i=e.subtle||e.webcrypto.subtle}if(!i)throw Error("Could not load SubtleCrypto module");const a=e.toString("utf8").replace("-----BEGIN PRIVATE KEY-----","").replaceAll("\n","").replace("-----END PRIVATE KEY-----",""),n=(t=>{const e=new ArrayBuffer(t.length),r=new Uint8Array(e);for(let e=0,i=t.length;i>e;e++)r[e]=t.charCodeAt(e);return e})(Buffer.from(a,"base64").toString("binary"));try{return await i.importKey("pkcs8",n,{name:"ECDSA",namedCurve:"P-256"},!0,["sign"])}catch(t){throw new d(t)}}class _t extends X{constructor(t,e){super(t,e)}async createPrefix(t,...e){const r=await p.args(h.CREATE,this.class,e,this.adapter,this._overrides||{});return[t=new this.class(t),...r.args]}async createAllPrefix(t,...e){return[t,...(await p.args(h.CREATE,this.class,e,this.adapter,this._overrides||{})).args]}async readPrefix(t,...e){return[t,...(await p.args(h.READ,this.class,e,this.adapter,this._overrides||{})).args]}async readAllPrefix(t,...e){return[t,...(await p.args(h.READ,this.class,e,this.adapter,this._overrides||{})).args]}async updatePrefix(t,...e){return[t,...(await p.args(h.UPDATE,this.class,e,this.adapter,this._overrides||{})).args]}async updateAllPrefix(t,...e){return[t,...(await p.args(h.UPDATE,this.class,e,this.adapter,this._overrides||{})).args]}async deletePrefix(t,...e){const r=await p.args(h.DELETE,this.class,e,this.adapter,this._overrides||{});return await this.read(t,...r.args),[t,...r.args]}async deleteAllPrefix(t,...e){const r=await p.args(h.DELETE,this.class,e,this.adapter,this._overrides||{});return await this.readAll(t,...r.args),[t,...r.args]}}var Jt,Ut;(t=>{t.PRIVATE="private",t.FABRIC="fabric.",t.OWNEDBY="owned-by"})(Jt||(Jt={})),(t=>{t.X509="X.509"})(Ut||(Ut={}));const Ht="hlf-fabric";class qt extends M{constructor(){super()}preSerialize(t,e){const r=Object.assign({},t);let i;try{i=K(t)}catch(t){i=e}if(!i)throw new u("Could not find metadata for "+t.constructor.name);return r[_.ANCHOR]=i,r}deserialize(t){const e=JSON.parse(t),r=e[_.ANCHOR];if(!r)throw Error("Could not find class reference in serialized model");return J.build(e,r)}serialize(t,e){return JSON.stringify(this.preSerialize(t,e))}}function Gt(t,e,r){const i=[t,e];return r&&i.push(r),i.join("_")}function Yt(t){const e=t.split("_");return 2>e.length||e.length>3?{event:t,table:void 0,owner:void 0}:{table:e[0],event:e[1],owner:e[2]}}class Vt extends Z{constructor(t){super(),this.client=t,this.decoder=new TextDecoder("utf8")}async close(){this.listeningStack&&this.listeningStack.close()}parsePayload(t){const e=this.decoder.decode(t);return JSON.parse(e)}observe(t){if(!(t instanceof Wt))throw new tt("Only FabricClientAdapter can be observed by dispatch");this.adapter=t,this.models=et.models(this.adapter.alias),this.initialize().then(()=>this.log.verbose(`Dispatch initialized for ${this.adapter.alias} adapter`))}async updateObservers(t,e,r){if(this.adapter)try{await this.adapter.refresh(t,e,r.id?r.id:void 0,r)}catch(t){throw new d("Failed to refresh dispatch: "+t)}else this.log.verbose(`No adapter observed for dispatch; skipping observer update for ${t}:${e}`)}async handleEvents(){if(!this.listeningStack)throw new d('Event stack not initialized. Ensure that "startListening" is called before attempting this operation.');if(!this.adapter||!this.adapter.config)throw new d("No adapter found. should be impossible");const t=this.log.for(this.handleEvents);t.info(`Listening for incoming events on chaincode "${this.adapter.config.chaincodeName}" on channel "${this.adapter.config.channel}"...`);try{for await(const e of this.listeningStack){const{table:r,event:i,owner:a}=Yt(e.eventName);if(a&&a!==this.adapter.config?.mspId)continue;const n=this.parsePayload(e.payload);try{await this.updateObservers(r||this.models[0].name,i,n)}catch(e){t.error(`Failed update observables for table ${r} event ${i} id: ${n.id}: ${e}`)}}}catch(e){t.error(`Failed to read event for chaincode "${this.adapter.config.chaincodeName}" on channel "${this.adapter.config.channel}": ${e}`),await this.close()}}async initialize(){if(!this.adapter)throw new d("No adapter or config observed for dispatch");const t=(await Wt.getGateway(this.adapter.config,this.client)).getNetwork(this.adapter.config.channel);if(!this.adapter)throw new d("No adapter observed for dispatch");this.listeningStack=await t.getChaincodeEvents(this.adapter.config.chaincodeName),this.handleEvents()}}class Wt extends P{static{this.decoder=new TextDecoder("utf8")}static{this.serializer=new qt}static{this.log=e.for(Wt)}get log(){return Wt.log}constructor(t,e){super(t,Ht,e),this.serializer=Wt.serializer}decode(t){return Wt.decoder.decode(t)}repository(){return _t}async createAll(t,e,r,i){const a=this.log.for(this.createAll);if(e.length!==r.length)throw new d(`Ids and models must have the same length: ${e.length} != ${r.length}`);a.info(`adding ${e.length} entries to ${t} table`),a.verbose("pks: "+e);const n=await this.submitTransaction(g.CREATE_ALL,[e,r.map(e=>this.serializer.serialize(e,t))],i);try{return JSON.parse(this.decode(n)).map(t=>JSON.parse(t))}catch(t){throw new u(t)}}async readAll(t,e){const r=this.log.for(this.readAll);r.info(`reading ${e.length} entries to ${t} table`),r.verbose("pks: "+e);const i=await this.submitTransaction(g.READ_ALL,[e]);try{return JSON.parse(this.decode(i)).map(t=>JSON.parse(t))}catch(t){throw new u(t)}}async updateAll(t,e,r,i){const a=this.log.for(this.updateAll);if(e.length!==r.length)throw new d(`Ids and models must have the same length: ${e.length} != ${r.length}`);a.info(`updating ${e.length} entries to ${t} table`),a.verbose("pks: "+e);const n=await this.submitTransaction(g.UPDATE_ALL,[e,r.map(e=>this.serializer.serialize(e,t))],i);try{return JSON.parse(this.decode(n)).map(t=>JSON.parse(t))}catch(t){throw new u(t)}}async deleteAll(t,e){const r=this.log.for(this.deleteAll);r.info(`deleting ${e.length} entries to ${t} table`),r.verbose("pks: "+e);const i=await this.submitTransaction(g.DELETE_ALL,[e]);try{return JSON.parse(this.decode(i)).map(t=>JSON.parse(t))}catch(t){throw new u(t)}}prepare(t,e){const r=this.log.for(this.prepare),i=f(t);return t[rt.METADATA]&&(r.silly("Passing along persistence metadata for "+t[rt.METADATA]),Object.defineProperty(i.model,rt.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:t[rt.METADATA]})),{record:i.model,id:t[e],transient:i.transient}}revert(t,e,r,i,a){const n=this.log.for(this.revert),s={};s[r]=i;const o="string"==typeof e?J.build(s,e):new e(s);n.silly(`Rebuilding model ${o.constructor.name} id ${i}`);const c=t[rt.METADATA],l=Object.keys(o).reduce((e,r)=>(e[r]=t[r],e),o);return a&&(n.verbose("re-adding transient properties: "+Object.keys(a).join(", ")),Object.entries(a).forEach(([t,e])=>{if(t in l&&void 0!==l[t])throw new d(`Transient property ${t} already exists on model ${o.constructor.name}. should be impossible`);l[t]=e})),c&&(n.silly(`Passing along ${this.flavour} persistence metadata for ${o.constructor.name} id ${i}: ${c}`),Object.defineProperty(l,rt.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:c})),l}index(t){throw Error()}async create(t,e,r,i){const a=this.log.for(this.create);a.verbose(`adding entry to ${t} table`),a.debug("pk: "+e);const n=await this.submitTransaction(h.CREATE,[this.serializer.serialize(r,t)],i);return this.serializer.deserialize(this.decode(n))}async read(t,e){const r=this.log.for(this.read);r.verbose(`reading entry from ${t} table`),r.debug("pk: "+e);const i=await this.evaluateTransaction(h.READ,[e.toString()]);return this.serializer.deserialize(this.decode(i))}async update(t,e,r,i){const a=this.log.for(this.update);a.verbose(`updating entry to ${t} table`),a.debug("pk: "+e);const n=await this.submitTransaction(h.UPDATE,[this.serializer.serialize(r,t)],i);return this.serializer.deserialize(this.decode(n))}async delete(t,e){const r=this.log.for(this.delete);r.verbose(`deleting entry from ${t} table`),r.debug("pk: "+e);const i=await this.submitTransaction(h.DELETE,[t,e]);return this.serializer.deserialize(this.decode(i))}async raw(t,e){const r=this.log.for(this.raw);let i,a,n;r.info("Performing raw query on table"),r.debug("processing raw input for query: "+JSON.stringify(t));try{i=JSON.stringify(t)}catch(t){throw new u("Failed to process raw input for query: "+t)}try{a=await this.evaluateTransaction("query",[i])}catch(t){throw this.parseError(t)}try{n=JSON.parse(this.decode(a))}catch(t){throw new u("Failed to process result: "+t)}if(Array.isArray(n)){if(!n.length)return n;const t=n[0];return J.isModel(t)?n.map(t=>J.build(t)):n}return s=n,J.isModel(s)?J.build(s):s;var s}getClient(){return this._client||(this._client=Wt.getClient(this.config)),this._client}async Gateway(){return Wt.getGateway(this.config,this.client)}async Contract(){return Wt.getContract(await this.Gateway(),this.config)}async transaction(t,e=!0,r,i,a){const n=this.log.for(this.transaction),s=await this.Gateway();try{const s=await this.Contract();n.verbose(`${e?"Submit":"Evaluate"}ting transaction ${this.config.contractName}.${t}`),n.debug("args: "+(r?.map(t=>t.toString()).join("\n")||"none"));const o=e?s.submit:s.evaluate;a=a?.length?a:void 0;const c={arguments:r||[],transientData:i};return await o.call(s,t,c)}catch(t){if(10===t.code)throw Error(""+t.details[0].message);throw this.parseError(t)}finally{this.log.debug(`Closing ${this.config.mspId} gateway connection`),s.close()}}parseError(t,e){return Wt.parseError(t,e)}async submitTransaction(t,e,r,i){return this.transaction(t,!0,e,r,i)}async evaluateTransaction(t,e,r,i){return this.transaction(t,!1,e,r,i)}async close(){this.client&&(this.log.verbose(`Closing ${this.config.mspId} gateway client`),this.client.close())}static getContract(t,e){const r=this.log.for(this.getContract),i=this.getNetwork(t,e.channel);let a;try{r.debug(`Retrieving chaincode ${e.chaincodeName} contract ${e.contractName} from network ${e.channel}`),a=i.getContract(e.chaincodeName,e.contractName)}catch(t){throw this.parseError(t)}return a}static getNetwork(t,e){const r=this.log.for(this.getNetwork);let i;try{r.debug("Connecting to channel "+e),i=t.getNetwork(e)}catch(t){throw this.parseError(t)}return i}static async getGateway(t,e){return await this.getConnection(e||await this.getClient(t),t)}static getClient(t){const e=this.log.for(this.getClient);e.debug("generating TLS credentials for msp "+t.mspId);const r=B.credentials.createSsl("string"==typeof t.tlsCert?Buffer.from(t.tlsCert):t.tlsCert);return e.debug("generating Gateway Client for url "+t.peerEndpoint),new L(t.peerEndpoint,r)}static async getConnection(t,e){const r=this.log.for(this.getConnection);r.debug(`Retrieving Peer Identity for ${e.mspId} under ${e.certCertOrDirectoryPath}`);const i=await jt(e.mspId,e.certCertOrDirectoryPath);r.debug("Retrieving signer key from "+e.keyCertOrDirectoryPath);const a={client:t,identity:i,signer:await Mt(e.keyCertOrDirectoryPath),evaluateOptions:()=>({deadline:Date.now()+5e3}),endorseOptions:()=>({deadline:Date.now()+15e3}),submitOptions:()=>({deadline:Date.now()+5e3}),commitStatusOptions:()=>({deadline:Date.now()+6e4})};return r.debug("Connecting to "+e.mspId),l(a)}Dispatch(){return new Vt(this.getClient())}static parseError(t,e){return super.parseError(t,e)}}I([i(),F("design:type",Function),F("design:paramtypes",[Object]),F("design:returntype",Promise)],Wt.prototype,"index",null),I([i(),it(),F("design:type",Function),F("design:paramtypes",[String,Object,Object,Object]),F("design:returntype",Promise)],Wt.prototype,"create",null),I([i(),it(),F("design:type",Function),F("design:paramtypes",[String,Object]),F("design:returntype",Promise)],Wt.prototype,"read",null),I([i(),it(),F("design:type",Function),F("design:paramtypes",[String,Object,Object,Object]),F("design:returntype",Promise)],Wt.prototype,"update",null),I([i(),it(),F("design:type",Function),F("design:paramtypes",[String,Object]),F("design:returntype",Promise)],Wt.prototype,"delete",null),I([i(),F("design:type",Function),F("design:paramtypes",[Object,Boolean]),F("design:returntype",Promise)],Wt.prototype,"raw",null),Wt.decoration(),et.setCurrent(Ht);class Qt extends p{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){try{return this.get("clientIdentity")}catch(t){return this.get("identity")}}get logger(){return this.get("logger")}}class Xt extends at{constructor(t=[h.CREATE,h.UPDATE,h.DELETE,g.CREATE_ALL,g.UPDATE_ALL,g.DELETE_ALL]){super(),this.supportedEvents=t}async updateObservers(t,e,r,i,a,n,s){const{stub:o}=a;if(-1!==this.supportedEvents.indexOf(r)){t.debug(`Emitting ${r} event`);const a=Gt(e,r,n);o.setEvent(a,Buffer.from(JSON.stringify({id:i})))}else o.setEvent(r,Buffer.from(JSON.stringify(s)))}}function Zt(){return function(t,e,r){const i=r.value;return r.value=async function(...t){const r=t[0],a=r.clientIdentity.getID(),n=await this.tokenRepository.selectWithContext(void 0,r),s=await n.execute();if(0==s.length)throw new y("No tokens avaialble");if(s.length>1)throw new y("To many token available : "+s.length);if(s[0].owner!=a)throw new nt(`User not authorized to run ${e} on the token`);return await i.apply(this,t)},r}}async function te(t,e,r,i){const{stub:a}=t,n=(await a.getCreator()).mspid;Object.defineProperty(i,r,{enumerable:!0,writable:!1,configurable:!0,value:n})}function ee(){const t=re(Jt.OWNEDBY);return U.for(t).define({decorator:()=>(t,e)=>Tt(q(),m(),b(te),H(re(Jt.OWNEDBY),e))(t,e),args:[]}).apply()}function re(t){return J.key(Jt.FABRIC+t)}function ie(t){if(!t)throw Error("Collection name is required");const e=re(Jt.PRIVATE);return(r,i)=>{const a=i||void 0,n=Reflect.getMetadata(e,r[_.ANCHOR]||r,a),s=n?.collections||[];H(re(Jt.PRIVATE),{...!i&&{collections:s?[...new Set([...s,t])]:[t]},isPrivate:!i})(i?r.constructor:r[_.ANCHOR]||r),i&&(H(re(Jt.PRIVATE),{collections:s?[...new Set([...s,t])]:[t]})(r,i),w()(r,i))}}const ae=/private\s+data\s+matching\s+public\s+hash\s+version\s+is\s+not\s+available/i;function ne(t){let e=Reflect.getMetadata(re(Jt.PRIVATE),t);return e=e||Reflect.getMetadata(re(Jt.PRIVATE),t.constructor),e}function se(t){const e=ne(t);return!(!e||void 0===e.isPrivate)&&e.isPrivate}function oe(t){if(!(t=>!!ne(t))(t))return{model:t};const e=v(t,void 0,re(Jt.PRIVATE)),r=se(t),i=ne(t);let a={model:t,private:void 0};if(a=r?Object.keys(t).reduce((e,r)=>{const a=i.collections;e.private=e.private||{};for(const i of a)try{e.private[i]=e.private[i]||{},e.private[i][r]=t[r]}catch(t){throw new u(`Failed to serialize private property ${r}: ${t}`)}return e},{model:{}}):Object.entries(e).reduce((e,[r,i])=>{const a=i.find(t=>""===t.key);if(a){const i=a.props.collections;e.private=e.private||{};for(const a of i)try{e.private[a]=e.private[a]||{},e.private[a][r]=t[r]}catch(t){throw new u(`Failed to serialize private property ${r}: ${t}`)}}else e.model=e.model||{},e.model[r]=t[r];return e},{}),a.model=a.model||{},a.model=J.build(a.model,t.constructor.name),a.private){const e=Object.keys(a.private);for(const r of e)a.private[r]=J.build(a.private[r],t.constructor.name)}return a}class ce extends d{constructor(t){super(t,ce.name)}}class le extends d{constructor(t){super(t,le.name)}}class de extends d{constructor(t){super(t,de.name)}}class pe extends nt{constructor(t){super(t,pe.name)}}class he extends d{constructor(t){super(t,he.name,500)}}class ue extends A{constructor(t="private data matching public hash version is not available ..."){super(ue.name,t,403)}}class ge extends A{constructor(t){super(ge.name,t,409)}}let fe=class extends lt{constructor(t){super(t)}};I([st(),F("design:type",String)],fe.prototype,"id",void 0),I([q(),ot(),F("design:type",Object)],fe.prototype,"current",void 0),fe=I([ct(x.SEQUENCE),G(),F("design:paramtypes",[Object])],fe);class ye extends dt{constructor(t,e,r){super(t);for(const t of r||[])ie(t)(fe);this.repo=X.forModel(fe,e.alias)}async current(t){if(!t)throw new he("Context is required");const{name:e,startWith:r}=this.options;try{const r=await this.repo.read(e,t);return this.parse(r.current)}catch(t){if(t instanceof y){if(void 0===r)throw new d("Starting value is not defined for a non existing sequence");try{return this.parse(r)}catch(t){throw new d(`Failed to parse initial value for sequence ${r}: ${t}`)}}throw new d(`Failed to retrieve current value for sequence ${e}: ${t}`)}}parse(t){return dt.parseValue(this.options.type,t)}async increment(t,e,r){if(!r)throw new he("Context is required");const{type:i,incrementBy:a,name:n}=this.options;let s;const o=e||a;if(o%a!==0)throw new d("Value to increment does not consider the incrementBy setting: "+a);switch(i){case"Number":s=this.parse(t)+o;break;case"BigInt":s=this.parse(t)+BigInt(o);break;default:throw new d("Should never happen")}let c;try{c=await this.repo.update(new fe({id:n,current:s}),r)}catch(t){if(!(t instanceof y))throw t;c=await this.repo.create(new fe({id:n,current:s}),r)}return c.current}async next(t){if(!t)throw new he("Context is required");const e=await this.current(t);return this.increment(e,void 0,t)}async range(t,e){if(!e)throw new he("Context is required");const r=await this.current(e),i=this.parse(this.options.incrementBy),a=await this.increment(r,this.parse(t)*i,e),n=[];for(let e=1;t>=e;e++)n.push(r+i*this.parse(e));if(n[n.length-1]!==a)throw new d("Miscalculation of range");return n}}class we extends X{constructor(t,e,r){super(t,e),this.trackedEvents=r}logFor(t){return e.for(we,{},t)}async create(t,...e){const r=e[e.length-1],i=this.logFor(r).for(this.create);i.info("Preparing model: "+JSON.stringify(t));let a,{record:n,id:s,transient:o}=this.adapter.prepare(t,this.pk,this.tableName,...e);return i.info("Creating model: "+JSON.stringify(t)),n=await this.adapter.create(this.tableName,s,n,...e),e.length&&(a=e[e.length-1]),i.info("Reverting model: "+JSON.stringify(t)),this.adapter.revert(n,this.class,this.pk,s,a&&a.get("rebuildWithTransient")?o:void 0)}async read(t,...e){const r=await this.adapter.read(this.tableName,t,new this.class,...e);return this.adapter.revert(r,this.class,this.pk,t)}async delete(t,...e){const r=await this.adapter.delete(this.tableName,t,new this.class,...e);return this.adapter.revert(r,this.class,this.pk,t)}async update(t,...e){const r=e[e.length-1],i=this.logFor(r).for(this.update);i.info("Preparing model: "+JSON.stringify(t));let a,{record:n,id:s,transient:o}=this.adapter.prepare(t,this.pk,this.tableName,...e);return i.info("Updating model: "+JSON.stringify(t)),n=await this.adapter.update(this.tableName,s,n,...e),e.length&&(a=e[e.length-1]),i.info("Reverting model: "+JSON.stringify(t)),this.adapter.revert(n,this.class,this.pk,s,a&&a.get("rebuildWithTransient")?o:void 0)}ObserverHandler(){return new Xt}async createAll(t,...e){if(!t.length)return t;const r=t.map(t=>this.adapter.prepare(t,this.pk,this.tableName,...e)),i=r.map(t=>t.id);let a=r.map(t=>t.record);const n=r.map(t=>t.transient).filter(t=>!!t);let s;return e.length&&(s=e[e.length-1]),a=await this.adapter.createAll(this.tableName,i,a,...e),a.map((t,e)=>this.adapter.revert(t,this.class,this.pk,i[e],s&&s.get("rebuildWithTransient")?n:void 0))}async updateAll(t,...e){if(!t.length)return t;const r=t.map(t=>this.adapter.prepare(t,this.pk,this.tableName,...e)),i=r.map(t=>t.transient).filter(t=>!!t);let a;return e.length&&(a=e[e.length-1]),(await this.adapter.updateAll(this.tableName,r.map(t=>t.id),r.map(t=>t.record),...e)).map((t,e)=>this.adapter.revert(t,this.class,this.pk,r[e].id,a&&a.get("rebuildWithTransient")?i:void 0))}async raw(t,e,...r){const i=r.pop(),a=await p.args("QUERY",this.class,[i],this.adapter,{});return this.adapter.raw(t,e,new this.class,...a.args)}async updateObservers(t,e,r,i,...a){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(e))return await super.updateObservers(t,e,r,i,...a)}async selectWithContext(t,e){let r;return e instanceof Qt?r.context=e:r=await p.args(h.CREATE,this.class,[e],this.adapter,this._overrides||{}),t?this.adapter.Statement(r.context).select(t).from(this.class):this.adapter.Statement(r.context).select().from(this.class)}async createAllPrefix(t,...e){const r=e[e.length-1],i=await p.args(h.CREATE,this.class,e,this.adapter,this._overrides||{});if(!t.length)return[t,...i.args];const a=X.getSequenceOptions(t[0]);let n=[];a.type?(a.name||(a.name=ye.pk(t[0])),n=await(await this.adapter.Sequence(a)).range(t.length,r)):n=t.map((t,e)=>{if(void 0===t[this.pk])throw new d("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]=n[e]),await S(this,i.context,t,h.CREATE,h.ON),t)));const s=i.context.get("ignoredValidationProperties")||[],o=(await Promise.all(t.map(t=>Promise.resolve(t.hasErrors(...s))))).reduce((t,e,r)=>(e&&(t="string"==typeof t?t+`\n - ${r}: ${e.toString()}`:` - ${r}: ${e.toString()}`),t),void 0);if(o)throw new E(o);return[t,...i.args]}async createPrefix(t,...e){const r=await super.createPrefix(t,...e),i=r[0][this.pk];try{if(await this.read(i+"",...e))throw new C(`Conflict detected while creating model with id: ${i} already exists`)}catch(t){if(404!==t.code)throw t;this.logFor(e[e.length-1]).info(`Record entry with pk ${i} does not exist, creating it now...`)}return r}}class me extends D{constructor(t,e){super(t),this.ctx=e}async raw(t){const e=await this.adapter.raw(t,!0,this.ctx),r=O(new this.fromSelector),i=r.id,a=r.props.type;return this.selectSelector?e:e.map(t=>this.processRecord(t,i,a))}build(){const t={};t[x.TABLE]={},t[x.TABLE]=X.table(this.fromSelector);const e={selector:t};if(this.selectSelector&&(e.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(pt.and(this.whereCondition,pt.attribute(x.TABLE).eq(e.selector[x.TABLE]))).selector,r=Object.keys(t);if(1===r.length&&-1!==Object.values(z).indexOf(r[0]))switch(r[0]){case z.AND:t[z.AND]=[...Object.values(t[z.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 i=r[0];return i===z.AND?t.push(...e[i]):t.push(e),t},[])],e.selector=t;break;case z.OR:{const r={};r[z.AND]=[t,...Object.entries(e.selector).map(([t,e])=>{const r={};return r[t]=e,r})],e.selector=r;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,r])=>{e.selector[t],e.selector[t]=r})}if(this.orderBySelector){e.sort=e.sort||[],e.selector=e.selector||{};const[t,r]=this.orderBySelector,i={};i[t]=r,e.sort.push(i),e.selector[t]||(e.selector[t]={},e.selector[t][j.BIGGER]=null)}return this.limitSelector&&(e.limit=this.limitSelector),this.offsetSelector&&(e.skip=this.offsetSelector),e}}class be extends M{constructor(){super()}deserialize(t,e){return JSON.parse(t)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}preSerialize(t){return Object.assign({},t)}}async function ve(t,e,r,i){const a=i[r];if(!a)return;if("object"!=typeof a){const e=ht(i,r,this.adapter.alias),n=await e.read(a,t);return await ut(t,i,r,a,n),void(i[r]=a)}e.class="string"==typeof e.class?e.class:e.class().name;const n=J.get(e.class);if(!n)throw new d("Could not find model "+e.class);const s=X.forModel(n,this.adapter.alias),o=await s.create(a,t),c=O(o).id;await ut(t,i,r,o[c],o),i[r]=o[c]}async function Ae(t,e,r,i){const a=i[r];if(!a)return;if(e.cascade.update!==gt.CASCADE)return;if("object"!=typeof a){const e=ht(i,r,this.adapter.alias),n=await e.read(a,t);return await ut(t,i,r,a,n),void(i[r]=a)}const n=await ft(i[r],t,this.adapter.alias),s=O(n).id;await ut(t,i,r,n[s],n),i[r]=n[s]}async function Se(t,e,r,i){const a=i[r];if(!a)return;if(e.cascade.update!==gt.CASCADE)return;const n=ht(i,r,this.adapter.alias);let s;s=a instanceof J?await n.delete(i[r][n.pk],t):await n.delete(i[r],t),await ut(t,i,r,s[n.pk],s)}async function Ee(t,e,r,i){const a=i[r];if(!a||!a.length)return;const n=typeof a[0];if(!a.every(t=>typeof t===n))throw new d(`Invalid operation. All elements of property ${r} must match the same type.`);const s=new Set([...a]);if("object"!==n){const e=ht(i,r,this.adapter.alias);for(const a of s){const n=await e.read(a,t);await ut(t,i,r,a,n)}return void(i[r]=[...s])}const o=O(a[0]).id,c=new Set;for(const e of a){const a=await ft(e,t,this.adapter.alias);await ut(t,i,r,a[o],a),c.add(a[o])}i[r]=[...c]}async function Ce(t,e,r,i){if(e.cascade.delete!==gt.CASCADE)return;const a=i[r];if(!a||!a.length)return;const n=typeof a[0];if(!a.every(t=>typeof t===n))throw new d(`Invalid operation. All elements of property ${r} must match the same type.`);const s="object"===n,o=s?X.forModel(a[0],this.adapter.alias):ht(i,r,this.adapter.alias),c=new Set([...s?a.map(t=>t[o.pk]):a]);for(const e of c.values()){const a=await o.delete(e,t);await ut(t,i,r,e,a)}i[r]=[...c]}async function Oe(t,e,r,i){if(!e.populate)return;const a=i[r],n=Array.isArray(a);if(void 0===a||n&&0===a.length)return;const s=await(async(e,r,i,a,n)=>{let s,o;const c=[];for(const l of a){s=yt(r.constructor.name,i,l);try{o=await e.get(s)}catch(e){const a=ht(r,i,n);if(!a)throw new d("Could not find repo");o=await a.read(l,t)}c.push(o)}return c})(t,i,r,n?a:[a],this.adapter.alias);i[r]=n?s:s[0]}async function Re(t,e,r,i){try{const e=t.get("clientIdentity");i[r]=e.getID()}catch(t){throw new tt("No User found in context. Please provide a user in the context")}}async function Ne(t,e,r,i){if(!e.type||i[r])return;let a;e.name||(e.name=bt(i,"pk"));try{a=await this.adapter.Sequence(e)}catch(t){throw new d(`Failed to instantiate Sequence ${e.name}: ${t}`)}const n=await a.next(t);Object.defineProperty(i,r,{enumerable:!0,writable:!1,configurable:!0,value:n})}class Te extends P{getClient(){throw new tt("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new be}logFor(t){return e.for(Te,{},t)}repository(){return we}constructor(t,e){super(t,Ht,e),this.Context=Qt}for(t,...e){return super.for(t,...e)}async create(t,e,r,...i){const{stub:a,logger:n}=i.pop(),s=n.for(this.create);try{s.info(`adding entry to ${t} table with pk ${e}`),r=await this.putState(a,e.toString(),r)}catch(t){throw this.parseError(t)}return r}async read(t,e,...r){const{stub:i,logger:a}=r.pop(),n=a.for(this.read);let s;try{const r=await this.readState(i,t,e.toString());if(1>r.length)throw n.debug(`No record found for id ${e} in ${t} table`),new y(`No record found for id ${e} in ${t} table`);2>r.length?(n.debug(`No record found for id ${e} in ${t} table`),s=r.pop()):s=this.mergeModels(r)}catch(t){throw this.parseError(t)}return s}async update(t,e,r,...i){const{stub:a,logger:n}=i.pop(),s=n.for(this.update);try{s.info(`updating entry to ${t} table with pk ${e}`),r=await this.putState(a,e.toString(),r)}catch(t){throw this.parseError(t)}return r}async delete(t,e,...r){const i=r.pop(),{stub:a,logger:n}=i,s=n.for(this.delete);let o;r.push(i);try{o=await this.read(t,e,...r),s.verbose(`deleting entry with pk ${e} from ${t} table`),this.deleteState(a,t,e.toString())}catch(t){throw this.parseError(t)}return o}async deleteState(t,e,r,...i){const a=t.createCompositeKey(e,[r+""]);await t.deleteState(a)}async putState(t,e,r,...i){let a;try{a=Buffer.from(Te.serializer.serialize(r))}catch(t){throw new u(`Failed to serialize record with id ${e}: ${t}`)}return await t.putState(e.toString(),a),r}async readState(t,e,r,...i){const a=t.createCompositeKey(e,[r+""]),n=[];let s=await t.getState(a);if(""===s.toString())throw new y(`Record with id ${r} not found`);try{s=Te.serializer.deserialize(s.toString())}catch(t){throw new u("Failed to parse record: "+t)}return n.push(s),n}async queryResult(t,e,...r){return await t.getQueryResult(JSON.stringify(e))}async queryResultPaginated(t,e,r=250,i,...a){return await t.getQueryResultWithPagination(JSON.stringify(e),r,i?.toString())}mergeModels(t){const e=t=>Object.entries(t).reduce((t,[e,r])=>(void 0!==r&&(t[e]=r),t),{});let r=t.pop();for(const i of t)r=Object.assign({},e(r),e(i));return r}decode(t){return Te.textDecoder.decode(t)}async flags(t,e,r,i,...a){return Object.assign(await super.flags(t,e,r,...a),{stub:i.stub,identity:i.clientIdentity,logger:this.logFor(i)})}index(t){return Promise.resolve(void 0)}async resultIterator(t,e,r=!1){const i=[];let a=await e.next();for(;!a.done;){if(a.value&&a.value.value.toString()){let e={};if(t.debug(a.value.value.toString("utf8")),r){e.TxId=a.value.txId,e.Timestamp=a.value.timestamp;try{e.Value=JSON.parse(a.value.value.toString("utf8"))}catch(r){t.error(r),e.Value=a.value.value.toString("utf8")}}else try{e=JSON.parse(a.value.value.toString("utf8"))}catch(r){t.error(r),e=a.value.value.toString("utf8")}i.push(e)}a=await e.next()}return t.debug(`Closing iterator after ${i.length} results`),e.close(),i}async raw(t,e,...r){const{stub:i,logger:a}=r.pop(),n=a.for(this.raw),{skip:s,limit:o}=t;let c;o||s?(delete t.limit,delete t.skip,n.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${s}`),c=(await this.queryResultPaginated(i,t,o||250,s?.toString())).iterator):(n.debug("Retrieving iterator"),c=await this.queryResult(i,t)),n.debug("Iterator acquired");const l=await this.resultIterator(n,c);return n.debug("returning {0} results",""+(Array.isArray(l)?l.length:1)),l}Statement(t){if(!t)throw new he("Context is required");return new me(this,t)}async Sequence(t){return new ye(t,this)}async createAll(t,e,r,...i){if(e.length!==r.length)throw new d("Ids and models must have the same length");const{logger:a}=i[i.length-1],n=a.for(this.createAll);return n.info(`Creating ${e.length} entries ${t} table`),n.debug("pks: "+e),Promise.all(e.map(async(e,a)=>this.create(t,e,r[a],...i)))}async updateAll(t,e,r,...i){if(e.length!==r.length)throw new d("Ids and models must have the same length");const{logger:a}=i[i.length-1],n=a.for(this.createAll);return n.info(`Updating ${e.length} entries ${t} table`),n.debug("pks: "+e),Promise.all(e.map(async(e,a)=>this.update(t,e,r[a],...i)))}prepare(t,e,...r){const{stub:i,logger:a}=r.pop(),n=r.shift(),s=a.for(this.prepare),o=f(t),c=Object.entries(o.model).reduce((e,[r,i])=>{if(void 0===i)return e;const a=X.column(t,r);if(this.isReserved(a))throw new d(`Property name ${a} is reserved`);return e[a]=i,e},{});return t[rt.METADATA]&&(s.silly("Passing along persistence metadata for "+t[rt.METADATA]),Object.defineProperty(c,rt.METADATA,{enumerable:!1,writable:!1,configurable:!0,value:t[rt.METADATA]})),s.info(`Preparing record for ${n} table with pk ${t[e]}`),{record:c,id:i.createCompositeKey(n,[t[e]+""]),transient:o.transient}}revert(t,e,r,i,a){const n=this.log.for(this.revert),s={};s[r]=i;const o="string"==typeof e?J.build(s,e):new e(s);n.silly(`Rebuilding model ${o.constructor.name} id ${i}`);const c=t[rt.METADATA],l=Object.keys(o).reduce((e,r)=>(e[r]=t[X.column(e,r)],e),o);return a&&(n.verbose("re-adding transient properties: "+Object.keys(a).join(", ")),Object.entries(a).forEach(([t,e])=>{if(t in l&&void 0!==l[t])throw new d(`Transient property ${t} already exists on model ${o.constructor.name}. should be impossible`);l[t]=e})),c&&(n.silly(`Passing along ${this.flavour} persistence metadata for ${o.constructor.name} id ${i}: ${c}`),Object.defineProperty(l,rt.METADATA,{enumerable:!1,configurable:!1,writable:!1,value:c})),l}createPrefix(t,e,r,...i){const a=i.pop(),n={};return n[x.TABLE]=t,Object.assign(n,r),[t,e,n,a]}updatePrefix(t,e,r,...i){const a=i.pop(),n={};return n[x.TABLE]=t,Object.assign(n,r),[t,e,n,a]}createAllPrefix(t,e,r,...i){if(e.length!==r.length)throw new d("Ids and models must have the same length");const a=i.pop(),n=e.map((e,i)=>{const a={};return a[x.TABLE]=t,Object.assign(a,r[i]),a});return[t,e,n,a]}updateAllPrefix(t,e,r,...i){if(e.length!==r.length)throw new d("Ids and models must have the same length");const a=i.pop(),n=e.map((e,i)=>{const a={};return a[x.TABLE]=t,Object.assign(a,r[i]),a});return[t,e,n,a]}static decoration(){super.decoration();const t=X.key(rt.CREATED_BY),e=X.key(rt.UPDATED_BY);U.flavouredAs(Ht).for(t).define(b(Re),H(t,{})).apply(),U.flavouredAs(Ht).for(e).define(R(Re),H(e,{})).apply();const r=X.key(N.ID);U.flavouredAs(Ht).for(r).define(ot([wt.ASC,wt.DSC]),q(),m(),H(r,mt),b(Ne,mt)).apply();const i=et.key(rt.COLUMN);U.flavouredAs(Ht).for(i).extend(Et()).apply();const a=et.key(rt.TABLE);U.flavouredAs(Ht).for(a).extend(t=>Ct()(t)).apply();const n=X.key(rt.ONE_TO_ONE);U.flavouredAs(Ht).for(n).define({decorator:(t,e,r,i,a)=>{const s={class:t.name?t.name:t,cascade:e,populate:r};return i&&(s.joinTable=i),a&&(s.name=a),Tt(Y(rt.RELATIONS),V([t.name?t.name:t,String.name,Number.name,BigInt.name]),b(ve,s),T(Ae,s),$(Se,s),k(Oe,s),H(n,s))}}).apply();const s=X.key(rt.ONE_TO_MANY);U.for(s).define({decorator:(t,e,r,i,a)=>{const n={class:t.name?t.name:t,cascade:e,populate:r};return i&&(n.joinTable=i),a&&(n.name=a),Tt(Y(rt.RELATIONS),W([t,String,Number]),b(Ee,n),T(vt,n),$(Ce,n),k(Oe,n),H(s,n))}}).apply()}}Te.decoration(),et.setCurrent(Ht);class $e extends M{constructor(){super()}deserialize(t){return super.deserialize(t)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}class ke extends Te{constructor(t,e,r){super(t,e),this.collections=r,this.collections=r||[]}async Sequence(t){return new ye(t,this,this.collections)}async read(t,e,r,...i){const{stub:a,logger:n}=i.pop(),s=n.for(this.read);let o;try{const i=await this.readState(a,t,e.toString(),r);if(1>i.length)throw s.debug(`No record found for id ${e} in ${t} table`),new y(`No record found for id ${e} in ${t} table`);2>i.length?(s.debug(`No record found for id ${e} in ${t} table`),o=i.pop()):o=this.mergeModels(i)}catch(t){throw this.parseError(t)}return o}async delete(t,e,r,...i){const a=i.pop(),{stub:n,logger:s}=a,o=s.for(this.delete);let c;i.push(a);try{c=await this.read(t,e,r,...i),o.verbose(`deleting entry with pk ${e} from ${t} table`),this.deleteState(n,t,e.toString(),r)}catch(t){throw this.parseError(t)}return c}prepare(t,e,...r){const{stub:i,logger:a}=r.pop(),n=r.shift(),s=a.for(this.prepare),o=((t,e)=>{const r=f(e),i=oe(e),a=e=>Object.entries(e).reduce((r,[i,a])=>{if(void 0===a)return r;const n=X.column(e,i);if(t.isReserved(n))throw new d(`Property name ${n} is reserved`);return r[n]=a,r},{});if(i.private){const t=Object.keys(i.private);for(const e of t)i.private[e]=a(i.private[e])}return{model:r.model,transient:r.transient,privateData:i.private,result:a(r.model)}})(this,t);return s.info(`Preparing record for ${n} table with pk ${t[e]}`),{record:o.privateData,id:i.createCompositeKey(n,[t[e]+""]),transient:o.transient}}updatePrefix(t,e,r,...i){const a=i.pop(),n=Object.keys(r);for(const e of n)r[e][x.TABLE]=t;return[t,e,r,a]}async putState(t,e,r,...i){const a=Object.keys(r);let n,s={};for(const i of a){s=r[i];try{n=Buffer.from(Te.serializer.serialize(r[i]))}catch(t){throw new u(`Failed to serialize record with id ${e}: ${t}`)}await t.putPrivateData(i,e.toString(),n)}return s}async readState(t,e,r,i,...a){const n=t.createCompositeKey(e,[r+""]),s=oe(i),o=Object.keys(s.private),c=[];for(const e of o)try{let i=await t.getPrivateData(e,n);if(""===i.toString())throw new y(`Entry with id ${r} doesn't exist...`);try{i=Te.serializer.deserialize(i.toString())}catch(t){throw new u("Failed to parse private data: "+t)}c.push(i)}catch(t){if(ae.test(t.message))throw new ue(t);throw t}return c}async deleteState(t,e,r,i,...a){const n=t.createCompositeKey(e,[r+""]),s=oe(i),o=Object.keys(s.private);for(const e of o)await t.deletePrivateData(e,n)}async queryResult(t,e,r){const i=oe(r).private,a=Object.keys(i)[0]||"";return(await t.getPrivateDataQueryResult(a,JSON.stringify(e))).iterator}async queryResultPaginated(t,e,r=250,i=void 0,a){const n=oe(a).private,s=Object.keys(n)[0]||"",o=await t.getPrivateDataQueryResult(s,JSON.stringify(e)),c=[];let l=0,d=!i,p=null;for(;;){const t=await o.next();if(t.value&&t.value.value.toString()){const e=t.value.key,a=t.value.value.toString("utf8");if(!d){e===i?.toString()&&(d=!0);continue}if(c.push({Key:e,Record:JSON.parse(a)}),p=e,l++,l>=r)return await o.close(),{iterator:c,metadata:{fetchedRecordsCount:c.length,bookmark:p}}}if(t.done)return await o.close(),{iterator:c,metadata:{fetchedRecordsCount:c.length,bookmark:""}}}}async raw(t,e,...r){const{stub:i,logger:a}=r.pop(),n=a.for(this.raw),{skip:s,limit:o}=t,c=r.shift();let l;o||s?(delete t.limit,delete t.skip,n.debug(`Retrieving paginated iterator: limit: ${o}/ skip: ${s}`),l=(await this.queryResultPaginated(i,t,o||250,s?.toString(),c)).iterator):(n.debug("Retrieving iterator"),l=await this.queryResult(i,t,c)),n.debug("Iterator acquired");const d=await this.resultIterator(n,l);return n.debug("returning {0} results",""+(Array.isArray(d)?d.length:1)),d}}class Ie extends Ot{static{this.serializer=new $e}constructor(t,e){super(t),this.clazz=e,this.initialized=!1,Ie.adapter=this.getAdapter(e),this.repo=X.forModel(e,Ie.adapter.alias)}getAdapter(t){const e=new t;if(se(e)){const t=oe(e),r=Object.keys(t.private);return new ke(void 0,"fabric-private-data-adapter",r)}return new Te(void 0,"fabric-public-data-adapter")}logFor(t){return e.for(Ie.name,{},t)}async create(t,e,...r){const i=this.logFor(t).for(this.create);"string"==typeof e&&(e=this.deserialize(e)),i.info("Creating model: "+JSON.stringify(e));const a=this.getTransientData(t);return i.info("Merging transient data..."),e=this.repo.merge(e,a),this.repo.create(e,t,...r)}async read(t,e,...r){return this.logFor(t).for(this.read).info(`reading entry with pk ${e} `),this.repo.read(e,t,...r)}getTransientData(t){const e=t.stub.getTransient();let r={};return e.has(this.repo.tableName)&&(r=JSON.parse(e.get(this.repo.tableName)?.toString("utf8"))),r}async update(t,e,...r){const i=this.logFor(t).for(this.update);"string"==typeof e&&(e=this.deserialize(e)),i.info("Updating model: "+JSON.stringify(e));const a=this.getTransientData(t);return i.info("Merging transient data..."),e=this.repo.merge(e,a),this.repo.update(e,t,...r)}async delete(t,e,...r){return this.logFor(t).for(this.delete).info(`deleting entry with pk ${e} `),this.repo.delete(e+"",t,...r)}async deleteAll(t,e,...r){return"string"==typeof e&&(e=JSON.parse(e)),this.repo.deleteAll(e,t,...r)}async readAll(t,e,...r){return"string"==typeof e&&(e=JSON.parse(e)),this.repo.readAll(e,t,...r)}async updateAll(t,e,...r){const i=this.logFor(t).for(this.updateAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),i.info(`updating ${e.length} entries to the table`),this.repo.updateAll(e,t,...r)}async raw(t,e,r,...i){return"string"==typeof e&&(e=JSON.parse(e)),this.repo.raw(e,r,t,...i)}serialize(t){return Ie.serializer.serialize(t)}deserialize(t){return Ie.serializer.deserialize(t)}async init(t){const e=this.logFor(t).for(this.init);e.info("Running contract initialization..."),this.initialized=!0,e.info("Contract initialization completed.")}async healthcheck(t){return this.logFor(t).for(this.healthcheck).info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(t,e,...r){const i=this.logFor(t).for(this.createAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),i.info(`adding ${e.length} entries to the table`),this.repo.createAll(e,t,...r)}}class Fe extends Ie{constructor(t,e){super(t,e)}logFor(t){return e.for(Fe,{},t)}async create(t,e){const r=this.logFor(t).for(this.create);r.info("Creating model: "+e);const i=this.deserialize(e);return r.info("Model deserialized: "+JSON.stringify(i)),this.serialize(await super.create(t,i))}async read(t,e){return this.logFor(t).for(this.read).info("Reading id: "+e),this.serialize(await super.read(t,e))}async update(t,e){return this.logFor(t).for(this.update).info("Updating model: "+e),this.serialize(await super.update(t,e))}async delete(t,e){return this.logFor(t).for(this.delete).info("Deleting id: "+e),this.serialize(await super.delete(t,e))}async deleteAll(t,e){const r=JSON.parse(e);return this.logFor(t).for(this.deleteAll).info(`deleting ${r.length} entries from the table`),JSON.stringify((await super.deleteAll(t,r)).map(t=>this.serialize(t)))}async readAll(t,e){const r=JSON.parse(e);return this.logFor(t).for(this.readAll).info(`reading ${r.length} entries from the table`),JSON.stringify((await super.readAll(t,r)).map(t=>this.serialize(t)))}async updateAll(t,e){const r=this.logFor(t).for(this.updateAll),i=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return r.info(`Updating ${i.length} entries to the table`),JSON.stringify((await super.updateAll(t,i)).map(t=>this.serialize(t)))}async raw(t,e,r){const i=JSON.parse(e);return super.raw(t,i,r)}async init(t){await super.init(t)}async healthcheck(t){return JSON.stringify(await super.healthcheck(t))}async createAll(t,e){const r=this.logFor(t).for(this.createAll),i=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return r.info(`Adding ${i.length} entries to the table`),JSON.stringify((await super.createAll(t,i)).map(t=>this.serialize(t)))}}function Pe(t,e){const r=t+e;if(t!==r-e||e!==r-t)throw new ce(`Addition overflow: ${t} + ${e}`);return r}function xe(t,e){const r=t-e;if(t!==r+e||e!==t-r)throw new ce(`Subtraction overflow: ${t} - ${e}`);return r}I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt,String]),F("design:returntype",Promise)],Fe.prototype,"create",null),I([Rt(!1),F("design:type",Function),F("design:paramtypes",[Nt,String]),F("design:returntype",Promise)],Fe.prototype,"read",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt,String]),F("design:returntype",Promise)],Fe.prototype,"update",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt,String]),F("design:returntype",Promise)],Fe.prototype,"delete",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt,String]),F("design:returntype",Promise)],Fe.prototype,"deleteAll",null),I([Rt(!1),F("design:type",Function),F("design:paramtypes",[Nt,String]),F("design:returntype",Promise)],Fe.prototype,"readAll",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt,String]),F("design:returntype",Promise)],Fe.prototype,"updateAll",null),I([Rt(!1),F("design:type",Function),F("design:paramtypes",[Nt,String,Boolean]),F("design:returntype",Promise)],Fe.prototype,"raw",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt]),F("design:returntype",Promise)],Fe.prototype,"init",null),I([Rt(!1),F("design:type",Function),F("design:paramtypes",[Nt]),F("design:returntype",Promise)],Fe.prototype,"healthcheck",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt,String]),F("design:returntype",Promise)],Fe.prototype,"createAll",null);let De=class extends lt{constructor(t){super(t)}};I([st({type:"String"}),F("design:type",String)],De.prototype,"name",void 0),I([At(),q(),F("design:type",String)],De.prototype,"owner",void 0),I([At(),q(),F("design:type",String)],De.prototype,"symbol",void 0),I([At(),q(),F("design:type",Number)],De.prototype,"decimals",void 0),De=I([ct("erc20_tokens"),G(),F("design:paramtypes",[Object])],De);let ze=class extends lt{constructor(t){super(t)}};I([st({type:"String"}),F("design:type",String)],ze.prototype,"id",void 0),I([At(),q(),F("design:type",String)],ze.prototype,"token",void 0),I([At(),q(),F("design:type",Number)],ze.prototype,"balance",void 0),I([At(),F("design:type",String)],ze.prototype,"captive",void 0),ze=I([ct("erc20_wallets"),G(),F("design:paramtypes",[Object])],ze);let je=class extends lt{constructor(t){super(t)}};var Be;I([st({type:"String"}),At(),q(),F("design:type",String)],je.prototype,"owner",void 0),I([At(),q(),F("design:type",String)],je.prototype,"spender",void 0),I([At(),q(),F("design:type",Number)],je.prototype,"value",void 0),je=I([ct("erc20_allowances"),G(),F("design:paramtypes",[Object])],je),(t=>{t.TRANSFER=" Transfer",t.APPROVAL="Approval"})(Be||(Be={}));class Le extends Ie{constructor(t){super(t,ze),Le.adapter=Le.adapter||new Te,this.walletRepository=we.forModel(ze,Le.adapter.alias),this.tokenRepository=we.forModel(De,Le.adapter.alias),this.allowanceRepository=we.forModel(je,Le.adapter.alias)}async TokenName(t){await this.CheckInitialized(t);const e=await this.tokenRepository.selectWithContext(void 0,t);return(await e.execute())[0].name}async Symbol(t){await this.CheckInitialized(t);const e=await this.tokenRepository.selectWithContext(void 0,t);return(await e.execute())[0].symbol}async Decimals(t){await this.CheckInitialized(t);const e=await this.tokenRepository.selectWithContext(void 0,t);return(await e.execute())[0].decimals}async TotalSupply(t){await this.CheckInitialized(t);const e=await this.walletRepository.selectWithContext(void 0,t),r=await e.execute();if(0==r.length)throw new y(`The token ${this.getName()} does not exist`);let i=0;return r.forEach(t=>{i+=t.balance}),i}async BalanceOf(t,e){return await this.CheckInitialized(t),(await this.walletRepository.read(e,t)).balance}async Transfer(t,e,r){await this.CheckInitialized(t);const i=t.clientIdentity.getID();if(!await this._transfer(t,i,e,r))throw new d("Failed to transfer");return!0}async TransferFrom(t,e,r,i){await this.CheckInitialized(t);const a=t.clientIdentity.getID(),n=await this._getAllowance(t,e,a);if(!n||0>n.value)throw new de(`spender ${a} has no allowance from ${e}`);const s=n.value;if(i>s)throw new le("The spender does not have enough allowance to spend.");const o=xe(s,i),c=Object.assign({},n,{value:o});if(await this.allowanceRepository.update(c,t),!await this._transfer(t,e,r,i))throw new d("Failed to transfer");return!0}async _transfer(t,e,r,i){const a=this.logFor(t).for(this._transfer);if(e===r)throw new nt("cannot transfer to and from same client account");if(0>i)throw new le("transfer amount cannot be negative");const n=await this.walletRepository.read(e,t),s=n.balance;if(i>s)throw new le(`client account ${e} has insufficient funds.`);let o,c=!1;try{o=await this.walletRepository.read(r,t)}catch(e){if(!(e instanceof A))throw new d(e);if(404!==e.code)throw new d(e.message);o=new ze({id:r,balance:0,token:await this.TokenName(t)}),c=!0}const l=o.balance,p=xe(s,i),h=Pe(l,i),u=Object.assign({},n,{balance:p});await this.walletRepository.update(u,t);const g=Object.assign({},o,{balance:h});c?await this.walletRepository.create(g,t):await this.walletRepository.update(g,t);const f={from:e,to:r,value:i};return this.repo.ObserverHandler().updateObservers(a,"",Be.TRANSFER,"",t,"",f),!0}async Approve(t,e,r){await this.CheckInitialized(t);const i=this.logFor(t).for(this.Approve),a=t.clientIdentity.getID();let n=await this._getAllowance(t,a,e);if((await this.walletRepository.read(a,t)).balance<r)throw new le(`client account ${a} has insufficient funds.`);n?(n.value=r,await this.allowanceRepository.update(n,t)):(n=new je({owner:a,spender:e,value:r}),await this.allowanceRepository.create(n,t));const s={owner:a,spender:e,value:r};return this.repo.ObserverHandler().updateObservers(i,"",Be.APPROVAL,"",t,"",s),!0}async Allowance(t,e,r){await this.CheckInitialized(t);const i=await this._getAllowance(t,e,r);if(!i)throw new de(`spender ${r} has no allowance from ${e}`);return i.value}async _getAllowance(t,e,r){const i=pt.and(pt.attribute("owner").eq(e),pt.attribute("spender").eq(r)),a=await this.allowanceRepository.selectWithContext(void 0,t),n=await a.where(i).execute();return n?.[0]}async Initialize(t,e){const r=await this.tokenRepository.selectWithContext(void 0,t);if((await r.execute()).length>0)throw new nt("contract options are already set, client is not authorized to change them");return e.owner=t.clientIdentity.getID(),await this.tokenRepository.create(e,t),!0}async CheckInitialized(t){const e=await this.tokenRepository.selectWithContext(void 0,t);if(0==(await e.execute()).length)throw new ge("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(t,e){await this.CheckInitialized(t);const r=this.logFor(t).for(this.Mint),i=t.clientIdentity.getID();if(0>=e)throw new E("mint amount must be a positive integer");let a;try{a=await this.walletRepository.read(i,t);const r=Pe(a.balance,e),n=Object.assign({},a,{balance:r});await this.walletRepository.update(n,t)}catch(r){if(!(r instanceof A))throw new d(r);if(404!==r.code)throw new d(r.message);{const r=new ze({id:i,balance:e,token:await this.TokenName(t)});await this.walletRepository.create(r,t)}}const n={from:"0x0",to:i,value:e};this.repo.ObserverHandler().updateObservers(r,"",Be.TRANSFER,"",t,"",n)}async Burn(t,e){await this.CheckInitialized(t);const r=this.logFor(t).for(this.Burn),i=t.clientIdentity.getID(),a=await this.walletRepository.read(i,t),n=a.balance;if(e>n)throw new le("Minter has insufficient funds.");const s=xe(n,e),o=Object.assign({},a,{balance:s});await this.walletRepository.update(o,t),r.info(e+" tokens were burned");const c={from:i,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(r,"",Be.TRANSFER,"",t,"",c)}async BurnFrom(t,e,r){await this.CheckInitialized(t);const i=this.logFor(t).for(this.BurnFrom),a=await this.walletRepository.read(e,t),n=a.balance;if(r>n)throw new le(e+" has insufficient funds.");const s=xe(n,r),o=Object.assign({},a,{balance:s});await this.walletRepository.update(o,t),i.info(`${r} tokens were berned from ${e}`);const c={from:e,to:"0x0",value:r};this.repo.ObserverHandler().updateObservers(i,"",Be.TRANSFER,"",t,"",c)}async ClientAccountBalance(t){await this.CheckInitialized(t);const e=t.clientIdentity.getID(),r=await this.walletRepository.read(e,t);if(!r)throw new le(`The account ${e} does not exist`);return r.balance}async ClientAccountID(t){return await this.CheckInitialized(t),t.clientIdentity.getID()}}I([Rt(!1),F("design:type",Function),F("design:paramtypes",[Nt]),F("design:returntype",Promise)],Le.prototype,"TokenName",null),I([Rt(!1),F("design:type",Function),F("design:paramtypes",[Nt]),F("design:returntype",Promise)],Le.prototype,"Symbol",null),I([Rt(!1),F("design:type",Function),F("design:paramtypes",[Nt]),F("design:returntype",Promise)],Le.prototype,"Decimals",null),I([Rt(!1),F("design:type",Function),F("design:paramtypes",[Nt]),F("design:returntype",Promise)],Le.prototype,"TotalSupply",null),I([Rt(!1),F("design:type",Function),F("design:paramtypes",[Nt,String]),F("design:returntype",Promise)],Le.prototype,"BalanceOf",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt,String,Number]),F("design:returntype",Promise)],Le.prototype,"Transfer",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt,String,String,Number]),F("design:returntype",Promise)],Le.prototype,"TransferFrom",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt,String,Number]),F("design:returntype",Promise)],Le.prototype,"Approve",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt,String,String]),F("design:returntype",Promise)],Le.prototype,"Allowance",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt,De]),F("design:returntype",Promise)],Le.prototype,"Initialize",null),I([Rt(!1),F("design:type",Function),F("design:paramtypes",[Nt]),F("design:returntype",Promise)],Le.prototype,"CheckInitialized",null),I([Zt(),Rt(),F("design:type",Function),F("design:paramtypes",[Nt,Number]),F("design:returntype",Promise)],Le.prototype,"Mint",null),I([Zt(),Rt(),F("design:type",Function),F("design:paramtypes",[Nt,Number]),F("design:returntype",Promise)],Le.prototype,"Burn",null),I([Zt(),Rt(),F("design:type",Function),F("design:paramtypes",[Nt,String,Number]),F("design:returntype",Promise)],Le.prototype,"BurnFrom",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt]),F("design:returntype",Promise)],Le.prototype,"ClientAccountBalance",null),I([Rt(),F("design:type",Function),F("design:paramtypes",[Nt]),F("design:returntype",Promise)],Le.prototype,"ClientAccountID",null);const Me=[Le];class Ke extends a{constructor(t,e,r){super(t,e),this.logger=r?r.logger:new a(t,e)}log(t,e,r){if(n[this.config("level")]<n[t])return;let i;switch(t){case s.info:i=this.logger.info;break;case s.verbose:i=this.logger.verbose;break;case s.debug:i=this.logger.debug;break;case s.error:i=this.logger.error;break;case s.silly:i=this.logger.silly;break;default:throw Error("Invalid log level")}i.call(this.logger,this.createLog(t,e,r))}}e.setFactory((t,e,r)=>new Ke(t,e||{},r));class _e{static{this.logger=e.for(_e.name)}constructor(){}static async contentOfLoadFile(t,e){return t instanceof Uint8Array||t.match(/-----BEGIN (CERTIFICATE|KEY|PRIVATE KEY)-----.+?-----END \1-----$/gms)?t:await e(t)}static async readFile(e){return"string"!=typeof e?e:await(async e=>{const{promises:r}=await t(import("fs"));return await r.readFile(e)})(e)}static async getCAUser(t,e,r,i){this.logger.debug(Q("Creating CA {0} user {1} with certificate {2}",i,t,r));const a=new o(t),n=o.newCryptoSuite();a.setCryptoSuite(n);const s=n.createKeyFromRaw(e);return await a.setEnrollment(s,r,i),a}static async getIdentity(e,r){return{mspId:e,credentials:await this.contentOfLoadFile(r,async e=>{const{promises:r}=await t(import("fs")),i=await this.getFirstDirFileName(e);return await r.readFile(i)})}}static async getFirstDirFileName(e){const{promises:r}=await t(import("fs")),{join:i}=await t(import("path"));return i(e,(await r.readdir(e))[0])}static async getFirstDirFileNameContent(e){const{promises:r}=await t(import("fs")),{join:i}=await t(import("path")),a=await r.readdir(e);return(await r.readFile(i(e,a[0]))).toString()}static async getFileContent(e){const{promises:r}=await t(import("fs"));return(await r.readFile(e)).toString()}static async getSigner(e){const r=await this.contentOfLoadFile(e,async e=>{const{promises:r}=await t(import("fs")),i=await this.getFirstDirFileName(e);return await r.readFile(i)}),i=await this.extractPrivateKey(r),a=i[Object.getOwnPropertySymbols(i)[0]];return c.newPrivateKeySigner(a)}static async extractPrivateKey(e){let r;if(globalThis.window&&globalThis.window.Crypto)r=globalThis.Crypto.subtle;else{const e=await t(import("crypto"));r=e.subtle||e.webcrypto.subtle}if(!r)throw Error("Could not load SubtleCrypto module");const i=e.toString("utf8").replace("-----BEGIN PRIVATE KEY-----","").replaceAll("\n","").replace("-----END PRIVATE KEY-----",""),a=(t=>{const e=new ArrayBuffer(t.length),r=new Uint8Array(e);for(let e=0,i=t.length;i>e;e++)r[e]=t.charCodeAt(e);return e})(Buffer.from(i,"base64").toString("binary"));return await r.importKey("pkcs8",a,{name:"ECDSA",namedCurve:"P-256"},!0,["sign"])}}let Je=class extends lt{constructor(t){super(t),this.id=void 0,this.certificate=void 0,this.rootCertificate=void 0,this.privateKey=void 0}};I([st(),F("design:type",String)],Je.prototype,"id",void 0),I([q(),F("design:type",String)],Je.prototype,"certificate",void 0),I([q(),F("design:type",String)],Je.prototype,"rootCertificate",void 0),I([q(),F("design:type",String)],Je.prototype,"privateKey",void 0),Je=I([G(),F("design:paramtypes",[Object])],Je);let Ue=class extends lt{constructor(t){super(t),this.id=void 0,this.credentials=void 0,this.mspId=void 0,this.type=Ut.X509}};I([st(),F("design:type",String)],Ue.prototype,"id",void 0),I([St(Je,{update:gt.CASCADE,delete:gt.CASCADE}),F("design:type",Je)],Ue.prototype,"credentials",void 0),I([q(),F("design:type",String)],Ue.prototype,"mspId",void 0),I([q(),F("design:type",String)],Ue.prototype,"type",void 0),Ue=I([G(),F("design:paramtypes",[Object])],Ue);const He=new It;var qe,Ge,Ye,Ve;kt.cryptoProvider.set(He),(t=>{t.BASE2="01",t.BASE8="01234567",t.BASE11="0123456789a",t.BASE16="0123456789abcdef",t.BASE32="0123456789ABCDEFGHJKMNPQRSTVWXYZ",t.BASE32_Z="ybndrfg8ejkmcpqxot1uwisza345h769",t.BASE36="0123456789abcdefghijklmnopqrstuvwxyz",t.BASE58="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",t.BASE62="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",t.BASE64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t.BASE67="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.!~"})(qe||(qe={})),(t=>{t.HASH="SHA-256",t[t.ITERATIONS=1e3]="ITERATIONS",t[t.KEYLENGTH=48]="KEYLENGTH",t[t.DERIVED_IV_LENGTH=16]="DERIVED_IV_LENGTH",t[t.DERIVED_KEY_LENGTH=32]="DERIVED_KEY_LENGTH",t.ALGORYTHM="AES-GCM",t.KEY_ALGORYTHM="PBKDF2"})(Ge||(Ge={}));class We{constructor(t){if(this.alphabet=t,this.baseMap=new Uint8Array(256),this.alphabet.length>=255)throw Error("Alphabet too long");for(let t=0;t<this.baseMap.length;t++)this.baseMap[t]=255;for(let e=0;e<t.length;e++){const r=t.charAt(e),i=r.charCodeAt(0);if(255!==this.baseMap[i])throw Error(r+" is ambiguous");this.baseMap[i]=e}this.base=this.alphabet.length,this.leader=this.alphabet.charAt(0),this.factor=Math.log(this.base)/Math.log(256),this.iFactor=Math.log(256)/Math.log(this.base)}encode(t){if("string"==typeof t?t=Buffer.from(t):ArrayBuffer.isView(t)?t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):Array.isArray(t)&&(t=Uint8Array.from(t)),0===t.length)return"";let e=0,r=0,i=0;const a=t.length;for(;i!==a&&0===t[i];)i++,e++;const n=(a-i)*this.iFactor+1>>>0,s=new Uint8Array(n);for(;i!==a;){let e=t[i],a=0;for(let t=n-1;(0!==e||r>a)&&-1!==t;t--,a++)e+=256*s[t]>>>0,s[t]=e%this.base>>>0,e=e/this.base>>>0;if(0!==e)throw Error("Non-zero carry");r=a,i++}let o=n-r;for(;o!==n&&0===s[o];)o++;let c=this.leader.repeat(e);for(;n>o;++o)c+=this.alphabet.charAt(s[o]);return c}decodeUnsafe(t){if(0===t.length)return new Uint8Array(0);let e=0,r=0,i=0;for(;t[e]===this.leader;)r++,e++;const a=(t.length-e)*this.factor+1>>>0,n=new Uint8Array(a);for(;t[e];){let r=this.baseMap[t.charCodeAt(e)];if(255===r)return;let s=0;for(let t=a-1;(0!==r||i>s)&&-1!==t;t--,s++)r+=this.base*n[t]>>>0,n[t]=r%256>>>0,r=r/256>>>0;if(0!==r)throw Error("Non-zero carry");i=s,e++}let s=a-i;for(;s!==a&&0===n[s];)s++;const o=new Uint8Array(r+(a-s));let c=r;for(;s!==a;)o[c++]=n[s++];return o}decode(t){const e=this.decodeUnsafe(t);if(e)return e;throw Error("Non-base"+this.base+" character")}}class Qe{static{this.b58encoder=new We(qe.BASE58)}static{this.logger=e.for(Qe.name)}constructor(){}static fabricIdFromCertificate(t){this.logger.debug(Q("Parsing certificate: {0}",t));const e=new kt.X509Certificate(t),{subject:r,issuer:i}=e;return this.logger.debug(Q("Certificate parsed with subject {0} and issuer {1}",r,i)),`x509::/${r.replaceAll(", ","/")}::/${i.replaceAll(", ","/")}`}static encode(t){return this.b58encoder.encode(t)}static decode(t){const e=this.b58encoder.decode(t);return(new TextDecoder).decode(e)}static stringToArrayBuffer(t){const e=new ArrayBuffer(t.length),r=new Uint8Array(e);for(let e=0,i=t.length;i>e;e++)r[e]=t.charCodeAt(e);return e}static async extractKey(t,e,r){const i=He.subtle,a=e.toString("utf8").replace(RegExp(`-----BEGIN (${t.toUpperCase()} KEY|CERTIFICATE)-----`),"").replaceAll("\n","").replace(RegExp(`-----END (${t.toUpperCase()} KEY|CERTIFICATE)-----`),""),n=Buffer.from(a,"base64").toString("binary"),s=this.stringToArrayBuffer(n);return await i.importKey("pkcs8",s,{name:"ECDSA",namedCurve:"P-256"},!0,r||["sign"])}static async extractPrivateKey(t,e){return this.extractKey("private",t,e)}static async extractPublicKey(t,e){return this.extractKey("public",t,e)}static async sign(t,e){const r=await this.extractPrivateKey(t),i=await He.subtle.sign({name:"ECDSA",hash:"SHA-256"},r,e);return Array.from(new Uint8Array(i)).map(t=>t.toString(16).padStart(2,"0")).join("")}static async verify(t,e,r){const i=new kt.X509Certificate(t),a=await i.publicKey.export();return e="string"==typeof e?Buffer.from(e,"hex"):e,r="string"==typeof r?Buffer.from(r):r,He.subtle.verify({name:"ECDSA",hash:"SHA-256"},a,e,r)}static async encrypt(t,e){const r=new kt.X509Certificate(t),i=await r.publicKey.export();e="string"==typeof e?Buffer.from(e):e;const a=await this.getSubtleCrypto().encrypt({name:"ECDSA"},i,e);return Array.from(new Uint8Array(a)).map(t=>t.toString(16).padStart(2,"0")).join("")}static getSubtleCrypto(){return r()?globalThis.window.crypto.subtle:He.subtle}static async decrypt(t,e){const r=await this.extractPrivateKey(t);return e="string"==typeof e?Buffer.from(e,"hex"):e,this.getSubtleCrypto().decrypt({name:"ECDSA"},r,e)}static async getMaster(t){const e=new TextEncoder;if(void 0===t){const r=He.randomUUID();t=e.encode(r)}return{key:await this.getSubtleCrypto().importKey("raw",t,Ge.KEY_ALGORYTHM,!1,["deriveBits"]),iv:t}}static async getDerivationKey(t,e){const r=(new TextEncoder).encode(t),i=await this.getSubtleCrypto().digest("SHA-256",r),a={name:Ge.KEY_ALGORYTHM,hash:Ge.HASH,salt:i,iterations:Ge.ITERATIONS},n=await this.getSubtleCrypto().deriveBits(a,e,8*Ge.KEYLENGTH);return this.getKey(n)}static async getKey(t){const e=t.slice(0,32),r=t.slice(32);return{key:await this.getSubtleCrypto().importKey("raw",e,{name:Ge.ALGORYTHM},!1,["encrypt","decrypt"]),iv:r}}static async encryptPin(t,e){const r=(new TextEncoder).encode(t);return await this.getSubtleCrypto().encrypt({name:Ge.ALGORYTHM,iv:e.iv},e.key,r)}static async decryptPin(t,e){const r=new TextDecoder,i=await this.getSubtleCrypto().decrypt({name:Ge.ALGORYTHM,iv:e.iv},e.key,t);return r.decode(i)}}class Xe{constructor(){}get log(){return this._log||(this._log=e.for(this.constructor.name)),this._log}static get log(){return Xe._log||(Xe._log=e.get()),Xe._log}}(t=>{t.PEER="peer",t.ORDERER="orderer",t.CLIENT="client",t.USER="user",t.ADMIN="admin"})(Ye||(Ye={})),(t=>{t.HFREGISTRARROLES="hf.Registrar.Roles",t.HFREGISTRARDELEGATEROLES="hf.Registrar.DelegateRoles",t.HFREGISTRARATTRIBUTES="hf.Registrar.Attributes",t.HFINTERMEDIATECA="hf.IntermediateCA",t.HFREVOKER="hf.Revoker",t.HFAFFILIATIONMGR="hf.AffiliationMgr",t.HFGENCRL="hf.GenCRL"})(Ve||(Ve={}));class Ze extends Xe{constructor(t){super(),this.caConfig=t}async User(){if(this.user)return this.user;const{caName:t,caCert:e,caKey:r,url:i}=this.caConfig,a=this.log.for(this.User);a.debug(`Creating CA user for ${t} at ${i}`),a.debug("Retrieving CA certificate from "+e);const n=await _e.getFirstDirFileNameContent(e);a.debug("Retrieving CA key from "+r);const s=await _e.getFirstDirFileNameContent(r);return a.debug("Loading Admin user for ca "+t),this.user=await _e.getCAUser("admin",s,n,t),this.user}async CA(){if(this.ca)return this.ca;const t=this.log.for(this.CA),{url:e,tls:r,caName:i}=this.caConfig;let{trustedRoots:a,verify:n}=r;n=!1;const s=a[0];t.debug(`Retrieving CA certificate from ${s}. cwd: ${process.cwd()}`);const o=await _e.getFileContent(s);return t.debug(`Creating CA Client for CA ${i} under ${e}`),this.ca=new $t(e,{trustedRoots:Buffer.from(o),verify:n},i),this.ca}async Client(){if(this.client)return this.client;const t=await this.CA();return this.client=t._FabricCAServices,this.client}async Certificate(){return this.certificateService||(this.certificateService=(await this.Client()).newCertificateService()),this.certificateService}async Affiliations(){return this.affiliationService||(this.affiliationService=(await this.CA()).newAffiliationService()),this.affiliationService}async Identities(){return this.identityService||(this.identityService=(await this.CA()).newIdentityService()),this.identityService}async getCertificates(t,e=!0){const r=await this.Certificate(),i=await this.User(),a=this.log.for(this.getCertificates);a.debug(`Retrieving certificates${t?" for "+t.id:""} for CA ${this.caConfig.caName}`);const n=(await r.getCertificates(t||{},i)).result;return a.debug(`Found ${n.certs.length} certificates: ${JSON.stringify(n)}`),e?n.certs.map(t=>t.PEM):n}async getIdentities(){const t=await this.Identities(),e=this.log.for(this.getIdentities);e.debug("Retrieving Identities under CA "+this.caConfig.caName);const r=(await t.getAll(await this.User())).result;return e.debug(`Found ${r.identities.length} Identities: ${JSON.stringify(r)}`),r.identities}parseError(t){const e=/.*code:\s(\d+).*?message:\s["'](.+)["']/gs.exec(t.message);if(!e)return new pe(t);const[,r,i]=e;switch(r){case"74":case"71":return new C(i);case"20":return new nt(i);default:return new pe(i)}}async getAffiliations(){const t=await this.Affiliations(),e=this.log.for(this.getAffiliations);e.debug("Retrieving Affiliations under CA "+this.caConfig.caName);const r=(await t.getAll(await this.User())).result;return e.debug(`Found ${r.a.length} Affiliations: ${JSON.stringify(r)}`),r}async read(t){const e=await this.CA(),r=await this.User();let i;try{i=await e.newIdentityService().getOne(t,r)}catch(e){throw new y(`Couldn't find enrollment with id ${t}: ${e}`)}if(!i.success)throw new y(`Couldn't find enrollment with id ${t}: ${i.errors.join("\n")}`);return i.result}async register(t,e=!1,r="",i,a,n){let s;const o=this.log.for(this.register);try{const{userName:c,password:l}=t,d=await this.CA(),p=await this.User(),h={enrollmentID:c,enrollmentSecret:l,affiliation:r,userRole:i,attrs:a,maxEnrollments:n};s=await d.register(h,p),o.info(`Registration for ${c} created with user type ${i??"Undefined Role"} ${e?"as super user":""}`)}catch(t){throw this.parseError(t)}return s}static identityFromEnrollment(t,e){const{certificate:r,key:i,rootCertificate:a}=t,n=this.log.for(this.identityFromEnrollment);n.debug(`Generating Identity from certificate ${r} in msp ${e}`);const s=Qe.fabricIdFromCertificate(r),o=Qe.encode(s);n.debug(`Identity ${s} and encodedId ${o}`);const c=new Date;return new Ue({id:o,credentials:{id:o,certificate:r,privateKey:i.toBytes(),rootCertificate:a,createdOn:c,updatedOn:c},mspId:e,createdOn:c,updatedOn:c})}async enroll(t,e){let r;const i=this.log.for(this.enroll);try{const a=await this.CA();i.debug("Enrolling "+t);const n=await a.enroll({enrollmentID:t,enrollmentSecret:e});r=Ze.identityFromEnrollment(n,this.caConfig.caName),i.info(`Successfully enrolled ${t} under ${this.caConfig.caName} as ${r.id}`)}catch(t){throw this.parseError(t)}return r}async registerAndEnroll(t,e=!1,r="",i,a,n){const s=await this.register(t,e,r,i,a,n),{userName:o}=t;return this.enroll(o,s)}async revoke(t){const e=await this.CA(),r=await this.User(),i=await this.read(t);if(!i)throw new y("Could not find enrollment with id "+t);let a;try{a=await e.revoke({enrollmentID:i.id,reason:"User Deletation"},r)}catch(e){throw new d(`Could not revoke enrollment with id ${t}: ${e}`)}if(!a.success)throw new d(`Could not revoke enrollment with id ${t}: ${a.errors.join("\n")}`);return a}}const tr="##VERSION##",er="##PACKAGE##";Ft.registerLibrary(er,tr);export{Ke as ContractLogger,_e as CoreUtils,Wt as FabricClientAdapter,Vt as FabricClientDispatch,Te as FabricContractAdapter,Qt as FabricContractContext,we as FabricContractRepository,Xt as FabricContractRepositoryObservableHandler,ye as FabricContractSequence,Ie as FabricCrudContract,Ze as FabricEnrollmentService,Ht as FabricFlavour,Jt as FabricModelKeys,me as FabricStatement,Ve as HFCAIdentityAttributes,Ye as HFCAIdentityType,Ue as Identity,Ut as IdentityType,ee as OwnedBy,Zt as Owner,er as PACKAGE_NAME,Fe as SerializedCrudContract,tr as VERSION,xt as contentOfLoadFile,Me as contracts,Re as createdByOnFabricCreateUpdate,Kt as extractPrivateKey,Gt as generateFabricEventName,zt as getCAUser,re as getFabricModelKey,Bt as getFirstDirFileName,Lt as getFirstDirFileNameContent,jt as getIdentity,Mt as getSigner,te as ownedByOnCreate,Yt as parseEventName,Ne as pkFabricOnCreate,ie as privateData,Dt as readFile};
2
+ //# sourceMappingURL=for-fabric.js.map