@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,24 @@
1
+ import { Repo } from "@decaf-ts/core";
2
+ import { Context, RepositoryFlags } from "@decaf-ts/db-decorators";
3
+ import { Model } from "@decaf-ts/decorator-validation";
4
+ /**
5
+ * Decorator for marking methods that require ownership authorization.
6
+ * Checks the owner of the token before allowing the method to be executed.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * class TokenContract extends Contract {
11
+ * @Owner()
12
+ * async Mint(ctx: Context, amount: number) {
13
+ * // Mint token logic
14
+ * }
15
+ * }
16
+ * ```
17
+ *
18
+ * @returns {MethodDecorator} A method decorator that checks ownership authorization.
19
+ */
20
+ export declare function Owner(): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
21
+ export declare function ownedByOnCreate<M extends Model, R extends Repo<M, F, C>, V, F extends RepositoryFlags, C extends Context<F>>(this: R, context: Context<F>, data: V, key: keyof M, model: M): Promise<void>;
22
+ export declare function OwnedBy(): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
23
+ export declare function getFabricModelKey(key: string): string;
24
+ export declare function privateData(collection?: string): (model: any, attribute?: any) => void;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ERC20Events = void 0;
4
+ /**
5
+ * Enum representing the events emitted by an ERC20 contract.
6
+ *
7
+ * @remarks
8
+ * This enum is used to identify the specific events that can be emitted by an ERC20 contract.
9
+ * The events are named according to the EIP-20 standard.
10
+ */
11
+ var ERC20Events;
12
+ (function (ERC20Events) {
13
+ /**
14
+ * Emitted when a `transfer` function is called successfully.
15
+ *
16
+ * @param from - The address of the sender.
17
+ * @param to - The address of the recipient.
18
+ * @param value - The amount of tokens transferred.
19
+ */
20
+ ERC20Events["TRANSFER"] = " Transfer";
21
+ /**
22
+ * Emitted when an `approve` function is called successfully.
23
+ *
24
+ * @param owner - The address of the token owner.
25
+ * @param spender - The address of the approved spender.
26
+ * @param value - The amount of tokens approved for the spender.
27
+ */
28
+ ERC20Events["APPROVAL"] = "Approval";
29
+ })(ERC20Events || (exports.ERC20Events = ERC20Events = {}));
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJjMjAtY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NoYXJlZC9lcmMyMC9lcmMyMC1jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7OztHQU1HO0FBQ0gsSUFBWSxXQWtCWDtBQWxCRCxXQUFZLFdBQVc7SUFDckI7Ozs7OztPQU1HO0lBQ0gscUNBQXNCLENBQUE7SUFFdEI7Ozs7OztPQU1HO0lBQ0gsb0NBQXFCLENBQUE7QUFDdkIsQ0FBQyxFQWxCVyxXQUFXLDJCQUFYLFdBQVcsUUFrQnRCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbnVtIHJlcHJlc2VudGluZyB0aGUgZXZlbnRzIGVtaXR0ZWQgYnkgYW4gRVJDMjAgY29udHJhY3QuXG4gKlxuICogQHJlbWFya3NcbiAqIFRoaXMgZW51bSBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBzcGVjaWZpYyBldmVudHMgdGhhdCBjYW4gYmUgZW1pdHRlZCBieSBhbiBFUkMyMCBjb250cmFjdC5cbiAqIFRoZSBldmVudHMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgRUlQLTIwIHN0YW5kYXJkLlxuICovXG5leHBvcnQgZW51bSBFUkMyMEV2ZW50cyB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYSBgdHJhbnNmZXJgIGZ1bmN0aW9uIGlzIGNhbGxlZCBzdWNjZXNzZnVsbHkuXG4gICAqXG4gICAqIEBwYXJhbSBmcm9tIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHNlbmRlci5cbiAgICogQHBhcmFtIHRvIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHJlY2lwaWVudC5cbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdHJhbnNmZXJyZWQuXG4gICAqL1xuICBUUkFOU0ZFUiA9IFwiIFRyYW5zZmVyXCIsXG5cbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhbiBgYXBwcm92ZWAgZnVuY3Rpb24gaXMgY2FsbGVkIHN1Y2Nlc3NmdWxseS5cbiAgICpcbiAgICogQHBhcmFtIG93bmVyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHRva2VuIG93bmVyLlxuICAgKiBAcGFyYW0gc3BlbmRlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBhcHByb3ZlZCBzcGVuZGVyLlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgYW1vdW50IG9mIHRva2VucyBhcHByb3ZlZCBmb3IgdGhlIHNwZW5kZXIuXG4gICAqL1xuICBBUFBST1ZBTCA9IFwiQXBwcm92YWxcIixcbn1cbiJdfQ==
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Enum representing the events emitted by an ERC20 contract.
3
+ *
4
+ * @remarks
5
+ * This enum is used to identify the specific events that can be emitted by an ERC20 contract.
6
+ * The events are named according to the EIP-20 standard.
7
+ */
8
+ export declare enum ERC20Events {
9
+ /**
10
+ * Emitted when a `transfer` function is called successfully.
11
+ *
12
+ * @param from - The address of the sender.
13
+ * @param to - The address of the recipient.
14
+ * @param value - The amount of tokens transferred.
15
+ */
16
+ TRANSFER = " Transfer",
17
+ /**
18
+ * Emitted when an `approve` function is called successfully.
19
+ *
20
+ * @param owner - The address of the token owner.
21
+ * @param spender - The address of the approved spender.
22
+ * @param value - The amount of tokens approved for the spender.
23
+ */
24
+ APPROVAL = "Approval"
25
+ }
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotInitializedError = exports.UnauthorizedPrivateDataAccess = exports.MissingContextError = exports.RegistrationError = exports.AllowanceError = exports.BalanceError = exports.OverflowError = void 0;
4
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
5
+ const core_1 = require("@decaf-ts/core");
6
+ const private_data_1 = require("./../contracts/private-data.cjs");
7
+ /**
8
+ * @summary Represents an overflow error in arithmetic operations in Smart Contracts
9
+ *
10
+ * @param {string} msg the error message
11
+ *
12
+ * @class OverflowError
13
+ * @extends InternalError
14
+ *
15
+ * @category Errors
16
+ */
17
+ class OverflowError extends db_decorators_1.InternalError {
18
+ constructor(msg) {
19
+ super(msg, OverflowError.name);
20
+ }
21
+ }
22
+ exports.OverflowError = OverflowError;
23
+ /**
24
+ * @summary Represents a failure in balance to perform a transaction in Smart Contracts
25
+ *
26
+ * @param {string} msg the error message
27
+ *
28
+ * @class BalanceError
29
+ * @extends InternalError
30
+ *
31
+ * @category Errors
32
+ */
33
+ class BalanceError extends db_decorators_1.InternalError {
34
+ constructor(msg) {
35
+ super(msg, BalanceError.name);
36
+ }
37
+ }
38
+ exports.BalanceError = BalanceError;
39
+ /**
40
+ * @summary Represents a failure in balance to perform a transaction in Smart Contracts
41
+ *
42
+ * @param {string} msg the error message
43
+ *
44
+ * @class BalanceError
45
+ * @extends InternalError
46
+ *
47
+ * @category Errors
48
+ */
49
+ class AllowanceError extends db_decorators_1.InternalError {
50
+ constructor(msg) {
51
+ super(msg, AllowanceError.name);
52
+ }
53
+ }
54
+ exports.AllowanceError = AllowanceError;
55
+ /**
56
+ * @summary Represents a failure registrating new entities
57
+ *
58
+ * @param {string} msg the error message
59
+ *
60
+ * @class RegistrationError
61
+ *
62
+ * @categort Errors
63
+ */
64
+ class RegistrationError extends core_1.AuthorizationError {
65
+ constructor(msg) {
66
+ super(msg, RegistrationError.name);
67
+ }
68
+ }
69
+ exports.RegistrationError = RegistrationError;
70
+ /**
71
+ * @description Error thrown when an unsupported operation is attempted
72
+ * @summary This error is thrown when an operation is requested that is not supported by the current
73
+ * persistence adapter or configuration. It extends the BaseError class and sets a 500 status code.
74
+ * @param {string|Error} msg - The error message or an Error object to wrap
75
+ * @class UnsupportedError
76
+ * @example
77
+ * ```typescript
78
+ * // Throwing an UnsupportedError
79
+ * if (!adapter.supportsTransactions()) {
80
+ * throw new UnsupportedError('Transactions are not supported by this adapter');
81
+ * }
82
+ *
83
+ * // Catching an UnsupportedError
84
+ * try {
85
+ * await adapter.beginTransaction();
86
+ * } catch (error) {
87
+ * if (error instanceof UnsupportedError) {
88
+ * console.error('Operation not supported:', error.message);
89
+ * }
90
+ * }
91
+ * ```
92
+ *
93
+ * @category Errors
94
+ */
95
+ class MissingContextError extends db_decorators_1.InternalError {
96
+ constructor(msg) {
97
+ super(msg, MissingContextError.name, 500);
98
+ }
99
+ }
100
+ exports.MissingContextError = MissingContextError;
101
+ class UnauthorizedPrivateDataAccess extends db_decorators_1.BaseError {
102
+ constructor(msg = private_data_1.MISSING_PRIVATE_DATA_ERROR_MESSAGE) {
103
+ super(UnauthorizedPrivateDataAccess.name, msg, 403);
104
+ }
105
+ }
106
+ exports.UnauthorizedPrivateDataAccess = UnauthorizedPrivateDataAccess;
107
+ /**
108
+ * Represents an error that occurs when a required initialization step is not performed.
109
+ *
110
+ * @class NotInitializedError
111
+ * @extends BaseError
112
+ *
113
+ * @category Errors
114
+ *
115
+ * @param {string | Error} msg - The error message or an Error object to wrap.
116
+ *
117
+ * @throws {NotInitializedError} - Throws an error when a required initialization step is not performed.
118
+ *
119
+ * @example
120
+ * ```typescript
121
+ * // Initialize the application
122
+ * if (!isInitialized) {
123
+ * throw new NotInitializedError('Application is not initialized');
124
+ * }
125
+ *
126
+ * // Catching an NotInitializedError
127
+ * try {
128
+ * // Perform operations that require initialization
129
+ * } catch (error) {
130
+ * if (error instanceof NotInitializedError) {
131
+ * console.error('Initialization error:', error.message);
132
+ * }
133
+ * }
134
+ * ```
135
+ */
136
+ class NotInitializedError extends db_decorators_1.BaseError {
137
+ constructor(msg) {
138
+ super(NotInitializedError.name, msg, 409);
139
+ }
140
+ }
141
+ exports.NotInitializedError = NotInitializedError;
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkRBQW1FO0FBQ25FLHlDQUFvRDtBQUNwRCxrRUFBK0U7QUFDL0U7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsNkJBQWE7SUFDOUMsWUFBWSxHQUFtQjtRQUM3QixLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFKRCxzQ0FJQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsWUFBYSxTQUFRLDZCQUFhO0lBQzdDLFlBQVksR0FBbUI7UUFDN0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBSkQsb0NBSUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLGNBQWUsU0FBUSw2QkFBYTtJQUMvQyxZQUFZLEdBQW1CO1FBQzdCLEtBQUssQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQUpELHdDQUlDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLHlCQUFrQjtJQUN2RCxZQUFZLEdBQW1CO1FBQzdCLEtBQUssQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGO0FBSkQsOENBSUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSw2QkFBYTtJQUNwRCxZQUFZLEdBQW1CO1FBQzdCLEtBQUssQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUpELGtEQUlDO0FBRUQsTUFBYSw2QkFBOEIsU0FBUSx5QkFBUztJQUMxRCxZQUFZLE1BQXNCLGlEQUFrQztRQUNsRSxLQUFLLENBQUMsNkJBQTZCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Y7QUFKRCxzRUFJQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEJHO0FBQ0gsTUFBYSxtQkFBb0IsU0FBUSx5QkFBUztJQUNoRCxZQUFZLEdBQW1CO1FBQzdCLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUpELGtEQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUVycm9yLCBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBBdXRob3JpemF0aW9uRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB7IE1JU1NJTkdfUFJJVkFURV9EQVRBX0VSUk9SX01FU1NBR0UgfSBmcm9tIFwiLi4vY29udHJhY3RzL3ByaXZhdGUtZGF0YVwiO1xuLyoqXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGFuIG92ZXJmbG93IGVycm9yIGluIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBpbiBTbWFydCBDb250cmFjdHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNnIHRoZSBlcnJvciBtZXNzYWdlXG4gKlxuICogQGNsYXNzIE92ZXJmbG93RXJyb3JcbiAqIEBleHRlbmRzIEludGVybmFsRXJyb3JcbiAqXG4gKiBAY2F0ZWdvcnkgRXJyb3JzXG4gKi9cbmV4cG9ydCBjbGFzcyBPdmVyZmxvd0Vycm9yIGV4dGVuZHMgSW50ZXJuYWxFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nIHwgRXJyb3IpIHtcbiAgICBzdXBlcihtc2csIE92ZXJmbG93RXJyb3IubmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgZmFpbHVyZSBpbiBiYWxhbmNlIHRvIHBlcmZvcm0gYSB0cmFuc2FjdGlvbiBpbiBTbWFydCBDb250cmFjdHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNnIHRoZSBlcnJvciBtZXNzYWdlXG4gKlxuICogQGNsYXNzIEJhbGFuY2VFcnJvclxuICogQGV4dGVuZHMgSW50ZXJuYWxFcnJvclxuICpcbiAqIEBjYXRlZ29yeSBFcnJvcnNcbiAqL1xuZXhwb3J0IGNsYXNzIEJhbGFuY2VFcnJvciBleHRlbmRzIEludGVybmFsRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyB8IEVycm9yKSB7XG4gICAgc3VwZXIobXNnLCBCYWxhbmNlRXJyb3IubmFtZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgZmFpbHVyZSBpbiBiYWxhbmNlIHRvIHBlcmZvcm0gYSB0cmFuc2FjdGlvbiBpbiBTbWFydCBDb250cmFjdHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNnIHRoZSBlcnJvciBtZXNzYWdlXG4gKlxuICogQGNsYXNzIEJhbGFuY2VFcnJvclxuICogQGV4dGVuZHMgSW50ZXJuYWxFcnJvclxuICpcbiAqIEBjYXRlZ29yeSBFcnJvcnNcbiAqL1xuZXhwb3J0IGNsYXNzIEFsbG93YW5jZUVycm9yIGV4dGVuZHMgSW50ZXJuYWxFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nIHwgRXJyb3IpIHtcbiAgICBzdXBlcihtc2csIEFsbG93YW5jZUVycm9yLm5hbWUpO1xuICB9XG59XG5cbi8qKlxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIGZhaWx1cmUgcmVnaXN0cmF0aW5nIG5ldyBlbnRpdGllc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc2cgdGhlIGVycm9yIG1lc3NhZ2VcbiAqXG4gKiBAY2xhc3MgUmVnaXN0cmF0aW9uRXJyb3JcbiAqXG4gKiBAY2F0ZWdvcnQgRXJyb3JzXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWdpc3RyYXRpb25FcnJvciBleHRlbmRzIEF1dGhvcml6YXRpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nIHwgRXJyb3IpIHtcbiAgICBzdXBlcihtc2csIFJlZ2lzdHJhdGlvbkVycm9yLm5hbWUpO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVycm9yIHRocm93biB3aGVuIGFuIHVuc3VwcG9ydGVkIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWRcbiAqIEBzdW1tYXJ5IFRoaXMgZXJyb3IgaXMgdGhyb3duIHdoZW4gYW4gb3BlcmF0aW9uIGlzIHJlcXVlc3RlZCB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnRcbiAqIHBlcnNpc3RlbmNlIGFkYXB0ZXIgb3IgY29uZmlndXJhdGlvbi4gSXQgZXh0ZW5kcyB0aGUgQmFzZUVycm9yIGNsYXNzIGFuZCBzZXRzIGEgNTAwIHN0YXR1cyBjb2RlLlxuICogQHBhcmFtIHtzdHJpbmd8RXJyb3J9IG1zZyAtIFRoZSBlcnJvciBtZXNzYWdlIG9yIGFuIEVycm9yIG9iamVjdCB0byB3cmFwXG4gKiBAY2xhc3MgVW5zdXBwb3J0ZWRFcnJvclxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIFRocm93aW5nIGFuIFVuc3VwcG9ydGVkRXJyb3JcbiAqIGlmICghYWRhcHRlci5zdXBwb3J0c1RyYW5zYWN0aW9ucygpKSB7XG4gKiAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEVycm9yKCdUcmFuc2FjdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBhZGFwdGVyJyk7XG4gKiB9XG4gKlxuICogLy8gQ2F0Y2hpbmcgYW4gVW5zdXBwb3J0ZWRFcnJvclxuICogdHJ5IHtcbiAqICAgYXdhaXQgYWRhcHRlci5iZWdpblRyYW5zYWN0aW9uKCk7XG4gKiB9IGNhdGNoIChlcnJvcikge1xuICogICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBVbnN1cHBvcnRlZEVycm9yKSB7XG4gKiAgICAgY29uc29sZS5lcnJvcignT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQ6JywgZXJyb3IubWVzc2FnZSk7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBFcnJvcnNcbiAqL1xuZXhwb3J0IGNsYXNzIE1pc3NpbmdDb250ZXh0RXJyb3IgZXh0ZW5kcyBJbnRlcm5hbEVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcgfCBFcnJvcikge1xuICAgIHN1cGVyKG1zZywgTWlzc2luZ0NvbnRleHRFcnJvci5uYW1lLCA1MDApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmF1dGhvcml6ZWRQcml2YXRlRGF0YUFjY2VzcyBleHRlbmRzIEJhc2VFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nIHwgRXJyb3IgPSBNSVNTSU5HX1BSSVZBVEVfREFUQV9FUlJPUl9NRVNTQUdFKSB7XG4gICAgc3VwZXIoVW5hdXRob3JpemVkUHJpdmF0ZURhdGFBY2Nlc3MubmFtZSwgbXNnLCA0MDMpO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBlcnJvciB0aGF0IG9jY3VycyB3aGVuIGEgcmVxdWlyZWQgaW5pdGlhbGl6YXRpb24gc3RlcCBpcyBub3QgcGVyZm9ybWVkLlxuICpcbiAqIEBjbGFzcyBOb3RJbml0aWFsaXplZEVycm9yXG4gKiBAZXh0ZW5kcyBCYXNlRXJyb3JcbiAqXG4gKiBAY2F0ZWdvcnkgRXJyb3JzXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBFcnJvcn0gbXNnIC0gVGhlIGVycm9yIG1lc3NhZ2Ugb3IgYW4gRXJyb3Igb2JqZWN0IHRvIHdyYXAuXG4gKlxuICogQHRocm93cyB7Tm90SW5pdGlhbGl6ZWRFcnJvcn0gLSBUaHJvd3MgYW4gZXJyb3Igd2hlbiBhIHJlcXVpcmVkIGluaXRpYWxpemF0aW9uIHN0ZXAgaXMgbm90IHBlcmZvcm1lZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gSW5pdGlhbGl6ZSB0aGUgYXBwbGljYXRpb25cbiAqIGlmICghaXNJbml0aWFsaXplZCkge1xuICogICB0aHJvdyBuZXcgTm90SW5pdGlhbGl6ZWRFcnJvcignQXBwbGljYXRpb24gaXMgbm90IGluaXRpYWxpemVkJyk7XG4gKiB9XG4gKlxuICogLy8gQ2F0Y2hpbmcgYW4gTm90SW5pdGlhbGl6ZWRFcnJvclxuICogdHJ5IHtcbiAqICAgLy8gUGVyZm9ybSBvcGVyYXRpb25zIHRoYXQgcmVxdWlyZSBpbml0aWFsaXphdGlvblxuICogfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgaWYgKGVycm9yIGluc3RhbmNlb2YgTm90SW5pdGlhbGl6ZWRFcnJvcikge1xuICogICAgIGNvbnNvbGUuZXJyb3IoJ0luaXRpYWxpemF0aW9uIGVycm9yOicsIGVycm9yLm1lc3NhZ2UpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE5vdEluaXRpYWxpemVkRXJyb3IgZXh0ZW5kcyBCYXNlRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyB8IEVycm9yKSB7XG4gICAgc3VwZXIoTm90SW5pdGlhbGl6ZWRFcnJvci5uYW1lLCBtc2csIDQwOSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,116 @@
1
+ import { BaseError, InternalError } from "@decaf-ts/db-decorators";
2
+ import { AuthorizationError } from "@decaf-ts/core";
3
+ /**
4
+ * @summary Represents an overflow error in arithmetic operations in Smart Contracts
5
+ *
6
+ * @param {string} msg the error message
7
+ *
8
+ * @class OverflowError
9
+ * @extends InternalError
10
+ *
11
+ * @category Errors
12
+ */
13
+ export declare class OverflowError extends InternalError {
14
+ constructor(msg: string | Error);
15
+ }
16
+ /**
17
+ * @summary Represents a failure in balance to perform a transaction in Smart Contracts
18
+ *
19
+ * @param {string} msg the error message
20
+ *
21
+ * @class BalanceError
22
+ * @extends InternalError
23
+ *
24
+ * @category Errors
25
+ */
26
+ export declare class BalanceError extends InternalError {
27
+ constructor(msg: string | Error);
28
+ }
29
+ /**
30
+ * @summary Represents a failure in balance to perform a transaction in Smart Contracts
31
+ *
32
+ * @param {string} msg the error message
33
+ *
34
+ * @class BalanceError
35
+ * @extends InternalError
36
+ *
37
+ * @category Errors
38
+ */
39
+ export declare class AllowanceError extends InternalError {
40
+ constructor(msg: string | Error);
41
+ }
42
+ /**
43
+ * @summary Represents a failure registrating new entities
44
+ *
45
+ * @param {string} msg the error message
46
+ *
47
+ * @class RegistrationError
48
+ *
49
+ * @categort Errors
50
+ */
51
+ export declare class RegistrationError extends AuthorizationError {
52
+ constructor(msg: string | Error);
53
+ }
54
+ /**
55
+ * @description Error thrown when an unsupported operation is attempted
56
+ * @summary This error is thrown when an operation is requested that is not supported by the current
57
+ * persistence adapter or configuration. It extends the BaseError class and sets a 500 status code.
58
+ * @param {string|Error} msg - The error message or an Error object to wrap
59
+ * @class UnsupportedError
60
+ * @example
61
+ * ```typescript
62
+ * // Throwing an UnsupportedError
63
+ * if (!adapter.supportsTransactions()) {
64
+ * throw new UnsupportedError('Transactions are not supported by this adapter');
65
+ * }
66
+ *
67
+ * // Catching an UnsupportedError
68
+ * try {
69
+ * await adapter.beginTransaction();
70
+ * } catch (error) {
71
+ * if (error instanceof UnsupportedError) {
72
+ * console.error('Operation not supported:', error.message);
73
+ * }
74
+ * }
75
+ * ```
76
+ *
77
+ * @category Errors
78
+ */
79
+ export declare class MissingContextError extends InternalError {
80
+ constructor(msg: string | Error);
81
+ }
82
+ export declare class UnauthorizedPrivateDataAccess extends BaseError {
83
+ constructor(msg?: string | Error);
84
+ }
85
+ /**
86
+ * Represents an error that occurs when a required initialization step is not performed.
87
+ *
88
+ * @class NotInitializedError
89
+ * @extends BaseError
90
+ *
91
+ * @category Errors
92
+ *
93
+ * @param {string | Error} msg - The error message or an Error object to wrap.
94
+ *
95
+ * @throws {NotInitializedError} - Throws an error when a required initialization step is not performed.
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * // Initialize the application
100
+ * if (!isInitialized) {
101
+ * throw new NotInitializedError('Application is not initialized');
102
+ * }
103
+ *
104
+ * // Catching an NotInitializedError
105
+ * try {
106
+ * // Perform operations that require initialization
107
+ * } catch (error) {
108
+ * if (error instanceof NotInitializedError) {
109
+ * console.error('Initialization error:', error.message);
110
+ * }
111
+ * }
112
+ * ```
113
+ */
114
+ export declare class NotInitializedError extends BaseError {
115
+ constructor(msg: string | Error);
116
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateFabricEventName = generateFabricEventName;
4
+ exports.parseEventName = parseEventName;
5
+ /**
6
+ * @description Generates a Fabric event name from components
7
+ * @summary Creates a standardized event name by joining table, event, and optional owner with underscores
8
+ * @param {string} table - The table/collection name
9
+ * @param {OperationKeys | BulkCrudOperationKeys | string} event - The event type
10
+ * @param {string} [owner] - Optional owner identifier
11
+ * @return {string} The generated event name in format "table_event" or "table_event_owner"
12
+ * @function generateFabricEventName
13
+ * @memberOf module:for-fabric.shared
14
+ */
15
+ function generateFabricEventName(table, event, owner) {
16
+ const params = [table, event];
17
+ if (owner)
18
+ params.push(owner);
19
+ return params.join("_");
20
+ }
21
+ /**
22
+ * @description Parses a Fabric event name into its components
23
+ * @summary Splits an event name by underscores and extracts table, event, and optional owner
24
+ * @param {string} name - The event name to parse
25
+ * @return {{table: string, event: OperationKeys | BulkCrudOperationKeys | string, owner: string}} The parsed components as a structured object
26
+ * @throws {InternalError} If the event name format is invalid
27
+ * @function parseEventName
28
+ * @mermaid
29
+ * sequenceDiagram
30
+ * participant Caller
31
+ * participant Parser as parseEventName
32
+ * Caller->>Parser: parseEventName(name)
33
+ * Parser->>Parser: split name by "_"
34
+ * alt parts length invalid
35
+ * Parser-->>Caller: throw InternalError
36
+ * else
37
+ * Parser-->>Caller: { table, event, owner? }
38
+ * end
39
+ * @memberOf module:for-fabric.shared
40
+ */
41
+ function parseEventName(name) {
42
+ const parts = name.split("_");
43
+ if (parts.length < 2 || parts.length > 3)
44
+ return { event: name };
45
+ return {
46
+ table: parts[0],
47
+ event: parts[1],
48
+ owner: parts[2],
49
+ };
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC9ldmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsMERBUUM7QUFzQkQsd0NBWUM7QUFwREQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQ3JDLEtBQWEsRUFDYixLQUFxRCxFQUNyRCxLQUFjO0lBRWQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUIsSUFBSSxLQUFLO1FBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLElBQVk7SUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakUsT0FBTztRQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2YsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDZixLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUtoQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJ1bGtDcnVkT3BlcmF0aW9uS2V5cyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBJbnRlcm5hbEVycm9yLFxuICBPcGVyYXRpb25LZXlzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJhdGVzIGEgRmFicmljIGV2ZW50IG5hbWUgZnJvbSBjb21wb25lbnRzXG4gKiBAc3VtbWFyeSBDcmVhdGVzIGEgc3RhbmRhcmRpemVkIGV2ZW50IG5hbWUgYnkgam9pbmluZyB0YWJsZSwgZXZlbnQsIGFuZCBvcHRpb25hbCBvd25lciB3aXRoIHVuZGVyc2NvcmVzXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFibGUgLSBUaGUgdGFibGUvY29sbGVjdGlvbiBuYW1lXG4gKiBAcGFyYW0ge09wZXJhdGlvbktleXMgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMgfCBzdHJpbmd9IGV2ZW50IC0gVGhlIGV2ZW50IHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3duZXJdIC0gT3B0aW9uYWwgb3duZXIgaWRlbnRpZmllclxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgZ2VuZXJhdGVkIGV2ZW50IG5hbWUgaW4gZm9ybWF0IFwidGFibGVfZXZlbnRcIiBvciBcInRhYmxlX2V2ZW50X293bmVyXCJcbiAqIEBmdW5jdGlvbiBnZW5lcmF0ZUZhYnJpY0V2ZW50TmFtZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLnNoYXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVGYWJyaWNFdmVudE5hbWUoXG4gIHRhYmxlOiBzdHJpbmcsXG4gIGV2ZW50OiBPcGVyYXRpb25LZXlzIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzIHwgc3RyaW5nLFxuICBvd25lcj86IHN0cmluZ1xuKSB7XG4gIGNvbnN0IHBhcmFtcyA9IFt0YWJsZSwgZXZlbnRdO1xuICBpZiAob3duZXIpIHBhcmFtcy5wdXNoKG93bmVyKTtcbiAgcmV0dXJuIHBhcmFtcy5qb2luKFwiX1wiKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUGFyc2VzIGEgRmFicmljIGV2ZW50IG5hbWUgaW50byBpdHMgY29tcG9uZW50c1xuICogQHN1bW1hcnkgU3BsaXRzIGFuIGV2ZW50IG5hbWUgYnkgdW5kZXJzY29yZXMgYW5kIGV4dHJhY3RzIHRhYmxlLCBldmVudCwgYW5kIG9wdGlvbmFsIG93bmVyXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBldmVudCBuYW1lIHRvIHBhcnNlXG4gKiBAcmV0dXJuIHt7dGFibGU6IHN0cmluZywgZXZlbnQ6IE9wZXJhdGlvbktleXMgfCBCdWxrQ3J1ZE9wZXJhdGlvbktleXMgfCBzdHJpbmcsIG93bmVyOiBzdHJpbmd9fSBUaGUgcGFyc2VkIGNvbXBvbmVudHMgYXMgYSBzdHJ1Y3R1cmVkIG9iamVjdFxuICogQHRocm93cyB7SW50ZXJuYWxFcnJvcn0gSWYgdGhlIGV2ZW50IG5hbWUgZm9ybWF0IGlzIGludmFsaWRcbiAqIEBmdW5jdGlvbiBwYXJzZUV2ZW50TmFtZVxuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDYWxsZXJcbiAqICAgcGFydGljaXBhbnQgUGFyc2VyIGFzIHBhcnNlRXZlbnROYW1lXG4gKiAgIENhbGxlci0+PlBhcnNlcjogcGFyc2VFdmVudE5hbWUobmFtZSlcbiAqICAgUGFyc2VyLT4+UGFyc2VyOiBzcGxpdCBuYW1lIGJ5IFwiX1wiXG4gKiAgIGFsdCBwYXJ0cyBsZW5ndGggaW52YWxpZFxuICogICAgIFBhcnNlci0tPj5DYWxsZXI6IHRocm93IEludGVybmFsRXJyb3JcbiAqICAgZWxzZVxuICogICAgIFBhcnNlci0tPj5DYWxsZXI6IHsgdGFibGUsIGV2ZW50LCBvd25lcj8gfVxuICogICBlbmRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5zaGFyZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRXZlbnROYW1lKG5hbWU6IHN0cmluZykge1xuICBjb25zdCBwYXJ0cyA9IG5hbWUuc3BsaXQoXCJfXCIpO1xuICBpZiAocGFydHMubGVuZ3RoIDwgMiB8fCBwYXJ0cy5sZW5ndGggPiAzKSByZXR1cm4geyBldmVudDogbmFtZSB9O1xuICByZXR1cm4ge1xuICAgIHRhYmxlOiBwYXJ0c1swXSxcbiAgICBldmVudDogcGFydHNbMV0sXG4gICAgb3duZXI6IHBhcnRzWzJdLFxuICB9IGFzIHtcbiAgICB0YWJsZTogc3RyaW5nO1xuICAgIGV2ZW50OiBPcGVyYXRpb25LZXlzIHwgQnVsa0NydWRPcGVyYXRpb25LZXlzIHwgc3RyaW5nO1xuICAgIG93bmVyPzogc3RyaW5nO1xuICB9O1xufVxuIl19
@@ -0,0 +1,39 @@
1
+ import { BulkCrudOperationKeys, OperationKeys } from "@decaf-ts/db-decorators";
2
+ /**
3
+ * @description Generates a Fabric event name from components
4
+ * @summary Creates a standardized event name by joining table, event, and optional owner with underscores
5
+ * @param {string} table - The table/collection name
6
+ * @param {OperationKeys | BulkCrudOperationKeys | string} event - The event type
7
+ * @param {string} [owner] - Optional owner identifier
8
+ * @return {string} The generated event name in format "table_event" or "table_event_owner"
9
+ * @function generateFabricEventName
10
+ * @memberOf module:for-fabric.shared
11
+ */
12
+ export declare function generateFabricEventName(table: string, event: OperationKeys | BulkCrudOperationKeys | string, owner?: string): string;
13
+ /**
14
+ * @description Parses a Fabric event name into its components
15
+ * @summary Splits an event name by underscores and extracts table, event, and optional owner
16
+ * @param {string} name - The event name to parse
17
+ * @return {{table: string, event: OperationKeys | BulkCrudOperationKeys | string, owner: string}} The parsed components as a structured object
18
+ * @throws {InternalError} If the event name format is invalid
19
+ * @function parseEventName
20
+ * @mermaid
21
+ * sequenceDiagram
22
+ * participant Caller
23
+ * participant Parser as parseEventName
24
+ * Caller->>Parser: parseEventName(name)
25
+ * Parser->>Parser: split name by "_"
26
+ * alt parts length invalid
27
+ * Parser-->>Caller: throw InternalError
28
+ * else
29
+ * Parser-->>Caller: { table, event, owner? }
30
+ * end
31
+ * @memberOf module:for-fabric.shared
32
+ */
33
+ export declare function parseEventName(name: string): {
34
+ table: string;
35
+ event: OperationKeys | BulkCrudOperationKeys | string;
36
+ owner?: string;
37
+ } | {
38
+ event: string;
39
+ };
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFicmljLXR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC9mYWJyaWMtdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw0QkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJyZWZsZWN0LW1ldGFkYXRhXCI7XG5cbmV4cG9ydCB0eXBlIEdldENlcnRpZmljYXRlc1JlcXVlc3QgPSB7XG4gIGlkPzogc3RyaW5nO1xuICBha2k/OiBzdHJpbmc7XG4gIHNlcmlhbD86IHN0cmluZztcbiAgcmV2b2tlZF9zdGFydD86IHN0cmluZztcbiAgcmV2b2tlZF9lbmQ/OiBzdHJpbmc7XG4gIGV4cGlyZWRfc3RhcnQ/OiBzdHJpbmc7XG4gIGV4cGlyZWRfZW5kPzogc3RyaW5nO1xuICBub3RyZXZva2VkPzogYm9vbGVhbjtcbiAgbm90ZXhwaXJlZD86IGJvb2xlYW47XG4gIGNhPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ2VydGlmaWNhdGVSZXNwb25zZSA9IHtcbiAgY2FuYW1lOiBzdHJpbmc7XG4gIGNlcnRzOiB7IFBFTTogc3RyaW5nIH1bXTtcbn07XG5cbmV4cG9ydCB0eXBlIEZhYnJpY0lkZW50aXR5ID0ge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG4gIGFmZmlsaWF0aW9uOiBzdHJpbmc7XG4gIGF0dHJzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W107XG4gIG1heF9lbnJvbGxtZW50czogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgSWRlbnRpdHlSZXNwb25zZSA9IHtcbiAgY2FuYW1lOiBzdHJpbmc7XG4gIGlkZW50aXRpZXM6IEZhYnJpY0lkZW50aXR5W107XG59O1xuIl19
@@ -0,0 +1,33 @@
1
+ import "reflect-metadata";
2
+ export type GetCertificatesRequest = {
3
+ id?: string;
4
+ aki?: string;
5
+ serial?: string;
6
+ revoked_start?: string;
7
+ revoked_end?: string;
8
+ expired_start?: string;
9
+ expired_end?: string;
10
+ notrevoked?: boolean;
11
+ notexpired?: boolean;
12
+ ca?: string;
13
+ };
14
+ export type CertificateResponse = {
15
+ caname: string;
16
+ certs: {
17
+ PEM: string;
18
+ }[];
19
+ };
20
+ export type FabricIdentity = {
21
+ id: string;
22
+ type: string;
23
+ affiliation: string;
24
+ attrs: {
25
+ name: string;
26
+ value: string;
27
+ }[];
28
+ max_enrollments: number;
29
+ };
30
+ export type IdentityResponse = {
31
+ caname: string;
32
+ identities: FabricIdentity[];
33
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * @description Hyperledger Fabric Shared Module for Decaf-ts
4
+ * @summary This module provides common logic to the client and contract sides of Hyperledger Fabric
5
+ * @namespace shared
6
+ * @memberOf module:for-fabric
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ __exportStar(require("./events.cjs"), exports);
24
+ __exportStar(require("./utils.cjs"), exports);
25
+ __exportStar(require("./types.cjs"), exports);
26
+ __exportStar(require("./../client/services/index.cjs"), exports);
27
+ __exportStar(require("./model/index.cjs"), exports);
28
+ __exportStar(require("./decorators.cjs"), exports);
29
+ __exportStar(require("./constants.cjs"), exports);
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhcmVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7R0FLRzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILCtDQUF5QjtBQUN6Qiw4Q0FBd0I7QUFDeEIsOENBQXdCO0FBQ3hCLGlFQUFtQztBQUNuQyxvREFBd0I7QUFDeEIsbURBQTZCO0FBQzdCLGtEQUE0QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlc2NyaXB0aW9uIEh5cGVybGVkZ2VyIEZhYnJpYyBTaGFyZWQgTW9kdWxlIGZvciBEZWNhZi10c1xuICogQHN1bW1hcnkgVGhpcyBtb2R1bGUgcHJvdmlkZXMgY29tbW9uIGxvZ2ljIHRvIHRoZSBjbGllbnQgYW5kIGNvbnRyYWN0IHNpZGVzIG9mIEh5cGVybGVkZ2VyIEZhYnJpY1xuICogQG5hbWVzcGFjZSBzaGFyZWRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpY1xuICovXG5cbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi4vY2xpZW50L3NlcnZpY2VzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29uc3RhbnRzXCI7XG4iXX0=
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @description Hyperledger Fabric Shared Module for Decaf-ts
3
+ * @summary This module provides common logic to the client and contract sides of Hyperledger Fabric
4
+ * @namespace shared
5
+ * @memberOf module:for-fabric
6
+ */
7
+ export * from "./events";
8
+ export * from "./utils";
9
+ export * from "./types";
10
+ export * from "../client/services";
11
+ export * from "./model";
12
+ export * from "./decorators";
13
+ export * from "./constants";
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2hlY2thYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NoYXJlZC9pbnRlcmZhY2VzL0NoZWNrYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJmYWJyaWMtY29udHJhY3QtYXBpXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgaGVhbHRoLWNoZWNrIGNhcGFibGUgY29udHJhY3RzL3NlcnZpY2VzXG4gKiBAc3VtbWFyeSBQcm92aWRlcyBhIHN0YW5kYXJkIGhlYWx0aGNoZWNrIG1ldGhvZCBzaWduYXR1cmUgdG8gcHJvYmUgbGl2ZW5lc3MvcmVhZGluZXNzIG9mIEZhYnJpYyBjb250cmFjdHMgb3Igc2VydmljZXMgdXNpbmcgYSBGYWJyaWMgY29udGV4dFxuICogQHBhcmFtIHtDb250ZXh0fSBjdHggLSBGYWJyaWMgdHJhbnNhY3Rpb24gY29udGV4dCB1c2VkIGZvciBwZXJmb3JtaW5nIHRoZSBoZWFsdGggY2hlY2tcbiAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nfGJvb2xlYW4+fSBBIG1lc3NhZ2UgZGVzY3JpYmluZyBoZWFsdGggb3IgYSBib29sZWFuIHN0YXR1c1xuICogQGludGVyZmFjZSBDaGVja2FibGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5zaGFyZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja2FibGUge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBlcmZvcm0gYSBoZWFsdGggY2hlY2sgdXNpbmcgdGhlIEZhYnJpYyB0cmFuc2FjdGlvbiBjb250ZXh0XG4gICAqIEBzdW1tYXJ5IEFsbG93cyBpbXBsZW1lbnRlcnMgdG8gcmVwb3J0IHJlYWRpbmVzcy9saXZlbmVzcyBpbmZvcm1hdGlvbiB0aGF0IGNhbiBiZSBhIHRleHR1YWwgbWVzc2FnZSBvciBhIGJvb2xlYW4gc3RhdHVzXG4gICAqIEBwYXJhbSB7Q29udGV4dH0gY3R4IC0gRmFicmljIHRyYW5zYWN0aW9uIGNvbnRleHQgcmVmZXJlbmNlIHVzZWQgZHVyaW5nIHRoZSBjaGVja1xuICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZ3xib29sZWFuPn0gQSBzdHJpbmcgbWVzc2FnZSBkZXNjcmliaW5nIGhlYWx0aCBvciBhIGJvb2xlYW4gaW5kaWNhdGluZyBoZWFsdGh5L3VuaGVhbHRoeVxuICAgKi9cbiAgaGVhbHRoY2hlY2soY3R4OiBDb250ZXh0KTogUHJvbWlzZTxzdHJpbmcgfCBoZWFsdGhjaGVjaz47XG59XG5cbmV4cG9ydCB0eXBlIGhlYWx0aGNoZWNrID0geyBoZWFsdGhjaGVjazogYm9vbGVhbiB9O1xuIl19
@@ -0,0 +1,21 @@
1
+ import { Context } from "fabric-contract-api";
2
+ /**
3
+ * @description Interface for health-check capable contracts/services
4
+ * @summary Provides a standard healthcheck method signature to probe liveness/readiness of Fabric contracts or services using a Fabric context
5
+ * @param {Context} ctx - Fabric transaction context used for performing the health check
6
+ * @return {Promise<string|boolean>} A message describing health or a boolean status
7
+ * @interface Checkable
8
+ * @memberOf module:for-fabric.shared
9
+ */
10
+ export interface Checkable {
11
+ /**
12
+ * @description Perform a health check using the Fabric transaction context
13
+ * @summary Allows implementers to report readiness/liveness information that can be a textual message or a boolean status
14
+ * @param {Context} ctx - Fabric transaction context reference used during the check
15
+ * @return {Promise<string|boolean>} A string message describing health or a boolean indicating healthy/unhealthy
16
+ */
17
+ healthcheck(ctx: Context): Promise<string | healthcheck>;
18
+ }
19
+ export type healthcheck = {
20
+ healthcheck: boolean;
21
+ };
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.add = add;
4
+ exports.sub = sub;
5
+ exports.safeParseInt = safeParseInt;
6
+ const decorator_validation_1 = require("@decaf-ts/decorator-validation");
7
+ const errors_1 = require("./errors.cjs");
8
+ const db_decorators_1 = require("@decaf-ts/db-decorators");
9
+ /**
10
+ * @description Overflow-safe addition operation
11
+ * @summary Adds two numbers and verifies no overflow by reverse-checking the operands
12
+ * @param {number} a - First operand
13
+ * @param {number} b - Second operand
14
+ * @return {number} The sum of a and b
15
+ * @function add
16
+ * @throws {OverflowError} on addition overflow
17
+ * @memberOf module:for-fabric.shared
18
+ */
19
+ function add(a, b) {
20
+ const c = a + b;
21
+ if (a !== c - b || b !== c - a) {
22
+ throw new errors_1.OverflowError(`Addition overflow: ${a} + ${b}`);
23
+ }
24
+ return c;
25
+ }
26
+ /**
27
+ * @description Overflow-safe subtraction operation
28
+ * @summary Subtracts b from a and validates no overflow by reverse-checking the operands
29
+ * @param {number} a - Minuend
30
+ * @param {number} b - Subtrahend
31
+ * @return {number} The difference a - b
32
+ * @function sub
33
+ * @throws {OverflowError} on subtaction overflow
34
+ * @memberOf module:for-fabric.shared
35
+ */
36
+ function sub(a, b) {
37
+ const c = a - b;
38
+ if (a !== c + b || b !== a - c) {
39
+ throw new errors_1.OverflowError(`Subtraction overflow: ${a} - ${b}`);
40
+ }
41
+ return c;
42
+ }
43
+ /**
44
+ * @summary Safe Integer Parse
45
+ *
46
+ * @param {string} string
47
+ *
48
+ * @function safeParseInt
49
+ *
50
+ * @throws {ValidationError} if parseInt returns NaN
51
+ *
52
+ * @memberOf module:for-fabric.shared
53
+ */
54
+ function safeParseInt(string) {
55
+ // Regular expression to check if string only have digits
56
+ const digitRegex = /^\d+$/;
57
+ if (!digitRegex.test(string)) {
58
+ throw new db_decorators_1.ValidationError((0, decorator_validation_1.stringFormat)("Failed to parse: {0}", "string contains digits"));
59
+ }
60
+ const parsedint = parseInt(string);
61
+ if (isNaN(parsedint)) {
62
+ throw new db_decorators_1.ValidationError((0, decorator_validation_1.stringFormat)("Failed to parse: {0}", "string is not a parsable integer"));
63
+ }
64
+ return parsedint;
65
+ }
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFyZWQvbWF0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLGtCQU1DO0FBWUQsa0JBTUM7QUFhRCxvQ0FlQztBQWxFRCx5RUFBOEQ7QUFDOUQseUNBQXlDO0FBQ3pDLDJEQUEwRDtBQUUxRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLHNCQUFhLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVM7SUFDdEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLHNCQUFhLENBQUMseUJBQXlCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLE1BQWM7SUFDekMseURBQXlEO0lBQ3pELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztJQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSwrQkFBZSxDQUN2QixJQUFBLG1DQUFZLEVBQUMsc0JBQXNCLEVBQUUsd0JBQXdCLENBQUMsQ0FDL0QsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksK0JBQWUsQ0FDdkIsSUFBQSxtQ0FBWSxFQUFDLHNCQUFzQixFQUFFLGtDQUFrQyxDQUFDLENBQ3pFLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmluZ0Zvcm1hdCB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE92ZXJmbG93RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPdmVyZmxvdy1zYWZlIGFkZGl0aW9uIG9wZXJhdGlvblxuICogQHN1bW1hcnkgQWRkcyB0d28gbnVtYmVycyBhbmQgdmVyaWZpZXMgbm8gb3ZlcmZsb3cgYnkgcmV2ZXJzZS1jaGVja2luZyB0aGUgb3BlcmFuZHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBhIC0gRmlyc3Qgb3BlcmFuZFxuICogQHBhcmFtIHtudW1iZXJ9IGIgLSBTZWNvbmQgb3BlcmFuZFxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgc3VtIG9mIGEgYW5kIGJcbiAqIEBmdW5jdGlvbiBhZGRcbiAqIEB0aHJvd3Mge092ZXJmbG93RXJyb3J9IG9uIGFkZGl0aW9uIG92ZXJmbG93XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuc2hhcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGQoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBjID0gYSArIGI7XG4gIGlmIChhICE9PSBjIC0gYiB8fCBiICE9PSBjIC0gYSkge1xuICAgIHRocm93IG5ldyBPdmVyZmxvd0Vycm9yKGBBZGRpdGlvbiBvdmVyZmxvdzogJHthfSArICR7Yn1gKTtcbiAgfVxuICByZXR1cm4gYztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3ZlcmZsb3ctc2FmZSBzdWJ0cmFjdGlvbiBvcGVyYXRpb25cbiAqIEBzdW1tYXJ5IFN1YnRyYWN0cyBiIGZyb20gYSBhbmQgdmFsaWRhdGVzIG5vIG92ZXJmbG93IGJ5IHJldmVyc2UtY2hlY2tpbmcgdGhlIG9wZXJhbmRzXG4gKiBAcGFyYW0ge251bWJlcn0gYSAtIE1pbnVlbmRcbiAqIEBwYXJhbSB7bnVtYmVyfSBiIC0gU3VidHJhaGVuZFxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgZGlmZmVyZW5jZSBhIC0gYlxuICogQGZ1bmN0aW9uIHN1YlxuICogQHRocm93cyB7T3ZlcmZsb3dFcnJvcn0gb24gc3VidGFjdGlvbiBvdmVyZmxvd1xuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLnNoYXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3ViKGE6IG51bWJlciwgYjogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgYyA9IGEgLSBiO1xuICBpZiAoYSAhPT0gYyArIGIgfHwgYiAhPT0gYSAtIGMpIHtcbiAgICB0aHJvdyBuZXcgT3ZlcmZsb3dFcnJvcihgU3VidHJhY3Rpb24gb3ZlcmZsb3c6ICR7YX0gLSAke2J9YCk7XG4gIH1cbiAgcmV0dXJuIGM7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgU2FmZSBJbnRlZ2VyIFBhcnNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICpcbiAqIEBmdW5jdGlvbiBzYWZlUGFyc2VJbnRcbiAqXG4gKiBAdGhyb3dzIHtWYWxpZGF0aW9uRXJyb3J9IGlmIHBhcnNlSW50IHJldHVybnMgTmFOXG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLnNoYXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FmZVBhcnNlSW50KHN0cmluZzogc3RyaW5nKTogbnVtYmVyIHtcbiAgLy8gUmVndWxhciBleHByZXNzaW9uIHRvIGNoZWNrIGlmIHN0cmluZyBvbmx5IGhhdmUgZGlnaXRzXG4gIGNvbnN0IGRpZ2l0UmVnZXggPSAvXlxcZCskLztcbiAgaWYgKCFkaWdpdFJlZ2V4LnRlc3Qoc3RyaW5nKSkge1xuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoXG4gICAgICBzdHJpbmdGb3JtYXQoXCJGYWlsZWQgdG8gcGFyc2U6IHswfVwiLCBcInN0cmluZyBjb250YWlucyBkaWdpdHNcIilcbiAgICApO1xuICB9XG4gIGNvbnN0IHBhcnNlZGludCA9IHBhcnNlSW50KHN0cmluZyk7XG4gIGlmIChpc05hTihwYXJzZWRpbnQpKSB7XG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihcbiAgICAgIHN0cmluZ0Zvcm1hdChcIkZhaWxlZCB0byBwYXJzZTogezB9XCIsIFwic3RyaW5nIGlzIG5vdCBhIHBhcnNhYmxlIGludGVnZXJcIilcbiAgICApO1xuICB9XG4gIHJldHVybiBwYXJzZWRpbnQ7XG59XG4iXX0=