@decaf-ts/for-fabric 0.11.0 → 0.12.0

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 (295) hide show
  1. package/lib/cjs/version.cjs +1 -1
  2. package/lib/esm/version.js +1 -1
  3. package/lib/types/client/FabricClientAdapter.d.cts +3 -3
  4. package/lib/types/client/FabricClientAdapter.d.mts +3 -3
  5. package/lib/types/client/FabricClientDispatch.d.cts +2 -2
  6. package/lib/types/client/FabricClientDispatch.d.mts +2 -2
  7. package/lib/types/client/FabricClientPaginator.d.cts +1 -1
  8. package/lib/types/client/FabricClientPaginator.d.mts +1 -1
  9. package/lib/types/client/FabricClientRepository.d.cts +1 -1
  10. package/lib/types/client/FabricClientRepository.d.mts +1 -1
  11. package/lib/types/client/FabricClientStatement.d.cts +2 -2
  12. package/lib/types/client/FabricClientStatement.d.mts +2 -2
  13. package/lib/types/client/collections/index.d.cts +1 -1
  14. package/lib/types/client/collections/index.d.mts +1 -1
  15. package/lib/types/client/constants.d.cts +1 -1
  16. package/lib/types/client/constants.d.mts +1 -1
  17. package/lib/types/client/erc20/FabricERC20ClientRepository.d.cts +3 -3
  18. package/lib/types/client/erc20/FabricERC20ClientRepository.d.mts +3 -3
  19. package/lib/types/client/erc20/index.d.cts +1 -1
  20. package/lib/types/client/erc20/index.d.mts +1 -1
  21. package/lib/types/client/ids/index.d.cts +1 -1
  22. package/lib/types/client/ids/index.d.mts +1 -1
  23. package/lib/types/client/index.d.cts +14 -14
  24. package/lib/types/client/index.d.mts +14 -14
  25. package/lib/types/client/indexes/index.d.cts +1 -1
  26. package/lib/types/client/indexes/index.d.mts +1 -1
  27. package/lib/types/client/services/FabricEnrollmentService.d.cts +4 -4
  28. package/lib/types/client/services/FabricEnrollmentService.d.mts +4 -4
  29. package/lib/types/client/services/FabricIdentityService.d.cts +5 -5
  30. package/lib/types/client/services/FabricIdentityService.d.mts +5 -5
  31. package/lib/types/client/services/RegistrationRequestBuilder.d.cts +1 -1
  32. package/lib/types/client/services/RegistrationRequestBuilder.d.mts +1 -1
  33. package/lib/types/client/services/index.d.cts +4 -4
  34. package/lib/types/client/services/index.d.mts +4 -4
  35. package/lib/types/client/types.d.cts +1 -1
  36. package/lib/types/client/types.d.mts +1 -1
  37. package/lib/types/client/utils.d.cts +1 -1
  38. package/lib/types/client/utils.d.mts +1 -1
  39. package/lib/types/contract/AddressContract.d.cts +2 -2
  40. package/lib/types/contract/AddressContract.d.mts +2 -2
  41. package/lib/types/contract/AuditContract.d.cts +2 -2
  42. package/lib/types/contract/AuditContract.d.mts +2 -2
  43. package/lib/types/contract/BatchContract.d.cts +2 -2
  44. package/lib/types/contract/BatchContract.d.mts +2 -2
  45. package/lib/types/contract/MarketContract.d.cts +2 -2
  46. package/lib/types/contract/MarketContract.d.mts +2 -2
  47. package/lib/types/contract/OtherAuditContract.d.cts +2 -2
  48. package/lib/types/contract/OtherAuditContract.d.mts +2 -2
  49. package/lib/types/contract/OtherBatchContract.d.cts +2 -2
  50. package/lib/types/contract/OtherBatchContract.d.mts +2 -2
  51. package/lib/types/contract/OtherMarketContract.d.cts +2 -2
  52. package/lib/types/contract/OtherMarketContract.d.mts +2 -2
  53. package/lib/types/contract/OtherProductContract.d.cts +2 -2
  54. package/lib/types/contract/OtherProductContract.d.mts +2 -2
  55. package/lib/types/contract/OtherProductImageContract.d.cts +2 -2
  56. package/lib/types/contract/OtherProductImageContract.d.mts +2 -2
  57. package/lib/types/contract/OtherProductSharedContract.d.cts +2 -2
  58. package/lib/types/contract/OtherProductSharedContract.d.mts +2 -2
  59. package/lib/types/contract/OtherProductStrengthContract.d.cts +2 -2
  60. package/lib/types/contract/OtherProductStrengthContract.d.mts +2 -2
  61. package/lib/types/contract/Product.d.cts +1 -1
  62. package/lib/types/contract/Product.d.mts +1 -1
  63. package/lib/types/contract/ProductContract.d.cts +2 -2
  64. package/lib/types/contract/ProductContract.d.mts +2 -2
  65. package/lib/types/contract/ProductStrengthContract.d.cts +2 -2
  66. package/lib/types/contract/ProductStrengthContract.d.mts +2 -2
  67. package/lib/types/contract/SegregatedPrivateDocumentContract.d.cts +2 -2
  68. package/lib/types/contract/SegregatedPrivateDocumentContract.d.mts +2 -2
  69. package/lib/types/contract/SegregatedSharedDocumentContract.d.cts +2 -2
  70. package/lib/types/contract/SegregatedSharedDocumentContract.d.mts +2 -2
  71. package/lib/types/contract/UserContract.d.cts +2 -2
  72. package/lib/types/contract/UserContract.d.mts +2 -2
  73. package/lib/types/contract/models/Audit.d.cts +2 -2
  74. package/lib/types/contract/models/Audit.d.mts +2 -2
  75. package/lib/types/contract/models/BaseIdentifiedModel.d.cts +1 -1
  76. package/lib/types/contract/models/BaseIdentifiedModel.d.mts +1 -1
  77. package/lib/types/contract/models/Batch.d.cts +1 -1
  78. package/lib/types/contract/models/Batch.d.mts +1 -1
  79. package/lib/types/contract/models/GtinOwner.d.cts +1 -1
  80. package/lib/types/contract/models/GtinOwner.d.mts +1 -1
  81. package/lib/types/contract/models/Leaflet.d.cts +1 -1
  82. package/lib/types/contract/models/Leaflet.d.mts +1 -1
  83. package/lib/types/contract/models/LeafletFile.d.cts +1 -1
  84. package/lib/types/contract/models/LeafletFile.d.mts +1 -1
  85. package/lib/types/contract/models/Market.d.cts +1 -1
  86. package/lib/types/contract/models/Market.d.mts +1 -1
  87. package/lib/types/contract/models/OtherAudit.d.cts +2 -2
  88. package/lib/types/contract/models/OtherAudit.d.mts +2 -2
  89. package/lib/types/contract/models/OtherBatchShared.d.cts +1 -1
  90. package/lib/types/contract/models/OtherBatchShared.d.mts +1 -1
  91. package/lib/types/contract/models/OtherLeaflet.d.cts +2 -2
  92. package/lib/types/contract/models/OtherLeaflet.d.mts +2 -2
  93. package/lib/types/contract/models/OtherLeafletFile.d.cts +1 -1
  94. package/lib/types/contract/models/OtherLeafletFile.d.mts +1 -1
  95. package/lib/types/contract/models/OtherMarket.d.cts +1 -1
  96. package/lib/types/contract/models/OtherMarket.d.mts +1 -1
  97. package/lib/types/contract/models/OtherProduct.d.cts +1 -1
  98. package/lib/types/contract/models/OtherProduct.d.mts +1 -1
  99. package/lib/types/contract/models/OtherProductImage.d.cts +1 -1
  100. package/lib/types/contract/models/OtherProductImage.d.mts +1 -1
  101. package/lib/types/contract/models/OtherProductShared.d.cts +4 -4
  102. package/lib/types/contract/models/OtherProductShared.d.mts +4 -4
  103. package/lib/types/contract/models/OtherProductStrength.d.cts +1 -1
  104. package/lib/types/contract/models/OtherProductStrength.d.mts +1 -1
  105. package/lib/types/contract/models/Product.d.cts +3 -3
  106. package/lib/types/contract/models/Product.d.mts +3 -3
  107. package/lib/types/contract/models/ProductStrength.d.cts +1 -1
  108. package/lib/types/contract/models/ProductStrength.d.mts +1 -1
  109. package/lib/types/contract/models/SegregatedDocument.d.cts +1 -1
  110. package/lib/types/contract/models/SegregatedDocument.d.mts +1 -1
  111. package/lib/types/contract/models/decorators-private.d.cts +2 -2
  112. package/lib/types/contract/models/decorators-private.d.mts +2 -2
  113. package/lib/types/contract/models/decorators.d.cts +2 -2
  114. package/lib/types/contract/models/decorators.d.mts +2 -2
  115. package/lib/types/contract/models/history-dec.d.cts +1 -1
  116. package/lib/types/contract/models/history-dec.d.mts +1 -1
  117. package/lib/types/contracts/ContractAdapter.d.cts +5 -5
  118. package/lib/types/contracts/ContractAdapter.d.mts +5 -5
  119. package/lib/types/contracts/ContractContext.d.cts +1 -1
  120. package/lib/types/contracts/ContractContext.d.mts +1 -1
  121. package/lib/types/contracts/FabricContractDispatch.d.cts +2 -2
  122. package/lib/types/contracts/FabricContractDispatch.d.mts +2 -2
  123. package/lib/types/contracts/FabricContractPaginator.d.cts +1 -1
  124. package/lib/types/contracts/FabricContractPaginator.d.mts +1 -1
  125. package/lib/types/contracts/FabricContractRepository.d.cts +3 -3
  126. package/lib/types/contracts/FabricContractRepository.d.mts +3 -3
  127. package/lib/types/contracts/FabricContractRepositoryObservableHandler.d.cts +1 -1
  128. package/lib/types/contracts/FabricContractRepositoryObservableHandler.d.mts +1 -1
  129. package/lib/types/contracts/FabricContractStatement.d.cts +1 -1
  130. package/lib/types/contracts/FabricContractStatement.d.mts +1 -1
  131. package/lib/types/contracts/MigrationContract.d.cts +3 -3
  132. package/lib/types/contracts/MigrationContract.d.mts +3 -3
  133. package/lib/types/contracts/auth/index.d.cts +1 -1
  134. package/lib/types/contracts/auth/index.d.mts +1 -1
  135. package/lib/types/contracts/crud/crud-contract.d.cts +5 -5
  136. package/lib/types/contracts/crud/crud-contract.d.mts +5 -5
  137. package/lib/types/contracts/crud/index.d.cts +2 -2
  138. package/lib/types/contracts/crud/index.d.mts +2 -2
  139. package/lib/types/contracts/crud/serialized-crud-contract.d.cts +1 -1
  140. package/lib/types/contracts/crud/serialized-crud-contract.d.mts +1 -1
  141. package/lib/types/contracts/erc20/erc20contract.d.cts +3 -3
  142. package/lib/types/contracts/erc20/erc20contract.d.mts +3 -3
  143. package/lib/types/contracts/erc20/index.d.cts +1 -1
  144. package/lib/types/contracts/erc20/index.d.mts +1 -1
  145. package/lib/types/contracts/index.d.cts +13 -13
  146. package/lib/types/contracts/index.d.mts +13 -13
  147. package/lib/types/contracts/types.d.cts +1 -1
  148. package/lib/types/contracts/types.d.mts +1 -1
  149. package/lib/types/index.d.cts +3 -3
  150. package/lib/types/index.d.mts +3 -3
  151. package/lib/types/shared/decorators.d.cts +3 -3
  152. package/lib/types/shared/decorators.d.mts +3 -3
  153. package/lib/types/shared/erc20/index.d.cts +1 -1
  154. package/lib/types/shared/erc20/index.d.mts +1 -1
  155. package/lib/types/shared/index.d.cts +14 -14
  156. package/lib/types/shared/index.d.mts +14 -14
  157. package/lib/types/shared/interfaces/index.d.cts +1 -1
  158. package/lib/types/shared/interfaces/index.d.mts +1 -1
  159. package/lib/types/shared/model/FabricIdentifiedBaseModel.d.cts +1 -1
  160. package/lib/types/shared/model/FabricIdentifiedBaseModel.d.mts +1 -1
  161. package/lib/types/shared/model/Identity.d.cts +2 -2
  162. package/lib/types/shared/model/Identity.d.mts +2 -2
  163. package/lib/types/shared/model/index.d.cts +4 -4
  164. package/lib/types/shared/model/index.d.mts +4 -4
  165. package/lib/types/shared/overrides/Model.d.cts +2 -2
  166. package/lib/types/shared/overrides/Model.d.mts +2 -2
  167. package/lib/types/shared/overrides/index.d.cts +2 -2
  168. package/lib/types/shared/overrides/index.d.mts +2 -2
  169. package/lib/types/version.d.cts +1 -1
  170. package/lib/types/version.d.mts +1 -1
  171. package/package.json +1 -1
  172. package/lib/types/bin/cli.d.ts +0 -1
  173. package/lib/types/cli-module.d.ts +0 -3
  174. package/lib/types/cli-utils.d.ts +0 -21
  175. package/lib/types/client/FabricClientAdapter.d.ts +0 -404
  176. package/lib/types/client/FabricClientDispatch.d.ts +0 -133
  177. package/lib/types/client/FabricClientPaginator.d.ts +0 -12
  178. package/lib/types/client/FabricClientRepository.d.ts +0 -71
  179. package/lib/types/client/FabricClientStatement.d.ts +0 -64
  180. package/lib/types/client/collections/generation.d.ts +0 -46
  181. package/lib/types/client/collections/index.d.ts +0 -1
  182. package/lib/types/client/constants.d.ts +0 -2
  183. package/lib/types/client/crypto.d.ts +0 -107
  184. package/lib/types/client/erc20/FabricERC20ClientRepository.d.ts +0 -254
  185. package/lib/types/client/erc20/index.d.ts +0 -1
  186. package/lib/types/client/fabric-fs.d.ts +0 -92
  187. package/lib/types/client/fabric-hsm.d.ts +0 -24
  188. package/lib/types/client/ids/id-extraction.d.ts +0 -4
  189. package/lib/types/client/ids/index.d.ts +0 -1
  190. package/lib/types/client/index.d.ts +0 -23
  191. package/lib/types/client/indexes/generation.d.ts +0 -10
  192. package/lib/types/client/indexes/index.d.ts +0 -1
  193. package/lib/types/client/logging.d.ts +0 -60
  194. package/lib/types/client/services/FabricEnrollmentService.d.ts +0 -176
  195. package/lib/types/client/services/FabricIdentityService.d.ts +0 -98
  196. package/lib/types/client/services/RegistrationRequestBuilder.d.ts +0 -19
  197. package/lib/types/client/services/constants.d.ts +0 -15
  198. package/lib/types/client/services/index.d.ts +0 -4
  199. package/lib/types/client/types.d.ts +0 -20
  200. package/lib/types/client/utils.d.ts +0 -71
  201. package/lib/types/contract/Address.d.ts +0 -13
  202. package/lib/types/contract/AddressContract.d.ts +0 -5
  203. package/lib/types/contract/AuditContract.d.ts +0 -5
  204. package/lib/types/contract/BatchContract.d.ts +0 -5
  205. package/lib/types/contract/MarketContract.d.ts +0 -5
  206. package/lib/types/contract/OtherAuditContract.d.ts +0 -5
  207. package/lib/types/contract/OtherBatchContract.d.ts +0 -5
  208. package/lib/types/contract/OtherMarketContract.d.ts +0 -5
  209. package/lib/types/contract/OtherProductContract.d.ts +0 -5
  210. package/lib/types/contract/OtherProductImageContract.d.ts +0 -5
  211. package/lib/types/contract/OtherProductSharedContract.d.ts +0 -5
  212. package/lib/types/contract/OtherProductStrengthContract.d.ts +0 -5
  213. package/lib/types/contract/Product.d.ts +0 -7
  214. package/lib/types/contract/ProductContract.d.ts +0 -5
  215. package/lib/types/contract/ProductStrengthContract.d.ts +0 -5
  216. package/lib/types/contract/SegregatedPrivateDocumentContract.d.ts +0 -5
  217. package/lib/types/contract/SegregatedSharedDocumentContract.d.ts +0 -5
  218. package/lib/types/contract/User.d.ts +0 -7
  219. package/lib/types/contract/UserContract.d.ts +0 -5
  220. package/lib/types/contract/index.d.ts +0 -2
  221. package/lib/types/contract/logging-context.d.ts +0 -8
  222. package/lib/types/contract/models/Audit.d.ts +0 -13
  223. package/lib/types/contract/models/BaseIdentifiedModel.d.ts +0 -7
  224. package/lib/types/contract/models/BaseModel.d.ts +0 -7
  225. package/lib/types/contract/models/Batch.d.ts +0 -18
  226. package/lib/types/contract/models/GtinOwner.d.ts +0 -8
  227. package/lib/types/contract/models/History.d.ts +0 -9
  228. package/lib/types/contract/models/Leaflet.d.ts +0 -12
  229. package/lib/types/contract/models/LeafletFile.d.ts +0 -9
  230. package/lib/types/contract/models/Market.d.ts +0 -12
  231. package/lib/types/contract/models/OtherAudit.d.ts +0 -15
  232. package/lib/types/contract/models/OtherBatchShared.d.ts +0 -18
  233. package/lib/types/contract/models/OtherLeaflet.d.ts +0 -16
  234. package/lib/types/contract/models/OtherLeafletFile.d.ts +0 -10
  235. package/lib/types/contract/models/OtherMarket.d.ts +0 -13
  236. package/lib/types/contract/models/OtherProduct.d.ts +0 -12
  237. package/lib/types/contract/models/OtherProductImage.d.ts +0 -9
  238. package/lib/types/contract/models/OtherProductShared.d.ts +0 -18
  239. package/lib/types/contract/models/OtherProductStrength.d.ts +0 -12
  240. package/lib/types/contract/models/Product.d.ts +0 -15
  241. package/lib/types/contract/models/ProductStrength.d.ts +0 -11
  242. package/lib/types/contract/models/SegregatedDocument.d.ts +0 -18
  243. package/lib/types/contract/models/constants.d.ts +0 -24
  244. package/lib/types/contract/models/decorators-private.d.ts +0 -16
  245. package/lib/types/contract/models/decorators.d.ts +0 -28
  246. package/lib/types/contract/models/gtin.d.ts +0 -8
  247. package/lib/types/contract/models/history-dec.d.ts +0 -6
  248. package/lib/types/contracts/ContractAdapter.d.ts +0 -287
  249. package/lib/types/contracts/ContractContext.d.ts +0 -89
  250. package/lib/types/contracts/FabricContractDispatch.d.ts +0 -7
  251. package/lib/types/contracts/FabricContractPaginator.d.ts +0 -105
  252. package/lib/types/contracts/FabricContractRepository.d.ts +0 -119
  253. package/lib/types/contracts/FabricContractRepositoryObservableHandler.d.ts +0 -62
  254. package/lib/types/contracts/FabricContractSequence.d.ts +0 -87
  255. package/lib/types/contracts/FabricContractStatement.d.ts +0 -36
  256. package/lib/types/contracts/MigrationContract.d.ts +0 -22
  257. package/lib/types/contracts/PrivateSequence.d.ts +0 -15
  258. package/lib/types/contracts/auth/decorators.d.ts +0 -6
  259. package/lib/types/contracts/auth/index.d.ts +0 -1
  260. package/lib/types/contracts/crud/crud-contract.d.ts +0 -199
  261. package/lib/types/contracts/crud/index.d.ts +0 -2
  262. package/lib/types/contracts/crud/serialized-crud-contract.d.ts +0 -42
  263. package/lib/types/contracts/erc20/erc20contract.d.ts +0 -152
  264. package/lib/types/contracts/erc20/index.d.ts +0 -2
  265. package/lib/types/contracts/erc20/models.d.ts +0 -114
  266. package/lib/types/contracts/index.d.ts +0 -20
  267. package/lib/types/contracts/logging.d.ts +0 -54
  268. package/lib/types/contracts/overrides.d.ts +0 -1
  269. package/lib/types/contracts/types.d.ts +0 -38
  270. package/lib/types/contracts/uuid.d.ts +0 -2
  271. package/lib/types/index.d.ts +0 -8
  272. package/lib/types/shared/ClientSerializer.d.ts +0 -52
  273. package/lib/types/shared/DeterministicSerializer.d.ts +0 -47
  274. package/lib/types/shared/SimpleDeterministicSerializer.d.ts +0 -7
  275. package/lib/types/shared/constants.d.ts +0 -35
  276. package/lib/types/shared/decorators.d.ts +0 -81
  277. package/lib/types/shared/erc20/erc20-constants.d.ts +0 -25
  278. package/lib/types/shared/erc20/index.d.ts +0 -1
  279. package/lib/types/shared/errors.d.ts +0 -140
  280. package/lib/types/shared/events.d.ts +0 -37
  281. package/lib/types/shared/fabric-types.d.ts +0 -32
  282. package/lib/types/shared/index.d.ts +0 -21
  283. package/lib/types/shared/interfaces/Checkable.d.ts +0 -23
  284. package/lib/types/shared/interfaces/index.d.ts +0 -1
  285. package/lib/types/shared/math.d.ts +0 -34
  286. package/lib/types/shared/model/FabricBaseModel.d.ts +0 -7
  287. package/lib/types/shared/model/FabricIdentifiedBaseModel.d.ts +0 -7
  288. package/lib/types/shared/model/Identity.d.ts +0 -42
  289. package/lib/types/shared/model/IdentityCredentials.d.ts +0 -41
  290. package/lib/types/shared/model/index.d.ts +0 -4
  291. package/lib/types/shared/overrides/Model.d.ts +0 -22
  292. package/lib/types/shared/overrides/index.d.ts +0 -2
  293. package/lib/types/shared/overrides/overrides.d.ts +0 -1
  294. package/lib/types/shared/types.d.ts +0 -125
  295. package/lib/types/version.d.ts +0 -2
