@expo/entity 0.41.0 → 0.42.0

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 (430) hide show
  1. package/build/AuthorizationResultBasedEntityAssociationLoader.d.ts +16 -16
  2. package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -1
  3. package/build/AuthorizationResultBasedEntityLoader.d.ts +39 -67
  4. package/build/AuthorizationResultBasedEntityLoader.js +85 -62
  5. package/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
  6. package/build/AuthorizationResultBasedEntityMutator.d.ts +16 -16
  7. package/build/AuthorizationResultBasedEntityMutator.js.map +1 -1
  8. package/build/ComposedEntityCacheAdapter.d.ts +7 -6
  9. package/build/ComposedEntityCacheAdapter.js +28 -28
  10. package/build/ComposedEntityCacheAdapter.js.map +1 -1
  11. package/build/ComposedSecondaryEntityCache.d.ts +1 -1
  12. package/build/ComposedSecondaryEntityCache.js.map +1 -1
  13. package/build/EnforcingEntityAssociationLoader.d.ts +15 -15
  14. package/build/EnforcingEntityAssociationLoader.js.map +1 -1
  15. package/build/EnforcingEntityCreator.d.ts +2 -2
  16. package/build/EnforcingEntityDeleter.d.ts +2 -2
  17. package/build/EnforcingEntityLoader.d.ts +104 -18
  18. package/build/EnforcingEntityLoader.js +113 -12
  19. package/build/EnforcingEntityLoader.js.map +1 -1
  20. package/build/EnforcingEntityUpdater.d.ts +2 -2
  21. package/build/Entity.d.ts +10 -10
  22. package/build/Entity.js.map +1 -1
  23. package/build/EntityAssociationLoader.d.ts +3 -3
  24. package/build/EntityCompanion.d.ts +5 -5
  25. package/build/EntityCompanion.js.map +1 -1
  26. package/build/EntityCompanionProvider.d.ts +6 -6
  27. package/build/EntityCompanionProvider.js.map +1 -1
  28. package/build/EntityConfiguration.d.ts +46 -5
  29. package/build/EntityConfiguration.js +39 -1
  30. package/build/EntityConfiguration.js.map +1 -1
  31. package/build/EntityCreator.d.ts +4 -4
  32. package/build/EntityDatabaseAdapter.d.ts +15 -14
  33. package/build/EntityDatabaseAdapter.js +20 -12
  34. package/build/EntityDatabaseAdapter.js.map +1 -1
  35. package/build/EntityDeleter.d.ts +4 -4
  36. package/build/EntityFieldDefinition.d.ts +20 -10
  37. package/build/EntityFieldDefinition.js +3 -1
  38. package/build/EntityFieldDefinition.js.map +1 -1
  39. package/build/EntityFields.d.ts +14 -12
  40. package/build/EntityFields.js.map +1 -1
  41. package/build/EntityLoader.d.ts +5 -5
  42. package/build/EntityLoaderFactory.d.ts +3 -3
  43. package/build/EntityLoaderFactory.js.map +1 -1
  44. package/build/EntityLoaderUtils.d.ts +2 -2
  45. package/build/EntityLoaderUtils.js +27 -1
  46. package/build/EntityLoaderUtils.js.map +1 -1
  47. package/build/EntityMutationInfo.d.ts +2 -2
  48. package/build/EntityMutationTriggerConfiguration.d.ts +14 -14
  49. package/build/EntityMutationTriggerConfiguration.js.map +1 -1
  50. package/build/EntityMutationValidator.d.ts +2 -2
  51. package/build/EntityMutatorFactory.d.ts +5 -5
  52. package/build/EntityMutatorFactory.js.map +1 -1
  53. package/build/EntityPrivacyPolicy.d.ts +14 -14
  54. package/build/EntityPrivacyPolicy.js.map +1 -1
  55. package/build/EntitySecondaryCacheLoader.d.ts +4 -4
  56. package/build/EntityUpdater.d.ts +4 -4
  57. package/build/GenericEntityCacheAdapter.d.ts +7 -6
  58. package/build/GenericEntityCacheAdapter.js +13 -14
  59. package/build/GenericEntityCacheAdapter.js.map +1 -1
  60. package/build/GenericSecondaryEntityCache.d.ts +3 -3
  61. package/build/GenericSecondaryEntityCache.js.map +1 -1
  62. package/build/IEntityCacheAdapter.d.ts +17 -16
  63. package/build/IEntityCacheAdapterProvider.d.ts +1 -1
  64. package/build/IEntityDatabaseAdapterProvider.d.ts +1 -1
  65. package/build/IEntityGenericCacher.d.ts +15 -5
  66. package/build/ReadonlyEntity.d.ts +8 -8
  67. package/build/ReadonlyEntity.js.map +1 -1
  68. package/build/ViewerContext.d.ts +1 -1
  69. package/build/ViewerScopedEntityCompanion.d.ts +5 -5
  70. package/build/ViewerScopedEntityCompanionProvider.d.ts +1 -1
  71. package/build/ViewerScopedEntityLoaderFactory.d.ts +3 -3
  72. package/build/ViewerScopedEntityMutatorFactory.d.ts +5 -5
  73. package/build/entityUtils.d.ts +1 -1
  74. package/build/entityUtils.js.map +1 -1
  75. package/build/errors/EntityInvalidFieldValueError.d.ts +2 -2
  76. package/build/errors/EntityNotAuthorizedError.d.ts +1 -1
  77. package/build/errors/EntityNotFoundError.d.ts +2 -2
  78. package/build/index.d.ts +7 -7
  79. package/build/index.js +8 -13
  80. package/build/index.js.map +1 -1
  81. package/build/internal/CompositeFieldHolder.d.ts +48 -0
  82. package/build/internal/CompositeFieldHolder.js +116 -0
  83. package/build/internal/CompositeFieldHolder.js.map +1 -0
  84. package/build/internal/CompositeFieldValueMap.d.ts +15 -0
  85. package/build/internal/CompositeFieldValueMap.js +51 -0
  86. package/build/internal/CompositeFieldValueMap.js.map +1 -0
  87. package/build/internal/EntityDataManager.d.ts +16 -16
  88. package/build/internal/EntityDataManager.js +42 -45
  89. package/build/internal/EntityDataManager.js.map +1 -1
  90. package/build/internal/EntityFieldTransformationUtils.d.ts +5 -5
  91. package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
  92. package/build/internal/EntityLoadInterfaces.d.ts +104 -0
  93. package/build/internal/EntityLoadInterfaces.js +25 -0
  94. package/build/internal/EntityLoadInterfaces.js.map +1 -0
  95. package/build/internal/EntityTableDataCoordinator.d.ts +6 -6
  96. package/build/internal/EntityTableDataCoordinator.js.map +1 -1
  97. package/build/internal/ReadThroughEntityCache.d.ts +17 -16
  98. package/build/internal/ReadThroughEntityCache.js +36 -36
  99. package/build/internal/ReadThroughEntityCache.js.map +1 -1
  100. package/build/internal/SingleFieldHolder.d.ts +34 -0
  101. package/build/internal/SingleFieldHolder.js +90 -0
  102. package/build/internal/SingleFieldHolder.js.map +1 -0
  103. package/build/metrics/EntityMetricsUtils.d.ts +2 -1
  104. package/build/metrics/EntityMetricsUtils.js.map +1 -1
  105. package/build/metrics/IEntityMetricsAdapter.d.ts +5 -0
  106. package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
  107. package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +2 -2
  108. package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
  109. package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +2 -2
  110. package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
  111. package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +2 -2
  112. package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
  113. package/build/rules/PrivacyPolicyRule.d.ts +2 -2
  114. package/build/tsconfig.build.tsbuildinfo +1 -0
  115. package/build/utils/EntityPrivacyUtils.d.ts +4 -4
  116. package/build/utils/EntityPrivacyUtils.js.map +1 -1
  117. package/build/utils/collections/SerializableKeyMap.d.ts +27 -0
  118. package/build/utils/collections/SerializableKeyMap.js +60 -0
  119. package/build/utils/collections/SerializableKeyMap.js.map +1 -0
  120. package/build/utils/collections/maps.js +1 -2
  121. package/build/utils/collections/maps.js.map +1 -1
  122. package/build/utils/collections/sets.d.ts +1 -0
  123. package/build/utils/collections/sets.js +7 -0
  124. package/build/utils/collections/sets.js.map +1 -0
  125. package/build/utils/mergeEntityMutationTriggerConfigurations.d.ts +1 -1
  126. package/package.json +8 -5
  127. package/src/AuthorizationResultBasedEntityAssociationLoader.ts +56 -49
  128. package/src/AuthorizationResultBasedEntityLoader.ts +194 -81
  129. package/src/AuthorizationResultBasedEntityMutator.ts +71 -45
  130. package/src/ComposedEntityCacheAdapter.ts +55 -46
  131. package/src/ComposedSecondaryEntityCache.ts +5 -2
  132. package/src/EnforcingEntityAssociationLoader.ts +52 -44
  133. package/src/EnforcingEntityCreator.ts +5 -5
  134. package/src/EnforcingEntityDeleter.ts +5 -5
  135. package/src/EnforcingEntityLoader.ts +158 -21
  136. package/src/EnforcingEntityUpdater.ts +5 -5
  137. package/src/Entity.ts +39 -39
  138. package/src/EntityAssociationLoader.ts +6 -6
  139. package/src/EntityCompanion.ts +11 -11
  140. package/src/EntityCompanionProvider.ts +21 -18
  141. package/src/EntityConfiguration.ts +123 -9
  142. package/src/EntityCreator.ts +7 -7
  143. package/src/EntityDatabaseAdapter.ts +51 -28
  144. package/src/EntityDeleter.ts +7 -7
  145. package/src/EntityFieldDefinition.ts +32 -12
  146. package/src/EntityFields.ts +49 -12
  147. package/src/EntityLoader.ts +8 -8
  148. package/src/EntityLoaderFactory.ts +8 -8
  149. package/src/EntityLoaderUtils.ts +39 -10
  150. package/src/EntityMutationInfo.ts +6 -6
  151. package/src/EntityMutationTriggerConfiguration.ts +68 -20
  152. package/src/EntityMutationValidator.ts +4 -4
  153. package/src/EntityMutatorFactory.ts +13 -13
  154. package/src/EntityPrivacyPolicy.ts +50 -26
  155. package/src/EntitySecondaryCacheLoader.ts +6 -6
  156. package/src/EntityUpdater.ts +7 -7
  157. package/src/GenericEntityCacheAdapter.ts +39 -28
  158. package/src/GenericSecondaryEntityCache.ts +6 -3
  159. package/src/IEntityCacheAdapter.ts +45 -25
  160. package/src/IEntityCacheAdapterProvider.ts +3 -3
  161. package/src/IEntityDatabaseAdapterProvider.ts +3 -3
  162. package/src/IEntityGenericCacher.ts +33 -5
  163. package/src/ReadonlyEntity.ts +24 -24
  164. package/src/ViewerContext.ts +5 -5
  165. package/src/ViewerScopedEntityCompanion.ts +7 -7
  166. package/src/ViewerScopedEntityCompanionProvider.ts +6 -6
  167. package/src/ViewerScopedEntityLoaderFactory.ts +7 -7
  168. package/src/ViewerScopedEntityMutatorFactory.ts +8 -8
  169. package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +4 -4
  170. package/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.ts +14 -13
  171. package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +367 -69
  172. package/src/__tests__/ComposedCacheAdapter-test.ts +235 -117
  173. package/src/__tests__/EnforcingEntityLoader-test.ts +135 -1
  174. package/src/__tests__/Entity-test.ts +2 -2
  175. package/src/__tests__/EntityAssociationLoader-test.ts +2 -2
  176. package/src/__tests__/EntityCommonUseCases-test.ts +11 -11
  177. package/src/__tests__/EntityCompanion-test.ts +4 -4
  178. package/src/__tests__/EntityCompanionProvider-test.ts +9 -8
  179. package/src/__tests__/EntityConfiguration-test.ts +85 -6
  180. package/src/__tests__/EntityDatabaseAdapter-test.ts +113 -17
  181. package/src/__tests__/EntityEdges-test.ts +97 -72
  182. package/src/__tests__/EntityFields-test.ts +2 -2
  183. package/src/__tests__/EntityLoader-test.ts +2 -2
  184. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +11 -11
  185. package/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.ts +73 -0
  186. package/src/__tests__/EntityMutator-test.ts +74 -46
  187. package/src/__tests__/EntityPrivacyPolicy-test.ts +51 -74
  188. package/src/__tests__/EntityQueryContext-test.ts +1 -1
  189. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +3 -3
  190. package/src/__tests__/EntitySelfReferentialEdges-test.ts +64 -39
  191. package/src/__tests__/GenericEntityCacheAdapter-test.ts +83 -28
  192. package/src/__tests__/ReadonlyEntity-test.ts +3 -3
  193. package/src/__tests__/ViewerContext-test.ts +1 -1
  194. package/src/__tests__/ViewerScopedEntityCompanion-test.ts +5 -2
  195. package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +1 -1
  196. package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +12 -3
  197. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +12 -12
  198. package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +12 -12
  199. package/src/entityUtils.ts +4 -1
  200. package/src/errors/EntityInvalidFieldValueError.ts +5 -5
  201. package/src/errors/EntityNotAuthorizedError.ts +3 -3
  202. package/src/errors/EntityNotFoundError.ts +5 -5
  203. package/src/index.ts +7 -7
  204. package/src/internal/CompositeFieldHolder.ts +218 -0
  205. package/src/internal/CompositeFieldValueMap.ts +78 -0
  206. package/src/internal/EntityDataManager.ts +107 -96
  207. package/src/internal/EntityFieldTransformationUtils.ts +33 -14
  208. package/src/internal/EntityLoadInterfaces.ts +143 -0
  209. package/src/internal/EntityTableDataCoordinator.ts +8 -5
  210. package/src/internal/ReadThroughEntityCache.ts +63 -50
  211. package/src/internal/SingleFieldHolder.ts +131 -0
  212. package/src/internal/__tests__/CompositeFieldHolder-test.ts +25 -0
  213. package/src/internal/__tests__/CompositeFieldValueMap-test.ts +43 -0
  214. package/src/internal/__tests__/EntityDataManager-test.ts +308 -91
  215. package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +3 -2
  216. package/src/internal/__tests__/ReadThroughEntityCache-test.ts +315 -107
  217. package/src/metrics/EntityMetricsUtils.ts +7 -2
  218. package/src/metrics/IEntityMetricsAdapter.ts +6 -0
  219. package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +5 -5
  220. package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +5 -5
  221. package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +5 -5
  222. package/src/rules/PrivacyPolicyRule.ts +4 -4
  223. package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +1 -1
  224. package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +1 -1
  225. package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +1 -1
  226. package/src/utils/EntityPrivacyUtils.ts +72 -30
  227. package/src/utils/{testing → __testfixtures__}/PrivacyPolicyRuleTestUtils.ts +26 -26
  228. package/src/{testfixtures → utils/__testfixtures__}/SimpleTestEntity.ts +16 -15
  229. package/src/utils/__testfixtures__/StubCacheAdapter.ts +164 -0
  230. package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapter.ts +19 -12
  231. package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapterProvider.ts +4 -4
  232. package/src/utils/__testfixtures__/TSMockitoExtensions.ts +69 -0
  233. package/src/{testfixtures → utils/__testfixtures__}/TestEntity.ts +21 -15
  234. package/src/{testfixtures → utils/__testfixtures__}/TestEntity2.ts +16 -15
  235. package/src/{testfixtures → utils/__testfixtures__}/TestEntityWithMutationTriggers.ts +23 -22
  236. package/src/{testfixtures → utils/__testfixtures__}/TestViewerContext.ts +1 -1
  237. package/src/utils/{testing → __testfixtures__}/describeFieldTestCase.ts +1 -1
  238. package/src/utils/__tests__/EntityPrivacyUtils-test.ts +62 -66
  239. package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +29 -25
  240. package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +1 -1
  241. package/src/utils/collections/SerializableKeyMap.ts +84 -0
  242. package/src/utils/collections/__tests__/SerializableKeyMap-test.ts +119 -0
  243. package/src/utils/collections/__tests__/sets-test.ts +17 -0
  244. package/src/utils/collections/maps.ts +7 -8
  245. package/src/utils/collections/sets.ts +3 -0
  246. package/src/utils/mergeEntityMutationTriggerConfigurations.ts +5 -5
  247. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +0 -1
  248. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +0 -242
  249. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +0 -1
  250. package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.d.ts +0 -26
  251. package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js +0 -110
  252. package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +0 -1
  253. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +0 -1
  254. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js +0 -401
  255. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +0 -1
  256. package/build/__tests__/ComposedCacheAdapter-test.d.ts +0 -1
  257. package/build/__tests__/ComposedCacheAdapter-test.js +0 -229
  258. package/build/__tests__/ComposedCacheAdapter-test.js.map +0 -1
  259. package/build/__tests__/ComposedSecondaryEntityCache-test.d.ts +0 -1
  260. package/build/__tests__/ComposedSecondaryEntityCache-test.js +0 -66
  261. package/build/__tests__/ComposedSecondaryEntityCache-test.js.map +0 -1
  262. package/build/__tests__/EnforcingEntityAssociationLoader-test.d.ts +0 -1
  263. package/build/__tests__/EnforcingEntityAssociationLoader-test.js +0 -115
  264. package/build/__tests__/EnforcingEntityAssociationLoader-test.js.map +0 -1
  265. package/build/__tests__/EnforcingEntityLoader-test.d.ts +0 -1
  266. package/build/__tests__/EnforcingEntityLoader-test.js +0 -253
  267. package/build/__tests__/EnforcingEntityLoader-test.js.map +0 -1
  268. package/build/__tests__/Entity-test.d.ts +0 -1
  269. package/build/__tests__/Entity-test.js +0 -94
  270. package/build/__tests__/Entity-test.js.map +0 -1
  271. package/build/__tests__/EntityAssociationLoader-test.d.ts +0 -1
  272. package/build/__tests__/EntityAssociationLoader-test.js +0 -30
  273. package/build/__tests__/EntityAssociationLoader-test.js.map +0 -1
  274. package/build/__tests__/EntityCommonUseCases-test.d.ts +0 -1
  275. package/build/__tests__/EntityCommonUseCases-test.js +0 -146
  276. package/build/__tests__/EntityCommonUseCases-test.js.map +0 -1
  277. package/build/__tests__/EntityCompanion-test.d.ts +0 -1
  278. package/build/__tests__/EntityCompanion-test.js +0 -77
  279. package/build/__tests__/EntityCompanion-test.js.map +0 -1
  280. package/build/__tests__/EntityCompanionProvider-test.d.ts +0 -1
  281. package/build/__tests__/EntityCompanionProvider-test.js +0 -54
  282. package/build/__tests__/EntityCompanionProvider-test.js.map +0 -1
  283. package/build/__tests__/EntityConfiguration-test.d.ts +0 -1
  284. package/build/__tests__/EntityConfiguration-test.js +0 -103
  285. package/build/__tests__/EntityConfiguration-test.js.map +0 -1
  286. package/build/__tests__/EntityDatabaseAdapter-test.d.ts +0 -1
  287. package/build/__tests__/EntityDatabaseAdapter-test.js +0 -146
  288. package/build/__tests__/EntityDatabaseAdapter-test.js.map +0 -1
  289. package/build/__tests__/EntityEdges-test.d.ts +0 -1
  290. package/build/__tests__/EntityEdges-test.js +0 -723
  291. package/build/__tests__/EntityEdges-test.js.map +0 -1
  292. package/build/__tests__/EntityFields-test.d.ts +0 -1
  293. package/build/__tests__/EntityFields-test.js +0 -63
  294. package/build/__tests__/EntityFields-test.js.map +0 -1
  295. package/build/__tests__/EntityLoader-test.d.ts +0 -1
  296. package/build/__tests__/EntityLoader-test.js +0 -36
  297. package/build/__tests__/EntityLoader-test.js.map +0 -1
  298. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +0 -1
  299. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +0 -73
  300. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +0 -1
  301. package/build/__tests__/EntityMutator-test.d.ts +0 -1
  302. package/build/__tests__/EntityMutator-test.js +0 -741
  303. package/build/__tests__/EntityMutator-test.js.map +0 -1
  304. package/build/__tests__/EntityPrivacyPolicy-test.d.ts +0 -1
  305. package/build/__tests__/EntityPrivacyPolicy-test.js +0 -463
  306. package/build/__tests__/EntityPrivacyPolicy-test.js.map +0 -1
  307. package/build/__tests__/EntityQueryContext-test.d.ts +0 -1
  308. package/build/__tests__/EntityQueryContext-test.js +0 -116
  309. package/build/__tests__/EntityQueryContext-test.js.map +0 -1
  310. package/build/__tests__/EntitySecondaryCacheLoader-test.d.ts +0 -1
  311. package/build/__tests__/EntitySecondaryCacheLoader-test.js +0 -60
  312. package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +0 -1
  313. package/build/__tests__/EntitySelfReferentialEdges-test.d.ts +0 -1
  314. package/build/__tests__/EntitySelfReferentialEdges-test.js +0 -201
  315. package/build/__tests__/EntitySelfReferentialEdges-test.js.map +0 -1
  316. package/build/__tests__/GenericEntityCacheAdapter-test.d.ts +0 -1
  317. package/build/__tests__/GenericEntityCacheAdapter-test.js +0 -80
  318. package/build/__tests__/GenericEntityCacheAdapter-test.js.map +0 -1
  319. package/build/__tests__/ReadonlyEntity-test.d.ts +0 -1
  320. package/build/__tests__/ReadonlyEntity-test.js +0 -211
  321. package/build/__tests__/ReadonlyEntity-test.js.map +0 -1
  322. package/build/__tests__/ViewerContext-test.d.ts +0 -1
  323. package/build/__tests__/ViewerContext-test.js +0 -30
  324. package/build/__tests__/ViewerContext-test.js.map +0 -1
  325. package/build/__tests__/ViewerScopedEntityCompanion-test.d.ts +0 -1
  326. package/build/__tests__/ViewerScopedEntityCompanion-test.js +0 -20
  327. package/build/__tests__/ViewerScopedEntityCompanion-test.js.map +0 -1
  328. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.d.ts +0 -1
  329. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js +0 -20
  330. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +0 -1
  331. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.d.ts +0 -1
  332. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js +0 -23
  333. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +0 -1
  334. package/build/__tests__/ViewerScopedEntityMutatorFactory-test.d.ts +0 -1
  335. package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js +0 -22
  336. package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +0 -1
  337. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.d.ts +0 -1
  338. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +0 -123
  339. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +0 -1
  340. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.d.ts +0 -1
  341. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +0 -121
  342. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +0 -1
  343. package/build/__tests__/entityUtils-test.d.ts +0 -1
  344. package/build/__tests__/entityUtils-test.js +0 -87
  345. package/build/__tests__/entityUtils-test.js.map +0 -1
  346. package/build/internal/__tests__/EntityDataManager-test.d.ts +0 -1
  347. package/build/internal/__tests__/EntityDataManager-test.js +0 -373
  348. package/build/internal/__tests__/EntityDataManager-test.js.map +0 -1
  349. package/build/internal/__tests__/EntityFieldTransformationUtils-test.d.ts +0 -1
  350. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +0 -136
  351. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +0 -1
  352. package/build/internal/__tests__/ReadThroughEntityCache-test.d.ts +0 -1
  353. package/build/internal/__tests__/ReadThroughEntityCache-test.js +0 -206
  354. package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +0 -1
  355. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.d.ts +0 -1
  356. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +0 -21
  357. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +0 -1
  358. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.d.ts +0 -1
  359. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +0 -21
  360. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +0 -1
  361. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.d.ts +0 -1
  362. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +0 -21
  363. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +0 -1
  364. package/build/testfixtures/DateIDTestEntity.d.ts +0 -19
  365. package/build/testfixtures/DateIDTestEntity.js +0 -48
  366. package/build/testfixtures/DateIDTestEntity.js.map +0 -1
  367. package/build/testfixtures/SimpleTestEntity.d.ts +0 -20
  368. package/build/testfixtures/SimpleTestEntity.js +0 -48
  369. package/build/testfixtures/SimpleTestEntity.js.map +0 -1
  370. package/build/testfixtures/TestEntity.d.ts +0 -30
  371. package/build/testfixtures/TestEntity.js +0 -93
  372. package/build/testfixtures/TestEntity.js.map +0 -1
  373. package/build/testfixtures/TestEntity2.d.ts +0 -20
  374. package/build/testfixtures/TestEntity2.js +0 -51
  375. package/build/testfixtures/TestEntity2.js.map +0 -1
  376. package/build/testfixtures/TestEntityNumberKey.d.ts +0 -19
  377. package/build/testfixtures/TestEntityNumberKey.js +0 -48
  378. package/build/testfixtures/TestEntityNumberKey.js.map +0 -1
  379. package/build/testfixtures/TestEntityWithMutationTriggers.d.ts +0 -36
  380. package/build/testfixtures/TestEntityWithMutationTriggers.js +0 -82
  381. package/build/testfixtures/TestEntityWithMutationTriggers.js.map +0 -1
  382. package/build/testfixtures/TestViewerContext.d.ts +0 -3
  383. package/build/testfixtures/TestViewerContext.js +0 -10
  384. package/build/testfixtures/TestViewerContext.js.map +0 -1
  385. package/build/utils/__tests__/EntityPrivacyUtils-test.d.ts +0 -1
  386. package/build/utils/__tests__/EntityPrivacyUtils-test.js +0 -486
  387. package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +0 -1
  388. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +0 -1
  389. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +0 -178
  390. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +0 -1
  391. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +0 -1
  392. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +0 -26
  393. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +0 -1
  394. package/build/utils/collections/__tests__/maps-test.d.ts +0 -1
  395. package/build/utils/collections/__tests__/maps-test.js +0 -120
  396. package/build/utils/collections/__tests__/maps-test.js.map +0 -1
  397. package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +0 -28
  398. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js +0 -52
  399. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +0 -1
  400. package/build/utils/testing/StubCacheAdapter.d.ts +0 -27
  401. package/build/utils/testing/StubCacheAdapter.js +0 -86
  402. package/build/utils/testing/StubCacheAdapter.js.map +0 -1
  403. package/build/utils/testing/StubDatabaseAdapter.d.ts +0 -25
  404. package/build/utils/testing/StubDatabaseAdapter.js +0 -191
  405. package/build/utils/testing/StubDatabaseAdapter.js.map +0 -1
  406. package/build/utils/testing/StubDatabaseAdapterProvider.d.ts +0 -7
  407. package/build/utils/testing/StubDatabaseAdapterProvider.js +0 -14
  408. package/build/utils/testing/StubDatabaseAdapterProvider.js.map +0 -1
  409. package/build/utils/testing/StubQueryContextProvider.d.ts +0 -7
  410. package/build/utils/testing/StubQueryContextProvider.js +0 -19
  411. package/build/utils/testing/StubQueryContextProvider.js.map +0 -1
  412. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.d.ts +0 -1
  413. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js +0 -42
  414. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js.map +0 -1
  415. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.d.ts +0 -1
  416. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +0 -402
  417. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +0 -1
  418. package/build/utils/testing/createUnitTestEntityCompanionProvider.d.ts +0 -7
  419. package/build/utils/testing/createUnitTestEntityCompanionProvider.js +0 -36
  420. package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +0 -1
  421. package/build/utils/testing/describeFieldTestCase.d.ts +0 -2
  422. package/build/utils/testing/describeFieldTestCase.js +0 -18
  423. package/build/utils/testing/describeFieldTestCase.js.map +0 -1
  424. package/src/testfixtures/DateIDTestEntity.ts +0 -59
  425. package/src/testfixtures/TestEntityNumberKey.ts +0 -59
  426. package/src/utils/testing/StubCacheAdapter.ts +0 -122
  427. package/src/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.ts +0 -42
  428. package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +0 -548
  429. /package/src/utils/{testing → __testfixtures__}/StubQueryContextProvider.ts +0 -0
  430. /package/src/utils/{testing → __testfixtures__}/createUnitTestEntityCompanionProvider.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"GenericSecondaryEntityCache.js","sourceRoot":"","sources":["../src/GenericSecondaryEntityCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GenericSecondaryEntityCache.js","sourceRoot":"","sources":["../src/GenericSecondaryEntityCache.ts"],"names":[],"mappings":"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"}
