@decaf-ts/for-fabric 0.0.2

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 (205) hide show
  1. package/LICENSE.md +22 -0
  2. package/README.md +647 -0
  3. package/dist/for-fabric.cjs +6223 -0
  4. package/dist/for-fabric.esm.cjs +6180 -0
  5. package/lib/client/FabricClientAdapter.cjs +760 -0
  6. package/lib/client/FabricClientAdapter.d.ts +381 -0
  7. package/lib/client/FabricClientDispatch.cjs +186 -0
  8. package/lib/client/FabricClientDispatch.d.ts +125 -0
  9. package/lib/client/FabricClientRepository.cjs +131 -0
  10. package/lib/client/FabricClientRepository.d.ts +100 -0
  11. package/lib/client/erc20/erc20ClientRepository.cjs +343 -0
  12. package/lib/client/erc20/erc20ClientRepository.d.ts +254 -0
  13. package/lib/client/fabric-fs.cjs +234 -0
  14. package/lib/client/fabric-fs.d.ts +92 -0
  15. package/lib/client/index.cjs +30 -0
  16. package/lib/client/index.d.ts +13 -0
  17. package/lib/client/logging.cjs +102 -0
  18. package/lib/client/logging.d.ts +60 -0
  19. package/lib/client/services/LoggedService.cjs +47 -0
  20. package/lib/client/services/LoggedService.d.ts +42 -0
  21. package/lib/client/services/constants.cjs +3 -0
  22. package/lib/client/services/constants.d.ts +15 -0
  23. package/lib/client/services/enrollementService.cjs +344 -0
  24. package/lib/client/services/enrollementService.d.ts +176 -0
  25. package/lib/client/services/index.cjs +18 -0
  26. package/lib/client/services/index.d.ts +1 -0
  27. package/lib/contracts/ContractAdapter.cjs +730 -0
  28. package/lib/contracts/ContractAdapter.d.ts +296 -0
  29. package/lib/contracts/ContractContext.cjs +85 -0
  30. package/lib/contracts/ContractContext.d.ts +64 -0
  31. package/lib/contracts/ContractPrivateDataAdapter.cjs +281 -0
  32. package/lib/contracts/ContractPrivateDataAdapter.d.ts +74 -0
  33. package/lib/contracts/FabricConstruction.cjs +441 -0
  34. package/lib/contracts/FabricConstruction.d.ts +304 -0
  35. package/lib/contracts/FabricContractRepository.cjs +306 -0
  36. package/lib/contracts/FabricContractRepository.d.ts +162 -0
  37. package/lib/contracts/FabricContractRepositoryObservableHandler.cjs +85 -0
  38. package/lib/contracts/FabricContractRepositoryObservableHandler.d.ts +62 -0
  39. package/lib/contracts/FabricContractSequence.cjs +139 -0
  40. package/lib/contracts/FabricContractSequence.d.ts +61 -0
  41. package/lib/contracts/FabricContractStatement.cjs +119 -0
  42. package/lib/contracts/FabricContractStatement.d.ts +34 -0
  43. package/lib/contracts/PrivateSequence.cjs +36 -0
  44. package/lib/contracts/PrivateSequence.d.ts +15 -0
  45. package/lib/contracts/crud/crud-contract.cjs +257 -0
  46. package/lib/contracts/crud/crud-contract.d.ts +168 -0
  47. package/lib/contracts/crud/index.cjs +19 -0
  48. package/lib/contracts/crud/index.d.ts +2 -0
  49. package/lib/contracts/crud/serialized-crud-contract.cjs +172 -0
  50. package/lib/contracts/crud/serialized-crud-contract.d.ts +37 -0
  51. package/lib/contracts/erc20/erc20contract.cjs +569 -0
  52. package/lib/contracts/erc20/erc20contract.d.ts +151 -0
  53. package/lib/contracts/erc20/index.cjs +21 -0
  54. package/lib/contracts/erc20/index.d.ts +2 -0
  55. package/lib/contracts/erc20/models.cjs +209 -0
  56. package/lib/contracts/erc20/models.d.ts +114 -0
  57. package/lib/contracts/index.cjs +32 -0
  58. package/lib/contracts/index.d.ts +15 -0
  59. package/lib/contracts/logging.cjs +96 -0
  60. package/lib/contracts/logging.d.ts +49 -0
  61. package/lib/contracts/private-data.cjs +121 -0
  62. package/lib/contracts/private-data.d.ts +16 -0
  63. package/lib/contracts/types.cjs +3 -0
  64. package/lib/contracts/types.d.ts +26 -0
  65. package/lib/esm/client/FabricClientAdapter.d.ts +381 -0
  66. package/lib/esm/client/FabricClientAdapter.js +723 -0
  67. package/lib/esm/client/FabricClientDispatch.d.ts +125 -0
  68. package/lib/esm/client/FabricClientDispatch.js +182 -0
  69. package/lib/esm/client/FabricClientRepository.d.ts +100 -0
  70. package/lib/esm/client/FabricClientRepository.js +127 -0
  71. package/lib/esm/client/erc20/erc20ClientRepository.d.ts +254 -0
  72. package/lib/esm/client/erc20/erc20ClientRepository.js +339 -0
  73. package/lib/esm/client/fabric-fs.d.ts +92 -0
  74. package/lib/esm/client/fabric-fs.js +191 -0
  75. package/lib/esm/client/index.d.ts +13 -0
  76. package/lib/esm/client/index.js +14 -0
  77. package/lib/esm/client/logging.d.ts +60 -0
  78. package/lib/esm/client/logging.js +98 -0
  79. package/lib/esm/client/services/LoggedService.d.ts +42 -0
  80. package/lib/esm/client/services/LoggedService.js +43 -0
  81. package/lib/esm/client/services/constants.d.ts +15 -0
  82. package/lib/esm/client/services/constants.js +2 -0
  83. package/lib/esm/client/services/enrollementService.d.ts +176 -0
  84. package/lib/esm/client/services/enrollementService.js +337 -0
  85. package/lib/esm/client/services/index.d.ts +1 -0
  86. package/lib/esm/client/services/index.js +2 -0
  87. package/lib/esm/contracts/ContractAdapter.d.ts +296 -0
  88. package/lib/esm/contracts/ContractAdapter.js +724 -0
  89. package/lib/esm/contracts/ContractContext.d.ts +64 -0
  90. package/lib/esm/contracts/ContractContext.js +81 -0
  91. package/lib/esm/contracts/ContractPrivateDataAdapter.d.ts +74 -0
  92. package/lib/esm/contracts/ContractPrivateDataAdapter.js +277 -0
  93. package/lib/esm/contracts/FabricConstruction.d.ts +304 -0
  94. package/lib/esm/contracts/FabricConstruction.js +433 -0
  95. package/lib/esm/contracts/FabricContractRepository.d.ts +162 -0
  96. package/lib/esm/contracts/FabricContractRepository.js +302 -0
  97. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.d.ts +62 -0
  98. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +81 -0
  99. package/lib/esm/contracts/FabricContractSequence.d.ts +61 -0
  100. package/lib/esm/contracts/FabricContractSequence.js +135 -0
  101. package/lib/esm/contracts/FabricContractStatement.d.ts +34 -0
  102. package/lib/esm/contracts/FabricContractStatement.js +115 -0
  103. package/lib/esm/contracts/PrivateSequence.d.ts +15 -0
  104. package/lib/esm/contracts/PrivateSequence.js +33 -0
  105. package/lib/esm/contracts/crud/crud-contract.d.ts +168 -0
  106. package/lib/esm/contracts/crud/crud-contract.js +253 -0
  107. package/lib/esm/contracts/crud/index.d.ts +2 -0
  108. package/lib/esm/contracts/crud/index.js +3 -0
  109. package/lib/esm/contracts/crud/serialized-crud-contract.d.ts +37 -0
  110. package/lib/esm/contracts/crud/serialized-crud-contract.js +168 -0
  111. package/lib/esm/contracts/erc20/erc20contract.d.ts +151 -0
  112. package/lib/esm/contracts/erc20/erc20contract.js +565 -0
  113. package/lib/esm/contracts/erc20/index.d.ts +2 -0
  114. package/lib/esm/contracts/erc20/index.js +4 -0
  115. package/lib/esm/contracts/erc20/models.d.ts +114 -0
  116. package/lib/esm/contracts/erc20/models.js +206 -0
  117. package/lib/esm/contracts/index.d.ts +15 -0
  118. package/lib/esm/contracts/index.js +16 -0
  119. package/lib/esm/contracts/logging.d.ts +49 -0
  120. package/lib/esm/contracts/logging.js +92 -0
  121. package/lib/esm/contracts/private-data.d.ts +16 -0
  122. package/lib/esm/contracts/private-data.js +113 -0
  123. package/lib/esm/contracts/types.d.ts +26 -0
  124. package/lib/esm/contracts/types.js +2 -0
  125. package/lib/esm/index.d.ts +8 -0
  126. package/lib/esm/index.js +9 -0
  127. package/lib/esm/shared/ClientSerializer.d.ts +52 -0
  128. package/lib/esm/shared/ClientSerializer.js +80 -0
  129. package/lib/esm/shared/DeterministicSerializer.d.ts +40 -0
  130. package/lib/esm/shared/DeterministicSerializer.js +50 -0
  131. package/lib/esm/shared/SimpleDeterministicSerializer.d.ts +7 -0
  132. package/lib/esm/shared/SimpleDeterministicSerializer.js +42 -0
  133. package/lib/esm/shared/constants.d.ts +39 -0
  134. package/lib/esm/shared/constants.js +42 -0
  135. package/lib/esm/shared/crypto.d.ts +107 -0
  136. package/lib/esm/shared/crypto.js +331 -0
  137. package/lib/esm/shared/decorators.d.ts +24 -0
  138. package/lib/esm/shared/decorators.js +98 -0
  139. package/lib/esm/shared/erc20/erc20-constants.d.ts +25 -0
  140. package/lib/esm/shared/erc20/erc20-constants.js +27 -0
  141. package/lib/esm/shared/errors.d.ts +116 -0
  142. package/lib/esm/shared/errors.js +132 -0
  143. package/lib/esm/shared/events.d.ts +39 -0
  144. package/lib/esm/shared/events.js +47 -0
  145. package/lib/esm/shared/fabric-types.d.ts +33 -0
  146. package/lib/esm/shared/fabric-types.js +2 -0
  147. package/lib/esm/shared/index.d.ts +13 -0
  148. package/lib/esm/shared/index.js +14 -0
  149. package/lib/esm/shared/interfaces/Checkable.d.ts +21 -0
  150. package/lib/esm/shared/interfaces/Checkable.js +2 -0
  151. package/lib/esm/shared/math.d.ts +34 -0
  152. package/lib/esm/shared/math.js +61 -0
  153. package/lib/esm/shared/model/Identity.d.ts +42 -0
  154. package/lib/esm/shared/model/Identity.js +78 -0
  155. package/lib/esm/shared/model/IdentityCredentials.d.ts +41 -0
  156. package/lib/esm/shared/model/IdentityCredentials.js +74 -0
  157. package/lib/esm/shared/model/index.d.ts +1 -0
  158. package/lib/esm/shared/model/index.js +2 -0
  159. package/lib/esm/shared/model/utils.d.ts +60 -0
  160. package/lib/esm/shared/model/utils.js +108 -0
  161. package/lib/esm/shared/types.d.ts +79 -0
  162. package/lib/esm/shared/types.js +2 -0
  163. package/lib/esm/shared/utils.d.ts +55 -0
  164. package/lib/esm/shared/utils.js +148 -0
  165. package/lib/index.cjs +25 -0
  166. package/lib/index.d.ts +8 -0
  167. package/lib/shared/ClientSerializer.cjs +84 -0
  168. package/lib/shared/ClientSerializer.d.ts +52 -0
  169. package/lib/shared/DeterministicSerializer.cjs +54 -0
  170. package/lib/shared/DeterministicSerializer.d.ts +40 -0
  171. package/lib/shared/SimpleDeterministicSerializer.cjs +46 -0
  172. package/lib/shared/SimpleDeterministicSerializer.d.ts +7 -0
  173. package/lib/shared/constants.cjs +45 -0
  174. package/lib/shared/constants.d.ts +39 -0
  175. package/lib/shared/crypto.cjs +369 -0
  176. package/lib/shared/crypto.d.ts +107 -0
  177. package/lib/shared/decorators.cjs +105 -0
  178. package/lib/shared/decorators.d.ts +24 -0
  179. package/lib/shared/erc20/erc20-constants.cjs +30 -0
  180. package/lib/shared/erc20/erc20-constants.d.ts +25 -0
  181. package/lib/shared/errors.cjs +142 -0
  182. package/lib/shared/errors.d.ts +116 -0
  183. package/lib/shared/events.cjs +51 -0
  184. package/lib/shared/events.d.ts +39 -0
  185. package/lib/shared/fabric-types.cjs +4 -0
  186. package/lib/shared/fabric-types.d.ts +33 -0
  187. package/lib/shared/index.cjs +30 -0
  188. package/lib/shared/index.d.ts +13 -0
  189. package/lib/shared/interfaces/Checkable.cjs +3 -0
  190. package/lib/shared/interfaces/Checkable.d.ts +21 -0
  191. package/lib/shared/math.cjs +66 -0
  192. package/lib/shared/math.d.ts +34 -0
  193. package/lib/shared/model/Identity.cjs +81 -0
  194. package/lib/shared/model/Identity.d.ts +42 -0
  195. package/lib/shared/model/IdentityCredentials.cjs +77 -0
  196. package/lib/shared/model/IdentityCredentials.d.ts +41 -0
  197. package/lib/shared/model/index.cjs +18 -0
  198. package/lib/shared/model/index.d.ts +1 -0
  199. package/lib/shared/model/utils.cjs +114 -0
  200. package/lib/shared/model/utils.d.ts +60 -0
  201. package/lib/shared/types.cjs +3 -0
  202. package/lib/shared/types.d.ts +79 -0
  203. package/lib/shared/utils.cjs +185 -0
  204. package/lib/shared/utils.d.ts +55 -0
  205. package/package.json +166 -0
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @description Overflow-safe addition operation
3
+ * @summary Adds two numbers and verifies no overflow by reverse-checking the operands
4
+ * @param {number} a - First operand
5
+ * @param {number} b - Second operand
6
+ * @return {number} The sum of a and b
7
+ * @function add
8
+ * @throws {OverflowError} on addition overflow
9
+ * @memberOf module:for-fabric.shared
10
+ */
11
+ export declare function add(a: number, b: number): number;
12
+ /**
13
+ * @description Overflow-safe subtraction operation
14
+ * @summary Subtracts b from a and validates no overflow by reverse-checking the operands
15
+ * @param {number} a - Minuend
16
+ * @param {number} b - Subtrahend
17
+ * @return {number} The difference a - b
18
+ * @function sub
19
+ * @throws {OverflowError} on subtaction overflow
20
+ * @memberOf module:for-fabric.shared
21
+ */
22
+ export declare function sub(a: number, b: number): number;
23
+ /**
24
+ * @summary Safe Integer Parse
25
+ *
26
+ * @param {string} string
27
+ *
28
+ * @function safeParseInt
29
+ *
30
+ * @throws {ValidationError} if parseInt returns NaN
31
+ *
32
+ * @memberOf module:for-fabric.shared
33
+ */
34
+ export declare function safeParseInt(string: string): number;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Identity = void 0;
13
+ const core_1 = require("@decaf-ts/core");
14
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
15
+ const IdentityCredentials_1 = require("./IdentityCredentials.cjs");
16
+ const constants_1 = require("./../constants.cjs");
17
+ /**
18
+ * @description Identity model representing a Fabric wallet entry
19
+ * @summary Encapsulates an identity stored in a Fabric wallet, including its MSP identifier, credential linkage, and type information. Built on BaseModel for integration with Decaf validation and persistence.
20
+ * @param {ModelArg<Identity>} [arg] - Optional initialization object used to populate model fields
21
+ * @class Identity
22
+ * @example
23
+ * // Create a new identity referencing existing credentials
24
+ * const id = new Identity({ id: "user1", mspId: "Org1MSP", type: IdentityType.X509 });
25
+ * @mermaid
26
+ * sequenceDiagram
27
+ * participant App
28
+ * participant Model as Identity
29
+ * App->>Model: new Identity({ id, mspId, type })
30
+ * Model-->>App: instance
31
+ */
32
+ let Identity = class Identity extends core_1.BaseModel {
33
+ constructor(arg) {
34
+ super(arg);
35
+ /**
36
+ * @description Unique identifier of the identity in the wallet
37
+ * @summary Primary key used to reference this identity record
38
+ */
39
+ this.id = undefined;
40
+ /**
41
+ * @description Link to the identity credentials stored separately
42
+ * @summary One-to-one relationship to the credentials entity; cascades on update and delete
43
+ */
44
+ this.credentials = undefined;
45
+ /**
46
+ * @description Membership Service Provider identifier
47
+ * @summary The MSP ID corresponding to the organization that issued this identity
48
+ */
49
+ this.mspId = undefined;
50
+ /**
51
+ * @description Type of identity
52
+ * @summary Indicates the identity encoding/format; defaults to X.509
53
+ */
54
+ this.type = constants_1.IdentityType.X509;
55
+ }
56
+ };
57
+ exports.Identity = Identity;
58
+ __decorate([
59
+ (0, core_1.pk)(),
60
+ __metadata("design:type", String)
61
+ ], Identity.prototype, "id", void 0);
62
+ __decorate([
63
+ (0, core_1.oneToOne)(IdentityCredentials_1.IdentityCredentials, {
64
+ update: core_1.Cascade.CASCADE,
65
+ delete: core_1.Cascade.CASCADE,
66
+ }),
67
+ __metadata("design:type", IdentityCredentials_1.IdentityCredentials)
68
+ ], Identity.prototype, "credentials", void 0);
69
+ __decorate([
70
+ (0, decorator_validation_1.required)(),
71
+ __metadata("design:type", String)
72
+ ], Identity.prototype, "mspId", void 0);
73
+ __decorate([
74
+ (0, decorator_validation_1.required)(),
75
+ __metadata("design:type", String)
76
+ ], Identity.prototype, "type", void 0);
77
+ exports.Identity = Identity = __decorate([
78
+ (0, decorator_validation_1.model)(),
79
+ __metadata("design:paramtypes", [Object])
80
+ ], Identity);
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSWRlbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhcmVkL21vZGVsL0lkZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLHlDQUFrRTtBQUNsRSx5RUFBZ0Y7QUFDaEYsbUVBQTREO0FBQzVELGtEQUE0QztBQUU1Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVJLElBQU0sUUFBUSxHQUFkLE1BQU0sUUFBUyxTQUFRLGdCQUFTO0lBZ0NyQyxZQUFZLEdBQXVCO1FBQ2pDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQWhDYjs7O1dBR0c7UUFFSCxPQUFFLEdBQVksU0FBUyxDQUFDO1FBRXhCOzs7V0FHRztRQUtILGdCQUFXLEdBQXlCLFNBQVMsQ0FBQztRQUU5Qzs7O1dBR0c7UUFFSCxVQUFLLEdBQVksU0FBUyxDQUFDO1FBRTNCOzs7V0FHRztRQUVILFNBQUksR0FBa0Isd0JBQVksQ0FBQyxJQUFJLENBQUM7SUFJeEMsQ0FBQztDQUNGLENBQUE7QUFuQ1ksNEJBQVE7QUFNbkI7SUFEQyxJQUFBLFNBQUUsR0FBRTs7b0NBQ21CO0FBVXhCO0lBSkMsSUFBQSxlQUFRLEVBQUMseUNBQW1CLEVBQUU7UUFDN0IsTUFBTSxFQUFFLGNBQU8sQ0FBQyxPQUFPO1FBQ3ZCLE1BQU0sRUFBRSxjQUFPLENBQUMsT0FBTztLQUN4QixDQUFDOzhCQUNZLHlDQUFtQjs2Q0FBYTtBQU85QztJQURDLElBQUEsK0JBQVEsR0FBRTs7dUNBQ2dCO0FBTzNCO0lBREMsSUFBQSwrQkFBUSxHQUFFOztzQ0FDNkI7bUJBOUI3QixRQUFRO0lBRHBCLElBQUEsNEJBQUssR0FBRTs7R0FDSyxRQUFRLENBbUNwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VNb2RlbCwgQ2FzY2FkZSwgb25lVG9PbmUsIHBrIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBtb2RlbCwgdHlwZSBNb2RlbEFyZywgcmVxdWlyZWQgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBJZGVudGl0eUNyZWRlbnRpYWxzIH0gZnJvbSBcIi4vSWRlbnRpdHlDcmVkZW50aWFsc1wiO1xuaW1wb3J0IHsgSWRlbnRpdHlUeXBlIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJZGVudGl0eSBtb2RlbCByZXByZXNlbnRpbmcgYSBGYWJyaWMgd2FsbGV0IGVudHJ5XG4gKiBAc3VtbWFyeSBFbmNhcHN1bGF0ZXMgYW4gaWRlbnRpdHkgc3RvcmVkIGluIGEgRmFicmljIHdhbGxldCwgaW5jbHVkaW5nIGl0cyBNU1AgaWRlbnRpZmllciwgY3JlZGVudGlhbCBsaW5rYWdlLCBhbmQgdHlwZSBpbmZvcm1hdGlvbi4gQnVpbHQgb24gQmFzZU1vZGVsIGZvciBpbnRlZ3JhdGlvbiB3aXRoIERlY2FmIHZhbGlkYXRpb24gYW5kIHBlcnNpc3RlbmNlLlxuICogQHBhcmFtIHtNb2RlbEFyZzxJZGVudGl0eT59IFthcmddIC0gT3B0aW9uYWwgaW5pdGlhbGl6YXRpb24gb2JqZWN0IHVzZWQgdG8gcG9wdWxhdGUgbW9kZWwgZmllbGRzXG4gKiBAY2xhc3MgSWRlbnRpdHlcbiAqIEBleGFtcGxlXG4gKiAvLyBDcmVhdGUgYSBuZXcgaWRlbnRpdHkgcmVmZXJlbmNpbmcgZXhpc3RpbmcgY3JlZGVudGlhbHNcbiAqIGNvbnN0IGlkID0gbmV3IElkZW50aXR5KHsgaWQ6IFwidXNlcjFcIiwgbXNwSWQ6IFwiT3JnMU1TUFwiLCB0eXBlOiBJZGVudGl0eVR5cGUuWDUwOSB9KTtcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQXBwXG4gKiAgIHBhcnRpY2lwYW50IE1vZGVsIGFzIElkZW50aXR5XG4gKiAgIEFwcC0+Pk1vZGVsOiBuZXcgSWRlbnRpdHkoeyBpZCwgbXNwSWQsIHR5cGUgfSlcbiAqICAgTW9kZWwtLT4+QXBwOiBpbnN0YW5jZVxuICovXG5AbW9kZWwoKVxuZXhwb3J0IGNsYXNzIElkZW50aXR5IGV4dGVuZHMgQmFzZU1vZGVsIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgaWRlbnRpdHkgaW4gdGhlIHdhbGxldFxuICAgKiBAc3VtbWFyeSBQcmltYXJ5IGtleSB1c2VkIHRvIHJlZmVyZW5jZSB0aGlzIGlkZW50aXR5IHJlY29yZFxuICAgKi9cbiAgQHBrKClcbiAgaWQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMaW5rIHRvIHRoZSBpZGVudGl0eSBjcmVkZW50aWFscyBzdG9yZWQgc2VwYXJhdGVseVxuICAgKiBAc3VtbWFyeSBPbmUtdG8tb25lIHJlbGF0aW9uc2hpcCB0byB0aGUgY3JlZGVudGlhbHMgZW50aXR5OyBjYXNjYWRlcyBvbiB1cGRhdGUgYW5kIGRlbGV0ZVxuICAgKi9cbiAgQG9uZVRvT25lKElkZW50aXR5Q3JlZGVudGlhbHMsIHtcbiAgICB1cGRhdGU6IENhc2NhZGUuQ0FTQ0FERSxcbiAgICBkZWxldGU6IENhc2NhZGUuQ0FTQ0FERSxcbiAgfSlcbiAgY3JlZGVudGlhbHM/OiBJZGVudGl0eUNyZWRlbnRpYWxzID0gdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTWVtYmVyc2hpcCBTZXJ2aWNlIFByb3ZpZGVyIGlkZW50aWZpZXJcbiAgICogQHN1bW1hcnkgVGhlIE1TUCBJRCBjb3JyZXNwb25kaW5nIHRvIHRoZSBvcmdhbml6YXRpb24gdGhhdCBpc3N1ZWQgdGhpcyBpZGVudGl0eVxuICAgKi9cbiAgQHJlcXVpcmVkKClcbiAgbXNwSWQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUeXBlIG9mIGlkZW50aXR5XG4gICAqIEBzdW1tYXJ5IEluZGljYXRlcyB0aGUgaWRlbnRpdHkgZW5jb2RpbmcvZm9ybWF0OyBkZWZhdWx0cyB0byBYLjUwOVxuICAgKi9cbiAgQHJlcXVpcmVkKClcbiAgdHlwZT86IElkZW50aXR5VHlwZSA9IElkZW50aXR5VHlwZS5YNTA5O1xuXG4gIGNvbnN0cnVjdG9yKGFyZzogTW9kZWxBcmc8SWRlbnRpdHk+KSB7XG4gICAgc3VwZXIoYXJnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,42 @@
1
+ import { BaseModel } from "@decaf-ts/core";
2
+ import { type ModelArg } from "@decaf-ts/decorator-validation";
3
+ import { IdentityCredentials } from "./IdentityCredentials";
4
+ import { IdentityType } from "../constants";
5
+ /**
6
+ * @description Identity model representing a Fabric wallet entry
7
+ * @summary Encapsulates an identity stored in a Fabric wallet, including its MSP identifier, credential linkage, and type information. Built on BaseModel for integration with Decaf validation and persistence.
8
+ * @param {ModelArg<Identity>} [arg] - Optional initialization object used to populate model fields
9
+ * @class Identity
10
+ * @example
11
+ * // Create a new identity referencing existing credentials
12
+ * const id = new Identity({ id: "user1", mspId: "Org1MSP", type: IdentityType.X509 });
13
+ * @mermaid
14
+ * sequenceDiagram
15
+ * participant App
16
+ * participant Model as Identity
17
+ * App->>Model: new Identity({ id, mspId, type })
18
+ * Model-->>App: instance
19
+ */
20
+ export declare class Identity extends BaseModel {
21
+ /**
22
+ * @description Unique identifier of the identity in the wallet
23
+ * @summary Primary key used to reference this identity record
24
+ */
25
+ id?: string;
26
+ /**
27
+ * @description Link to the identity credentials stored separately
28
+ * @summary One-to-one relationship to the credentials entity; cascades on update and delete
29
+ */
30
+ credentials?: IdentityCredentials;
31
+ /**
32
+ * @description Membership Service Provider identifier
33
+ * @summary The MSP ID corresponding to the organization that issued this identity
34
+ */
35
+ mspId?: string;
36
+ /**
37
+ * @description Type of identity
38
+ * @summary Indicates the identity encoding/format; defaults to X.509
39
+ */
40
+ type?: IdentityType;
41
+ constructor(arg: ModelArg<Identity>);
42
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.IdentityCredentials = void 0;
13
+ const core_1 = require("@decaf-ts/core");
14
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
15
+ /**
16
+ * @description Identity credential model storing cryptographic materials
17
+ * @summary Holds certificate chain and private key information for a Fabric identity, managed as a separate entity linked from Identity
18
+ * @param {ModelArg<IdentityCredentials>} [arg] - Optional initialization object used to populate model fields
19
+ * @class IdentityCredentials
20
+ * @example
21
+ * // Create credentials entry
22
+ * const creds = new IdentityCredentials({ id: "creds1", certificate: "...", rootCertificate: "...", privateKey: "..." });
23
+ * @mermaid
24
+ * sequenceDiagram
25
+ * participant App
26
+ * participant Model as IdentityCredentials
27
+ * App->>Model: new IdentityCredentials({ id, certificate, rootCertificate, privateKey })
28
+ * Model-->>App: instance
29
+ * @see model
30
+ */
31
+ let IdentityCredentials = class IdentityCredentials extends core_1.BaseModel {
32
+ constructor(arg) {
33
+ super(arg);
34
+ /**
35
+ * @description Unique identifier of the credentials record
36
+ * @summary Primary key for referencing this credentials entry
37
+ */
38
+ this.id = undefined;
39
+ /**
40
+ * @description PEM-encoded X.509 certificate for the identity
41
+ * @summary Leaf certificate associated with the identity
42
+ */
43
+ this.certificate = undefined;
44
+ /**
45
+ * @description PEM-encoded root or intermediate certificate
46
+ * @summary Root of trust used to validate the leaf certificate
47
+ */
48
+ this.rootCertificate = undefined;
49
+ /**
50
+ * @description PEM-encoded private key material
51
+ * @summary Private key corresponding to the identity certificate
52
+ */
53
+ this.privateKey = undefined;
54
+ }
55
+ };
56
+ exports.IdentityCredentials = IdentityCredentials;
57
+ __decorate([
58
+ (0, core_1.pk)(),
59
+ __metadata("design:type", String)
60
+ ], IdentityCredentials.prototype, "id", void 0);
61
+ __decorate([
62
+ (0, decorator_validation_1.required)(),
63
+ __metadata("design:type", String)
64
+ ], IdentityCredentials.prototype, "certificate", void 0);
65
+ __decorate([
66
+ (0, decorator_validation_1.required)(),
67
+ __metadata("design:type", String)
68
+ ], IdentityCredentials.prototype, "rootCertificate", void 0);
69
+ __decorate([
70
+ (0, decorator_validation_1.required)(),
71
+ __metadata("design:type", String)
72
+ ], IdentityCredentials.prototype, "privateKey", void 0);
73
+ exports.IdentityCredentials = IdentityCredentials = __decorate([
74
+ (0, decorator_validation_1.model)(),
75
+ __metadata("design:paramtypes", [Object])
76
+ ], IdentityCredentials);
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSWRlbnRpdHlDcmVkZW50aWFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFyZWQvbW9kZWwvSWRlbnRpdHlDcmVkZW50aWFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx5Q0FBK0M7QUFDL0MseUVBQWdGO0FBRWhGOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVJLElBQU0sbUJBQW1CLEdBQXpCLE1BQU0sbUJBQW9CLFNBQVEsZ0JBQVM7SUE2QmhELFlBQVksR0FBbUM7UUFDN0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBN0JiOzs7V0FHRztRQUVILE9BQUUsR0FBWSxTQUFTLENBQUM7UUFFeEI7OztXQUdHO1FBRUgsZ0JBQVcsR0FBWSxTQUFTLENBQUM7UUFFakM7OztXQUdHO1FBRUgsb0JBQWUsR0FBWSxTQUFTLENBQUM7UUFFckM7OztXQUdHO1FBRUgsZUFBVSxHQUFZLFNBQVMsQ0FBQztJQUloQyxDQUFDO0NBQ0YsQ0FBQTtBQWhDWSxrREFBbUI7QUFNOUI7SUFEQyxJQUFBLFNBQUUsR0FBRTs7K0NBQ21CO0FBT3hCO0lBREMsSUFBQSwrQkFBUSxHQUFFOzt3REFDc0I7QUFPakM7SUFEQyxJQUFBLCtCQUFRLEdBQUU7OzREQUMwQjtBQU9yQztJQURDLElBQUEsK0JBQVEsR0FBRTs7dURBQ3FCOzhCQTNCckIsbUJBQW1CO0lBRC9CLElBQUEsNEJBQUssR0FBRTs7R0FDSyxtQkFBbUIsQ0FnQy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsLCBwayB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgbW9kZWwsIHR5cGUgTW9kZWxBcmcsIHJlcXVpcmVkIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJZGVudGl0eSBjcmVkZW50aWFsIG1vZGVsIHN0b3JpbmcgY3J5cHRvZ3JhcGhpYyBtYXRlcmlhbHNcbiAqIEBzdW1tYXJ5IEhvbGRzIGNlcnRpZmljYXRlIGNoYWluIGFuZCBwcml2YXRlIGtleSBpbmZvcm1hdGlvbiBmb3IgYSBGYWJyaWMgaWRlbnRpdHksIG1hbmFnZWQgYXMgYSBzZXBhcmF0ZSBlbnRpdHkgbGlua2VkIGZyb20gSWRlbnRpdHlcbiAqIEBwYXJhbSB7TW9kZWxBcmc8SWRlbnRpdHlDcmVkZW50aWFscz59IFthcmddIC0gT3B0aW9uYWwgaW5pdGlhbGl6YXRpb24gb2JqZWN0IHVzZWQgdG8gcG9wdWxhdGUgbW9kZWwgZmllbGRzXG4gKiBAY2xhc3MgSWRlbnRpdHlDcmVkZW50aWFsc1xuICogQGV4YW1wbGVcbiAqIC8vIENyZWF0ZSBjcmVkZW50aWFscyBlbnRyeVxuICogY29uc3QgY3JlZHMgPSBuZXcgSWRlbnRpdHlDcmVkZW50aWFscyh7IGlkOiBcImNyZWRzMVwiLCBjZXJ0aWZpY2F0ZTogXCIuLi5cIiwgcm9vdENlcnRpZmljYXRlOiBcIi4uLlwiLCBwcml2YXRlS2V5OiBcIi4uLlwiIH0pO1xuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBBcHBcbiAqICAgcGFydGljaXBhbnQgTW9kZWwgYXMgSWRlbnRpdHlDcmVkZW50aWFsc1xuICogICBBcHAtPj5Nb2RlbDogbmV3IElkZW50aXR5Q3JlZGVudGlhbHMoeyBpZCwgY2VydGlmaWNhdGUsIHJvb3RDZXJ0aWZpY2F0ZSwgcHJpdmF0ZUtleSB9KVxuICogICBNb2RlbC0tPj5BcHA6IGluc3RhbmNlXG4gKiBAc2VlIG1vZGVsXG4gKi9cbkBtb2RlbCgpXG5leHBvcnQgY2xhc3MgSWRlbnRpdHlDcmVkZW50aWFscyBleHRlbmRzIEJhc2VNb2RlbCB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGNyZWRlbnRpYWxzIHJlY29yZFxuICAgKiBAc3VtbWFyeSBQcmltYXJ5IGtleSBmb3IgcmVmZXJlbmNpbmcgdGhpcyBjcmVkZW50aWFscyBlbnRyeVxuICAgKi9cbiAgQHBrKClcbiAgaWQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQRU0tZW5jb2RlZCBYLjUwOSBjZXJ0aWZpY2F0ZSBmb3IgdGhlIGlkZW50aXR5XG4gICAqIEBzdW1tYXJ5IExlYWYgY2VydGlmaWNhdGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBpZGVudGl0eVxuICAgKi9cbiAgQHJlcXVpcmVkKClcbiAgY2VydGlmaWNhdGU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQRU0tZW5jb2RlZCByb290IG9yIGludGVybWVkaWF0ZSBjZXJ0aWZpY2F0ZVxuICAgKiBAc3VtbWFyeSBSb290IG9mIHRydXN0IHVzZWQgdG8gdmFsaWRhdGUgdGhlIGxlYWYgY2VydGlmaWNhdGVcbiAgICovXG4gIEByZXF1aXJlZCgpXG4gIHJvb3RDZXJ0aWZpY2F0ZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBFTS1lbmNvZGVkIHByaXZhdGUga2V5IG1hdGVyaWFsXG4gICAqIEBzdW1tYXJ5IFByaXZhdGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGlkZW50aXR5IGNlcnRpZmljYXRlXG4gICAqL1xuICBAcmVxdWlyZWQoKVxuICBwcml2YXRlS2V5Pzogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGFyZz86IE1vZGVsQXJnPElkZW50aXR5Q3JlZGVudGlhbHM+KSB7XG4gICAgc3VwZXIoYXJnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,41 @@
1
+ import { BaseModel } from "@decaf-ts/core";
2
+ import { type ModelArg } from "@decaf-ts/decorator-validation";
3
+ /**
4
+ * @description Identity credential model storing cryptographic materials
5
+ * @summary Holds certificate chain and private key information for a Fabric identity, managed as a separate entity linked from Identity
6
+ * @param {ModelArg<IdentityCredentials>} [arg] - Optional initialization object used to populate model fields
7
+ * @class IdentityCredentials
8
+ * @example
9
+ * // Create credentials entry
10
+ * const creds = new IdentityCredentials({ id: "creds1", certificate: "...", rootCertificate: "...", privateKey: "..." });
11
+ * @mermaid
12
+ * sequenceDiagram
13
+ * participant App
14
+ * participant Model as IdentityCredentials
15
+ * App->>Model: new IdentityCredentials({ id, certificate, rootCertificate, privateKey })
16
+ * Model-->>App: instance
17
+ * @see model
18
+ */
19
+ export declare class IdentityCredentials extends BaseModel {
20
+ /**
21
+ * @description Unique identifier of the credentials record
22
+ * @summary Primary key for referencing this credentials entry
23
+ */
24
+ id?: string;
25
+ /**
26
+ * @description PEM-encoded X.509 certificate for the identity
27
+ * @summary Leaf certificate associated with the identity
28
+ */
29
+ certificate?: string;
30
+ /**
31
+ * @description PEM-encoded root or intermediate certificate
32
+ * @summary Root of trust used to validate the leaf certificate
33
+ */
34
+ rootCertificate?: string;
35
+ /**
36
+ * @description PEM-encoded private key material
37
+ * @summary Private key corresponding to the identity certificate
38
+ */
39
+ privateKey?: string;
40
+ constructor(arg?: ModelArg<IdentityCredentials>);
41
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Identity.cjs"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhcmVkL21vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9JZGVudGl0eVwiO1xuIl19
@@ -0,0 +1 @@
1
+ export * from "./Identity";
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasPrivateData = hasPrivateData;
4
+ exports.getClassPrivateDataMetadata = getClassPrivateDataMetadata;
5
+ exports.isModelPrivate = isModelPrivate;
6
+ exports.modelToPrivate = modelToPrivate;
7
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
8
+ const decorators_1 = require("./../decorators.cjs");
9
+ const constants_1 = require("./../constants.cjs");
10
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
11
+ /**
12
+ * @description Checks whether a model or its class has private data metadata
13
+ * @summary Uses reflection metadata to determine if the given Decaf model includes Fabric private data annotations at instance or constructor level
14
+ * @template M extends Model
15
+ * @param {M} model - The model instance to inspect for private data metadata
16
+ * @return {boolean} True if private data metadata is present; otherwise false
17
+ * @function hasPrivateData
18
+ * @memberOf module:for-fabric.shared
19
+ */
20
+ function hasPrivateData(model) {
21
+ const metadata = getClassPrivateDataMetadata(model);
22
+ if (!metadata)
23
+ return false;
24
+ return true;
25
+ }
26
+ /**
27
+ * @description Retrieves the Fabric private data metadata for a model
28
+ * @summary Looks up the metadata key on the instance first and then on the constructor to support both instance and static decorator placement
29
+ * @template M extends Model
30
+ * @param {M} model - The model whose Fabric private data metadata should be retrieved
31
+ * @return {Record<string, any>} The metadata object if present, otherwise undefined-like value
32
+ * @function getClassPrivateDataMetadata
33
+ * @memberOf module:for-fabric.shared
34
+ */
35
+ function getClassPrivateDataMetadata(model) {
36
+ let metadata = Reflect.getMetadata((0, decorators_1.getFabricModelKey)(constants_1.FabricModelKeys.PRIVATE), model);
37
+ metadata =
38
+ metadata ||
39
+ Reflect.getMetadata((0, decorators_1.getFabricModelKey)(constants_1.FabricModelKeys.PRIVATE), model.constructor);
40
+ return metadata;
41
+ }
42
+ /**
43
+ * @description Determines if a model should be fully treated as private
44
+ * @summary Reads the metadata flag isPrivate from the model's Fabric private data metadata and returns its boolean value
45
+ * @template M extends Model
46
+ * @param {M} model - The model instance to check
47
+ * @return {boolean} True when model is marked as private; otherwise false
48
+ * @function isModelPrivate
49
+ * @memberOf module:for-fabric.shared
50
+ */
51
+ function isModelPrivate(model) {
52
+ const metadata = getClassPrivateDataMetadata(model);
53
+ if (!metadata || metadata.isPrivate === undefined)
54
+ return false;
55
+ return metadata.isPrivate;
56
+ }
57
+ /**
58
+ * @description Splits a model into public and Fabric private data collections
59
+ * @summary Iterates over property decorators to collect attributes destined for private data collections while keeping public fields, returning a structure containing the rebuilt public model and a map of collection-name to private attributes
60
+ * @template M extends Model
61
+ * @param {M} model - The model instance to transform into public and private parts
62
+ * @return {{ model: M, private: Record<string, Record<string, any>> }} An object with the rebuilt public model and optional private collection maps
63
+ * @function modelToPrivate
64
+ * @mermaid
65
+ * sequenceDiagram
66
+ * participant Caller
67
+ * participant Utils as modelToPrivate
68
+ * participant Meta as Metadata
69
+ * Caller->>Utils: modelToPrivate(model)
70
+ * Utils->>Meta: getAllPropertyDecoratorsRecursive(model, PRIVATE)
71
+ * Utils->>Meta: isModelPrivate(model)
72
+ * alt model is private or has private props
73
+ * Utils->>Utils: group properties by collection
74
+ * else
75
+ * Utils->>Utils: keep property in public model
76
+ * end
77
+ * Utils->>Meta: getClassPrivateDataMetadata(model)
78
+ * Utils->>Utils: Model.build(public, anchor)
79
+ * Utils-->>Caller: { model, private }
80
+ * @memberOf module:for-fabric.shared
81
+ */
82
+ function modelToPrivate(model) {
83
+ if (!hasPrivateData(model))
84
+ return { model: model };
85
+ const decs = (0, db_decorators_1.getAllPropertyDecoratorsRecursive)(model, undefined, (0, decorators_1.getFabricModelKey)(constants_1.FabricModelKeys.PRIVATE));
86
+ const isPrivate = isModelPrivate(model);
87
+ const modelCollections = getClassPrivateDataMetadata(model);
88
+ const result = Object.entries(decs).reduce((accum, [k, val]) => {
89
+ const privateData = val.find((el) => el.key === "");
90
+ if (privateData || isPrivate) {
91
+ const collections = isPrivate
92
+ ? modelCollections.collections
93
+ : privateData.props.collections;
94
+ accum.private = accum.private || {};
95
+ for (const collection of collections) {
96
+ try {
97
+ accum.private[collection] = accum.private[collection] || {};
98
+ accum.private[collection][k] = model[k];
99
+ }
100
+ catch (e) {
101
+ throw new db_decorators_1.SerializationError(`Failed to serialize private property ${k}: ${e}`);
102
+ }
103
+ }
104
+ }
105
+ else {
106
+ accum.model = accum.model || {};
107
+ accum.model[k] = model[k];
108
+ }
109
+ return accum;
110
+ }, {});
111
+ result.model = decorator_validation_1.Model.build(result.model, model.constructor.name);
112
+ return result;
113
+ }
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhcmVkL21vZGVsL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUJBLHdDQUlDO0FBV0Qsa0VBZ0JDO0FBV0Qsd0NBSUM7QUEyQkQsd0NBK0NDO0FBeklELHlFQUF1RDtBQUN2RCxvREFBa0Q7QUFDbEQsa0RBQStDO0FBQy9DLDJEQUdpQztBQUVqQzs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLGNBQWMsQ0FBa0IsS0FBUTtJQUN0RCxNQUFNLFFBQVEsR0FBRywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzVCLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsMkJBQTJCLENBQ3pDLEtBQVE7SUFFUixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUNoQyxJQUFBLDhCQUFpQixFQUFDLDJCQUFlLENBQUMsT0FBTyxDQUFDLEVBQzFDLEtBQUssQ0FDTixDQUFDO0lBRUYsUUFBUTtRQUNOLFFBQVE7WUFDUixPQUFPLENBQUMsV0FBVyxDQUNqQixJQUFBLDhCQUFpQixFQUFDLDJCQUFlLENBQUMsT0FBTyxDQUFDLEVBQzFDLEtBQUssQ0FBQyxXQUFXLENBQ2xCLENBQUM7SUFFSixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixjQUFjLENBQWtCLEtBQVE7SUFDdEQsTUFBTSxRQUFRLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsU0FBUyxLQUFLLFNBQVM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNoRSxPQUFPLFFBQVEsQ0FBQyxTQUFTLENBQUM7QUFDNUIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxTQUFnQixjQUFjLENBQzVCLEtBQVE7SUFFUixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDcEQsTUFBTSxJQUFJLEdBQTBCLElBQUEsaURBQWlDLEVBQ25FLEtBQUssRUFDTCxTQUFTLEVBQ1QsSUFBQSw4QkFBaUIsRUFBQywyQkFBZSxDQUFDLE9BQU8sQ0FBQyxDQUNsQixDQUFDO0lBRTNCLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxNQUFNLGdCQUFnQixHQUNwQiwyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVyQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FDeEMsQ0FDRSxLQUFvRSxFQUNwRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFDUixFQUFFO1FBQ0YsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVwRCxJQUFJLFdBQVcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUM3QixNQUFNLFdBQVcsR0FBRyxTQUFTO2dCQUMzQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsV0FBVztnQkFDOUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1lBQ2xDLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFFcEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDO29CQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzVELEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQVksQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO2dCQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sSUFBSSxrQ0FBa0IsQ0FDMUIsd0NBQXdDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDbEQsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFJLEtBQTZCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxFQUNELEVBQW1FLENBQ3BFLENBQUM7SUFDRixNQUFNLENBQUMsS0FBSyxHQUFHLDRCQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRSxPQUFPLE1BQXFFLENBQUM7QUFDL0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgZ2V0RmFicmljTW9kZWxLZXkgfSBmcm9tIFwiLi4vZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgRmFicmljTW9kZWxLZXlzIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgZ2V0QWxsUHJvcGVydHlEZWNvcmF0b3JzUmVjdXJzaXZlLFxuICBTZXJpYWxpemF0aW9uRXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDaGVja3Mgd2hldGhlciBhIG1vZGVsIG9yIGl0cyBjbGFzcyBoYXMgcHJpdmF0ZSBkYXRhIG1ldGFkYXRhXG4gKiBAc3VtbWFyeSBVc2VzIHJlZmxlY3Rpb24gbWV0YWRhdGEgdG8gZGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiBEZWNhZiBtb2RlbCBpbmNsdWRlcyBGYWJyaWMgcHJpdmF0ZSBkYXRhIGFubm90YXRpb25zIGF0IGluc3RhbmNlIG9yIGNvbnN0cnVjdG9yIGxldmVsXG4gKiBAdGVtcGxhdGUgTSBleHRlbmRzIE1vZGVsXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIGluc3BlY3QgZm9yIHByaXZhdGUgZGF0YSBtZXRhZGF0YVxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBwcml2YXRlIGRhdGEgbWV0YWRhdGEgaXMgcHJlc2VudDsgb3RoZXJ3aXNlIGZhbHNlXG4gKiBAZnVuY3Rpb24gaGFzUHJpdmF0ZURhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5zaGFyZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1ByaXZhdGVEYXRhPE0gZXh0ZW5kcyBNb2RlbD4obW9kZWw6IE0pIHtcbiAgY29uc3QgbWV0YWRhdGEgPSBnZXRDbGFzc1ByaXZhdGVEYXRhTWV0YWRhdGEobW9kZWwpO1xuICBpZiAoIW1ldGFkYXRhKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgdGhlIEZhYnJpYyBwcml2YXRlIGRhdGEgbWV0YWRhdGEgZm9yIGEgbW9kZWxcbiAqIEBzdW1tYXJ5IExvb2tzIHVwIHRoZSBtZXRhZGF0YSBrZXkgb24gdGhlIGluc3RhbmNlIGZpcnN0IGFuZCB0aGVuIG9uIHRoZSBjb25zdHJ1Y3RvciB0byBzdXBwb3J0IGJvdGggaW5zdGFuY2UgYW5kIHN0YXRpYyBkZWNvcmF0b3IgcGxhY2VtZW50XG4gKiBAdGVtcGxhdGUgTSBleHRlbmRzIE1vZGVsXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIHdob3NlIEZhYnJpYyBwcml2YXRlIGRhdGEgbWV0YWRhdGEgc2hvdWxkIGJlIHJldHJpZXZlZFxuICogQHJldHVybiB7UmVjb3JkPHN0cmluZywgYW55Pn0gVGhlIG1ldGFkYXRhIG9iamVjdCBpZiBwcmVzZW50LCBvdGhlcndpc2UgdW5kZWZpbmVkLWxpa2UgdmFsdWVcbiAqIEBmdW5jdGlvbiBnZXRDbGFzc1ByaXZhdGVEYXRhTWV0YWRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5zaGFyZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENsYXNzUHJpdmF0ZURhdGFNZXRhZGF0YTxNIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogTVxuKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIGxldCBtZXRhZGF0YSA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgZ2V0RmFicmljTW9kZWxLZXkoRmFicmljTW9kZWxLZXlzLlBSSVZBVEUpLFxuICAgIG1vZGVsXG4gICk7XG5cbiAgbWV0YWRhdGEgPVxuICAgIG1ldGFkYXRhIHx8XG4gICAgUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgIGdldEZhYnJpY01vZGVsS2V5KEZhYnJpY01vZGVsS2V5cy5QUklWQVRFKSxcbiAgICAgIG1vZGVsLmNvbnN0cnVjdG9yXG4gICAgKTtcblxuICByZXR1cm4gbWV0YWRhdGE7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERldGVybWluZXMgaWYgYSBtb2RlbCBzaG91bGQgYmUgZnVsbHkgdHJlYXRlZCBhcyBwcml2YXRlXG4gKiBAc3VtbWFyeSBSZWFkcyB0aGUgbWV0YWRhdGEgZmxhZyBpc1ByaXZhdGUgZnJvbSB0aGUgbW9kZWwncyBGYWJyaWMgcHJpdmF0ZSBkYXRhIG1ldGFkYXRhIGFuZCByZXR1cm5zIGl0cyBib29sZWFuIHZhbHVlXG4gKiBAdGVtcGxhdGUgTSBleHRlbmRzIE1vZGVsXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIGNoZWNrXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIHdoZW4gbW9kZWwgaXMgbWFya2VkIGFzIHByaXZhdGU7IG90aGVyd2lzZSBmYWxzZVxuICogQGZ1bmN0aW9uIGlzTW9kZWxQcml2YXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuc2hhcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc01vZGVsUHJpdmF0ZTxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNKTogYm9vbGVhbiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gZ2V0Q2xhc3NQcml2YXRlRGF0YU1ldGFkYXRhKG1vZGVsKTtcbiAgaWYgKCFtZXRhZGF0YSB8fCBtZXRhZGF0YS5pc1ByaXZhdGUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gbWV0YWRhdGEuaXNQcml2YXRlO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTcGxpdHMgYSBtb2RlbCBpbnRvIHB1YmxpYyBhbmQgRmFicmljIHByaXZhdGUgZGF0YSBjb2xsZWN0aW9uc1xuICogQHN1bW1hcnkgSXRlcmF0ZXMgb3ZlciBwcm9wZXJ0eSBkZWNvcmF0b3JzIHRvIGNvbGxlY3QgYXR0cmlidXRlcyBkZXN0aW5lZCBmb3IgcHJpdmF0ZSBkYXRhIGNvbGxlY3Rpb25zIHdoaWxlIGtlZXBpbmcgcHVibGljIGZpZWxkcywgcmV0dXJuaW5nIGEgc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIHJlYnVpbHQgcHVibGljIG1vZGVsIGFuZCBhIG1hcCBvZiBjb2xsZWN0aW9uLW5hbWUgdG8gcHJpdmF0ZSBhdHRyaWJ1dGVzXG4gKiBAdGVtcGxhdGUgTSBleHRlbmRzIE1vZGVsXG4gKiBAcGFyYW0ge019IG1vZGVsIC0gVGhlIG1vZGVsIGluc3RhbmNlIHRvIHRyYW5zZm9ybSBpbnRvIHB1YmxpYyBhbmQgcHJpdmF0ZSBwYXJ0c1xuICogQHJldHVybiB7eyBtb2RlbDogTSwgcHJpdmF0ZTogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYW55Pj4gfX0gQW4gb2JqZWN0IHdpdGggdGhlIHJlYnVpbHQgcHVibGljIG1vZGVsIGFuZCBvcHRpb25hbCBwcml2YXRlIGNvbGxlY3Rpb24gbWFwc1xuICogQGZ1bmN0aW9uIG1vZGVsVG9Qcml2YXRlXG4gKiBAbWVybWFpZFxuICogc2VxdWVuY2VEaWFncmFtXG4gKiAgIHBhcnRpY2lwYW50IENhbGxlclxuICogICBwYXJ0aWNpcGFudCBVdGlscyBhcyBtb2RlbFRvUHJpdmF0ZVxuICogICBwYXJ0aWNpcGFudCBNZXRhIGFzIE1ldGFkYXRhXG4gKiAgIENhbGxlci0+PlV0aWxzOiBtb2RlbFRvUHJpdmF0ZShtb2RlbClcbiAqICAgVXRpbHMtPj5NZXRhOiBnZXRBbGxQcm9wZXJ0eURlY29yYXRvcnNSZWN1cnNpdmUobW9kZWwsIFBSSVZBVEUpXG4gKiAgIFV0aWxzLT4+TWV0YTogaXNNb2RlbFByaXZhdGUobW9kZWwpXG4gKiAgIGFsdCBtb2RlbCBpcyBwcml2YXRlIG9yIGhhcyBwcml2YXRlIHByb3BzXG4gKiAgICAgVXRpbHMtPj5VdGlsczogZ3JvdXAgcHJvcGVydGllcyBieSBjb2xsZWN0aW9uXG4gKiAgIGVsc2VcbiAqICAgICBVdGlscy0+PlV0aWxzOiBrZWVwIHByb3BlcnR5IGluIHB1YmxpYyBtb2RlbFxuICogICBlbmRcbiAqICAgVXRpbHMtPj5NZXRhOiBnZXRDbGFzc1ByaXZhdGVEYXRhTWV0YWRhdGEobW9kZWwpXG4gKiAgIFV0aWxzLT4+VXRpbHM6IE1vZGVsLmJ1aWxkKHB1YmxpYywgYW5jaG9yKVxuICogICBVdGlscy0tPj5DYWxsZXI6IHsgbW9kZWwsIHByaXZhdGUgfVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLnNoYXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxUb1ByaXZhdGU8TSBleHRlbmRzIE1vZGVsPihcbiAgbW9kZWw6IE1cbik6IHsgbW9kZWw6IE07IHByaXZhdGU/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB9IHtcbiAgaWYgKCFoYXNQcml2YXRlRGF0YShtb2RlbCkpIHJldHVybiB7IG1vZGVsOiBtb2RlbCB9O1xuICBjb25zdCBkZWNzOiBSZWNvcmQ8c3RyaW5nLCBhbnlbXT4gPSBnZXRBbGxQcm9wZXJ0eURlY29yYXRvcnNSZWN1cnNpdmUoXG4gICAgbW9kZWwsXG4gICAgdW5kZWZpbmVkLFxuICAgIGdldEZhYnJpY01vZGVsS2V5KEZhYnJpY01vZGVsS2V5cy5QUklWQVRFKVxuICApIGFzIFJlY29yZDxzdHJpbmcsIGFueVtdPjtcblxuICBjb25zdCBpc1ByaXZhdGUgPSBpc01vZGVsUHJpdmF0ZShtb2RlbCk7XG4gIGNvbnN0IG1vZGVsQ29sbGVjdGlvbnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPVxuICAgIGdldENsYXNzUHJpdmF0ZURhdGFNZXRhZGF0YShtb2RlbCk7XG5cbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMoZGVjcykucmVkdWNlKFxuICAgIChcbiAgICAgIGFjY3VtOiB7IG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBwcml2YXRlPzogUmVjb3JkPHN0cmluZywgYW55PiB9LFxuICAgICAgW2ssIHZhbF1cbiAgICApID0+IHtcbiAgICAgIGNvbnN0IHByaXZhdGVEYXRhID0gdmFsLmZpbmQoKGVsKSA9PiBlbC5rZXkgPT09IFwiXCIpO1xuXG4gICAgICBpZiAocHJpdmF0ZURhdGEgfHwgaXNQcml2YXRlKSB7XG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gaXNQcml2YXRlXG4gICAgICAgICAgPyBtb2RlbENvbGxlY3Rpb25zLmNvbGxlY3Rpb25zXG4gICAgICAgICAgOiBwcml2YXRlRGF0YS5wcm9wcy5jb2xsZWN0aW9ucztcbiAgICAgICAgYWNjdW0ucHJpdmF0ZSA9IGFjY3VtLnByaXZhdGUgfHwge307XG5cbiAgICAgICAgZm9yIChjb25zdCBjb2xsZWN0aW9uIG9mIGNvbGxlY3Rpb25zKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGFjY3VtLnByaXZhdGVbY29sbGVjdGlvbl0gPSBhY2N1bS5wcml2YXRlW2NvbGxlY3Rpb25dIHx8IHt9O1xuICAgICAgICAgICAgYWNjdW0ucHJpdmF0ZVtjb2xsZWN0aW9uXVtrXSA9IG1vZGVsW2sgYXMga2V5b2YgTV07XG4gICAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFNlcmlhbGl6YXRpb25FcnJvcihcbiAgICAgICAgICAgICAgYEZhaWxlZCB0byBzZXJpYWxpemUgcHJpdmF0ZSBwcm9wZXJ0eSAke2t9OiAke2V9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjY3VtLm1vZGVsID0gYWNjdW0ubW9kZWwgfHwge307XG4gICAgICAgIGFjY3VtLm1vZGVsW2tdID0gKG1vZGVsIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjY3VtO1xuICAgIH0sXG4gICAge30gYXMgeyBtb2RlbDogUmVjb3JkPHN0cmluZywgYW55PjsgcHJpdmF0ZT86IFJlY29yZDxzdHJpbmcsIGFueT4gfVxuICApO1xuICByZXN1bHQubW9kZWwgPSBNb2RlbC5idWlsZChyZXN1bHQubW9kZWwsIG1vZGVsLmNvbnN0cnVjdG9yLm5hbWUpO1xuICByZXR1cm4gcmVzdWx0IGFzIHsgbW9kZWw6IE07IHByaXZhdGU/OiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB9O1xufVxuIl19
@@ -0,0 +1,60 @@
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ /**
3
+ * @description Checks whether a model or its class has private data metadata
4
+ * @summary Uses reflection metadata to determine if the given Decaf model includes Fabric private data annotations at instance or constructor level
5
+ * @template M extends Model
6
+ * @param {M} model - The model instance to inspect for private data metadata
7
+ * @return {boolean} True if private data metadata is present; otherwise false
8
+ * @function hasPrivateData
9
+ * @memberOf module:for-fabric.shared
10
+ */
11
+ export declare function hasPrivateData<M extends Model>(model: M): boolean;
12
+ /**
13
+ * @description Retrieves the Fabric private data metadata for a model
14
+ * @summary Looks up the metadata key on the instance first and then on the constructor to support both instance and static decorator placement
15
+ * @template M extends Model
16
+ * @param {M} model - The model whose Fabric private data metadata should be retrieved
17
+ * @return {Record<string, any>} The metadata object if present, otherwise undefined-like value
18
+ * @function getClassPrivateDataMetadata
19
+ * @memberOf module:for-fabric.shared
20
+ */
21
+ export declare function getClassPrivateDataMetadata<M extends Model>(model: M): Record<string, any>;
22
+ /**
23
+ * @description Determines if a model should be fully treated as private
24
+ * @summary Reads the metadata flag isPrivate from the model's Fabric private data metadata and returns its boolean value
25
+ * @template M extends Model
26
+ * @param {M} model - The model instance to check
27
+ * @return {boolean} True when model is marked as private; otherwise false
28
+ * @function isModelPrivate
29
+ * @memberOf module:for-fabric.shared
30
+ */
31
+ export declare function isModelPrivate<M extends Model>(model: M): boolean;
32
+ /**
33
+ * @description Splits a model into public and Fabric private data collections
34
+ * @summary Iterates over property decorators to collect attributes destined for private data collections while keeping public fields, returning a structure containing the rebuilt public model and a map of collection-name to private attributes
35
+ * @template M extends Model
36
+ * @param {M} model - The model instance to transform into public and private parts
37
+ * @return {{ model: M, private: Record<string, Record<string, any>> }} An object with the rebuilt public model and optional private collection maps
38
+ * @function modelToPrivate
39
+ * @mermaid
40
+ * sequenceDiagram
41
+ * participant Caller
42
+ * participant Utils as modelToPrivate
43
+ * participant Meta as Metadata
44
+ * Caller->>Utils: modelToPrivate(model)
45
+ * Utils->>Meta: getAllPropertyDecoratorsRecursive(model, PRIVATE)
46
+ * Utils->>Meta: isModelPrivate(model)
47
+ * alt model is private or has private props
48
+ * Utils->>Utils: group properties by collection
49
+ * else
50
+ * Utils->>Utils: keep property in public model
51
+ * end
52
+ * Utils->>Meta: getClassPrivateDataMetadata(model)
53
+ * Utils->>Utils: Model.build(public, anchor)
54
+ * Utils-->>Caller: { model, private }
55
+ * @memberOf module:for-fabric.shared
56
+ */
57
+ export declare function modelToPrivate<M extends Model>(model: M): {
58
+ model: M;
59
+ private?: Record<string, Record<string, any>>;
60
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXBvc2l0b3J5RmxhZ3MgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFRMU09wdGlvbnMgfSBmcm9tIFwiZmFicmljLWNhLWNsaWVudFwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciBjb25uZWN0aW5nIHRvIGEgSHlwZXJsZWRnZXIgRmFicmljIHBlZXJcbiAqIEBzdW1tYXJ5IENvbnRhaW5zIGFsbCB0aGUgbmVjZXNzYXJ5IHBhcmFtZXRlcnMgdG8gZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhIEZhYnJpYyBwZWVyIGFuZCBpbnRlcmFjdCB3aXRoIGNoYWluY29kZVxuICogQHR5cGVkZWYge09iamVjdH0gUGVlckNvbmZpZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNyeXB0b1BhdGggLSBQYXRoIHRvIHRoZSBjcnlwdG8gbWF0ZXJpYWxzXG4gKiBAcHJvcGVydHkge3N0cmluZ30ga2V5Q2VydE9yRGlyZWN0b3J5UGF0aCAtIEtleSBmaWxlIGNvbnRlbnRzIG9yIFBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHByaXZhdGUga2V5c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNlcnRDZXJ0T3JEaXJlY3RvcnlQYXRoIC0gQ2VydCBmaWxlIGNvbnRlbnRzIG9yIFBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGNlcnRpZmljYXRlc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHRsc0NlcnQgLSBQYXRoIHRvIHRoZSBUTFMgY2VydGlmaWNhdGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwZWVyRW5kcG9pbnQgLSBFbmRwb2ludCBVUkwgZm9yIHRoZSBwZWVyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGVlckhvc3RBbGlhcyAtIEhvc3QgYWxpYXMgZm9yIHRoZSBwZWVyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY2FFbmRwb2ludCAtIEVuZHBvaW50IFVSTCBmb3IgdGhlIGNlcnRpZmljYXRlIGF1dGhvcml0eVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNhVGxzQ2VydGlmaWNhdGUgLSBUTFMgY2VydGlmaWNhdGUgZm9yIHRoZSBjZXJ0aWZpY2F0ZSBhdXRob3JpdHlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjYUNlcnQgLSBDZXJ0aWZpY2F0ZSBmb3IgdGhlIGNlcnRpZmljYXRlIGF1dGhvcml0eVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNhS2V5IC0gS2V5IGZvciB0aGUgY2VydGlmaWNhdGUgYXV0aG9yaXR5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gY2hhaW5jb2RlTmFtZSAtIE5hbWUgb2YgdGhlIGNoYWluY29kZSB0byBpbnRlcmFjdCB3aXRoXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NvbnRyYWN0TmFtZV0gLSBPcHRpb25hbCBuYW1lIG9mIHRoZSBzcGVjaWZpYyBjb250cmFjdCB3aXRoaW4gdGhlIGNoYWluY29kZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjYV0gLSBPcHRpb25hbCBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkgbmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IG1zcElkIC0gTWVtYmVyc2hpcCBTZXJ2aWNlIFByb3ZpZGVyIElEXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY2hhbm5lbCAtIENoYW5uZWwgbmFtZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLnNoYXJlZFxuICovXG5leHBvcnQgdHlwZSBQZWVyQ29uZmlnID0ge1xuICBjcnlwdG9QYXRoOiBzdHJpbmc7XG4gIGtleUNlcnRPckRpcmVjdG9yeVBhdGg6IHN0cmluZztcbiAgY2VydENlcnRPckRpcmVjdG9yeVBhdGg6IHN0cmluZztcbiAgdGxzQ2VydDogc3RyaW5nIHwgQnVmZmVyO1xuICBwZWVyRW5kcG9pbnQ6IHN0cmluZztcbiAgcGVlckhvc3RBbGlhczogc3RyaW5nO1xuICBjYUVuZHBvaW50Pzogc3RyaW5nO1xuICBjYVRsc0NlcnRpZmljYXRlPzogc3RyaW5nO1xuICBjYUNlcnQ/OiBzdHJpbmc7XG4gIGNhS2V5Pzogc3RyaW5nO1xuICBjaGFpbmNvZGVOYW1lOiBzdHJpbmc7XG4gIGNvbnRyYWN0TmFtZT86IHN0cmluZztcbiAgY2E/OiBzdHJpbmc7XG4gIG1zcElkOiBzdHJpbmc7XG4gIGNoYW5uZWw6IHN0cmluZztcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZsYWdzIGZvciBGYWJyaWMgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgQ29tYmluZXMgcmVwb3NpdG9yeSBmbGFncyB3aXRoIHBlZXIgY29uZmlndXJhdGlvbiBvdmVycmlkZXNcbiAqIEBpbnRlcmZhY2UgRmFicmljRmxhZ3NcbiAqIEBleHRlbmRzIHtSZXBvc2l0b3J5RmxhZ3N9XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuc2hhcmVkXG4gKi9cbmV4cG9ydCB0eXBlIEZhYnJpY0ZsYWdzID0gUmVwb3NpdG9yeUZsYWdzO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciBjb25uZWN0aW5nIHRvIGEgSHlwZXJsZWRnZXIgRmFicmljIHBlZXJcbiAqIEBzdW1tYXJ5IENvbnRhaW5zIGFsbCB0aGUgbmVjZXNzYXJ5IHBhcmFtZXRlcnMgdG8gZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhIEZhYnJpYyBwZWVyIGFuZCBpbnRlcmFjdCB3aXRoIGNoYWluY29kZVxuICogQHR5cGVkZWYge09iamVjdH0gQ0FDb25maWdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB1cmwgLSBQYXRoIHRvIHRoZSBjcnlwdG8gbWF0ZXJpYWxzXG4gKiBAcHJvcGVydHkge1RMU09wdGlvbnN9IHRscyAtIFBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHByaXZhdGUga2V5c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNhTmFtZSAtIFBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGNlcnRpZmljYXRlc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHRsc0NlcnRQYXRoIC0gUGF0aCB0byB0aGUgVExTIGNlcnRpZmljYXRlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY2FDZXJ0IC0gRW5kcG9pbnQgVVJMIGZvciB0aGUgcGVlclxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNhS2V5IC0gSG9zdCBhbGlhcyBmb3IgdGhlIHBlZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5zaGFyZWRcbiAqL1xuZXhwb3J0IHR5cGUgQ0FDb25maWcgPSB7XG4gIHVybDogc3RyaW5nO1xuICB0bHM/OiBUTFNPcHRpb25zO1xuICBjYU5hbWU6IHN0cmluZztcbiAgY2FDZXJ0OiBzdHJpbmc7XG4gIGNhS2V5OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBVc2VyIGNyZWRlbnRpYWxzIGZvciBDQSBlbnJvbGxtZW50IG9yIGFjY2Vzc1xuICogQHN1bW1hcnkgT3B0aW9uYWwgdXNlcm5hbWUvcGFzc3dvcmQgcGFpciB1c2VkIHdoZW4gZW5yb2xsaW5nIHdpdGggYSBGYWJyaWMgQ0Egb3IgYXV0aGVudGljYXRpbmcgaW4gY2xpZW50IHV0aWxpdGllc1xuICogQGludGVyZmFjZSBDcmVkZW50aWFsc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFt1c2VyTmFtZV0gLSBPcHRpb25hbCB1c2VybmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwYXNzd29yZF0gLSBPcHRpb25hbCBwYXNzd29yZFxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLnNoYXJlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWRlbnRpYWxzIHtcbiAgdXNlck5hbWU/OiBzdHJpbmc7XG4gIHBhc3N3b3JkPzogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,79 @@
1
+ import { RepositoryFlags } from "@decaf-ts/db-decorators";
2
+ import { TLSOptions } from "fabric-ca-client";
3
+ /**
4
+ * @description Configuration for connecting to a Hyperledger Fabric peer
5
+ * @summary Contains all the necessary parameters to establish a connection to a Fabric peer and interact with chaincode
6
+ * @typedef {Object} PeerConfig
7
+ * @property {string} cryptoPath - Path to the crypto materials
8
+ * @property {string} keyCertOrDirectoryPath - Key file contents or Path to the directory containing private keys
9
+ * @property {string} certCertOrDirectoryPath - Cert file contents or Path to the directory containing certificates
10
+ * @property {string} tlsCert - Path to the TLS certificate
11
+ * @property {string} peerEndpoint - Endpoint URL for the peer
12
+ * @property {string} peerHostAlias - Host alias for the peer
13
+ * @property {string} caEndpoint - Endpoint URL for the certificate authority
14
+ * @property {string} caTlsCertificate - TLS certificate for the certificate authority
15
+ * @property {string} caCert - Certificate for the certificate authority
16
+ * @property {string} caKey - Key for the certificate authority
17
+ * @property {string} chaincodeName - Name of the chaincode to interact with
18
+ * @property {string} [contractName] - Optional name of the specific contract within the chaincode
19
+ * @property {string} [ca] - Optional certificate authority name
20
+ * @property {string} mspId - Membership Service Provider ID
21
+ * @property {string} channel - Channel name
22
+ * @memberOf module:for-fabric.shared
23
+ */
24
+ export type PeerConfig = {
25
+ cryptoPath: string;
26
+ keyCertOrDirectoryPath: string;
27
+ certCertOrDirectoryPath: string;
28
+ tlsCert: string | Buffer;
29
+ peerEndpoint: string;
30
+ peerHostAlias: string;
31
+ caEndpoint?: string;
32
+ caTlsCertificate?: string;
33
+ caCert?: string;
34
+ caKey?: string;
35
+ chaincodeName: string;
36
+ contractName?: string;
37
+ ca?: string;
38
+ mspId: string;
39
+ channel: string;
40
+ };
41
+ /**
42
+ * @description Flags for Fabric operations
43
+ * @summary Combines repository flags with peer configuration overrides
44
+ * @interface FabricFlags
45
+ * @extends {RepositoryFlags}
46
+ * @memberOf module:for-fabric.shared
47
+ */
48
+ export type FabricFlags = RepositoryFlags;
49
+ /**
50
+ * @description Configuration for connecting to a Hyperledger Fabric peer
51
+ * @summary Contains all the necessary parameters to establish a connection to a Fabric peer and interact with chaincode
52
+ * @typedef {Object} CAConfig
53
+ * @property {string} url - Path to the crypto materials
54
+ * @property {TLSOptions} tls - Path to the directory containing private keys
55
+ * @property {string} caName - Path to the directory containing certificates
56
+ * @property {string} tlsCertPath - Path to the TLS certificate
57
+ * @property {string} caCert - Endpoint URL for the peer
58
+ * @property {string} caKey - Host alias for the peer
59
+ * @memberOf module:for-fabric.shared
60
+ */
61
+ export type CAConfig = {
62
+ url: string;
63
+ tls?: TLSOptions;
64
+ caName: string;
65
+ caCert: string;
66
+ caKey: string;
67
+ };
68
+ /**
69
+ * @description User credentials for CA enrollment or access
70
+ * @summary Optional username/password pair used when enrolling with a Fabric CA or authenticating in client utilities
71
+ * @interface Credentials
72
+ * @property {string} [userName] - Optional username
73
+ * @property {string} [password] - Optional password
74
+ * @memberOf module:for-fabric.shared
75
+ */
76
+ export interface Credentials {
77
+ userName?: string;
78
+ password?: string;
79
+ }