@decaf-ts/for-fabric 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/LICENSE.md +159 -17
  2. package/README.md +26 -285
  3. package/dist/for-fabric.cjs +2 -6223
  4. package/dist/for-fabric.cjs.map +1 -0
  5. package/dist/for-fabric.js +2 -0
  6. package/dist/for-fabric.js.map +1 -0
  7. package/lib/bin/build-contracts.cjs +47 -0
  8. package/lib/bin/build-contracts.d.ts +1 -0
  9. package/lib/bin/build-contracts.js.map +1 -0
  10. package/lib/client/FabricClientAdapter.cjs +7 -7
  11. package/lib/client/FabricClientAdapter.js.map +1 -0
  12. package/lib/client/FabricClientDispatch.cjs +1 -1
  13. package/lib/client/FabricClientDispatch.js.map +1 -0
  14. package/lib/client/FabricClientRepository.cjs +1 -1
  15. package/lib/client/FabricClientRepository.js.map +1 -0
  16. package/lib/client/erc20/erc20ClientRepository.cjs +1 -1
  17. package/lib/client/erc20/erc20ClientRepository.js.map +1 -0
  18. package/lib/client/fabric-fs.cjs +1 -1
  19. package/lib/client/fabric-fs.js.map +1 -0
  20. package/lib/client/index.cjs +1 -1
  21. package/lib/client/index.js.map +1 -0
  22. package/lib/client/logging.cjs +1 -1
  23. package/lib/client/logging.js.map +1 -0
  24. package/lib/client/services/LoggedService.cjs +1 -1
  25. package/lib/client/services/LoggedService.js.map +1 -0
  26. package/lib/client/services/constants.cjs +1 -1
  27. package/lib/client/services/constants.js.map +1 -0
  28. package/lib/client/services/enrollementService.cjs +1 -1
  29. package/lib/client/services/enrollementService.js.map +1 -0
  30. package/lib/client/services/index.cjs +1 -1
  31. package/lib/client/services/index.js.map +1 -0
  32. package/lib/contracts/ContractAdapter.cjs +2 -2
  33. package/lib/contracts/ContractAdapter.js.map +1 -0
  34. package/lib/contracts/ContractContext.cjs +1 -1
  35. package/lib/contracts/ContractContext.js.map +1 -0
  36. package/lib/contracts/ContractPrivateDataAdapter.cjs +1 -1
  37. package/lib/contracts/ContractPrivateDataAdapter.js.map +1 -0
  38. package/lib/contracts/FabricConstruction.cjs +1 -1
  39. package/lib/contracts/FabricConstruction.js.map +1 -0
  40. package/lib/contracts/FabricContractRepository.cjs +7 -5
  41. package/lib/contracts/FabricContractRepository.d.ts +2 -2
  42. package/lib/contracts/FabricContractRepository.js.map +1 -0
  43. package/lib/contracts/FabricContractRepositoryObservableHandler.cjs +1 -1
  44. package/lib/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
  45. package/lib/contracts/FabricContractSequence.cjs +4 -3
  46. package/lib/contracts/FabricContractSequence.d.ts +2 -1
  47. package/lib/contracts/FabricContractSequence.js.map +1 -0
  48. package/lib/contracts/FabricContractStatement.cjs +3 -2
  49. package/lib/contracts/FabricContractStatement.d.ts +2 -1
  50. package/lib/contracts/FabricContractStatement.js.map +1 -0
  51. package/lib/contracts/PrivateSequence.cjs +1 -1
  52. package/lib/contracts/PrivateSequence.js.map +1 -0
  53. package/lib/contracts/crud/crud-contract.cjs +1 -1
  54. package/lib/contracts/crud/crud-contract.js.map +1 -0
  55. package/lib/contracts/crud/index.cjs +1 -1
  56. package/lib/contracts/crud/index.js.map +1 -0
  57. package/lib/contracts/crud/serialized-crud-contract.cjs +1 -1
  58. package/lib/contracts/crud/serialized-crud-contract.js.map +1 -0
  59. package/lib/contracts/erc20/erc20contract.cjs +1 -1
  60. package/lib/contracts/erc20/erc20contract.js.map +1 -0
  61. package/lib/contracts/erc20/index.cjs +1 -1
  62. package/lib/contracts/erc20/index.js.map +1 -0
  63. package/lib/contracts/erc20/models.cjs +1 -1
  64. package/lib/contracts/erc20/models.js.map +1 -0
  65. package/lib/contracts/index.cjs +1 -1
  66. package/lib/contracts/index.js.map +1 -0
  67. package/lib/contracts/logging.cjs +1 -1
  68. package/lib/contracts/logging.js.map +1 -0
  69. package/lib/contracts/private-data.cjs +1 -1
  70. package/lib/contracts/private-data.js.map +1 -0
  71. package/lib/contracts/types.cjs +1 -1
  72. package/lib/contracts/types.js.map +1 -0
  73. package/lib/esm/bin/build-contracts.d.ts +1 -0
  74. package/lib/esm/bin/build-contracts.js +42 -0
  75. package/lib/esm/bin/build-contracts.js.map +1 -0
  76. package/lib/esm/client/FabricClientAdapter.js +7 -7
  77. package/lib/esm/client/FabricClientAdapter.js.map +1 -0
  78. package/lib/esm/client/FabricClientDispatch.js +1 -1
  79. package/lib/esm/client/FabricClientDispatch.js.map +1 -0
  80. package/lib/esm/client/FabricClientRepository.js +1 -1
  81. package/lib/esm/client/FabricClientRepository.js.map +1 -0
  82. package/lib/esm/client/erc20/erc20ClientRepository.js +1 -1
  83. package/lib/esm/client/erc20/erc20ClientRepository.js.map +1 -0
  84. package/lib/esm/client/fabric-fs.js +1 -1
  85. package/lib/esm/client/fabric-fs.js.map +1 -0
  86. package/lib/esm/client/index.js +1 -1
  87. package/lib/esm/client/index.js.map +1 -0
  88. package/lib/esm/client/logging.js +1 -1
  89. package/lib/esm/client/logging.js.map +1 -0
  90. package/lib/esm/client/services/LoggedService.js +1 -1
  91. package/lib/esm/client/services/LoggedService.js.map +1 -0
  92. package/lib/esm/client/services/constants.js +1 -1
  93. package/lib/esm/client/services/constants.js.map +1 -0
  94. package/lib/esm/client/services/enrollementService.js +1 -1
  95. package/lib/esm/client/services/enrollementService.js.map +1 -0
  96. package/lib/esm/client/services/index.js +1 -1
  97. package/lib/esm/client/services/index.js.map +1 -0
  98. package/lib/esm/contracts/ContractAdapter.js +2 -2
  99. package/lib/esm/contracts/ContractAdapter.js.map +1 -0
  100. package/lib/esm/contracts/ContractContext.js +1 -1
  101. package/lib/esm/contracts/ContractContext.js.map +1 -0
  102. package/lib/esm/contracts/ContractPrivateDataAdapter.js +1 -1
  103. package/lib/esm/contracts/ContractPrivateDataAdapter.js.map +1 -0
  104. package/lib/esm/contracts/FabricConstruction.js +1 -1
  105. package/lib/esm/contracts/FabricConstruction.js.map +1 -0
  106. package/lib/esm/contracts/FabricContractRepository.d.ts +2 -2
  107. package/lib/esm/contracts/FabricContractRepository.js +4 -2
  108. package/lib/esm/contracts/FabricContractRepository.js.map +1 -0
  109. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js +1 -1
  110. package/lib/esm/contracts/FabricContractRepositoryObservableHandler.js.map +1 -0
  111. package/lib/esm/contracts/FabricContractSequence.d.ts +2 -1
  112. package/lib/esm/contracts/FabricContractSequence.js +3 -2
  113. package/lib/esm/contracts/FabricContractSequence.js.map +1 -0
  114. package/lib/esm/contracts/FabricContractStatement.d.ts +2 -1
  115. package/lib/esm/contracts/FabricContractStatement.js +3 -2
  116. package/lib/esm/contracts/FabricContractStatement.js.map +1 -0
  117. package/lib/esm/contracts/PrivateSequence.js +1 -1
  118. package/lib/esm/contracts/PrivateSequence.js.map +1 -0
  119. package/lib/esm/contracts/crud/crud-contract.js +1 -1
  120. package/lib/esm/contracts/crud/crud-contract.js.map +1 -0
  121. package/lib/esm/contracts/crud/index.js +1 -1
  122. package/lib/esm/contracts/crud/index.js.map +1 -0
  123. package/lib/esm/contracts/crud/serialized-crud-contract.js +1 -1
  124. package/lib/esm/contracts/crud/serialized-crud-contract.js.map +1 -0
  125. package/lib/esm/contracts/erc20/erc20contract.js +1 -1
  126. package/lib/esm/contracts/erc20/erc20contract.js.map +1 -0
  127. package/lib/esm/contracts/erc20/index.js +1 -1
  128. package/lib/esm/contracts/erc20/index.js.map +1 -0
  129. package/lib/esm/contracts/erc20/models.js +1 -1
  130. package/lib/esm/contracts/erc20/models.js.map +1 -0
  131. package/lib/esm/contracts/index.js +1 -1
  132. package/lib/esm/contracts/index.js.map +1 -0
  133. package/lib/esm/contracts/logging.js +1 -1
  134. package/lib/esm/contracts/logging.js.map +1 -0
  135. package/lib/esm/contracts/private-data.js +2 -2
  136. package/lib/esm/contracts/private-data.js.map +1 -0
  137. package/lib/esm/contracts/types.js +1 -1
  138. package/lib/esm/contracts/types.js.map +1 -0
  139. package/lib/esm/index.d.ts +1 -0
  140. package/lib/esm/index.js +2 -1
  141. package/lib/esm/index.js.map +1 -0
  142. package/lib/esm/shared/ClientSerializer.js +1 -1
  143. package/lib/esm/shared/ClientSerializer.js.map +1 -0
  144. package/lib/esm/shared/DeterministicSerializer.js +1 -1
  145. package/lib/esm/shared/DeterministicSerializer.js.map +1 -0
  146. package/lib/esm/shared/SimpleDeterministicSerializer.js +1 -1
  147. package/lib/esm/shared/SimpleDeterministicSerializer.js.map +1 -0
  148. package/lib/esm/shared/constants.d.ts +0 -7
  149. package/lib/esm/shared/constants.js +1 -8
  150. package/lib/esm/shared/constants.js.map +1 -0
  151. package/lib/esm/shared/crypto.js +2 -2
  152. package/lib/esm/shared/crypto.js.map +1 -0
  153. package/lib/esm/shared/decorators.js +1 -1
  154. package/lib/esm/shared/decorators.js.map +1 -0
  155. package/lib/esm/shared/erc20/erc20-constants.js +1 -1
  156. package/lib/esm/shared/erc20/erc20-constants.js.map +1 -0
  157. package/lib/esm/shared/errors.js +1 -1
  158. package/lib/esm/shared/errors.js.map +1 -0
  159. package/lib/esm/shared/events.d.ts +2 -0
  160. package/lib/esm/shared/events.js +2 -2
  161. package/lib/esm/shared/events.js.map +1 -0
  162. package/lib/esm/shared/fabric-types.js +1 -1
  163. package/lib/esm/shared/fabric-types.js.map +1 -0
  164. package/lib/esm/shared/index.js +1 -1
  165. package/lib/esm/shared/index.js.map +1 -0
  166. package/lib/esm/shared/interfaces/Checkable.js +1 -1
  167. package/lib/esm/shared/interfaces/Checkable.js.map +1 -0
  168. package/lib/esm/shared/math.js +1 -1
  169. package/lib/esm/shared/math.js.map +1 -0
  170. package/lib/esm/shared/model/Identity.js +1 -1
  171. package/lib/esm/shared/model/Identity.js.map +1 -0
  172. package/lib/esm/shared/model/IdentityCredentials.js +1 -1
  173. package/lib/esm/shared/model/IdentityCredentials.js.map +1 -0
  174. package/lib/esm/shared/model/index.js +1 -1
  175. package/lib/esm/shared/model/index.js.map +1 -0
  176. package/lib/esm/shared/types.js +1 -1
  177. package/lib/esm/shared/types.js.map +1 -0
  178. package/lib/esm/shared/utils.js +1 -1
  179. package/lib/esm/shared/utils.js.map +1 -0
  180. package/lib/esm/version.d.ts +2 -0
  181. package/lib/esm/version.js +5 -0
  182. package/lib/esm/version.js.map +1 -0
  183. package/lib/index.cjs +2 -1
  184. package/lib/index.d.ts +1 -0
  185. package/lib/index.js.map +1 -0
  186. package/lib/shared/ClientSerializer.cjs +1 -1
  187. package/lib/shared/ClientSerializer.js.map +1 -0
  188. package/lib/shared/DeterministicSerializer.cjs +1 -1
  189. package/lib/shared/DeterministicSerializer.js.map +1 -0
  190. package/lib/shared/SimpleDeterministicSerializer.cjs +1 -1
  191. package/lib/shared/SimpleDeterministicSerializer.js.map +1 -0
  192. package/lib/shared/constants.cjs +2 -9
  193. package/lib/shared/constants.d.ts +0 -7
  194. package/lib/shared/constants.js.map +1 -0
  195. package/lib/shared/crypto.cjs +3 -3
  196. package/lib/shared/crypto.js.map +1 -0
  197. package/lib/shared/decorators.cjs +1 -1
  198. package/lib/shared/decorators.js.map +1 -0
  199. package/lib/shared/erc20/erc20-constants.cjs +1 -1
  200. package/lib/shared/erc20/erc20-constants.js.map +1 -0
  201. package/lib/shared/errors.cjs +1 -1
  202. package/lib/shared/errors.js.map +1 -0
  203. package/lib/shared/events.cjs +2 -2
  204. package/lib/shared/events.d.ts +2 -0
  205. package/lib/shared/events.js.map +1 -0
  206. package/lib/shared/fabric-types.cjs +1 -1
  207. package/lib/shared/fabric-types.js.map +1 -0
  208. package/lib/shared/index.cjs +1 -1
  209. package/lib/shared/index.js.map +1 -0
  210. package/lib/shared/interfaces/Checkable.cjs +1 -1
  211. package/lib/shared/interfaces/Checkable.js.map +1 -0
  212. package/lib/shared/math.cjs +1 -1
  213. package/lib/shared/math.js.map +1 -0
  214. package/lib/shared/model/Identity.cjs +1 -1
  215. package/lib/shared/model/Identity.js.map +1 -0
  216. package/lib/shared/model/IdentityCredentials.cjs +1 -1
  217. package/lib/shared/model/IdentityCredentials.js.map +1 -0
  218. package/lib/shared/model/index.cjs +1 -1
  219. package/lib/shared/model/index.js.map +1 -0
  220. package/lib/shared/types.cjs +1 -1
  221. package/lib/shared/types.js.map +1 -0
  222. package/lib/shared/utils.cjs +1 -1
  223. package/lib/shared/utils.js.map +1 -0
  224. package/lib/version.cjs +8 -0
  225. package/lib/version.d.ts +2 -0
  226. package/lib/version.js.map +1 -0
  227. package/package.json +43 -65
  228. package/dist/for-fabric.esm.cjs +0 -6180
  229. package/lib/esm/shared/model/utils.d.ts +0 -60
  230. package/lib/esm/shared/model/utils.js +0 -108
  231. package/lib/shared/model/utils.cjs +0 -114
  232. 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
- };