@@ -1,33 +1,34 @@
1
+ import { IEntityLoadKey, IEntityLoadValue } from './internal/EntityLoadInterfaces';
1
2
  import { CacheLoadResult } from './internal/ReadThroughEntityCache';
2
3
  /**
3
4
  * A cache adapter is an interface by which objects can be
4
5
  * cached, fetched from cache, and removed from cache (invalidated).
5
6
  */
6
- export default interface IEntityCacheAdapter<TFields> {
7
+ export default interface IEntityCacheAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields> {
7
8
  /**
8
9
  * Load many objects from cache.
9
- * @param fieldName - object field being queried
10
- * @param fieldValues - fieldName field values being queried
11
- * @returns map from all field values to a CacheLoadResult for each input value
10
+ * @param key - load key to load
11
+ * @param values - load values to load for the key
12
+ * @returns map from all load values to a CacheLoadResult for that value
12
13
  */
13
- loadManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult<TFields>>>;
14
+ loadManyAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, values: readonly TLoadValue[]): Promise<ReadonlyMap<TLoadValue, CacheLoadResult<TFields>>>;
14
15
  /**
15
16
  * Cache many objects fetched from the DB.
16
- * @param fieldName - object field being queried
17
- * @param objectMap - map from field value to object to cache
17
+ * @param key - load key to cache
18
+ * @param objectMap - map from load value to object to cache for the key
18
19
  */
19
- cacheManyAsync<N extends keyof TFields>(fieldName: N, objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields>>): Promise<void>;
20
+ cacheManyAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, objectMap: ReadonlyMap<TLoadValue, Readonly<TFields>>): Promise<void>;
20
21
  /**
21
22
  * Negatively cache objects that could not be found in the cache or DB.
22
- * @param fieldName - object field being queried
23
- * @param fieldValues - fieldValues for objects reported as CacheStatus.NEGATIVE
24
- * in the cache and not found in the DB.
23
+ * @param key - load key to cache misses for
24
+ * @param values - load values for objects reported as CacheStatus.NEGATIVE
25
+ * in the cache and not found in the DB.
25
26
  */