@@ -1,287 +0,0 @@
1
- import { CouchDBAdapter, MangoQuery, ViewResponse } from "@decaf-ts/for-couchdb";
2
- import { Model } from "@decaf-ts/decorator-validation";
3
- import { FabricContractFlags } from "./types";
4
- import { FabricContractContext } from "./ContractContext";
5
- import { BaseError, BulkCrudOperationKeys, OperationKeys, PrimaryKeyType } from "@decaf-ts/db-decorators";
6
- import { Context as Ctx } from "fabric-contract-api";
7
- import { Logger } from "@decaf-ts/logging";
8
- import { RelationsMetadata, Sequence, SequenceOptions, Adapter, AdapterFlags, PreparedModel, Repository, ContextualizedArgs, Context, RawResult, Paginator, ContextualArgs, MaybeContextualArg, MethodOrOperation, AllOperationKeys, FlagsOf, ContextOf, EventIds, Dispatch } from "@decaf-ts/core";
9
- import { FabricContractRepository } from "./FabricContractRepository";
10
- import { ChaincodeStub, ClientIdentity, Iterators, StateQueryResponse } from "fabric-shim-api";
11
- import { FabricStatement } from "./FabricContractStatement";
12
- import { SimpleDeterministicSerializer } from "../shared/SimpleDeterministicSerializer";
13
- import { Constructor } from "@decaf-ts/decoration";
14
- export type FabricContextualizedArgs<ARGS extends any[] = any[], EXTEND extends boolean = false> = ContextualizedArgs<FabricContractContext, ARGS, EXTEND> & {
15
- stub: ChaincodeStub;
16
- identity: ClientIdentity;
17
- };
18
- /**
19
- * @description Sets the creator or updater field in a model based on the user in the context
20
- * @summary Callback function used in decorators to automatically set the created_by or updated_by fields
21
- * with the username from the context when a document is created or updated
22
- * @template M - Type extending Model
23
- * @template R - Type extending NanoRepository<M>
24
- * @template V - Type extending RelationsMetadata
25
- * @param {R} this - The repository instance
26
- * @param {FabricContractContext} context - The operation context containing user information
27
- * @param {V} data - The relation metadata
28
- * @param {string} key - The property key to set with the username
29
- * @param {M} model - The model instance being created or updated
30
- * @return {Promise<void>} A promise that resolves when the operation is complete
31
- * @function createdByOnFabricCreateUpdate
32
- * @memberOf module:fabric.contracts
33
- * @mermaid
34
- * sequenceDiagram
35
- * participant F as createdByOnNanoCreateUpdate
36
- * participant C as Context
37
- * participant M as Model
38
- * F->>C: get("user")
39
- * C-->>F: user object
40
- * F->>M: set key to user.name
41
- * Note over F: If no user in context
42
- * F-->>F: throw UnsupportedError
43
- */
44
- export declare function createdByOnFabricCreateUpdate<M extends Model, R extends FabricContractRepository<M>, V extends RelationsMetadata>(this: R, context: ContextOf<R>, data: V, key: keyof M, model: M): Promise<void>;
45
- /**
46
- * @description Adapter for Hyperledger Fabric chaincode state database operations
47
- * @summary Provides a CouchDB-like interface for interacting with the Fabric state database from within a chaincode contract
48
- * @template void - No configuration needed for contract adapter
49
- * @template FabricContractFlags - Flags specific to Fabric contract operations
50
- * @template FabricContractContext - Context type for Fabric contract operations
51
- * @class FabricContractAdapter
52
- * @example
53
- * ```typescript
54
- * // In a Fabric chaincode contract class
55
- * import { FabricContractAdapter } from '@decaf-ts/for-fabric';
56
- *
57
- * export class MyContract extends Contract {
58
- * private adapter = new FabricContractAdapter();
59
- *
60
- * @Transaction()
61
- * async createAsset(ctx: Context, id: string, data: string): Promise<void> {
62
- * const model = { id, data, timestamp: Date.now() };
63
- * await this.adapter.create('assets', id, model, {}, { stub: ctx.stub });
64
- * }
65
- * }
66
- * ```
67
- * @mermaid
68
- * sequenceDiagram
69
- * participant Contract
70
- * participant FabricContractAdapter
71
- * participant Stub
72
- * participant StateDB
73
- *
74
- * Contract->>FabricContractAdapter: create(tableName, id, model, transient, ctx)
75
- * FabricContractAdapter->>FabricContractAdapter: Serialize model to JSON
76
- * FabricContractAdapter->>Stub: putState(id, serializedData)
77
- * Stub->>StateDB: Write data
78
- * StateDB-->>Stub: Success
79
- * Stub-->>FabricContractAdapter: Success
80
- * FabricContractAdapter-->>Contract: model
81
- */
82
- export declare class FabricContractAdapter extends CouchDBAdapter<any, void, FabricContractContext> {
83
- private static readonly PRIVATE_BOOKMARK_PREFIX;
84
- private static parseSyntheticPrivateBookmark;
85
- private static buildSyntheticPrivateBookmark;
86
- protected getClient(): void;
87
- /**
88
- * @description Text decoder for converting binary data to strings
89
- */
90
- private static textDecoder;
91
- protected static readonly serializer: SimpleDeterministicSerializer<Model<false>>;
92
- /**
93
- * @description Context constructor for this adapter
94
- * @summary Overrides the base Context constructor with FabricContractContext
95
- */
96
- protected get Context(): Constructor<FabricContractContext>;
97
- /**
98
- * @description Gets the repository constructor for this adapter
99
- * @summary Returns the FabricContractRepository constructor for creating repositories
100
- * @template M - Type extending Model
101
- * @return {Constructor<Repository<M, MangoQuery, FabricContractAdapter, FabricContractFlags, FabricContractContext>>} The repository constructor
102
- */
103
- repository<R extends Repository<any, Adapter<any, void, MangoQuery, Context<FabricContractFlags>>>>(): Constructor<R>;
104
- Paginator<M extends Model>(query: MangoQuery, size: number, clazz: Constructor<M>): Paginator<M, any, MangoQuery>;
105
- Sequence(options: SequenceOptions): Promise<Sequence>;
106
- protected Dispatch(): Dispatch<FabricContractAdapter>;
107
- /**
108
- * @description Creates a new FabricContractAdapter instance
109
- * @summary Initializes an adapter for interacting with the Fabric state database
110
- * @param {void} scope - Not used in this adapter
111
- * @param {string} [alias] - Optional alias for the adapter instance
112
- */
113
- constructor(scope: void, alias?: string);
114
- for(config: Partial<any>, ...args: any): typeof this;
115
- protected getModelDefaults<M extends Model>(clazz: Constructor<M>): Record<keyof M, any>;
116
- /**
117
- * @description Creates a record in the state database
118
- * @summary Serializes a model and stores it in the Fabric state database
119
- * @param {string} tableName - The name of the table/collection
120
- * @param {string | number} id - The record identifier
121
- * @param {Record<string, any>} model - The record data
122
- * @param {Record<string, any>} transient - Transient data (not used in this implementation)
123
- * @param {...any[]} args - Additional arguments, including the chaincode stub and logger
124
- * @return {Promise<Record<string, any>>} Promise resolving to the created record
125
- */
126
- create<M extends Model>(clazz: Constructor<M>, id: PrimaryKeyType, model: Record<string, any>, ...args: ContextualArgs<Context<FabricContractFlags>>): Promise<Record<string, any>>;
127
- createAll<M extends Model>(tableName: Constructor<M>, id: PrimaryKeyType[], model: Record<string, any>[], ...args: ContextualArgs<FabricContractContext>): Promise<Record<string, any>[]>;
128
- /**
129
- * @description Reads a record from the state database
130
- * @summary Retrieves and deserializes a record from the Fabric state database
131
- * @param {string} tableName - The name of the table/collection
132
- * @param {string | number} id - The record identifier
133
- * @param {...any[]} args - Additional arguments, including the chaincode stub and logger
134
- * @return {Promise<Record<string, any>>} Promise resolving to the retrieved record
135
- */
136
- read<M extends Model>(clazz: Constructor<M>, id: PrimaryKeyType, ...args: ContextualArgs<Context<FabricContractFlags>>): Promise<Record<string, any>>;
137
- /**
138
- * @description Retrieves multiple records from the database
139
- * @summary Fetches multiple records with the given IDs from the specified table
140
- * @param {string} tableName - The name of the table to read from
141
- * @param id - The identifiers of the records to retrieve
142
- * @param {...any[]} args - Additional arguments specific to the adapter implementation
143
- * @return A promise that resolves to an array of retrieved records
144
- */
145
- readAll<M extends Model>(clazz: Constructor<M>, id: PrimaryKeyType[], ...args: ContextualArgs<Context<FabricContractFlags>>): Promise<Record<string, any>[]>;
146
- /**
147
- * @description Updates a record in the state database
148
- * @summary Serializes a model and updates it in the Fabric state database
149
- * @param {string} tableName - The name of the table/collection
150
- * @param {string | number} id - The record identifier
151
- * @param {Record<string, any>} model - The updated record data
152
- * @param {Record<string, any>} transient - Transient data (not used in this implementation)
153
- * @param {...any[]} args - Additional arguments, including the chaincode stub and logger
154
- * @return {Promise<Record<string, any>>} Promise resolving to the updated record
155
- */
156
- update<M extends Model>(clazz: Constructor<M>, id: PrimaryKeyType, model: Record<string, any>, ...args: ContextualArgs<Context<FabricContractFlags>>): Promise<Record<string, any>>;
157
- /**
158
- * @description Deletes a record from the state database
159
- * @summary Retrieves a record and then removes it from the Fabric state database
160
- * @param {string} tableName - The name of the table/collection
161
- * @param {string | number} id - The record identifier to delete
162
- * @param {...any[]} args - Additional arguments, including the chaincode stub and logger
163
- * @return {Promise<Record<string, any>>} Promise resolving to the deleted record
164
- */
165
- delete<M extends Model>(clazz: Constructor<M>, id: PrimaryKeyType, ...args: ContextualArgs<Context<FabricContractFlags>>): Promise<Record<string, any>>;
166
- protected deleteState(id: string, context: FabricContractContext): Promise<void>;
167
- forPrivate(collection: string): FabricContractAdapter;
168
- protected putState(id: string, model: Record<string, any>, ctx: FabricContractContext): Promise<Record<string, any>>;
169
- protected readState(id: string, ctx: FabricContractContext): Promise<any>;
170
- protected queryResult(stub: ChaincodeStub, rawInput: any, ...args: ContextualArgs<FabricContractContext>): Promise<Iterators.StateQueryIterator>;
171
- protected queryResultPaginated(stub: ChaincodeStub, rawInput: any, limit?: number, page?: number, bookmark?: string | number, ...args: any[]): Promise<StateQueryResponse<Iterators.StateQueryIterator>>;
172
- /**
173
- * @description Decodes binary data to string
174
- * @summary Converts a Uint8Array to a string using UTF-8 encoding
175
- * @param {Uint8Array} buffer - The binary data to decode
176
- * @return {string} The decoded string
177
- */
178
- protected decode(buffer: Uint8Array): string;
179
- /**
180
- * @description Creates operation flags for Fabric contract operations
181
- * @summary Merges default flags with Fabric-specific context information
182
- * @template M - Type extending Model
183
- * @param {OperationKeys} operation - The operation being performed
184
- * @param {Constructor<M>} model - The model constructor
185
- * @param {Partial<FabricContractFlags>} flags - Partial flags to merge with defaults
186
- * @param {Ctx} ctx - The Fabric chaincode context
187
- * @return {FabricContractFlags} The merged flags
188
- */
189
- protected flags<M extends Model>(operation: AllOperationKeys, model: Constructor<M> | undefined, flags: Partial<FabricContractFlags> | FabricContractContext | Ctx | any): Promise<FabricContractFlags>;
190
- /**
191
- * @description Creates an index for a model
192
- * @summary This method is not implemented for Fabric contracts and returns a resolved promise
193
- * @template M - Type extending Model
194
- * @param {Constructor<M>} models - The model constructor
195
- * @return {Promise<void>} Promise that resolves immediately
196
- */
197
- protected index<M>(models: Constructor<M>): Promise<void>;
198
- /**
199
- * @description Processes results from a state query iterator
200
- * @summary Iterates through query results and converts them to a structured format
201
- * @param {Logger} log - Logger instance for debugging
202
- * @param {Iterators.StateQueryIterator} iterator - The state query iterator
203
- * @param {boolean} [isHistory=false] - Whether this is a history query
204
- * @return {Promise<any[]>} Promise resolving to an array of processed results
205
- * @mermaid
206
- * sequenceDiagram
207
- * participant Caller
208
- * participant ResultIterator
209
- * participant Iterator
210
- *
211
- * Caller->>ResultIterator: resultIterator(log, iterator, isHistory)
212
- * loop Until done
213
- * ResultIterator->>Iterator: next()
214
- * Iterator-->>ResultIterator: { value, done }
215
- * alt Has value
216
- * ResultIterator->>ResultIterator: Process value based on isHistory
217
- * ResultIterator->>ResultIterator: Add to results array
218
- * end
219
- * end
220
- * ResultIterator->>Iterator: close()
221
- * ResultIterator-->>Caller: allResults
222
- */
223
- protected resultIterator(log: Logger, iterator: Iterators.StateQueryIterator, isHistory?: boolean): Promise<any[]>;
224
- /**
225
- * @description Executes a raw query against the state database
226
- * @summary Performs a rich query using CouchDB syntax against the Fabric state database
227
- * @template R - The return type
228
- * @param {MangoQuery} rawInput - The Mango Query to execute
229
- * @param {boolean} docsOnly - Whether to return only documents (not used in this implementation)
230
- * @param {...any[]} args - Additional arguments, including the chaincode stub and logger
231
- * @return {Promise<R>} Promise resolving to the query results
232
- * @mermaid
233
- * sequenceDiagram
234
- * participant Caller
235
- * participant FabricContractAdapter
236
- * participant Stub
237
- * participant StateDB
238
- *
239
- * Caller->>FabricContractAdapter: raw(rawInput, docsOnly, ctx)
240
- * FabricContractAdapter->>FabricContractAdapter: Extract limit and skip
241
- * alt With pagination
242
- * FabricContractAdapter->>Stub: getQueryResultWithPagination(query, limit, skip)
243
- * else Without pagination
244
- * FabricContractAdapter->>Stub: getQueryResult(query)
245
- * end
246
- * Stub->>StateDB: Execute query
247
- * StateDB-->>Stub: Iterator
248
- * Stub-->>FabricContractAdapter: Iterator
249
- * FabricContractAdapter->>FabricContractAdapter: resultIterator(log, iterator)
250
- * FabricContractAdapter-->>Caller: results
251
- */
252
- raw<R, D extends boolean>(rawInput: MangoQuery, docsOnly?: D, ...args: ContextualArgs<FabricContractContext>): Promise<RawResult<R, D>>;
253
- view<R>(ddoc: string, viewName: string, options: Record<string, any>, ..._args: ContextualArgs<FabricContractContext>): Promise<ViewResponse<R>>;
254
- Statement<M extends Model>(overrides?: Partial<AdapterFlags>): FabricStatement<M, any>;
255
- updateAll<M extends Model>(tableName: Constructor<M>, id: PrimaryKeyType[], model: Record<string, any>[], ...args: ContextualArgs<FabricContractContext>): Promise<Record<string, any>[]>;
256
- /**
257
- *
258
- * @param model
259
- * @param {string} pk
260
- * @param args
261
- */
262
- prepare<M extends Model>(model: M, ...args: ContextualArgs<FabricContractContext>): PreparedModel & {
263
- segregated?: Record<string, Record<string, any>>;
264
- };
265
- revert<M extends Model>(obj: Record<string, any>, clazz: Constructor<M>, id: PrimaryKeyType, transient?: Record<string, any>, ...args: ContextualArgs<FabricContractContext>): M;
266
- private shouldRebuildWithTransient;
267
- private getContextMsp;
268
- private enforceMirrorAuthorization;
269
- createPrefix<M extends Model>(tableName: Constructor<M>, id: PrimaryKeyType, model: Record<string, any>, ...args: MaybeContextualArg<FabricContractContext>): [Constructor<M>, PrimaryKeyType, Record<string, any>, ...any[], FabricContractContext];
270
- updatePrefix<M extends Model>(tableName: Constructor<M>, id: PrimaryKeyType, model: Record<string, any>, ...args: MaybeContextualArg<FabricContractContext>): any[];
271
- protected createAllPrefix<M extends Model>(tableName: Constructor<M>, ids: PrimaryKeyType[], models: Record<string, any>[], ...args: [...any, FabricContractContext]): (string | string[] | number[] | Record<string, any>[])[];
272
- protected updateAllPrefix<M extends Model>(tableName: Constructor<M>, ids: PrimaryKeyType[], models: Record<string, any>[], ...args: [...any, FabricContractContext]): any[];
273
- parseError<E extends BaseError>(err: Error | string, reason?: string): E;
274
- protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<FabricContractContext, ARGS>, operation: METHOD): FabricContextualizedArgs<ARGS, METHOD extends string ? true : false>;
275
- protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<FabricContractContext, ARGS>, operation: METHOD, allowCreate: false): FabricContextualizedArgs<ARGS, METHOD extends string ? true : false>;
276
- protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<FabricContractContext, ARGS>, operation: METHOD, allowCreate: true, overrides?: Partial<FlagsOf<FabricContractContext>>): Promise<FabricContextualizedArgs<ARGS, METHOD extends string ? true : false>>;
277
- updateObservers(table: Constructor<any> | string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: ContextualArgs<FabricContractContext>): Promise<void>;
278
- static parseError<E extends BaseError>(err: Error | string): E;
279
- /**
280
- * @description Static method for decoration overrides
281
- * @summary Overrides/extends decaf decoration with Fabric-specific functionality
282
- * @static
283
- * @override
284
- * @return {void}
285
- */
286
- static decoration(): void;
287
- }
@@ -1,89 +0,0 @@
1
- import { Context } from "@decaf-ts/core";
2
- import { FabricContractFlags } from "./types";
3
- import { ChaincodeStub, ClientIdentity } from "fabric-shim-api";
4
- /**
5
- * @description Context class for Fabric chaincode operations
6
- * @summary Provides access to Fabric-specific context elements like stub, identity, and logger to be used by repositories and adapters during contract execution.
7
- * @template F - Flags specific to Fabric contract operations
8
- * @param {object} [args] - Optional initialization arguments passed to the base Context
9
- * @return {void}
10
- * @class FabricContractContext
11
- * @example
12
- * ```typescript
13
- * // In a Fabric chaincode contract method
14
- * const context = new FabricContractContext();
15
- * // Optionally set values via the base Context API
16
- * context.set('stub', ctx.stub);
17
- * context.set('clientIdentity', ctx.clientIdentity);
18
- * context.set('logger', contractLogger);
19
- *
20
- * // Access context properties
21
- * const timestamp = context.timestamp;
22
- * const creator = context.identity.getID();
23
- * ```
24
- * @mermaid
25
- * sequenceDiagram
26
- * participant Contract
27
- * participant Context
28
- * participant Ledger
29
- * Contract->>Context: new FabricContractContext()
30
- * Contract->>Context: set('stub'|'clientIdentity'|'logger', ...)
31
- * Context-->>Contract: timestamp, identity, logger
32
- * Contract->>Ledger: Interact via stub
33
- */
34
- export declare class FabricContractContext extends Context<FabricContractFlags> {
35
- /**
36
- * @description Creates a new FabricContractContext instance
37
- * @summary Initializes the context with Fabric-specific flags
38
- */
39
- constructor(ctx?: FabricContractContext);
40
- /**
41
- * @description Gets the chaincode stub
42
- * @summary Returns the ChaincodeStub instance for interacting with the ledger
43
- * @return {ChaincodeStub} The chaincode stub
44
- */
45
- get stub(): ChaincodeStub;
46
- /**
47
- * @description Gets the transaction timestamp
48
- * @summary Overrides the base timestamp getter to use the stub's timestamp
49
- * @return {Date} The transaction timestamp
50
- */
51
- get timestamp(): Date;
52
- /**
53
- * @description Gets the client identity
54
- * @summary Returns the ClientIdentity instance for the transaction submitter
55
- * @return {ClientIdentity} The client identity
56
- */
57
- get identity(): ClientIdentity;
58
- /**
59
- * @description Stores segregation metadata per sequence name
60
- * @summary Needed because the Sequence creates its own context (via logCtx),
61
- * losing flags set by extractSegregatedCollections on the handler context.
62
- * The adapter persists across operations, making it a reliable store.
63
- */
64
- setSequenceSegregation(seqName: string, fullySegregated: boolean, collections: string[]): void;
65
- getSequenceSegregation(seqName: string): {
66
- fullySegregated: boolean;
67
- collections: string[];
68
- } | undefined;
69
- markFullySegregated(): void;
70
- get isFullySegregated(): boolean;
71
- writeTo(col: string, entry: string[]): void;
72
- getSegregatedWrites(): Record<string, string[]> | undefined;
73
- put(key: string, value: any): void;
74
- readFrom(cols: string | string[]): void;
75
- consumeReadCollections(): string[];
76
- /**
77
- * @description Gets the collections registered for writing
78
- * @summary Returns collection names from segregateWrite, used by sequences to know where to replicate.
79
- * @return {string[]} Array of collection names, empty if none registered
80
- */
81
- getWriteCollections(): string[];
82
- /**
83
- * @description Gets the collections registered for reading
84
- * @summary Returns collection names from segregateRead.
85
- * @return {string[]} Array of collection names, empty if none registered
86
- */
87
- getReadCollections(): string[];
88
- toString(): string;
89
- }
@@ -1,7 +0,0 @@
1
- import { Dispatch, MaybeContextualArg } from "@decaf-ts/core";
2
- import { type FabricContractAdapter } from "./ContractAdapter";
3
- import { FabricContractContext } from "./ContractContext";
4
- export declare class FabricContractDispatch extends Dispatch<FabricContractAdapter> {
5
- constructor();
6
- protected initialize(...args: MaybeContextualArg<FabricContractContext>): Promise<void>;
7
- }
@@ -1,105 +0,0 @@
1
- import { MaybeContextualArg } from "@decaf-ts/core";
2
- import { Model } from "@decaf-ts/decorator-validation";
3
- import { Constructor } from "@decaf-ts/decoration";
4
- import { FabricContractAdapter } from "./ContractAdapter";
5
- import { CouchDBPaginator, MangoQuery } from "@decaf-ts/for-couchdb";
6
- /**
7
- * @description Paginator for CouchDB query results
8
- * @summary Implements pagination for CouchDB queries using bookmarks for efficient navigation through result sets
9
- * @template M - The model type that extends Model
10
- * @template R - The result type
11
- * @param {FabricCo<any, any, any>} adapter - The CouchDB adapter
12
- * @param {MangoQuery} query - The Mango query to paginate
13
- * @param {number} size - The page size
14
- * @param {Constructor<M>} clazz - The model constructor
15
- * @class CouchDBPaginator
16
- * @example
17
- * // Example of using CouchDBPaginator
18
- * const adapter = new MyCouchDBAdapter(scope);
19
- * const query = { selector: { type: "user" } };
20
- * const paginator = new CouchDBPaginator(adapter, query, 10, User);
21
- *
22
- * // Get the first page
23
- * const page1 = await paginator.page(1);
24
- *
25
- * // Get the next page
26
- * const page2 = await paginator.page(2);
27
- */
28
- export declare class FabricContractPaginator<M extends Model> extends CouchDBPaginator<M> {
29
- /**
30
- * @description Creates a new CouchDBPaginator instance
31
- * @summary Initializes a paginator for CouchDB query results
32
- * @param {CouchDBAdapter<any, any, any, any>} adapter - The CouchDB adapter
33
- * @param {MangoQuery} query - The Mango query to paginate
34
- * @param {number} size - The page size
35
- * @param {Constructor<M>} clazz - The model constructor
36
- */
37
- constructor(adapter: FabricContractAdapter, query: MangoQuery, size: number, clazz: Constructor<M>);
38
- /**
39
- * @description Prepares a query for pagination
40
- * @summary Modifies the raw query to include pagination parameters
41
- * @param {MangoQuery} rawStatement - The original Mango query
42
- * @return {MangoQuery} The prepared query with pagination parameters
43
- */
44
- protected prepare(rawStatement: MangoQuery): MangoQuery;
45
- /**
46
- * @description Retrieves a specific page of results
47
- * @summary Executes the query with pagination and processes the results
48
- * @param {number} [page=1] - The page number to retrieve
49
- * @return {Promise<R[]>} A promise that resolves to an array of results
50
- * @throws {PagingError} If trying to access a page other than the first without a bookmark, or if no class is defined
51
- * @mermaid
52
- * sequenceDiagram
53
- * participant Client
54
- * participant CouchDBPaginator
55
- * participant Adapter
56
- * participant CouchDB
57
- *
58
- * Client->>CouchDBPaginator: page(pageNumber)
59
- * Note over CouchDBPaginator: Clone statement
60
- * CouchDBPaginator->>CouchDBPaginator: validatePage(page)
61
- *
62
- * alt page !== 1
63
- * CouchDBPaginator->>CouchDBPaginator: Check bookmark
64
- * alt No bookmark
65
- * CouchDBPaginator-->>Client: Throw PagingError
66
- * else Has bookmark
67
- * CouchDBPaginator->>CouchDBPaginator: Add bookmark to statement
68
- * end
69
- * end
70
- *
71
- * CouchDBPaginator->>Adapter: raw(statement, false)
72
- * Adapter->>CouchDB: Execute query
73
- * CouchDB-->>Adapter: Return results
74
- * Adapter-->>CouchDBPaginator: Return MangoResponse
75
- *
76
- * Note over CouchDBPaginator: Process results
77
- *
78
- * alt Has warning
79
- * CouchDBPaginator->>CouchDBPaginator: Log warning
80
- * end
81
- *
82
- * CouchDBPaginator->>CouchDBPaginator: Check for clazz
83
- *
84
- * alt No clazz
85
- * CouchDBPaginator-->>Client: Throw PagingError
86
- * else Has clazz
87
- * CouchDBPaginator->>CouchDBPaginator: Find primary key
88
- *
89
- * alt Has fields in statement
90
- * CouchDBPaginator->>CouchDBPaginator: Use docs directly
91
- * else No fields
92
- * CouchDBPaginator->>CouchDBPaginator: Process each document
93
- * loop For each document
94
- * CouchDBPaginator->>CouchDBPaginator: Extract original ID
95
- * CouchDBPaginator->>Adapter: revert(doc, clazz, pkDef.id, parsedId)
96
- * end
97
- * end
98
- *
99
- * CouchDBPaginator->>CouchDBPaginator: Store bookmark
100
- * CouchDBPaginator->>CouchDBPaginator: Update currentPage
101
- * CouchDBPaginator-->>Client: Return results
102
- * end
103
- */
104
- page(page?: number, bookmark?: any, ...args: MaybeContextualArg<any>): Promise<M[]>;
105
- }
@@ -1,119 +0,0 @@
1
- import "./overrides";
2
- import { Repository, ObserverHandler, EventIds, ContextualArgs, MaybeContextualArg, OrderDirection, SerializedPage, DirectionLimitOffset, MethodOrOperation, ContextualizedArgs } from "@decaf-ts/core";
3
- import { FabricContractContext } from "./ContractContext";
4
- import { Model } from "@decaf-ts/decorator-validation";
5
- import { BulkCrudOperationKeys, OperationKeys } from "@decaf-ts/db-decorators";
6
- import { Constructor } from "@decaf-ts/decoration";
7
- import { FabricContractAdapter } from "./ContractAdapter";
8
- import { FabricContractFlags } from "./types";
9
- /**
10
- * @description Repository for Hyperledger Fabric chaincode models
11
- * @summary Provides CRUD operations for models within Fabric chaincode contracts
12
- * @template M - Type extending Model
13
- * @template MangoQuery - Query type for CouchDB-like queries
14
- * @template FabricContractAdapter - Adapter type for Fabric contract operations
15
- * @template FabricContractFlags - Flags specific to Fabric contract operations
16
- * @template FabricContractContext - Context type for Fabric contract operations
17
- *
18
- * @param {FabricContractAdapter} [adapter] - The adapter for interacting with the state database
19
- * @param {Constructor<M>} [clazz] - The model constructor
20
- * @param {Array<OperationKeys | BulkCrudOperationKeys | string>} [trackedEvents] - Events to track for observer notifications
21
- *
22
- * @class FabricContractRepository
23
- * @example
24
- * ```typescript
25
- * // In a Fabric chaincode contract class
26
- * import { FabricContractRepository, FabricContractAdapter } from '@decaf-ts/for-fabric';
27
- *
28
- * @table('assets')
29
- * class Asset extends Model {
30
- * @id()
31
- * id: string;
32
- *
33
- * @property()
34
- * data: string;
35
- * }
36
- *
37
- * export class MyContract extends Contract {
38
- * private adapter = new FabricContractAdapter();
39
- * private repository: FabricContractRepository<Asset>;
40
- *
41
- * constructor() {
42
- * super('MyContract');
43
- * this.repository = new FabricContractRepository<Asset>(this.adapter, Asset);
44
- * }
45
- *
46
- * @Transaction()
47
- * async createAsset(ctx: Context, id: string, data: string): Promise<void> {
48
- * const asset = new Asset();
49
- * asset.id = id;
50
- * asset.data = data;
51
- *
52
- * await this.repository.create(asset, { stub: ctx.stub });
53
- * }
54
- * }
55
- * ```
56
- * @mermaid
57
- * sequenceDiagram
58
- * participant Contract
59
- * participant Repository
60
- * participant Adapter
61
- * participant StateDB
62
- *
63
- * Contract->>Repository: create(model, ctx)
64
- * Repository->>Adapter: prepare(model, pk)
65
- * Repository->>Adapter: create(tableName, id, record, transient, ctx)
66
- * Adapter->>StateDB: putState(id, serializedData)
67
- * StateDB-->>Adapter: Success
68
- * Adapter-->>Repository: record
69
- * Repository->>Adapter: revert(record, class, pk, id, transient)
70
- * Adapter-->>Repository: model
71
- * Repository-->>Contract: model
72
- */
73
- export declare class FabricContractRepository<M extends Model> extends Repository<M, FabricContractAdapter> {
74
- protected omittedEvents?: (OperationKeys | BulkCrudOperationKeys | string)[] | undefined;
75
- protected _overrides: Partial<(import("@decaf-ts/db-decorators").ContextFlags<any> & Pick<import("@decaf-ts/db-decorators").RepositoryFlags<any>, "operation" | "correlationId" | "ignoreDevSafeGuards" | "parentContext" | "childContexts"> & {
76
- pending?: Record<string, string[]>;
77
- transactionLock?: import("@decaf-ts/core").ContextLock;
78
- }) | import("@decaf-ts/core").AdapterFlags> & {
79
- ignoreValidation: boolean;
80
- ignoreHandlers: boolean;
81
- allowRawStatements: boolean;
82
- forcePrepareSimpleQueries: boolean;
83
- forcePrepareComplexQueries: boolean;
84
- rebuildWithTransient: boolean;
85
- };
86
- constructor(adapter?: FabricContractAdapter, clazz?: Constructor<M>, omittedEvents?: (OperationKeys | BulkCrudOperationKeys | string)[] | undefined);
87
- create(model: M, ...args: MaybeContextualArg<FabricContractContext>): Promise<M>;
88
- createAll(models: M[], ...args: MaybeContextualArg<FabricContractContext>): Promise<M[]>;
89
- update(model: M, ...args: MaybeContextualArg<FabricContractContext>): Promise<M>;
90
- updateAll(models: M[], ...args: MaybeContextualArg<FabricContractContext>): Promise<M[]>;
91
- listBy(key: keyof M, order: OrderDirection, ...args: MaybeContextualArg<FabricContractContext>): Promise<M[]>;
92
- paginateBy(key: keyof M, order: OrderDirection, ref?: Omit<DirectionLimitOffset, "direction">, ...args: MaybeContextualArg<FabricContractContext>): Promise<SerializedPage<M>>;
93
- statement(name: string, ...args: MaybeContextualArg<FabricContractContext>): Promise<any>;
94
- /**
95
- * @description Gets the observer handler for this repository
96
- * @summary Returns a FabricContractRepositoryObservableHandler instance
97
- * @return {ObserverHandler} The observer handler
98
- */
99
- ObserverHandler(): ObserverHandler;
100
- /**
101
- * @description Updates observers based on tracked events
102
- * @summary Filters events based on trackedEvents and delegates to the parent method
103
- * @param {string} table - The table/collection name
104
- * @param {OperationKeys | BulkCrudOperationKeys | string} event - The event type
105
- * @param {EventIds} id - The event identifier
106
- * @param {FabricContractContext} ctx - The Fabric contract context
107
- * @param {...any[]} args - Additional arguments
108
- * @return {Promise<void>} Promise that resolves when observers are updated
109
- */
110
- updateObservers(table: Constructor<M> | string, event: OperationKeys | BulkCrudOperationKeys | string, id: EventIds, ...args: ContextualArgs<FabricContractContext>): Promise<void>;
111
- protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<FabricContractContext, ARGS>, operation: METHOD): ContextualizedArgs<FabricContractContext, ARGS, METHOD extends string ? true : false>;
112
- protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<FabricContractContext, ARGS>, operation: METHOD, allowCreate: false): ContextualizedArgs<FabricContractContext, ARGS, METHOD extends string ? true : false>;
113
- protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<FabricContractContext, ARGS>, operation: METHOD, allowCreate: true): Promise<ContextualizedArgs<FabricContractContext, ARGS, METHOD extends string ? true : false>>;
114
- protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<FabricContractContext, ARGS>, operation: METHOD, allowCreate: true, overrides?: Partial<FabricContractFlags>): Promise<ContextualizedArgs<FabricContractContext, ARGS, METHOD extends string ? true : false>>;
115
- protected logCtx<ARGS extends any[] = any[], METHOD extends MethodOrOperation = MethodOrOperation>(args: MaybeContextualArg<FabricContractContext, ARGS>, operation: METHOD, allowCreate: false, overrides?: Partial<FabricContractFlags>): ContextualizedArgs<FabricContractContext, ARGS, METHOD extends string ? true : false>;
116
- private cleanContextualizedArgs;
117
- private applyCleanContext;
118
- private cleanContext;
119
- }