@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.
- package/LICENSE.md +22 -0
- package/README.md +647 -0
- package/dist/for-fabric.cjs +6223 -0
- package/dist/for-fabric.esm.cjs +6180 -0
- package/lib/client/FabricClientAdapter.cjs +760 -0
- package/lib/client/FabricClientAdapter.d.ts +381 -0
- package/lib/client/FabricClientDispatch.cjs +186 -0
- package/lib/client/FabricClientDispatch.d.ts +125 -0
- package/lib/client/FabricClientRepository.cjs +131 -0
- package/lib/client/FabricClientRepository.d.ts +100 -0
- package/lib/client/erc20/erc20ClientRepository.cjs +343 -0
- package/lib/client/erc20/erc20ClientRepository.d.ts +254 -0
- package/lib/client/fabric-fs.cjs +234 -0
- package/lib/client/fabric-fs.d.ts +92 -0
- package/lib/client/index.cjs +30 -0
- package/lib/client/index.d.ts +13 -0
- package/lib/client/logging.cjs +102 -0
- package/lib/client/logging.d.ts +60 -0
- package/lib/client/services/LoggedService.cjs +47 -0
- package/lib/client/services/LoggedService.d.ts +42 -0
- package/lib/client/services/constants.cjs +3 -0
- package/lib/client/services/constants.d.ts +15 -0
- package/lib/client/services/enrollementService.cjs +344 -0
- package/lib/client/services/enrollementService.d.ts +176 -0
- package/lib/client/services/index.cjs +18 -0
- package/lib/client/services/index.d.ts +1 -0
- package/lib/contracts/ContractAdapter.cjs +730 -0
- package/lib/contracts/ContractAdapter.d.ts +296 -0
- package/lib/contracts/ContractContext.cjs +85 -0
- package/lib/contracts/ContractContext.d.ts +64 -0
- package/lib/contracts/ContractPrivateDataAdapter.cjs +281 -0
- package/lib/contracts/ContractPrivateDataAdapter.d.ts +74 -0
- package/lib/contracts/FabricConstruction.cjs +441 -0
- package/lib/contracts/FabricConstruction.d.ts +304 -0
- package/lib/contracts/FabricContractRepository.cjs +306 -0
- package/lib/contracts/FabricContractRepository.d.ts +162 -0
- package/lib/contracts/FabricContractRepositoryObservableHandler.cjs +85 -0
- package/lib/contracts/FabricContractRepositoryObservableHandler.d.ts +62 -0
- package/lib/contracts/FabricContractSequence.cjs +139 -0
- package/lib/contracts/FabricContractSequence.d.ts +61 -0
- package/lib/contracts/FabricContractStatement.cjs +119 -0
- package/lib/contracts/FabricContractStatement.d.ts +34 -0
- package/lib/contracts/PrivateSequence.cjs +36 -0
- package/lib/contracts/PrivateSequence.d.ts +15 -0
- package/lib/contracts/crud/crud-contract.cjs +257 -0
- package/lib/contracts/crud/crud-contract.d.ts +168 -0
- package/lib/contracts/crud/index.cjs +19 -0
- package/lib/contracts/crud/index.d.ts +2 -0
- package/lib/contracts/crud/serialized-crud-contract.cjs +172 -0
- package/lib/contracts/crud/serialized-crud-contract.d.ts +37 -0
- package/lib/contracts/erc20/erc20contract.cjs +569 -0
- package/lib/contracts/erc20/erc20contract.d.ts +151 -0
- package/lib/contracts/erc20/index.cjs +21 -0
- package/lib/contracts/erc20/index.d.ts +2 -0
- package/lib/contracts/erc20/models.cjs +209 -0
- package/lib/contracts/erc20/models.d.ts +114 -0
- package/lib/contracts/index.cjs +32 -0
- package/lib/contracts/index.d.ts +15 -0
- package/lib/contracts/logging.cjs +96 -0
- package/lib/contracts/logging.d.ts +49 -0
- package/lib/contracts/private-data.cjs +121 -0
- package/lib/contracts/private-data.d.ts +16 -0
- package/lib/contracts/types.cjs +3 -0
- package/lib/contracts/types.d.ts +26 -0
- package/lib/esm/client/FabricClientAdapter.d.ts +381 -0
- package/lib/esm/client/FabricClientAdapter.js +723 -0
- package/lib/esm/client/FabricClientDispatch.d.ts +125 -0
- package/lib/esm/client/FabricClientDispatch.js +182 -0
- package/lib/esm/client/FabricClientRepository.d.ts +100 -0
- package/lib/esm/client/FabricClientRepository.js +127 -0
- package/lib/esm/client/erc20/erc20ClientRepository.d.ts +254 -0
- package/lib/esm/client/erc20/erc20ClientRepository.js +339 -0
- package/lib/esm/client/fabric-fs.d.ts +92 -0
- package/lib/esm/client/fabric-fs.js +191 -0
- package/lib/esm/client/index.d.ts +13 -0
- package/lib/esm/client/index.js +14 -0
- package/lib/esm/client/logging.d.ts +60 -0
- package/lib/esm/client/logging.js +98 -0
- package/lib/esm/client/services/LoggedService.d.ts +42 -0
- package/lib/esm/client/services/LoggedService.js +43 -0
- package/lib/esm/client/services/constants.d.ts +15 -0
- package/lib/esm/client/services/constants.js +2 -0
- package/lib/esm/client/services/enrollementService.d.ts +176 -0
- package/lib/esm/client/services/enrollementService.js +337 -0
- package/lib/esm/client/services/index.d.ts +1 -0
- package/lib/esm/client/services/index.js +2 -0
- package/lib/esm/contracts/ContractAdapter.d.ts +296 -0
- package/lib/esm/contracts/ContractAdapter.js +724 -0
- package/lib/esm/contracts/ContractContext.d.ts +64 -0
- package/lib/esm/contracts/ContractContext.js +81 -0
- package/lib/esm/contracts/ContractPrivateDataAdapter.d.ts +74 -0
- package/lib/esm/contracts/ContractPrivateDataAdapter.js +277 -0
- package/lib/esm/contracts/FabricConstruction.d.ts +304 -0
- package/lib/esm/contracts/FabricConstruction.js +433 -0
- package/lib/esm/contracts/FabricContractRepository.d.ts +162 -0
- package/lib/esm/contracts/FabricContractRepository.js +302 -0
- package/lib/esm/contracts/FabricContractRepositoryObservableHandler.d.ts +62 -0
- package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +81 -0
- package/lib/esm/contracts/FabricContractSequence.d.ts +61 -0
- package/lib/esm/contracts/FabricContractSequence.js +135 -0
- package/lib/esm/contracts/FabricContractStatement.d.ts +34 -0
- package/lib/esm/contracts/FabricContractStatement.js +115 -0
- package/lib/esm/contracts/PrivateSequence.d.ts +15 -0
- package/lib/esm/contracts/PrivateSequence.js +33 -0
- package/lib/esm/contracts/crud/crud-contract.d.ts +168 -0
- package/lib/esm/contracts/crud/crud-contract.js +253 -0
- package/lib/esm/contracts/crud/index.d.ts +2 -0
- package/lib/esm/contracts/crud/index.js +3 -0
- package/lib/esm/contracts/crud/serialized-crud-contract.d.ts +37 -0
- package/lib/esm/contracts/crud/serialized-crud-contract.js +168 -0
- package/lib/esm/contracts/erc20/erc20contract.d.ts +151 -0
- package/lib/esm/contracts/erc20/erc20contract.js +565 -0
- package/lib/esm/contracts/erc20/index.d.ts +2 -0
- package/lib/esm/contracts/erc20/index.js +4 -0
- package/lib/esm/contracts/erc20/models.d.ts +114 -0
- package/lib/esm/contracts/erc20/models.js +206 -0
- package/lib/esm/contracts/index.d.ts +15 -0
- package/lib/esm/contracts/index.js +16 -0
- package/lib/esm/contracts/logging.d.ts +49 -0
- package/lib/esm/contracts/logging.js +92 -0
- package/lib/esm/contracts/private-data.d.ts +16 -0
- package/lib/esm/contracts/private-data.js +113 -0
- package/lib/esm/contracts/types.d.ts +26 -0
- package/lib/esm/contracts/types.js +2 -0
- package/lib/esm/index.d.ts +8 -0
- package/lib/esm/index.js +9 -0
- package/lib/esm/shared/ClientSerializer.d.ts +52 -0
- package/lib/esm/shared/ClientSerializer.js +80 -0
- package/lib/esm/shared/DeterministicSerializer.d.ts +40 -0
- package/lib/esm/shared/DeterministicSerializer.js +50 -0
- package/lib/esm/shared/SimpleDeterministicSerializer.d.ts +7 -0
- package/lib/esm/shared/SimpleDeterministicSerializer.js +42 -0
- package/lib/esm/shared/constants.d.ts +39 -0
- package/lib/esm/shared/constants.js +42 -0
- package/lib/esm/shared/crypto.d.ts +107 -0
- package/lib/esm/shared/crypto.js +331 -0
- package/lib/esm/shared/decorators.d.ts +24 -0
- package/lib/esm/shared/decorators.js +98 -0
- package/lib/esm/shared/erc20/erc20-constants.d.ts +25 -0
- package/lib/esm/shared/erc20/erc20-constants.js +27 -0
- package/lib/esm/shared/errors.d.ts +116 -0
- package/lib/esm/shared/errors.js +132 -0
- package/lib/esm/shared/events.d.ts +39 -0
- package/lib/esm/shared/events.js +47 -0
- package/lib/esm/shared/fabric-types.d.ts +33 -0
- package/lib/esm/shared/fabric-types.js +2 -0
- package/lib/esm/shared/index.d.ts +13 -0
- package/lib/esm/shared/index.js +14 -0
- package/lib/esm/shared/interfaces/Checkable.d.ts +21 -0
- package/lib/esm/shared/interfaces/Checkable.js +2 -0
- package/lib/esm/shared/math.d.ts +34 -0
- package/lib/esm/shared/math.js +61 -0
- package/lib/esm/shared/model/Identity.d.ts +42 -0
- package/lib/esm/shared/model/Identity.js +78 -0
- package/lib/esm/shared/model/IdentityCredentials.d.ts +41 -0
- package/lib/esm/shared/model/IdentityCredentials.js +74 -0
- package/lib/esm/shared/model/index.d.ts +1 -0
- package/lib/esm/shared/model/index.js +2 -0
- package/lib/esm/shared/model/utils.d.ts +60 -0
- package/lib/esm/shared/model/utils.js +108 -0
- package/lib/esm/shared/types.d.ts +79 -0
- package/lib/esm/shared/types.js +2 -0
- package/lib/esm/shared/utils.d.ts +55 -0
- package/lib/esm/shared/utils.js +148 -0
- package/lib/index.cjs +25 -0
- package/lib/index.d.ts +8 -0
- package/lib/shared/ClientSerializer.cjs +84 -0
- package/lib/shared/ClientSerializer.d.ts +52 -0
- package/lib/shared/DeterministicSerializer.cjs +54 -0
- package/lib/shared/DeterministicSerializer.d.ts +40 -0
- package/lib/shared/SimpleDeterministicSerializer.cjs +46 -0
- package/lib/shared/SimpleDeterministicSerializer.d.ts +7 -0
- package/lib/shared/constants.cjs +45 -0
- package/lib/shared/constants.d.ts +39 -0
- package/lib/shared/crypto.cjs +369 -0
- package/lib/shared/crypto.d.ts +107 -0
- package/lib/shared/decorators.cjs +105 -0
- package/lib/shared/decorators.d.ts +24 -0
- package/lib/shared/erc20/erc20-constants.cjs +30 -0
- package/lib/shared/erc20/erc20-constants.d.ts +25 -0
- package/lib/shared/errors.cjs +142 -0
- package/lib/shared/errors.d.ts +116 -0
- package/lib/shared/events.cjs +51 -0
- package/lib/shared/events.d.ts +39 -0
- package/lib/shared/fabric-types.cjs +4 -0
- package/lib/shared/fabric-types.d.ts +33 -0
- package/lib/shared/index.cjs +30 -0
- package/lib/shared/index.d.ts +13 -0
- package/lib/shared/interfaces/Checkable.cjs +3 -0
- package/lib/shared/interfaces/Checkable.d.ts +21 -0
- package/lib/shared/math.cjs +66 -0
- package/lib/shared/math.d.ts +34 -0
- package/lib/shared/model/Identity.cjs +81 -0
- package/lib/shared/model/Identity.d.ts +42 -0
- package/lib/shared/model/IdentityCredentials.cjs +77 -0
- package/lib/shared/model/IdentityCredentials.d.ts +41 -0
- package/lib/shared/model/index.cjs +18 -0
- package/lib/shared/model/index.d.ts +1 -0
- package/lib/shared/model/utils.cjs +114 -0
- package/lib/shared/model/utils.d.ts +60 -0
- package/lib/shared/types.cjs +3 -0
- package/lib/shared/types.d.ts +79 -0
- package/lib/shared/utils.cjs +185 -0
- package/lib/shared/utils.d.ts +55 -0
- 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
|
+
}
|