26
- cacheDBMissesAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<void>;
27
+ cacheDBMissesAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, values: readonly TLoadValue[]): Promise<void>;
27
28
  /**
28
- * Invalidate the cache for objects cached by (fieldName, fieldValue).
29
- * @param fieldName - object field being queried
30
- * @param fieldValues - fieldName field values to be invalidated
29
+ * Invalidate the cache for objects cached by (key, value).
30
+ * @param key - load key to invalidate
31
+ * @param values - load values to be invalidated for the key
31
32
  */
32
- invalidateManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<void>;
33
+ invalidateManyAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, values: readonly TLoadValue[]): Promise<void>;
33
34
  }
@@ -8,5 +8,5 @@ export default interface IEntityCacheAdapterProvider {
8
8
  /**
9
9
  * Vend a cache adapter for an entity configuration.
10
10
  */
11
- getCacheAdapter<TFields extends Record<string, any>>(entityConfiguration: EntityConfiguration<TFields>): IEntityCacheAdapter<TFields>;
11
+ getCacheAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields>(entityConfiguration: EntityConfiguration<TFields, TIDField>): IEntityCacheAdapter<TFields, TIDField>;
12
12
  }
@@ -8,5 +8,5 @@ export default interface IEntityDatabaseAdapterProvider {
8
8
  /**
9
9
  * Vend a database adapter.
10
10
  */
11
- getDatabaseAdapter<TFields extends Record<string, any>>(entityConfiguration: EntityConfiguration<TFields>): EntityDatabaseAdapter<TFields>;
11
+ getDatabaseAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields>(entityConfiguration: EntityConfiguration<TFields, TIDField>): EntityDatabaseAdapter<TFields, TIDField>;
12
12
  }
