@decaf-ts/for-fabric 0.0.2 → 0.0.4
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 +159 -17
- package/README.md +26 -285
- package/dist/for-fabric.cjs +2 -6223
- package/dist/for-fabric.cjs.map +1 -0
- package/dist/for-fabric.js +2 -0
- package/dist/for-fabric.js.map +1 -0
- package/lib/bin/build-contracts.cjs +47 -0
- package/lib/bin/build-contracts.d.ts +1 -0
- package/lib/bin/build-contracts.js.map +1 -0
- package/lib/client/FabricClientAdapter.cjs +7 -7
- package/lib/client/FabricClientAdapter.js.map +1 -0
- package/lib/client/FabricClientDispatch.cjs +1 -1
- package/lib/client/FabricClientDispatch.js.map +1 -0
- package/lib/client/FabricClientRepository.cjs +1 -1
- package/lib/client/FabricClientRepository.js.map +1 -0
- package/lib/client/erc20/erc20ClientRepository.cjs +1 -1
- package/lib/client/erc20/erc20ClientRepository.js.map +1 -0
- package/lib/client/fabric-fs.cjs +1 -1
- package/lib/client/fabric-fs.js.map +1 -0
- package/lib/client/index.cjs +1 -1
- package/lib/client/index.js.map +1 -0
- package/lib/client/logging.cjs +1 -1
- package/lib/client/logging.js.map +1 -0
- package/lib/client/services/LoggedService.cjs +1 -1
- package/lib/client/services/LoggedService.js.map +1 -0
- package/lib/client/services/constants.cjs +1 -1
- package/lib/client/services/constants.js.map +1 -0
- package/lib/client/services/enrollementService.cjs +1 -1
- package/lib/client/services/enrollementService.js.map +1 -0
- package/lib/client/services/index.cjs +1 -1
- package/lib/client/services/index.js.map +1 -0
- package/lib/contracts/ContractAdapter.cjs +2 -2
- package/lib/contracts/ContractAdapter.js.map +1 -0
- package/lib/contracts/ContractContext.cjs +1 -1
- package/lib/contracts/ContractContext.js.map +1 -0
- package/lib/contracts/ContractPrivateDataAdapter.cjs +1 -1
- package/lib/contracts/ContractPrivateDataAdapter.js.map +1 -0
- package/lib/contracts/FabricConstruction.cjs +1 -1
- package/lib/contracts/FabricConstruction.js.map +1 -0
- package/lib/contracts/FabricContractRepository.cjs +7 -5
- package/lib/contracts/FabricContractRepository.d.ts +2 -2
- package/lib/contracts/FabricContractRepository.js.map +1 -0
- package/lib/contracts/FabricContractRepositoryObservableHandler.cjs +1 -1
- package/lib/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
- package/lib/contracts/FabricContractSequence.cjs +4 -3
- package/lib/contracts/FabricContractSequence.d.ts +2 -1
- package/lib/contracts/FabricContractSequence.js.map +1 -0
- package/lib/contracts/FabricContractStatement.cjs +3 -2
- package/lib/contracts/FabricContractStatement.d.ts +2 -1
- package/lib/contracts/FabricContractStatement.js.map +1 -0
- package/lib/contracts/PrivateSequence.cjs +1 -1
- package/lib/contracts/PrivateSequence.js.map +1 -0
- package/lib/contracts/crud/crud-contract.cjs +1 -1
- package/lib/contracts/crud/crud-contract.js.map +1 -0
- package/lib/contracts/crud/index.cjs +1 -1
- package/lib/contracts/crud/index.js.map +1 -0
- package/lib/contracts/crud/serialized-crud-contract.cjs +1 -1
- package/lib/contracts/crud/serialized-crud-contract.js.map +1 -0
- package/lib/contracts/erc20/erc20contract.cjs +1 -1
- package/lib/contracts/erc20/erc20contract.js.map +1 -0
- package/lib/contracts/erc20/index.cjs +1 -1
- package/lib/contracts/erc20/index.js.map +1 -0
- package/lib/contracts/erc20/models.cjs +1 -1
- package/lib/contracts/erc20/models.js.map +1 -0
- package/lib/contracts/index.cjs +1 -1
- package/lib/contracts/index.js.map +1 -0
- package/lib/contracts/logging.cjs +1 -1
- package/lib/contracts/logging.js.map +1 -0
- package/lib/contracts/private-data.cjs +1 -1
- package/lib/contracts/private-data.js.map +1 -0
- package/lib/contracts/types.cjs +1 -1
- package/lib/contracts/types.js.map +1 -0
- package/lib/esm/bin/build-contracts.d.ts +1 -0
- package/lib/esm/bin/build-contracts.js +42 -0
- package/lib/esm/bin/build-contracts.js.map +1 -0
- package/lib/esm/client/FabricClientAdapter.js +7 -7
- package/lib/esm/client/FabricClientAdapter.js.map +1 -0
- package/lib/esm/client/FabricClientDispatch.js +1 -1
- package/lib/esm/client/FabricClientDispatch.js.map +1 -0
- package/lib/esm/client/FabricClientRepository.js +1 -1
- package/lib/esm/client/FabricClientRepository.js.map +1 -0
- package/lib/esm/client/erc20/erc20ClientRepository.js +1 -1
- package/lib/esm/client/erc20/erc20ClientRepository.js.map +1 -0
- package/lib/esm/client/fabric-fs.js +1 -1
- package/lib/esm/client/fabric-fs.js.map +1 -0
- package/lib/esm/client/index.js +1 -1
- package/lib/esm/client/index.js.map +1 -0
- package/lib/esm/client/logging.js +1 -1
- package/lib/esm/client/logging.js.map +1 -0
- package/lib/esm/client/services/LoggedService.js +1 -1
- package/lib/esm/client/services/LoggedService.js.map +1 -0
- package/lib/esm/client/services/constants.js +1 -1
- package/lib/esm/client/services/constants.js.map +1 -0
- package/lib/esm/client/services/enrollementService.js +1 -1
- package/lib/esm/client/services/enrollementService.js.map +1 -0
- package/lib/esm/client/services/index.js +1 -1
- package/lib/esm/client/services/index.js.map +1 -0
- package/lib/esm/contracts/ContractAdapter.js +2 -2
- package/lib/esm/contracts/ContractAdapter.js.map +1 -0
- package/lib/esm/contracts/ContractContext.js +1 -1
- package/lib/esm/contracts/ContractContext.js.map +1 -0
- package/lib/esm/contracts/ContractPrivateDataAdapter.js +1 -1
- package/lib/esm/contracts/ContractPrivateDataAdapter.js.map +1 -0
- package/lib/esm/contracts/FabricConstruction.js +1 -1
- package/lib/esm/contracts/FabricConstruction.js.map +1 -0
- package/lib/esm/contracts/FabricContractRepository.d.ts +2 -2
- package/lib/esm/contracts/FabricContractRepository.js +4 -2
- package/lib/esm/contracts/FabricContractRepository.js.map +1 -0
- package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
- package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
- package/lib/esm/contracts/FabricContractSequence.d.ts +2 -1
- package/lib/esm/contracts/FabricContractSequence.js +3 -2
- package/lib/esm/contracts/FabricContractSequence.js.map +1 -0
- package/lib/esm/contracts/FabricContractStatement.d.ts +2 -1
- package/lib/esm/contracts/FabricContractStatement.js +3 -2
- package/lib/esm/contracts/FabricContractStatement.js.map +1 -0
- package/lib/esm/contracts/PrivateSequence.js +1 -1
- package/lib/esm/contracts/PrivateSequence.js.map +1 -0
- package/lib/esm/contracts/crud/crud-contract.js +1 -1
- package/lib/esm/contracts/crud/crud-contract.js.map +1 -0
- package/lib/esm/contracts/crud/index.js +1 -1
- package/lib/esm/contracts/crud/index.js.map +1 -0
- package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
- package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -0
- package/lib/esm/contracts/erc20/erc20contract.js +1 -1
- package/lib/esm/contracts/erc20/erc20contract.js.map +1 -0
- package/lib/esm/contracts/erc20/index.js +1 -1
- package/lib/esm/contracts/erc20/index.js.map +1 -0
- package/lib/esm/contracts/erc20/models.js +1 -1
- package/lib/esm/contracts/erc20/models.js.map +1 -0
- package/lib/esm/contracts/index.js +1 -1
- package/lib/esm/contracts/index.js.map +1 -0
- package/lib/esm/contracts/logging.js +1 -1
- package/lib/esm/contracts/logging.js.map +1 -0
- package/lib/esm/contracts/private-data.js +2 -2
- package/lib/esm/contracts/private-data.js.map +1 -0
- package/lib/esm/contracts/types.js +1 -1
- package/lib/esm/contracts/types.js.map +1 -0
- package/lib/esm/index.d.ts +1 -0
- package/lib/esm/index.js +2 -1
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/shared/ClientSerializer.js +1 -1
- package/lib/esm/shared/ClientSerializer.js.map +1 -0
- package/lib/esm/shared/DeterministicSerializer.js +1 -1
- package/lib/esm/shared/DeterministicSerializer.js.map +1 -0
- package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
- package/lib/esm/shared/SimpleDeterministicSerializer.js.map +1 -0
- package/lib/esm/shared/constants.d.ts +0 -7
- package/lib/esm/shared/constants.js +1 -8
- package/lib/esm/shared/constants.js.map +1 -0
- package/lib/esm/shared/crypto.js +2 -2
- package/lib/esm/shared/crypto.js.map +1 -0
- package/lib/esm/shared/decorators.js +1 -1
- package/lib/esm/shared/decorators.js.map +1 -0
- package/lib/esm/shared/erc20/erc20-constants.js +1 -1
- package/lib/esm/shared/erc20/erc20-constants.js.map +1 -0
- package/lib/esm/shared/errors.js +1 -1
- package/lib/esm/shared/errors.js.map +1 -0
- package/lib/esm/shared/events.d.ts +2 -0
- package/lib/esm/shared/events.js +2 -2
- package/lib/esm/shared/events.js.map +1 -0
- package/lib/esm/shared/fabric-types.js +1 -1
- package/lib/esm/shared/fabric-types.js.map +1 -0
- package/lib/esm/shared/index.js +1 -1
- package/lib/esm/shared/index.js.map +1 -0
- package/lib/esm/shared/interfaces/Checkable.js +1 -1
- package/lib/esm/shared/interfaces/Checkable.js.map +1 -0
- package/lib/esm/shared/math.js +1 -1
- package/lib/esm/shared/math.js.map +1 -0
- package/lib/esm/shared/model/Identity.js +1 -1
- package/lib/esm/shared/model/Identity.js.map +1 -0
- package/lib/esm/shared/model/IdentityCredentials.js +1 -1
- package/lib/esm/shared/model/IdentityCredentials.js.map +1 -0
- package/lib/esm/shared/model/index.js +1 -1
- package/lib/esm/shared/model/index.js.map +1 -0
- package/lib/esm/shared/types.js +1 -1
- package/lib/esm/shared/types.js.map +1 -0
- package/lib/esm/shared/utils.js +1 -1
- package/lib/esm/shared/utils.js.map +1 -0
- package/lib/esm/version.d.ts +2 -0
- package/lib/esm/version.js +5 -0
- package/lib/esm/version.js.map +1 -0
- package/lib/index.cjs +2 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js.map +1 -0
- package/lib/shared/ClientSerializer.cjs +1 -1
- package/lib/shared/ClientSerializer.js.map +1 -0
- package/lib/shared/DeterministicSerializer.cjs +1 -1
- package/lib/shared/DeterministicSerializer.js.map +1 -0
- package/lib/shared/SimpleDeterministicSerializer.cjs +1 -1
- package/lib/shared/SimpleDeterministicSerializer.js.map +1 -0
- package/lib/shared/constants.cjs +2 -9
- package/lib/shared/constants.d.ts +0 -7
- package/lib/shared/constants.js.map +1 -0
- package/lib/shared/crypto.cjs +3 -3
- package/lib/shared/crypto.js.map +1 -0
- package/lib/shared/decorators.cjs +1 -1
- package/lib/shared/decorators.js.map +1 -0
- package/lib/shared/erc20/erc20-constants.cjs +1 -1
- package/lib/shared/erc20/erc20-constants.js.map +1 -0
- package/lib/shared/errors.cjs +1 -1
- package/lib/shared/errors.js.map +1 -0
- package/lib/shared/events.cjs +2 -2
- package/lib/shared/events.d.ts +2 -0
- package/lib/shared/events.js.map +1 -0
- package/lib/shared/fabric-types.cjs +1 -1
- package/lib/shared/fabric-types.js.map +1 -0
- package/lib/shared/index.cjs +1 -1
- package/lib/shared/index.js.map +1 -0
- package/lib/shared/interfaces/Checkable.cjs +1 -1
- package/lib/shared/interfaces/Checkable.js.map +1 -0
- package/lib/shared/math.cjs +1 -1
- package/lib/shared/math.js.map +1 -0
- package/lib/shared/model/Identity.cjs +1 -1
- package/lib/shared/model/Identity.js.map +1 -0
- package/lib/shared/model/IdentityCredentials.cjs +1 -1
- package/lib/shared/model/IdentityCredentials.js.map +1 -0
- package/lib/shared/model/index.cjs +1 -1
- package/lib/shared/model/index.js.map +1 -0
- package/lib/shared/types.cjs +1 -1
- package/lib/shared/types.js.map +1 -0
- package/lib/shared/utils.cjs +1 -1
- package/lib/shared/utils.js.map +1 -0
- package/lib/version.cjs +8 -0
- package/lib/version.d.ts +2 -0
- package/lib/version.js.map +1 -0
- package/package.json +43 -65
- package/dist/for-fabric.esm.cjs +0 -6180
- package/lib/esm/shared/model/utils.d.ts +0 -60
- package/lib/esm/shared/model/utils.js +0 -108
- package/lib/shared/model/utils.cjs +0 -114
- package/lib/shared/model/utils.d.ts +0 -60
|
@@ -1,60 +0,0 @@
|
|
|
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
|
-
};
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { Model } from "@decaf-ts/decorator-validation";
|
|
2
|
-
import { getFabricModelKey } from "./../decorators.js";
|
|
3
|
-
import { FabricModelKeys } from "./../constants.js";
|
|
4
|
-
import { getAllPropertyDecoratorsRecursive, SerializationError, } from "@decaf-ts/db-decorators";
|
|
5
|
-
/**
|
|
6
|
-
* @description Checks whether a model or its class has private data metadata
|
|
7
|
-
* @summary Uses reflection metadata to determine if the given Decaf model includes Fabric private data annotations at instance or constructor level
|
|
8
|
-
* @template M extends Model
|
|
9
|
-
* @param {M} model - The model instance to inspect for private data metadata
|
|
10
|
-
* @return {boolean} True if private data metadata is present; otherwise false
|
|
11
|
-
* @function hasPrivateData
|
|
12
|
-
* @memberOf module:for-fabric.shared
|
|
13
|
-
*/
|
|
14
|
-
export function hasPrivateData(model) {
|
|
15
|
-
const metadata = getClassPrivateDataMetadata(model);
|
|
16
|
-
if (!metadata)
|
|
17
|
-
return false;
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* @description Retrieves the Fabric private data metadata for a model
|
|
22
|
-
* @summary Looks up the metadata key on the instance first and then on the constructor to support both instance and static decorator placement
|
|
23
|
-
* @template M extends Model
|
|
24
|
-
* @param {M} model - The model whose Fabric private data metadata should be retrieved
|
|
25
|
-
* @return {Record<string, any>} The metadata object if present, otherwise undefined-like value
|
|
26
|
-
* @function getClassPrivateDataMetadata
|
|
27
|
-
* @memberOf module:for-fabric.shared
|
|
28
|
-
*/
|
|
29
|
-
export function getClassPrivateDataMetadata(model) {
|
|
30
|
-
let metadata = Reflect.getMetadata(getFabricModelKey(FabricModelKeys.PRIVATE), model);
|
|
31
|
-
metadata =
|
|
32
|
-
metadata ||
|
|
33
|
-
Reflect.getMetadata(getFabricModelKey(FabricModelKeys.PRIVATE), model.constructor);
|
|
34
|
-
return metadata;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* @description Determines if a model should be fully treated as private
|
|
38
|
-
* @summary Reads the metadata flag isPrivate from the model's Fabric private data metadata and returns its boolean value
|
|
39
|
-
* @template M extends Model
|
|
40
|
-
* @param {M} model - The model instance to check
|
|
41
|
-
* @return {boolean} True when model is marked as private; otherwise false
|
|
42
|
-
* @function isModelPrivate
|
|
43
|
-
* @memberOf module:for-fabric.shared
|
|
44
|
-
*/
|
|
45
|
-
export function isModelPrivate(model) {
|
|
46
|
-
const metadata = getClassPrivateDataMetadata(model);
|
|
47
|
-
if (!metadata || metadata.isPrivate === undefined)
|
|
48
|
-
return false;
|
|
49
|
-
return metadata.isPrivate;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* @description Splits a model into public and Fabric private data collections
|
|
53
|
-
* @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
|
|
54
|
-
* @template M extends Model
|
|
55
|
-
* @param {M} model - The model instance to transform into public and private parts
|
|
56
|
-
* @return {{ model: M, private: Record<string, Record<string, any>> }} An object with the rebuilt public model and optional private collection maps
|
|
57
|
-
* @function modelToPrivate
|
|
58
|
-
* @mermaid
|
|
59
|
-
* sequenceDiagram
|
|
60
|
-
* participant Caller
|
|
61
|
-
* participant Utils as modelToPrivate
|
|
62
|
-
* participant Meta as Metadata
|
|
63
|
-
* Caller->>Utils: modelToPrivate(model)
|
|
64
|
-
* Utils->>Meta: getAllPropertyDecoratorsRecursive(model, PRIVATE)
|
|
65
|
-
* Utils->>Meta: isModelPrivate(model)
|
|
66
|
-
* alt model is private or has private props
|
|
67
|
-
* Utils->>Utils: group properties by collection
|
|
68
|
-
* else
|
|
69
|
-
* Utils->>Utils: keep property in public model
|
|
70
|
-
* end
|
|
71
|
-
* Utils->>Meta: getClassPrivateDataMetadata(model)
|
|
72
|
-
* Utils->>Utils: Model.build(public, anchor)
|
|
73
|
-
* Utils-->>Caller: { model, private }
|
|
74
|
-
* @memberOf module:for-fabric.shared
|
|
75
|
-
*/
|
|
76
|
-
export function modelToPrivate(model) {
|
|
77
|
-
if (!hasPrivateData(model))
|
|
78
|
-
return { model: model };
|
|
79
|
-
const decs = getAllPropertyDecoratorsRecursive(model, undefined, getFabricModelKey(FabricModelKeys.PRIVATE));
|
|
80
|
-
const isPrivate = isModelPrivate(model);
|
|
81
|
-
const modelCollections = getClassPrivateDataMetadata(model);
|
|
82
|
-
const result = Object.entries(decs).reduce((accum, [k, val]) => {
|
|
83
|
-
const privateData = val.find((el) => el.key === "");
|
|
84
|
-
if (privateData || isPrivate) {
|
|
85
|
-
const collections = isPrivate
|
|
86
|
-
? modelCollections.collections
|
|
87
|
-
: privateData.props.collections;
|
|
88
|
-
accum.private = accum.private || {};
|
|
89
|
-
for (const collection of collections) {
|
|
90
|
-
try {
|
|
91
|
-
accum.private[collection] = accum.private[collection] || {};
|
|
92
|
-
accum.private[collection][k] = model[k];
|
|
93
|
-
}
|
|
94
|
-
catch (e) {
|
|
95
|
-
throw new SerializationError(`Failed to serialize private property ${k}: ${e}`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
accum.model = accum.model || {};
|
|
101
|
-
accum.model[k] = model[k];
|
|
102
|
-
}
|
|
103
|
-
return accum;
|
|
104
|
-
}, {});
|
|
105
|
-
result.model = Model.build(result.model, model.constructor.name);
|
|
106
|
-
return result;
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2hhcmVkL21vZGVsL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsMkJBQXNCO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsMEJBQXFCO0FBQy9DLE9BQU8sRUFDTCxpQ0FBaUMsRUFDakMsa0JBQWtCLEdBQ25CLE1BQU0seUJBQXlCLENBQUM7QUFFakM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFrQixLQUFRO0lBQ3RELE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDNUIsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLEtBQVE7SUFFUixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUNoQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQzFDLEtBQUssQ0FDTixDQUFDO0lBRUYsUUFBUTtRQUNOLFFBQVE7WUFDUixPQUFPLENBQUMsV0FBVyxDQUNqQixpQkFBaUIsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEVBQzFDLEtBQUssQ0FBQyxXQUFXLENBQ2xCLENBQUM7SUFFSixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFrQixLQUFRO0lBQ3RELE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFNBQVMsS0FBSyxTQUFTO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDaEUsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsS0FBUTtJQUVSLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNwRCxNQUFNLElBQUksR0FBMEIsaUNBQWlDLENBQ25FLEtBQUssRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUNsQixDQUFDO0lBRTNCLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxNQUFNLGdCQUFnQixHQUNwQiwyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVyQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FDeEMsQ0FDRSxLQUFvRSxFQUNwRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFDUixFQUFFO1FBQ0YsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUVwRCxJQUFJLFdBQVcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUM3QixNQUFNLFdBQVcsR0FBRyxTQUFTO2dCQUMzQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsV0FBVztnQkFDOUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO1lBQ2xDLEtBQUssQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFFcEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxDQUFDO29CQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQzVELEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQVksQ0FBQyxDQUFDO2dCQUNyRCxDQUFDO2dCQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7b0JBQ3BCLE1BQU0sSUFBSSxrQkFBa0IsQ0FDMUIsd0NBQXdDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FDbEQsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFJLEtBQTZCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxFQUNELEVBQW1FLENBQ3BFLENBQUM7SUFDRixNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pFLE9BQU8sTUFBcUUsQ0FBQztBQUMvRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBnZXRGYWJyaWNNb2RlbEtleSB9IGZyb20gXCIuLi9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBGYWJyaWNNb2RlbEtleXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBnZXRBbGxQcm9wZXJ0eURlY29yYXRvcnNSZWN1cnNpdmUsXG4gIFNlcmlhbGl6YXRpb25FcnJvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENoZWNrcyB3aGV0aGVyIGEgbW9kZWwgb3IgaXRzIGNsYXNzIGhhcyBwcml2YXRlIGRhdGEgbWV0YWRhdGFcbiAqIEBzdW1tYXJ5IFVzZXMgcmVmbGVjdGlvbiBtZXRhZGF0YSB0byBkZXRlcm1pbmUgaWYgdGhlIGdpdmVuIERlY2FmIG1vZGVsIGluY2x1ZGVzIEZhYnJpYyBwcml2YXRlIGRhdGEgYW5ub3RhdGlvbnMgYXQgaW5zdGFuY2Ugb3IgY29uc3RydWN0b3IgbGV2ZWxcbiAqIEB0ZW1wbGF0ZSBNIGV4dGVuZHMgTW9kZWxcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgdG8gaW5zcGVjdCBmb3IgcHJpdmF0ZSBkYXRhIG1ldGFkYXRhXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHByaXZhdGUgZGF0YSBtZXRhZGF0YSBpcyBwcmVzZW50OyBvdGhlcndpc2UgZmFsc2VcbiAqIEBmdW5jdGlvbiBoYXNQcml2YXRlRGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLnNoYXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUHJpdmF0ZURhdGE8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSkge1xuICBjb25zdCBtZXRhZGF0YSA9IGdldENsYXNzUHJpdmF0ZURhdGFNZXRhZGF0YShtb2RlbCk7XG4gIGlmICghbWV0YWRhdGEpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUgRmFicmljIHByaXZhdGUgZGF0YSBtZXRhZGF0YSBmb3IgYSBtb2RlbFxuICogQHN1bW1hcnkgTG9va3MgdXAgdGhlIG1ldGFkYXRhIGtleSBvbiB0aGUgaW5zdGFuY2UgZmlyc3QgYW5kIHRoZW4gb24gdGhlIGNvbnN0cnVjdG9yIHRvIHN1cHBvcnQgYm90aCBpbnN0YW5jZSBhbmQgc3RhdGljIGRlY29yYXRvciBwbGFjZW1lbnRcbiAqIEB0ZW1wbGF0ZSBNIGV4dGVuZHMgTW9kZWxcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgd2hvc2UgRmFicmljIHByaXZhdGUgZGF0YSBtZXRhZGF0YSBzaG91bGQgYmUgcmV0cmlldmVkXG4gKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBUaGUgbWV0YWRhdGEgb2JqZWN0IGlmIHByZXNlbnQsIG90aGVyd2lzZSB1bmRlZmluZWQtbGlrZSB2YWx1ZVxuICogQGZ1bmN0aW9uIGdldENsYXNzUHJpdmF0ZURhdGFNZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItZmFicmljLnNoYXJlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xhc3NQcml2YXRlRGF0YU1ldGFkYXRhPE0gZXh0ZW5kcyBNb2RlbD4oXG4gIG1vZGVsOiBNXG4pOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgbGV0IG1ldGFkYXRhID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICBnZXRGYWJyaWNNb2RlbEtleShGYWJyaWNNb2RlbEtleXMuUFJJVkFURSksXG4gICAgbW9kZWxcbiAgKTtcblxuICBtZXRhZGF0YSA9XG4gICAgbWV0YWRhdGEgfHxcbiAgICBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgZ2V0RmFicmljTW9kZWxLZXkoRmFicmljTW9kZWxLZXlzLlBSSVZBVEUpLFxuICAgICAgbW9kZWwuY29uc3RydWN0b3JcbiAgICApO1xuXG4gIHJldHVybiBtZXRhZGF0YTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGV0ZXJtaW5lcyBpZiBhIG1vZGVsIHNob3VsZCBiZSBmdWxseSB0cmVhdGVkIGFzIHByaXZhdGVcbiAqIEBzdW1tYXJ5IFJlYWRzIHRoZSBtZXRhZGF0YSBmbGFnIGlzUHJpdmF0ZSBmcm9tIHRoZSBtb2RlbCdzIEZhYnJpYyBwcml2YXRlIGRhdGEgbWV0YWRhdGEgYW5kIHJldHVybnMgaXRzIGJvb2xlYW4gdmFsdWVcbiAqIEB0ZW1wbGF0ZSBNIGV4dGVuZHMgTW9kZWxcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgdG8gY2hlY2tcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgd2hlbiBtb2RlbCBpcyBtYXJrZWQgYXMgcHJpdmF0ZTsgb3RoZXJ3aXNlIGZhbHNlXG4gKiBAZnVuY3Rpb24gaXNNb2RlbFByaXZhdGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWZhYnJpYy5zaGFyZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTW9kZWxQcml2YXRlPE0gZXh0ZW5kcyBNb2RlbD4obW9kZWw6IE0pOiBib29sZWFuIHtcbiAgY29uc3QgbWV0YWRhdGEgPSBnZXRDbGFzc1ByaXZhdGVEYXRhTWV0YWRhdGEobW9kZWwpO1xuICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLmlzUHJpdmF0ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBtZXRhZGF0YS5pc1ByaXZhdGU7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFNwbGl0cyBhIG1vZGVsIGludG8gcHVibGljIGFuZCBGYWJyaWMgcHJpdmF0ZSBkYXRhIGNvbGxlY3Rpb25zXG4gKiBAc3VtbWFyeSBJdGVyYXRlcyBvdmVyIHByb3BlcnR5IGRlY29yYXRvcnMgdG8gY29sbGVjdCBhdHRyaWJ1dGVzIGRlc3RpbmVkIGZvciBwcml2YXRlIGRhdGEgY29sbGVjdGlvbnMgd2hpbGUga2VlcGluZyBwdWJsaWMgZmllbGRzLCByZXR1cm5pbmcgYSBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgcmVidWlsdCBwdWJsaWMgbW9kZWwgYW5kIGEgbWFwIG9mIGNvbGxlY3Rpb24tbmFtZSB0byBwcml2YXRlIGF0dHJpYnV0ZXNcbiAqIEB0ZW1wbGF0ZSBNIGV4dGVuZHMgTW9kZWxcbiAqIEBwYXJhbSB7TX0gbW9kZWwgLSBUaGUgbW9kZWwgaW5zdGFuY2UgdG8gdHJhbnNmb3JtIGludG8gcHVibGljIGFuZCBwcml2YXRlIHBhcnRzXG4gKiBAcmV0dXJuIHt7IG1vZGVsOiBNLCBwcml2YXRlOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+PiB9fSBBbiBvYmplY3Qgd2l0aCB0aGUgcmVidWlsdCBwdWJsaWMgbW9kZWwgYW5kIG9wdGlvbmFsIHByaXZhdGUgY29sbGVjdGlvbiBtYXBzXG4gKiBAZnVuY3Rpb24gbW9kZWxUb1ByaXZhdGVcbiAqIEBtZXJtYWlkXG4gKiBzZXF1ZW5jZURpYWdyYW1cbiAqICAgcGFydGljaXBhbnQgQ2FsbGVyXG4gKiAgIHBhcnRpY2lwYW50IFV0aWxzIGFzIG1vZGVsVG9Qcml2YXRlXG4gKiAgIHBhcnRpY2lwYW50IE1ldGEgYXMgTWV0YWRhdGFcbiAqICAgQ2FsbGVyLT4+VXRpbHM6IG1vZGVsVG9Qcml2YXRlKG1vZGVsKVxuICogICBVdGlscy0+Pk1ldGE6IGdldEFsbFByb3BlcnR5RGVjb3JhdG9yc1JlY3Vyc2l2ZShtb2RlbCwgUFJJVkFURSlcbiAqICAgVXRpbHMtPj5NZXRhOiBpc01vZGVsUHJpdmF0ZShtb2RlbClcbiAqICAgYWx0IG1vZGVsIGlzIHByaXZhdGUgb3IgaGFzIHByaXZhdGUgcHJvcHNcbiAqICAgICBVdGlscy0+PlV0aWxzOiBncm91cCBwcm9wZXJ0aWVzIGJ5IGNvbGxlY3Rpb25cbiAqICAgZWxzZVxuICogICAgIFV0aWxzLT4+VXRpbHM6IGtlZXAgcHJvcGVydHkgaW4gcHVibGljIG1vZGVsXG4gKiAgIGVuZFxuICogICBVdGlscy0+Pk1ldGE6IGdldENsYXNzUHJpdmF0ZURhdGFNZXRhZGF0YShtb2RlbClcbiAqICAgVXRpbHMtPj5VdGlsczogTW9kZWwuYnVpbGQocHVibGljLCBhbmNob3IpXG4gKiAgIFV0aWxzLS0+PkNhbGxlcjogeyBtb2RlbCwgcHJpdmF0ZSB9XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1mYWJyaWMuc2hhcmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbFRvUHJpdmF0ZTxNIGV4dGVuZHMgTW9kZWw+KFxuICBtb2RlbDogTVxuKTogeyBtb2RlbDogTTsgcHJpdmF0ZT86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGFueT4+IH0ge1xuICBpZiAoIWhhc1ByaXZhdGVEYXRhKG1vZGVsKSkgcmV0dXJuIHsgbW9kZWw6IG1vZGVsIH07XG4gIGNvbnN0IGRlY3M6IFJlY29yZDxzdHJpbmcsIGFueVtdPiA9IGdldEFsbFByb3BlcnR5RGVjb3JhdG9yc1JlY3Vyc2l2ZShcbiAgICBtb2RlbCxcbiAgICB1bmRlZmluZWQsXG4gICAgZ2V0RmFicmljTW9kZWxLZXkoRmFicmljTW9kZWxLZXlzLlBSSVZBVEUpXG4gICkgYXMgUmVjb3JkPHN0cmluZywgYW55W10+O1xuXG4gIGNvbnN0IGlzUHJpdmF0ZSA9IGlzTW9kZWxQcml2YXRlKG1vZGVsKTtcbiAgY29uc3QgbW9kZWxDb2xsZWN0aW9uczogUmVjb3JkPHN0cmluZywgYW55PiA9XG4gICAgZ2V0Q2xhc3NQcml2YXRlRGF0YU1ldGFkYXRhKG1vZGVsKTtcblxuICBjb25zdCByZXN1bHQgPSBPYmplY3QuZW50cmllcyhkZWNzKS5yZWR1Y2UoXG4gICAgKFxuICAgICAgYWNjdW06IHsgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT47IHByaXZhdGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+IH0sXG4gICAgICBbaywgdmFsXVxuICAgICkgPT4ge1xuICAgICAgY29uc3QgcHJpdmF0ZURhdGEgPSB2YWwuZmluZCgoZWwpID0+IGVsLmtleSA9PT0gXCJcIik7XG5cbiAgICAgIGlmIChwcml2YXRlRGF0YSB8fCBpc1ByaXZhdGUpIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbnMgPSBpc1ByaXZhdGVcbiAgICAgICAgICA/IG1vZGVsQ29sbGVjdGlvbnMuY29sbGVjdGlvbnNcbiAgICAgICAgICA6IHByaXZhdGVEYXRhLnByb3BzLmNvbGxlY3Rpb25zO1xuICAgICAgICBhY2N1bS5wcml2YXRlID0gYWNjdW0ucHJpdmF0ZSB8fCB7fTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNvbGxlY3Rpb24gb2YgY29sbGVjdGlvbnMpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYWNjdW0ucHJpdmF0ZVtjb2xsZWN0aW9uXSA9IGFjY3VtLnByaXZhdGVbY29sbGVjdGlvbl0gfHwge307XG4gICAgICAgICAgICBhY2N1bS5wcml2YXRlW2NvbGxlY3Rpb25dW2tdID0gbW9kZWxbayBhcyBrZXlvZiBNXTtcbiAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgU2VyaWFsaXphdGlvbkVycm9yKFxuICAgICAgICAgICAgICBgRmFpbGVkIHRvIHNlcmlhbGl6ZSBwcml2YXRlIHByb3BlcnR5ICR7a306ICR7ZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWNjdW0ubW9kZWwgPSBhY2N1bS5tb2RlbCB8fCB7fTtcbiAgICAgICAgYWNjdW0ubW9kZWxba10gPSAobW9kZWwgYXMgUmVjb3JkPHN0cmluZywgYW55Pilba107XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdW07XG4gICAgfSxcbiAgICB7fSBhcyB7IG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+OyBwcml2YXRlPzogUmVjb3JkPHN0cmluZywgYW55PiB9XG4gICk7XG4gIHJlc3VsdC5tb2RlbCA9IE1vZGVsLmJ1aWxkKHJlc3VsdC5tb2RlbCwgbW9kZWwuY29uc3RydWN0b3IubmFtZSk7XG4gIHJldHVybiByZXN1bHQgYXMgeyBtb2RlbDogTTsgcHJpdmF0ZT86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGFueT4+IH07XG59XG4iXX0=
|
|
@@ -1,114 +0,0 @@
|
|
|
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
|
|
@@ -1,60 +0,0 @@
|
|
|
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
|
-
};
|