@@ -1,9 +1,10 @@
1
+ import { IEntityLoadKey, IEntityLoadValue } from './internal/EntityLoadInterfaces';
1
2
  import { CacheLoadResult } from './internal/ReadThroughEntityCache';
2
3
  /**
3
4
  * A generic cacher stores and loads key-value pairs. It also supports negative caching - it stores the absence
4
5
  * of keys that don't exist in the backing datastore. It is also responsible for cache key creation.
5
6
  */
6
- export default interface IEntityGenericCacher<TFields> {
7
+ export default interface IEntityGenericCacher<TFields extends Record<string, any>, TIDField extends keyof TFields> {
7
8
  /**
8
9
  * Load many keys from the cache. Return info in a format that is useful for read-through caching and
9
10
  * negative caching.
@@ -31,10 +32,19 @@ export default interface IEntityGenericCacher<TFields> {
31
32
  */
32
33
  invalidateManyAsync(keys: readonly string[]): Promise<void>;
33
34
  /**
34
- * Create a cache key for a field and value of a object being cached or invalidated.
35
+ * Create a cache key for a load key and load value of an object being cached (or negatively cached).
35
36
  *
36
- * @param fieldName - name of the object field for this cache key
37
- * @param fieldValue - value of the obejct field for this cache key
37
+ * @param key - load key of the cache key
38
+ * @param value - load value of the cache key
38
39
  */
39
- makeCacheKey<N extends keyof TFields>(fieldName: N, fieldValue: NonNullable<TFields[N]>): string;
40
+ makeCacheKeyForStorage<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, value: TLoadValue): string;
41
+ /**
42
+ * Create a cache key for a load key and load values of an object being invalidated. This is separate
43
+ * from makeCacheKeyForStorage because invalidation can optionally be configured to invalidate a larger set of keys than
44
+ * the one for just the current cache version, which can be useful for things like push safety.
45
+ *
46
+ * @param key - load key of the cache key
47
+ * @param values - load values of the cache key
48
+ */
49
+ makeCacheKeysForInvalidation<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, value: TLoadValue): readonly string[];
40
50
  }
@@ -15,7 +15,7 @@ import ViewerContext from './ViewerContext';
15
15
  * - Entities representing SQL views.
16
16
  * - Entities representing immutable tables.
17
17
  */
18
- export default abstract class ReadonlyEntity<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TSelectedFields extends keyof TFields = keyof TFields> {
18
+ export default abstract class ReadonlyEntity<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TSelectedFields extends keyof TFields = keyof TFields> {
19
19
  private readonly viewerContext;
20
20
  private readonly id;
21
21
  private readonly databaseFields;
@@ -36,7 +36,7 @@ export default abstract class ReadonlyEntity<TFields extends object, TID extends
36
36
  */
37
37
  constructor({ viewerContext, id, databaseFields, selectedFields, }: {
38
38
  viewerContext: TViewerContext;
39
- id: TID;
39
+ id: TFields[TIDField];
40
40
  databaseFields: Readonly<TFields>;
41
41
  selectedFields: Readonly<Pick<TFields, TSelectedFields>>;
42
42
  });
@@ -49,15 +49,15 @@ export default abstract class ReadonlyEntity<TFields extends object, TID extends
49
49
  /**
50
50
  * @returns the ID of this entity
51
51
  */
52
- getID(): TID;
52
+ getID(): TFields[TIDField];
53
53
  /**
54
54
  * @returns EnforcingEntityAssociationLoader for this entity
55
55
  */
56
- associationLoader(queryContext?: EntityQueryContext): EnforcingEntityAssociationLoader<TFields, TID, TViewerContext, this, TSelectedFields>;
56
+ associationLoader(queryContext?: EntityQueryContext): EnforcingEntityAssociationLoader<TFields, TIDField, TViewerContext, this, TSelectedFields>;
57
57
  /**
58
58
  * @returns AuthorizationResultBasedEntityAssociationLoader for this entity
59
59
  */
60
- associationLoaderWithAuthorizationResults(queryContext?: EntityQueryContext): AuthorizationResultBasedEntityAssociationLoader<TFields, TID, TViewerContext, this, TSelectedFields>;
60
+ associationLoaderWithAuthorizationResults(queryContext?: EntityQueryContext): AuthorizationResultBasedEntityAssociationLoader<TFields, TIDField, TViewerContext, this, TSelectedFields>;
61
61
  /**
62
62
  * Get a underlying field from this entity's data
63
63
  * @param fieldName - the field to get
@@ -77,17 +77,17 @@ export default abstract class ReadonlyEntity<TFields extends object, TID extends
77
77
  * @param viewerContext - viewer context of loading user
78
78
  * @param queryContext - query context in which to perform the load
79
79
  */
80
- static loader<TMFields extends object, TMID extends NonNullable<TMFields[TMSelectedFields]>, TMViewerContext extends ViewerContext, TMViewerContext2 extends TMViewerContext, TMEntity extends ReadonlyEntity<TMFields, TMID, TMViewerContext, TMSelectedFields>, TMPrivacyPolicy extends EntityPrivacyPolicy<TMFields, TMID, TMViewerContext, TMEntity, TMSelectedFields>, TMSelectedFields extends keyof TMFields = keyof TMFields>(this: IEntityClass<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>, viewerContext: TMViewerContext2, queryContext?: EntityQueryContext): EnforcingEntityLoader<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>;
80
+ static loader<TMFields extends object, TMIDField extends keyof NonNullable<Pick<TMFields, TMSelectedFields>>, TMViewerContext extends ViewerContext, TMViewerContext2 extends TMViewerContext, TMEntity extends ReadonlyEntity<TMFields, TMIDField, TMViewerContext, TMSelectedFields>, TMPrivacyPolicy extends EntityPrivacyPolicy<TMFields, TMIDField, TMViewerContext, TMEntity, TMSelectedFields>, TMSelectedFields extends keyof TMFields = keyof TMFields>(this: IEntityClass<TMFields, TMIDField, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>, viewerContext: TMViewerContext2, queryContext?: EntityQueryContext): EnforcingEntityLoader<TMFields, TMIDField, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>;
81
81
  /**
82
82
  * Vend loader for loading an entity in a given query context.
83
83
  * @param viewerContext - viewer context of loading user
84
84
  * @param queryContext - query context in which to perform the load
85
85
  */
86
- static loaderWithAuthorizationResults<TMFields extends object, TMID extends NonNullable<TMFields[TMSelectedFields]>, TMViewerContext extends ViewerContext, TMViewerContext2 extends TMViewerContext, TMEntity extends ReadonlyEntity<TMFields, TMID, TMViewerContext, TMSelectedFields>, TMPrivacyPolicy extends EntityPrivacyPolicy<TMFields, TMID, TMViewerContext, TMEntity, TMSelectedFields>, TMSelectedFields extends keyof TMFields = keyof TMFields>(this: IEntityClass<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>, viewerContext: TMViewerContext2, queryContext?: EntityQueryContext): AuthorizationResultBasedEntityLoader<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>;
86
+ static loaderWithAuthorizationResults<TMFields extends object, TMIDField extends keyof NonNullable<Pick<TMFields, TMSelectedFields>>, TMViewerContext extends ViewerContext, TMViewerContext2 extends TMViewerContext, TMEntity extends ReadonlyEntity<TMFields, TMIDField, TMViewerContext, TMSelectedFields>, TMPrivacyPolicy extends EntityPrivacyPolicy<TMFields, TMIDField, TMViewerContext, TMEntity, TMSelectedFields>, TMSelectedFields extends keyof TMFields = keyof TMFields>(this: IEntityClass<TMFields, TMIDField, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>, viewerContext: TMViewerContext2, queryContext?: EntityQueryContext): AuthorizationResultBasedEntityLoader<TMFields, TMIDField, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>;
87
87
  /**
88
88
  * Vend loader for loading an entity in a given query context.
89
89
  * @param viewerContext - viewer context of loading user
90
90
  * @param queryContext - query context in which to perform the load
91
91
  */
92
- static loaderUtils<TMFields extends object, TMID extends NonNullable<TMFields[TMSelectedFields]>, TMViewerContext extends ViewerContext, TMViewerContext2 extends TMViewerContext, TMEntity extends ReadonlyEntity<TMFields, TMID, TMViewerContext, TMSelectedFields>, TMPrivacyPolicy extends EntityPrivacyPolicy<TMFields, TMID, TMViewerContext, TMEntity, TMSelectedFields>, TMSelectedFields extends keyof TMFields = keyof TMFields>(this: IEntityClass<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>, viewerContext: TMViewerContext2, queryContext?: EntityQueryContext): EntityLoaderUtils<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>;
92
+ static loaderUtils<TMFields extends object, TMIDField extends keyof NonNullable<Pick<TMFields, TMSelectedFields>>, TMViewerContext extends ViewerContext, TMViewerContext2 extends TMViewerContext, TMEntity extends ReadonlyEntity<TMFields, TMIDField, TMViewerContext, TMSelectedFields>, TMPrivacyPolicy extends EntityPrivacyPolicy<TMFields, TMIDField, TMViewerContext, TMEntity, TMSelectedFields>, TMSelectedFields extends keyof TMFields = keyof TMFields>(this: IEntityClass<TMFields, TMIDField, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>, viewerContext: TMViewerContext2, queryContext?: EntityQueryContext): EntityLoaderUtils<TMFields, TMIDField, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>;
93
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ReadonlyEntity.js","sourceRoot":"","sources":["../src/ReadonlyEntity.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAOlC,wFAAgE;AAChE,kEAA0C;AAM1C;;;;;;;GAOG;AACH,MAA8B,cAAc;IAMzB,aAAa,CAAiB;IAC9B,EAAE,CAAM;IACR,cAAc,CAAoB;IAClC,cAAc,CAA2C;IAE1E;;;;;;;;;;;;;OAaG;IACH,YAAY,EACV,aAAa,EACb,EAAE,EACF,cAAc,EACd,cAAc,GAMf;QACC,IAAA,mBAAS,EAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAElE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;IACrD,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,iBAAiB,CACf,YAAiC;QAEjC,OAAO,IAAI,iCAAuB,CAChC,IAAI,EACJ,YAAY,CACb,CAAC,SAAS,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,yCAAyC,CACvC,YAAiC;QAQjC,OAAO,IAAI,iCAAuB,CAChC,IAAI,EACJ,YAAY,CACb,CAAC,wBAAwB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,QAAQ,CACN,SAAY;QAEZ,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAuBX,aAA+B,EAC/B,eAAmC,aAAa;SAC7C,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QASpB,OAAO,IAAI,sBAAY,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,8BAA8B,CAuBnC,aAA+B,EAC/B,eAAmC,aAAa;SAC7C,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QASpB,OAAO,IAAI,sBAAY,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,wBAAwB,EAAE,CAAC;IACxF,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAuBhB,aAA+B,EAC/B,eAAmC,aAAa;SAC7C,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QASpB,OAAO,IAAI,sBAAY,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IACrE,CAAC;CACF;AA5PD,iCA4PC"}
1
+ {"version":3,"file":"ReadonlyEntity.js","sourceRoot":"","sources":["../src/ReadonlyEntity.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAOlC,wFAAgE;AAChE,kEAA0C;AAM1C;;;;;;;GAOG;AACH,MAA8B,cAAc;IAMzB,aAAa,CAAiB;IAC9B,EAAE,CAAoB;IACtB,cAAc,CAAoB;IAClC,cAAc,CAA2C;IAE1E;;;;;;;;;;;;;OAaG;IACH,YAAY,EACV,aAAa,EACb,EAAE,EACF,cAAc,EACd,cAAc,GAMf;QACC,IAAA,mBAAS,EAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAElE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;IACrD,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,iBAAiB,CACf,YAAiC;QAEjC,OAAO,IAAI,iCAAuB,CAChC,IAAI,EACJ,YAAY,CACb,CAAC,SAAS,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,yCAAyC,CACvC,YAAiC;QAQjC,OAAO,IAAI,iCAAuB,CAChC,IAAI,EACJ,YAAY,CACb,CAAC,wBAAwB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,QAAQ,CACN,SAAY;QAEZ,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAuBX,aAA+B,EAC/B,eAAmC,aAAa;SAC7C,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QASpB,OAAO,IAAI,sBAAY,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,8BAA8B,CAuBnC,aAA+B,EAC/B,eAAmC,aAAa;SAC7C,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QASpB,OAAO,IAAI,sBAAY,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,wBAAwB,EAAE,CAAC;IACxF,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAuBhB,aAA+B,EAC/B,eAAmC,aAAa;SAC7C,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QASpB,OAAO,IAAI,sBAAY,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IACrE,CAAC;CACF;AA5PD,iCA4PC"}
@@ -15,7 +15,7 @@ export default class ViewerContext {
15
15
  private readonly viewerScopedEntityCompanionProvider;
16
16
  constructor(entityCompanionProvider: EntityCompanionProvider);
17
17
  get [Symbol.toStringTag](): string;
18
- getViewerScopedEntityCompanionForClass<TMFields extends object, TMID extends NonNullable<TMFields[TMSelectedFields]>, TMViewerContext extends ViewerContext, TMEntity extends ReadonlyEntity<TMFields, TMID, TMViewerContext, TMSelectedFields>, TMPrivacyPolicy extends EntityPrivacyPolicy<TMFields, TMID, TMViewerContext, TMEntity, TMSelectedFields>, TMSelectedFields extends keyof TMFields>(entityClass: IEntityClass<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>): ViewerScopedEntityCompanion<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>;
18
+ getViewerScopedEntityCompanionForClass<TMFields extends object, TMIDField extends keyof NonNullable<Pick<TMFields, TMSelectedFields>>, TMViewerContext extends ViewerContext, TMEntity extends ReadonlyEntity<TMFields, TMIDField, TMViewerContext, TMSelectedFields>, TMPrivacyPolicy extends EntityPrivacyPolicy<TMFields, TMIDField, TMViewerContext, TMEntity, TMSelectedFields>, TMSelectedFields extends keyof TMFields>(entityClass: IEntityClass<TMFields, TMIDField, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>): ViewerScopedEntityCompanion<TMFields, TMIDField, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>;
19
19
  /**
20
20
  * Get the regular (non-transactional) query context for a database adaptor flavor.
21
21
  * @param databaseAdaptorFlavor - database adaptor flavor
@@ -10,18 +10,18 @@ import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
10
10
  * Provides a simpler API for loading and mutating entities by injecting the ViewerContext
11
11
  * from the viewer-scoped entity companion provider.
12
12
  */
13
- export default class ViewerScopedEntityCompanion<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields> {
14
- readonly entityCompanion: EntityCompanion<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
13
+ export default class ViewerScopedEntityCompanion<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields> {
14
+ readonly entityCompanion: EntityCompanion<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
15
15
  private readonly viewerContext;
16
- constructor(entityCompanion: EntityCompanion<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, viewerContext: TViewerContext);
16
+ constructor(entityCompanion: EntityCompanion<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, viewerContext: TViewerContext);
17
17
  /**
18
18
  * Vend a viewer-scoped entity loader.
19
19
  */
20
- getLoaderFactory(): ViewerScopedEntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
20
+ getLoaderFactory(): ViewerScopedEntityLoaderFactory<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
21
21
  /**
22
22
  * Vend a viewer-scoped entity mutator factory.
23
23
  */
24
- getMutatorFactory(): ViewerScopedEntityMutatorFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
24
+ getMutatorFactory(): ViewerScopedEntityMutatorFactory<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
25
25
  /**
26
26
  * Get the query context provider for this entity.
27
27
  */
@@ -17,5 +17,5 @@ export default class ViewerScopedEntityCompanionProvider {
17
17
  *
18
18
  * @param entityClass - entity class to load
19
19
  */
20
- getViewerScopedCompanionForEntity<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields>(entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>): ViewerScopedEntityCompanion<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
20
+ getViewerScopedCompanionForEntity<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields>(entityClass: IEntityClass<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>): ViewerScopedEntityCompanion<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
21
21
  }
@@ -7,9 +7,9 @@ import ViewerContext from './ViewerContext';
7
7
  /**
8
8
  * Provides a cleaner API for loading entities by passing through the ViewerContext.
9
9
  */
10
- export default class ViewerScopedEntityLoaderFactory<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields> {
10
+ export default class ViewerScopedEntityLoaderFactory<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields> {
11
11
  private readonly entityLoaderFactory;
12
12
  private readonly viewerContext;
13
- constructor(entityLoaderFactory: EntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, viewerContext: TViewerContext);
14
- forLoad(queryContext: EntityQueryContext, privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TID, TViewerContext, TEntity, TSelectedFields>): AuthorizationResultBasedEntityLoader<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
13
+ constructor(entityLoaderFactory: EntityLoaderFactory<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, viewerContext: TViewerContext);
14
+ forLoad(queryContext: EntityQueryContext, privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>): AuthorizationResultBasedEntityLoader<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
15
15
  }
@@ -7,11 +7,11 @@ import ViewerContext from './ViewerContext';
7
7
  /**
8
8
  * Provides a cleaner API for mutating entities by passing through the ViewerContext.
9
9
  */
10
- export default class ViewerScopedEntityMutatorFactory<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields> {
10
+ export default class ViewerScopedEntityMutatorFactory<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields> {
11
11
  private readonly entityMutatorFactory;
12
12
  private readonly viewerContext;
13
- constructor(entityMutatorFactory: EntityMutatorFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, viewerContext: TViewerContext);
14
- forCreate(queryContext: EntityQueryContext): AuthorizationResultBasedCreateMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
15
- forUpdate(existingEntity: TEntity, queryContext: EntityQueryContext): AuthorizationResultBasedUpdateMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
16
- forDelete(existingEntity: TEntity, queryContext: EntityQueryContext): AuthorizationResultBasedDeleteMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
13
+ constructor(entityMutatorFactory: EntityMutatorFactory<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, viewerContext: TViewerContext);
14
+ forCreate(queryContext: EntityQueryContext): AuthorizationResultBasedCreateMutator<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
15
+ forUpdate(existingEntity: TEntity, queryContext: EntityQueryContext): AuthorizationResultBasedUpdateMutator<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
16
+ forDelete(existingEntity: TEntity, queryContext: EntityQueryContext): AuthorizationResultBasedDeleteMutator<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
17
17
  }
@@ -36,4 +36,4 @@ export declare const partitionArray: <T, U>(values: (T | U)[], predicate: Partit
36
36
  * @param valuesAndErrors - array of values and errors
37
37
  */
38
38
  export declare const partitionErrors: <T>(valuesAndErrors: (T | Error)[]) => [T[], Error[]];
39
- export declare const pick: <T extends object, U extends keyof T>(object: T, props: U[]) => Pick<T, U>;
39
+ export declare const pick: <T extends object, U extends keyof T>(object: T, props: readonly U[]) => Pick<T, U>;
@@ -1 +1 @@
1
- {"version":3,"file":"entityUtils.js","sourceRoot":"","sources":["../src/entityUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entityUtils.js","sourceRoot":"","sources":["../src/entityUtils.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ import { IEntityClass } from '../Entity';
3
3
  import EntityPrivacyPolicy from '../EntityPrivacyPolicy';
4
4
  import ReadonlyEntity from '../ReadonlyEntity';
5
5
  import ViewerContext from '../ViewerContext';
6
- export default class EntityInvalidFieldValueError<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, N extends keyof TFields, TSelectedFields extends keyof TFields = keyof TFields> extends EntityError {
6
+ export default class EntityInvalidFieldValueError<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, N extends keyof TFields, TSelectedFields extends keyof TFields = keyof TFields> extends EntityError {
7
7
  readonly state = EntityErrorState.PERMANENT;
8
8
  readonly code = EntityErrorCode.ERR_ENTITY_INVALID_FIELD_VALUE;
9
- constructor(entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, fieldName: N, fieldValue?: TFields[N]);
9
+ constructor(entityClass: IEntityClass<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, fieldName: N, fieldValue?: TFields[N]);
10
10
  }
@@ -2,7 +2,7 @@ import EntityError, { EntityErrorCode, EntityErrorState } from './EntityError';
2
2
  import { EntityAuthorizationAction } from '../EntityPrivacyPolicy';
3
3
  import ReadonlyEntity from '../ReadonlyEntity';
4
4
  import ViewerContext from '../ViewerContext';
5
- export default class EntityNotAuthorizedError<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> extends EntityError {
5
+ export default class EntityNotAuthorizedError<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> extends EntityError {
6
6
  readonly state = EntityErrorState.PERMANENT;
7
7
  readonly code = EntityErrorCode.ERR_ENTITY_NOT_AUTHORIZED;
8
8
  readonly entityClassName: string;
@@ -3,8 +3,8 @@ import { IEntityClass } from '../Entity';
3
3
  import EntityPrivacyPolicy from '../EntityPrivacyPolicy';
4
4
  import ReadonlyEntity from '../ReadonlyEntity';
5
5
  import ViewerContext from '../ViewerContext';
6
- export default class EntityNotFoundError<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, N extends keyof TFields, TSelectedFields extends keyof TFields = keyof TFields> extends EntityError {
6
+ export default class EntityNotFoundError<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, N extends keyof TFields, TSelectedFields extends keyof TFields = keyof TFields> extends EntityError {
7
7
  readonly state = EntityErrorState.PERMANENT;
8
8
  readonly code = EntityErrorCode.ERR_ENTITY_NOT_FOUND;
9
- constructor(entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, fieldName: N, fieldValue: TFields[N]);
9
+ constructor(entityClass: IEntityClass<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, fieldName: N, fieldValue: TFields[N]);
10
10
  }
package/build/index.d.ts CHANGED
@@ -21,6 +21,7 @@ export * from './EntityCompanion';
21
21
  export { default as EntityCompanionProvider } from './EntityCompanionProvider';
22
22
  export * from './EntityCompanionProvider';
23
23
  export { default as EntityConfiguration } from './EntityConfiguration';
24
+ export * from './EntityConfiguration';
24
25
  export { default as EntityCreator } from './EntityCreator';
25
26
  export { default as EntityDatabaseAdapter } from './EntityDatabaseAdapter';
26
27
  export * from './EntityDatabaseAdapter';
@@ -64,11 +65,15 @@ export * from './errors/EntityError';
64
65
  export { default as EntityInvalidFieldValueError } from './errors/EntityInvalidFieldValueError';
65
66
  export { default as EntityNotAuthorizedError } from './errors/EntityNotAuthorizedError';
66
67
  export { default as EntityNotFoundError } from './errors/EntityNotFoundError';
68
+ export * from './internal/CompositeFieldHolder';
69
+ export * from './internal/CompositeFieldValueMap';
67
70
  export { default as EntityDataManager } from './internal/EntityDataManager';
68
71
  export * from './internal/EntityFieldTransformationUtils';
72
+ export * from './internal/EntityLoadInterfaces';
69
73
  export { default as EntityTableDataCoordinator } from './internal/EntityTableDataCoordinator';
70
74
  export { default as ReadThroughEntityCache } from './internal/ReadThroughEntityCache';
71
75
  export * from './internal/ReadThroughEntityCache';
76
+ export * from './internal/SingleFieldHolder';
72
77
  export * from './metrics/EntityMetricsUtils';
73
78
  export { type default as IEntityMetricsAdapter } from './metrics/IEntityMetricsAdapter';
74
79
  export * from './metrics/IEntityMetricsAdapter';
@@ -81,10 +86,5 @@ export * from './rules/PrivacyPolicyRule';
81
86
  export * from './utils/EntityPrivacyUtils';
82
87
  export * from './utils/mergeEntityMutationTriggerConfigurations';
83
88
  export * from './utils/collections/maps';
84
- export * from './utils/testing/createUnitTestEntityCompanionProvider';
85
- export { default as describeFieldTestCase } from './utils/testing/describeFieldTestCase';
86
- export * from './utils/testing/PrivacyPolicyRuleTestUtils';
87
- export * from './utils/testing/StubCacheAdapter';
88
- export { default as StubDatabaseAdapter } from './utils/testing/StubDatabaseAdapter';
89
- export { default as StubDatabaseAdapterProvider } from './utils/testing/StubDatabaseAdapterProvider';
90
- export { default as StubQueryContextProvider } from './utils/testing/StubQueryContextProvider';
89
+ export * from './utils/collections/SerializableKeyMap';
90
+ export * from './utils/collections/sets';
package/build/index.js CHANGED
@@ -22,8 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.StubDatabaseAdapter = exports.describeFieldTestCase = exports.PrivacyPolicyRule = exports.AlwaysSkipPrivacyPolicyRule = exports.AlwaysDenyPrivacyPolicyRule = exports.AlwaysAllowPrivacyPolicyRule = exports.NoOpEntityMetricsAdapter = exports.ReadThroughEntityCache = exports.EntityTableDataCoordinator = exports.EntityDataManager = exports.EntityNotFoundError = exports.EntityNotAuthorizedError = exports.EntityInvalidFieldValueError = exports.EntityError = exports.EntityDatabaseAdapterError = exports.EntityCacheAdapterError = exports.ViewerScopedEntityMutatorFactory = exports.ViewerScopedEntityLoaderFactory = exports.ViewerScopedEntityCompanionProvider = exports.ViewerScopedEntityCompanion = exports.ViewerContext = exports.ReadonlyEntity = exports.GenericSecondaryEntityCache = exports.GenericEntityCacheAdapter = exports.EntityUpdater = exports.EntitySecondaryCacheLoader = exports.EntityQueryContextProvider = exports.EntityPrivacyPolicy = exports.EntityMutatorFactory = exports.EntityMutationValidator = exports.EntityLoaderUtils = exports.EntityLoaderFactory = exports.EntityLoader = exports.EntityDeleter = exports.EntityDatabaseAdapter = exports.EntityCreator = exports.EntityConfiguration = exports.EntityCompanionProvider = exports.EntityCompanion = exports.EntityAssociationLoader = exports.Entity = exports.EnforcingEntityUpdater = exports.EnforcingEntityLoader = exports.EnforcingEntityDeleter = exports.EnforcingEntityCreator = exports.EnforcingEntityAssociationLoader = exports.ComposedSecondaryEntityCache = exports.ComposedEntityCacheAdapter = exports.AuthorizationResultBasedEntityLoader = exports.AuthorizationResultBasedEntityAssociationLoader = void 0;
26
- exports.StubQueryContextProvider = exports.StubDatabaseAdapterProvider = void 0;
25
+ exports.PrivacyPolicyRule = exports.AlwaysSkipPrivacyPolicyRule = exports.AlwaysDenyPrivacyPolicyRule = exports.AlwaysAllowPrivacyPolicyRule = exports.NoOpEntityMetricsAdapter = exports.ReadThroughEntityCache = exports.EntityTableDataCoordinator = exports.EntityDataManager = exports.EntityNotFoundError = exports.EntityNotAuthorizedError = exports.EntityInvalidFieldValueError = exports.EntityError = exports.EntityDatabaseAdapterError = exports.EntityCacheAdapterError = exports.ViewerScopedEntityMutatorFactory = exports.ViewerScopedEntityLoaderFactory = exports.ViewerScopedEntityCompanionProvider = exports.ViewerScopedEntityCompanion = exports.ViewerContext = exports.ReadonlyEntity = exports.GenericSecondaryEntityCache = exports.GenericEntityCacheAdapter = exports.EntityUpdater = exports.EntitySecondaryCacheLoader = exports.EntityQueryContextProvider = exports.EntityPrivacyPolicy = exports.EntityMutatorFactory = exports.EntityMutationValidator = exports.EntityLoaderUtils = exports.EntityLoaderFactory = exports.EntityLoader = exports.EntityDeleter = exports.EntityDatabaseAdapter = exports.EntityCreator = exports.EntityConfiguration = exports.EntityCompanionProvider = exports.EntityCompanion = exports.EntityAssociationLoader = exports.Entity = exports.EnforcingEntityUpdater = exports.EnforcingEntityLoader = exports.EnforcingEntityDeleter = exports.EnforcingEntityCreator = exports.EnforcingEntityAssociationLoader = exports.ComposedSecondaryEntityCache = exports.ComposedEntityCacheAdapter = exports.AuthorizationResultBasedEntityLoader = exports.AuthorizationResultBasedEntityAssociationLoader = void 0;
27
26
  var AuthorizationResultBasedEntityAssociationLoader_1 = require("./AuthorizationResultBasedEntityAssociationLoader");
28
27
  Object.defineProperty(exports, "AuthorizationResultBasedEntityAssociationLoader", { enumerable: true, get: function () { return __importDefault(AuthorizationResultBasedEntityAssociationLoader_1).default; } });
29
28
  __exportStar(require("./AuthorizationResultBasedEntityAssociationLoader"), exports);
@@ -57,6 +56,7 @@ Object.defineProperty(exports, "EntityCompanionProvider", { enumerable: true, ge
57
56
  __exportStar(require("./EntityCompanionProvider"), exports);
58
57
  var EntityConfiguration_1 = require("./EntityConfiguration");
59
58
  Object.defineProperty(exports, "EntityConfiguration", { enumerable: true, get: function () { return __importDefault(EntityConfiguration_1).default; } });
59
+ __exportStar(require("./EntityConfiguration"), exports);
60
60
  var EntityCreator_1 = require("./EntityCreator");
61
61
  Object.defineProperty(exports, "EntityCreator", { enumerable: true, get: function () { return __importDefault(EntityCreator_1).default; } });
62
62
  var EntityDatabaseAdapter_1 = require("./EntityDatabaseAdapter");
@@ -121,14 +121,18 @@ var EntityNotAuthorizedError_1 = require("./errors/EntityNotAuthorizedError");
121
121
  Object.defineProperty(exports, "EntityNotAuthorizedError", { enumerable: true, get: function () { return __importDefault(EntityNotAuthorizedError_1).default; } });
122
122
  var EntityNotFoundError_1 = require("./errors/EntityNotFoundError");
123
123
  Object.defineProperty(exports, "EntityNotFoundError", { enumerable: true, get: function () { return __importDefault(EntityNotFoundError_1).default; } });
124
+ __exportStar(require("./internal/CompositeFieldHolder"), exports);
125
+ __exportStar(require("./internal/CompositeFieldValueMap"), exports);
124
126
  var EntityDataManager_1 = require("./internal/EntityDataManager");
125
127
  Object.defineProperty(exports, "EntityDataManager", { enumerable: true, get: function () { return __importDefault(EntityDataManager_1).default; } });
126
128
  __exportStar(require("./internal/EntityFieldTransformationUtils"), exports);
129
+ __exportStar(require("./internal/EntityLoadInterfaces"), exports);
127
130
  var EntityTableDataCoordinator_1 = require("./internal/EntityTableDataCoordinator");
128
131
  Object.defineProperty(exports, "EntityTableDataCoordinator", { enumerable: true, get: function () { return __importDefault(EntityTableDataCoordinator_1).default; } });
129
132
  var ReadThroughEntityCache_1 = require("./internal/ReadThroughEntityCache");
130
133
  Object.defineProperty(exports, "ReadThroughEntityCache", { enumerable: true, get: function () { return __importDefault(ReadThroughEntityCache_1).default; } });
131
134
  __exportStar(require("./internal/ReadThroughEntityCache"), exports);
135
+ __exportStar(require("./internal/SingleFieldHolder"), exports);
132
136
  __exportStar(require("./metrics/EntityMetricsUtils"), exports);
133
137
  __exportStar(require("./metrics/IEntityMetricsAdapter"), exports);
134
138
  var NoOpEntityMetricsAdapter_1 = require("./metrics/NoOpEntityMetricsAdapter");
@@ -145,15 +149,6 @@ __exportStar(require("./rules/PrivacyPolicyRule"), exports);
145
149
  __exportStar(require("./utils/EntityPrivacyUtils"), exports);
146
150
  __exportStar(require("./utils/mergeEntityMutationTriggerConfigurations"), exports);
147
151
  __exportStar(require("./utils/collections/maps"), exports);
148
- __exportStar(require("./utils/testing/createUnitTestEntityCompanionProvider"), exports);
149
- var describeFieldTestCase_1 = require("./utils/testing/describeFieldTestCase");
150
- Object.defineProperty(exports, "describeFieldTestCase", { enumerable: true, get: function () { return __importDefault(describeFieldTestCase_1).default; } });
151
- __exportStar(require("./utils/testing/PrivacyPolicyRuleTestUtils"), exports);
152
- __exportStar(require("./utils/testing/StubCacheAdapter"), exports);
153
- var StubDatabaseAdapter_1 = require("./utils/testing/StubDatabaseAdapter");
154
- Object.defineProperty(exports, "StubDatabaseAdapter", { enumerable: true, get: function () { return __importDefault(StubDatabaseAdapter_1).default; } });
155
- var StubDatabaseAdapterProvider_1 = require("./utils/testing/StubDatabaseAdapterProvider");
156
- Object.defineProperty(exports, "StubDatabaseAdapterProvider", { enumerable: true, get: function () { return __importDefault(StubDatabaseAdapterProvider_1).default; } });
157
- var StubQueryContextProvider_1 = require("./utils/testing/StubQueryContextProvider");
158
- Object.defineProperty(exports, "StubQueryContextProvider", { enumerable: true, get: function () { return __importDefault(StubQueryContextProvider_1).default; } });
152
+ __exportStar(require("./utils/collections/SerializableKeyMap"), exports);
153
+ __exportStar(require("./utils/collections/sets"), exports);
159
154
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import EntityConfiguration, { EntityCompositeField, EntityCompositeFieldValue } from '../EntityConfiguration';
2
+ import { EntityLoadMethodType, IEntityLoadKey, IEntityLoadValue, LoadValueMap } from '../internal/EntityLoadInterfaces';
3
+ declare const CompositeFieldHolderSerializedBrand: unique symbol;
4
+ export type SerializedCompositeFieldHolder = string & {
5
+ readonly [CompositeFieldHolderSerializedBrand]: true;
6
+ };
7
+ /**
8
+ * A load key that represents a composite field (set of fieldName) on an entity.
9
+ * Must be defined in the entity configuration composite field definition.
10
+ */
11
+ export declare class CompositeFieldHolder<TFields extends Record<string, any>, TIDField extends keyof TFields> implements IEntityLoadKey<TFields, TIDField, SerializedCompositeFieldValueHolder, CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>> {
12
+ readonly compositeField: EntityCompositeField<TFields>;
13
+ constructor(compositeFieldInput: EntityCompositeField<TFields>);
14
+ toString(): string;
15
+ getFieldSet(): ReadonlySet<keyof TFields>;
16
+ extractCompositeFieldValueHolderFromObjectFields(objectFields: TFields): CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>> | null;
17
+ serialize(): SerializedCompositeFieldHolder;
18
+ isCacheable(entityConfiguration: EntityConfiguration<TFields, TIDField>): boolean;
19
+ getDatabaseColumns(entityConfiguration: EntityConfiguration<TFields, TIDField>): readonly string[];
20
+ getDatabaseValues(value: CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>): readonly any[];
21
+ getLoadValueForObject(object: Readonly<TFields>): CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>> | null;
22
+ createCacheKeyPartsForLoadValue(entityConfiguration: EntityConfiguration<TFields, TIDField>, value: CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>): readonly string[];
23
+ getLoadMethodType(): EntityLoadMethodType;
24
+ getDataManagerDataLoaderKey(): string;
25
+ serializeLoadValue(value: CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>): SerializedCompositeFieldValueHolder;
26
+ deserializeLoadValue(value: SerializedCompositeFieldValueHolder): CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>;
27
+ validateRuntimeLoadValuesForDataManagerDataLoader(values: readonly CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>[], entityClassName: string): void;
28
+ vendNewLoadValueMap<V>(): LoadValueMap<SerializedCompositeFieldValueHolder, CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>, V>;
29
+ }
30
+ declare const CompositeFieldValueHolderSerializedBrand: unique symbol;
31
+ export type SerializedCompositeFieldValueHolder = string & {
32
+ readonly [CompositeFieldValueHolderSerializedBrand]: true;
33
+ };
34
+ /**
35
+ * A load value for a CompositeFieldHolder.
36
+ */
37
+ export declare class CompositeFieldValueHolder<TFields extends Record<string, any>, TCompositeField extends EntityCompositeField<TFields>> implements IEntityLoadValue<SerializedCompositeFieldValueHolder> {
38
+ readonly compositeFieldValue: EntityCompositeFieldValue<TFields, TCompositeField>;
39
+ constructor(compositeFieldValue: EntityCompositeFieldValue<TFields, TCompositeField>);
40
+ toString(): string;
41
+ getFieldSet(): ReadonlySet<keyof TFields>;
42
+ static deserialize<TFields extends Record<string, any>, TCompositeField extends EntityCompositeField<TFields>>(serialized: SerializedCompositeFieldValueHolder): CompositeFieldValueHolder<TFields, TCompositeField>;
43
+ serialize(): SerializedCompositeFieldValueHolder;
44
+ }
45
+ export declare class CompositeFieldValueHolderMap<TFields extends Record<string, any>, N extends EntityCompositeField<TFields>, V> extends LoadValueMap<SerializedCompositeFieldValueHolder, CompositeFieldValueHolder<TFields, N>, V> {
46
+ protected deserializeKey(serializedKey: SerializedCompositeFieldValueHolder): CompositeFieldValueHolder<TFields, N>;
47
+ }
48
+ export {};