@expo/entity 0.40.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 (433) hide show
  1. package/build/AuthorizationResultBasedEntityAssociationLoader.d.ts +16 -16
  2. package/build/AuthorizationResultBasedEntityAssociationLoader.js +2 -4
  3. package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -1
  4. package/build/AuthorizationResultBasedEntityLoader.d.ts +39 -67
  5. package/build/AuthorizationResultBasedEntityLoader.js +85 -62
  6. package/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
  7. package/build/AuthorizationResultBasedEntityMutator.d.ts +16 -16
  8. package/build/AuthorizationResultBasedEntityMutator.js.map +1 -1
  9. package/build/ComposedEntityCacheAdapter.d.ts +7 -6
  10. package/build/ComposedEntityCacheAdapter.js +28 -28
  11. package/build/ComposedEntityCacheAdapter.js.map +1 -1
  12. package/build/ComposedSecondaryEntityCache.d.ts +1 -1
  13. package/build/ComposedSecondaryEntityCache.js.map +1 -1
  14. package/build/EnforcingEntityAssociationLoader.d.ts +15 -15
  15. package/build/EnforcingEntityAssociationLoader.js.map +1 -1
  16. package/build/EnforcingEntityCreator.d.ts +2 -2
  17. package/build/EnforcingEntityDeleter.d.ts +2 -2
  18. package/build/EnforcingEntityLoader.d.ts +104 -18
  19. package/build/EnforcingEntityLoader.js +113 -12
  20. package/build/EnforcingEntityLoader.js.map +1 -1
  21. package/build/EnforcingEntityUpdater.d.ts +2 -2
  22. package/build/Entity.d.ts +32 -10
  23. package/build/Entity.js +41 -3
  24. package/build/Entity.js.map +1 -1
  25. package/build/EntityAssociationLoader.d.ts +3 -3
  26. package/build/EntityCompanion.d.ts +5 -5
  27. package/build/EntityCompanion.js.map +1 -1
  28. package/build/EntityCompanionProvider.d.ts +6 -6
  29. package/build/EntityCompanionProvider.js.map +1 -1
  30. package/build/EntityConfiguration.d.ts +46 -5
  31. package/build/EntityConfiguration.js +39 -1
  32. package/build/EntityConfiguration.js.map +1 -1
  33. package/build/EntityCreator.d.ts +4 -4
  34. package/build/EntityDatabaseAdapter.d.ts +15 -14
  35. package/build/EntityDatabaseAdapter.js +20 -12
  36. package/build/EntityDatabaseAdapter.js.map +1 -1
  37. package/build/EntityDeleter.d.ts +4 -4
  38. package/build/EntityFieldDefinition.d.ts +20 -10
  39. package/build/EntityFieldDefinition.js +3 -1
  40. package/build/EntityFieldDefinition.js.map +1 -1
  41. package/build/EntityFields.d.ts +14 -12
  42. package/build/EntityFields.js.map +1 -1
  43. package/build/EntityLoader.d.ts +5 -5
  44. package/build/EntityLoaderFactory.d.ts +3 -3
  45. package/build/EntityLoaderFactory.js.map +1 -1
  46. package/build/EntityLoaderUtils.d.ts +2 -2
  47. package/build/EntityLoaderUtils.js +27 -1
  48. package/build/EntityLoaderUtils.js.map +1 -1
  49. package/build/EntityMutationInfo.d.ts +2 -2
  50. package/build/EntityMutationTriggerConfiguration.d.ts +14 -14
  51. package/build/EntityMutationTriggerConfiguration.js.map +1 -1
  52. package/build/EntityMutationValidator.d.ts +2 -2
  53. package/build/EntityMutatorFactory.d.ts +5 -5
  54. package/build/EntityMutatorFactory.js.map +1 -1
  55. package/build/EntityPrivacyPolicy.d.ts +14 -14
  56. package/build/EntityPrivacyPolicy.js.map +1 -1
  57. package/build/EntitySecondaryCacheLoader.d.ts +4 -4
  58. package/build/EntityUpdater.d.ts +4 -4
  59. package/build/GenericEntityCacheAdapter.d.ts +7 -6
  60. package/build/GenericEntityCacheAdapter.js +13 -14
  61. package/build/GenericEntityCacheAdapter.js.map +1 -1
  62. package/build/GenericSecondaryEntityCache.d.ts +3 -3
  63. package/build/GenericSecondaryEntityCache.js.map +1 -1
  64. package/build/IEntityCacheAdapter.d.ts +17 -16
  65. package/build/IEntityCacheAdapterProvider.d.ts +1 -1
  66. package/build/IEntityDatabaseAdapterProvider.d.ts +1 -1
  67. package/build/IEntityGenericCacher.d.ts +15 -5
  68. package/build/ReadonlyEntity.d.ts +27 -8
  69. package/build/ReadonlyEntity.js +31 -3
  70. package/build/ReadonlyEntity.js.map +1 -1
  71. package/build/ViewerContext.d.ts +1 -1
  72. package/build/ViewerScopedEntityCompanion.d.ts +5 -5
  73. package/build/ViewerScopedEntityCompanionProvider.d.ts +1 -1
  74. package/build/ViewerScopedEntityLoaderFactory.d.ts +3 -3
  75. package/build/ViewerScopedEntityMutatorFactory.d.ts +5 -5
  76. package/build/entityUtils.d.ts +1 -1
  77. package/build/entityUtils.js.map +1 -1
  78. package/build/errors/EntityInvalidFieldValueError.d.ts +2 -2
  79. package/build/errors/EntityNotAuthorizedError.d.ts +1 -1
  80. package/build/errors/EntityNotFoundError.d.ts +2 -2
  81. package/build/index.d.ts +7 -7
  82. package/build/index.js +8 -13
  83. package/build/index.js.map +1 -1
  84. package/build/internal/CompositeFieldHolder.d.ts +48 -0
  85. package/build/internal/CompositeFieldHolder.js +116 -0
  86. package/build/internal/CompositeFieldHolder.js.map +1 -0
  87. package/build/internal/CompositeFieldValueMap.d.ts +15 -0
  88. package/build/internal/CompositeFieldValueMap.js +51 -0
  89. package/build/internal/CompositeFieldValueMap.js.map +1 -0
  90. package/build/internal/EntityDataManager.d.ts +16 -16
  91. package/build/internal/EntityDataManager.js +42 -45
  92. package/build/internal/EntityDataManager.js.map +1 -1
  93. package/build/internal/EntityFieldTransformationUtils.d.ts +5 -5
  94. package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
  95. package/build/internal/EntityLoadInterfaces.d.ts +104 -0
  96. package/build/internal/EntityLoadInterfaces.js +25 -0
  97. package/build/internal/EntityLoadInterfaces.js.map +1 -0
  98. package/build/internal/EntityTableDataCoordinator.d.ts +6 -6
  99. package/build/internal/EntityTableDataCoordinator.js.map +1 -1
  100. package/build/internal/ReadThroughEntityCache.d.ts +17 -16
  101. package/build/internal/ReadThroughEntityCache.js +36 -36
  102. package/build/internal/ReadThroughEntityCache.js.map +1 -1
  103. package/build/internal/SingleFieldHolder.d.ts +34 -0
  104. package/build/internal/SingleFieldHolder.js +90 -0
  105. package/build/internal/SingleFieldHolder.js.map +1 -0
  106. package/build/metrics/EntityMetricsUtils.d.ts +2 -1
  107. package/build/metrics/EntityMetricsUtils.js.map +1 -1
  108. package/build/metrics/IEntityMetricsAdapter.d.ts +5 -0
  109. package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
  110. package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +2 -2
  111. package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
  112. package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +2 -2
  113. package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
  114. package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +2 -2
  115. package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
  116. package/build/rules/PrivacyPolicyRule.d.ts +2 -2
  117. package/build/tsconfig.build.tsbuildinfo +1 -0
  118. package/build/utils/EntityPrivacyUtils.d.ts +4 -4
  119. package/build/utils/EntityPrivacyUtils.js.map +1 -1
  120. package/build/utils/collections/SerializableKeyMap.d.ts +27 -0
  121. package/build/utils/collections/SerializableKeyMap.js +60 -0
  122. package/build/utils/collections/SerializableKeyMap.js.map +1 -0
  123. package/build/utils/collections/maps.js +1 -2
  124. package/build/utils/collections/maps.js.map +1 -1
  125. package/build/utils/collections/sets.d.ts +1 -0
  126. package/build/utils/collections/sets.js +7 -0
  127. package/build/utils/collections/sets.js.map +1 -0
  128. package/build/utils/mergeEntityMutationTriggerConfigurations.d.ts +1 -1
  129. package/package.json +8 -5
  130. package/src/AuthorizationResultBasedEntityAssociationLoader.ts +58 -53
  131. package/src/AuthorizationResultBasedEntityLoader.ts +194 -81
  132. package/src/AuthorizationResultBasedEntityMutator.ts +71 -45
  133. package/src/ComposedEntityCacheAdapter.ts +55 -46
  134. package/src/ComposedSecondaryEntityCache.ts +5 -2
  135. package/src/EnforcingEntityAssociationLoader.ts +52 -44
  136. package/src/EnforcingEntityCreator.ts +5 -5
  137. package/src/EnforcingEntityDeleter.ts +5 -5
  138. package/src/EnforcingEntityLoader.ts +158 -21
  139. package/src/EnforcingEntityUpdater.ts +5 -5
  140. package/src/Entity.ts +185 -29
  141. package/src/EntityAssociationLoader.ts +6 -6
  142. package/src/EntityCompanion.ts +11 -11
  143. package/src/EntityCompanionProvider.ts +21 -18
  144. package/src/EntityConfiguration.ts +123 -9
  145. package/src/EntityCreator.ts +7 -7
  146. package/src/EntityDatabaseAdapter.ts +51 -28
  147. package/src/EntityDeleter.ts +7 -7
  148. package/src/EntityFieldDefinition.ts +32 -12
  149. package/src/EntityFields.ts +49 -12
  150. package/src/EntityLoader.ts +8 -8
  151. package/src/EntityLoaderFactory.ts +8 -8
  152. package/src/EntityLoaderUtils.ts +39 -10
  153. package/src/EntityMutationInfo.ts +6 -6
  154. package/src/EntityMutationTriggerConfiguration.ts +68 -20
  155. package/src/EntityMutationValidator.ts +4 -4
  156. package/src/EntityMutatorFactory.ts +13 -13
  157. package/src/EntityPrivacyPolicy.ts +50 -26
  158. package/src/EntitySecondaryCacheLoader.ts +6 -6
  159. package/src/EntityUpdater.ts +7 -7
  160. package/src/GenericEntityCacheAdapter.ts +39 -28
  161. package/src/GenericSecondaryEntityCache.ts +6 -3
  162. package/src/IEntityCacheAdapter.ts +45 -25
  163. package/src/IEntityCacheAdapterProvider.ts +3 -3
  164. package/src/IEntityDatabaseAdapterProvider.ts +3 -3
  165. package/src/IEntityGenericCacher.ts +33 -5
  166. package/src/ReadonlyEntity.ts +129 -16
  167. package/src/ViewerContext.ts +5 -5
  168. package/src/ViewerScopedEntityCompanion.ts +7 -7
  169. package/src/ViewerScopedEntityCompanionProvider.ts +6 -6
  170. package/src/ViewerScopedEntityLoaderFactory.ts +7 -7
  171. package/src/ViewerScopedEntityMutatorFactory.ts +8 -8
  172. package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +41 -72
  173. package/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.ts +14 -13
  174. package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +367 -69
  175. package/src/__tests__/ComposedCacheAdapter-test.ts +235 -117
  176. package/src/__tests__/EnforcingEntityLoader-test.ts +135 -1
  177. package/src/__tests__/Entity-test.ts +64 -11
  178. package/src/__tests__/EntityAssociationLoader-test.ts +6 -8
  179. package/src/__tests__/EntityCommonUseCases-test.ts +25 -28
  180. package/src/__tests__/EntityCompanion-test.ts +4 -4
  181. package/src/__tests__/EntityCompanionProvider-test.ts +9 -8
  182. package/src/__tests__/EntityConfiguration-test.ts +85 -6
  183. package/src/__tests__/EntityDatabaseAdapter-test.ts +113 -17
  184. package/src/__tests__/EntityEdges-test.ts +135 -138
  185. package/src/__tests__/EntityFields-test.ts +2 -2
  186. package/src/__tests__/EntityLoader-test.ts +5 -7
  187. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +17 -19
  188. package/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.ts +73 -0
  189. package/src/__tests__/EntityMutator-test.ts +74 -46
  190. package/src/__tests__/EntityPrivacyPolicy-test.ts +51 -74
  191. package/src/__tests__/EntityQueryContext-test.ts +1 -1
  192. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +9 -9
  193. package/src/__tests__/EntitySelfReferentialEdges-test.ts +119 -122
  194. package/src/__tests__/GenericEntityCacheAdapter-test.ts +83 -28
  195. package/src/__tests__/ReadonlyEntity-test.ts +49 -9
  196. package/src/__tests__/ViewerContext-test.ts +1 -1
  197. package/src/__tests__/ViewerScopedEntityCompanion-test.ts +5 -2
  198. package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +1 -1
  199. package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +12 -3
  200. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +25 -27
  201. package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +28 -34
  202. package/src/entityUtils.ts +4 -1
  203. package/src/errors/EntityInvalidFieldValueError.ts +5 -5
  204. package/src/errors/EntityNotAuthorizedError.ts +3 -3
  205. package/src/errors/EntityNotFoundError.ts +5 -5
  206. package/src/index.ts +7 -7
  207. package/src/internal/CompositeFieldHolder.ts +218 -0
  208. package/src/internal/CompositeFieldValueMap.ts +78 -0
  209. package/src/internal/EntityDataManager.ts +107 -96
  210. package/src/internal/EntityFieldTransformationUtils.ts +33 -14
  211. package/src/internal/EntityLoadInterfaces.ts +143 -0
  212. package/src/internal/EntityTableDataCoordinator.ts +8 -5
  213. package/src/internal/ReadThroughEntityCache.ts +63 -50
  214. package/src/internal/SingleFieldHolder.ts +131 -0
  215. package/src/internal/__tests__/CompositeFieldHolder-test.ts +25 -0
  216. package/src/internal/__tests__/CompositeFieldValueMap-test.ts +43 -0
  217. package/src/internal/__tests__/EntityDataManager-test.ts +308 -91
  218. package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +3 -2
  219. package/src/internal/__tests__/ReadThroughEntityCache-test.ts +315 -107
  220. package/src/metrics/EntityMetricsUtils.ts +7 -2
  221. package/src/metrics/IEntityMetricsAdapter.ts +6 -0
  222. package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +5 -5
  223. package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +5 -5
  224. package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +5 -5
  225. package/src/rules/PrivacyPolicyRule.ts +4 -4
  226. package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +1 -1
  227. package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +1 -1
  228. package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +1 -1
  229. package/src/utils/EntityPrivacyUtils.ts +72 -30
  230. package/src/utils/{testing → __testfixtures__}/PrivacyPolicyRuleTestUtils.ts +26 -26
  231. package/src/{testfixtures → utils/__testfixtures__}/SimpleTestEntity.ts +16 -15
  232. package/src/utils/__testfixtures__/StubCacheAdapter.ts +164 -0
  233. package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapter.ts +19 -12
  234. package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapterProvider.ts +4 -4
  235. package/src/utils/__testfixtures__/TSMockitoExtensions.ts +69 -0
  236. package/src/{testfixtures → utils/__testfixtures__}/TestEntity.ts +21 -15
  237. package/src/{testfixtures → utils/__testfixtures__}/TestEntity2.ts +16 -15
  238. package/src/{testfixtures → utils/__testfixtures__}/TestEntityWithMutationTriggers.ts +23 -22
  239. package/src/{testfixtures → utils/__testfixtures__}/TestViewerContext.ts +1 -1
  240. package/src/utils/{testing → __testfixtures__}/describeFieldTestCase.ts +1 -1
  241. package/src/utils/__tests__/EntityPrivacyUtils-test.ts +81 -113
  242. package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +31 -30
  243. package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +1 -1
  244. package/src/utils/collections/SerializableKeyMap.ts +84 -0
  245. package/src/utils/collections/__tests__/SerializableKeyMap-test.ts +119 -0
  246. package/src/utils/collections/__tests__/sets-test.ts +17 -0
  247. package/src/utils/collections/maps.ts +7 -8
  248. package/src/utils/collections/sets.ts +3 -0
  249. package/src/utils/mergeEntityMutationTriggerConfigurations.ts +5 -5
  250. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +0 -1
  251. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +0 -273
  252. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +0 -1
  253. package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.d.ts +0 -26
  254. package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js +0 -110
  255. package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +0 -1
  256. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +0 -1
  257. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js +0 -401
  258. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +0 -1
  259. package/build/__tests__/ComposedCacheAdapter-test.d.ts +0 -1
  260. package/build/__tests__/ComposedCacheAdapter-test.js +0 -229
  261. package/build/__tests__/ComposedCacheAdapter-test.js.map +0 -1
  262. package/build/__tests__/ComposedSecondaryEntityCache-test.d.ts +0 -1
  263. package/build/__tests__/ComposedSecondaryEntityCache-test.js +0 -66
  264. package/build/__tests__/ComposedSecondaryEntityCache-test.js.map +0 -1
  265. package/build/__tests__/EnforcingEntityAssociationLoader-test.d.ts +0 -1
  266. package/build/__tests__/EnforcingEntityAssociationLoader-test.js +0 -115
  267. package/build/__tests__/EnforcingEntityAssociationLoader-test.js.map +0 -1
  268. package/build/__tests__/EnforcingEntityLoader-test.d.ts +0 -1
  269. package/build/__tests__/EnforcingEntityLoader-test.js +0 -253
  270. package/build/__tests__/EnforcingEntityLoader-test.js.map +0 -1
  271. package/build/__tests__/Entity-test.d.ts +0 -1
  272. package/build/__tests__/Entity-test.js +0 -54
  273. package/build/__tests__/Entity-test.js.map +0 -1
  274. package/build/__tests__/EntityAssociationLoader-test.d.ts +0 -1
  275. package/build/__tests__/EntityAssociationLoader-test.js +0 -30
  276. package/build/__tests__/EntityAssociationLoader-test.js.map +0 -1
  277. package/build/__tests__/EntityCommonUseCases-test.d.ts +0 -1
  278. package/build/__tests__/EntityCommonUseCases-test.js +0 -154
  279. package/build/__tests__/EntityCommonUseCases-test.js.map +0 -1
  280. package/build/__tests__/EntityCompanion-test.d.ts +0 -1
  281. package/build/__tests__/EntityCompanion-test.js +0 -77
  282. package/build/__tests__/EntityCompanion-test.js.map +0 -1
  283. package/build/__tests__/EntityCompanionProvider-test.d.ts +0 -1
  284. package/build/__tests__/EntityCompanionProvider-test.js +0 -54
  285. package/build/__tests__/EntityCompanionProvider-test.js.map +0 -1
  286. package/build/__tests__/EntityConfiguration-test.d.ts +0 -1
  287. package/build/__tests__/EntityConfiguration-test.js +0 -103
  288. package/build/__tests__/EntityConfiguration-test.js.map +0 -1
  289. package/build/__tests__/EntityDatabaseAdapter-test.d.ts +0 -1
  290. package/build/__tests__/EntityDatabaseAdapter-test.js +0 -146
  291. package/build/__tests__/EntityDatabaseAdapter-test.js.map +0 -1
  292. package/build/__tests__/EntityEdges-test.d.ts +0 -1
  293. package/build/__tests__/EntityEdges-test.js +0 -755
  294. package/build/__tests__/EntityEdges-test.js.map +0 -1
  295. package/build/__tests__/EntityFields-test.d.ts +0 -1
  296. package/build/__tests__/EntityFields-test.js +0 -63
  297. package/build/__tests__/EntityFields-test.js.map +0 -1
  298. package/build/__tests__/EntityLoader-test.d.ts +0 -1
  299. package/build/__tests__/EntityLoader-test.js +0 -36
  300. package/build/__tests__/EntityLoader-test.js.map +0 -1
  301. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +0 -1
  302. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +0 -77
  303. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +0 -1
  304. package/build/__tests__/EntityMutator-test.d.ts +0 -1
  305. package/build/__tests__/EntityMutator-test.js +0 -741
  306. package/build/__tests__/EntityMutator-test.js.map +0 -1
  307. package/build/__tests__/EntityPrivacyPolicy-test.d.ts +0 -1
  308. package/build/__tests__/EntityPrivacyPolicy-test.js +0 -463
  309. package/build/__tests__/EntityPrivacyPolicy-test.js.map +0 -1
  310. package/build/__tests__/EntityQueryContext-test.d.ts +0 -1
  311. package/build/__tests__/EntityQueryContext-test.js +0 -116
  312. package/build/__tests__/EntityQueryContext-test.js.map +0 -1
  313. package/build/__tests__/EntitySecondaryCacheLoader-test.d.ts +0 -1
  314. package/build/__tests__/EntitySecondaryCacheLoader-test.js +0 -60
  315. package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +0 -1
  316. package/build/__tests__/EntitySelfReferentialEdges-test.d.ts +0 -1
  317. package/build/__tests__/EntitySelfReferentialEdges-test.js +0 -247
  318. package/build/__tests__/EntitySelfReferentialEdges-test.js.map +0 -1
  319. package/build/__tests__/GenericEntityCacheAdapter-test.d.ts +0 -1
  320. package/build/__tests__/GenericEntityCacheAdapter-test.js +0 -80
  321. package/build/__tests__/GenericEntityCacheAdapter-test.js.map +0 -1
  322. package/build/__tests__/ReadonlyEntity-test.d.ts +0 -1
  323. package/build/__tests__/ReadonlyEntity-test.js +0 -178
  324. package/build/__tests__/ReadonlyEntity-test.js.map +0 -1
  325. package/build/__tests__/ViewerContext-test.d.ts +0 -1
  326. package/build/__tests__/ViewerContext-test.js +0 -30
  327. package/build/__tests__/ViewerContext-test.js.map +0 -1
  328. package/build/__tests__/ViewerScopedEntityCompanion-test.d.ts +0 -1
  329. package/build/__tests__/ViewerScopedEntityCompanion-test.js +0 -20
  330. package/build/__tests__/ViewerScopedEntityCompanion-test.js.map +0 -1
  331. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.d.ts +0 -1
  332. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js +0 -20
  333. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +0 -1
  334. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.d.ts +0 -1
  335. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js +0 -23
  336. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +0 -1
  337. package/build/__tests__/ViewerScopedEntityMutatorFactory-test.d.ts +0 -1
  338. package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js +0 -22
  339. package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +0 -1
  340. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.d.ts +0 -1
  341. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +0 -129
  342. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +0 -1
  343. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.d.ts +0 -1
  344. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +0 -136
  345. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +0 -1
  346. package/build/__tests__/entityUtils-test.d.ts +0 -1
  347. package/build/__tests__/entityUtils-test.js +0 -87
  348. package/build/__tests__/entityUtils-test.js.map +0 -1
  349. package/build/internal/__tests__/EntityDataManager-test.d.ts +0 -1
  350. package/build/internal/__tests__/EntityDataManager-test.js +0 -373
  351. package/build/internal/__tests__/EntityDataManager-test.js.map +0 -1
  352. package/build/internal/__tests__/EntityFieldTransformationUtils-test.d.ts +0 -1
  353. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +0 -136
  354. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +0 -1
  355. package/build/internal/__tests__/ReadThroughEntityCache-test.d.ts +0 -1
  356. package/build/internal/__tests__/ReadThroughEntityCache-test.js +0 -206
  357. package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +0 -1
  358. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.d.ts +0 -1
  359. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +0 -21
  360. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +0 -1
  361. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.d.ts +0 -1
  362. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +0 -21
  363. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +0 -1
  364. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.d.ts +0 -1
  365. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +0 -21
  366. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +0 -1
  367. package/build/testfixtures/DateIDTestEntity.d.ts +0 -19
  368. package/build/testfixtures/DateIDTestEntity.js +0 -48
  369. package/build/testfixtures/DateIDTestEntity.js.map +0 -1
  370. package/build/testfixtures/SimpleTestEntity.d.ts +0 -20
  371. package/build/testfixtures/SimpleTestEntity.js +0 -48
  372. package/build/testfixtures/SimpleTestEntity.js.map +0 -1
  373. package/build/testfixtures/TestEntity.d.ts +0 -30
  374. package/build/testfixtures/TestEntity.js +0 -93
  375. package/build/testfixtures/TestEntity.js.map +0 -1
  376. package/build/testfixtures/TestEntity2.d.ts +0 -20
  377. package/build/testfixtures/TestEntity2.js +0 -51
  378. package/build/testfixtures/TestEntity2.js.map +0 -1
  379. package/build/testfixtures/TestEntityNumberKey.d.ts +0 -19
  380. package/build/testfixtures/TestEntityNumberKey.js +0 -48
  381. package/build/testfixtures/TestEntityNumberKey.js.map +0 -1
  382. package/build/testfixtures/TestEntityWithMutationTriggers.d.ts +0 -36
  383. package/build/testfixtures/TestEntityWithMutationTriggers.js +0 -82
  384. package/build/testfixtures/TestEntityWithMutationTriggers.js.map +0 -1
  385. package/build/testfixtures/TestViewerContext.d.ts +0 -3
  386. package/build/testfixtures/TestViewerContext.js +0 -10
  387. package/build/testfixtures/TestViewerContext.js.map +0 -1
  388. package/build/utils/__tests__/EntityPrivacyUtils-test.d.ts +0 -1
  389. package/build/utils/__tests__/EntityPrivacyUtils-test.js +0 -520
  390. package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +0 -1
  391. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +0 -1
  392. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +0 -181
  393. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +0 -1
  394. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +0 -1
  395. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +0 -26
  396. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +0 -1
  397. package/build/utils/collections/__tests__/maps-test.d.ts +0 -1
  398. package/build/utils/collections/__tests__/maps-test.js +0 -120
  399. package/build/utils/collections/__tests__/maps-test.js.map +0 -1
  400. package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +0 -28
  401. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js +0 -52
  402. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +0 -1
  403. package/build/utils/testing/StubCacheAdapter.d.ts +0 -27
  404. package/build/utils/testing/StubCacheAdapter.js +0 -86
  405. package/build/utils/testing/StubCacheAdapter.js.map +0 -1
  406. package/build/utils/testing/StubDatabaseAdapter.d.ts +0 -25
  407. package/build/utils/testing/StubDatabaseAdapter.js +0 -191
  408. package/build/utils/testing/StubDatabaseAdapter.js.map +0 -1
  409. package/build/utils/testing/StubDatabaseAdapterProvider.d.ts +0 -7
  410. package/build/utils/testing/StubDatabaseAdapterProvider.js +0 -14
  411. package/build/utils/testing/StubDatabaseAdapterProvider.js.map +0 -1
  412. package/build/utils/testing/StubQueryContextProvider.d.ts +0 -7
  413. package/build/utils/testing/StubQueryContextProvider.js +0 -19
  414. package/build/utils/testing/StubQueryContextProvider.js.map +0 -1
  415. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.d.ts +0 -1
  416. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js +0 -42
  417. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js.map +0 -1
  418. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.d.ts +0 -1
  419. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +0 -402
  420. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +0 -1
  421. package/build/utils/testing/createUnitTestEntityCompanionProvider.d.ts +0 -7
  422. package/build/utils/testing/createUnitTestEntityCompanionProvider.js +0 -36
  423. package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +0 -1
  424. package/build/utils/testing/describeFieldTestCase.d.ts +0 -2
  425. package/build/utils/testing/describeFieldTestCase.js +0 -18
  426. package/build/utils/testing/describeFieldTestCase.js.map +0 -1
  427. package/src/testfixtures/DateIDTestEntity.ts +0 -59
  428. package/src/testfixtures/TestEntityNumberKey.ts +0 -59
  429. package/src/utils/testing/StubCacheAdapter.ts +0 -122
  430. package/src/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.ts +0 -42
  431. package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +0 -548
  432. /package/src/utils/{testing → __testfixtures__}/StubQueryContextProvider.ts +0 -0
  433. /package/src/utils/{testing → __testfixtures__}/createUnitTestEntityCompanionProvider.ts +0 -0
@@ -1,8 +1,13 @@
1
1
  import invariant from 'invariant';
2
2
 
3
+ import AuthorizationResultBasedEntityAssociationLoader from './AuthorizationResultBasedEntityAssociationLoader';
4
+ import AuthorizationResultBasedEntityLoader from './AuthorizationResultBasedEntityLoader';
5
+ import EnforcingEntityAssociationLoader from './EnforcingEntityAssociationLoader';
6
+ import EnforcingEntityLoader from './EnforcingEntityLoader';
3
7
  import { IEntityClass } from './Entity';
4
8
  import EntityAssociationLoader from './EntityAssociationLoader';
5
9
  import EntityLoader from './EntityLoader';
10
+ import EntityLoaderUtils from './EntityLoaderUtils';
6
11
  import EntityPrivacyPolicy from './EntityPrivacyPolicy';
7
12
  import { EntityQueryContext } from './EntityQueryContext';
8
13
  import ViewerContext from './ViewerContext';
@@ -16,13 +21,13 @@ import ViewerContext from './ViewerContext';
16
21
  * - Entities representing immutable tables.
17
22
  */
18
23
  export default abstract class ReadonlyEntity<
19
- TFields extends object,
20
- TID extends NonNullable<TFields[TSelectedFields]>,
24
+ TFields extends Record<string, any>,
25
+ TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
21
26
  TViewerContext extends ViewerContext,
22
27
  TSelectedFields extends keyof TFields = keyof TFields,
23
28
  > {
24
29
  private readonly viewerContext: TViewerContext;
25
- private readonly id: TID;
30
+ private readonly id: TFields[TIDField];
26
31
  private readonly databaseFields: Readonly<TFields>;
27
32
  private readonly selectedFields: Readonly<Pick<TFields, TSelectedFields>>;
28
33
 
@@ -47,7 +52,7 @@ export default abstract class ReadonlyEntity<
47
52
  selectedFields,
48
53
  }: {
49
54
  viewerContext: TViewerContext;
50
- id: TID;
55
+ id: TFields[TIDField];
51
56
  databaseFields: Readonly<TFields>;
52
57
  selectedFields: Readonly<Pick<TFields, TSelectedFields>>;
53
58
  }) {
@@ -77,17 +82,38 @@ export default abstract class ReadonlyEntity<
77
82
  /**
78
83
  * @returns the ID of this entity
79
84
  */
80
- getID(): TID {
85
+ getID(): TFields[TIDField] {
81
86
  return this.id;
82
87
  }
83
88
 
84
89
  /**
85
- * @returns EntityAssociationLoader for this entity
90
+ * @returns EnforcingEntityAssociationLoader for this entity
86
91
  */
87
92
  associationLoader(
88
93
  queryContext?: EntityQueryContext,
89
- ): EntityAssociationLoader<TFields, TID, TViewerContext, this, TSelectedFields> {
90
- return new EntityAssociationLoader(this, queryContext);
94
+ ): EnforcingEntityAssociationLoader<TFields, TIDField, TViewerContext, this, TSelectedFields> {
95
+ return new EntityAssociationLoader<TFields, TIDField, TViewerContext, this, TSelectedFields>(
96
+ this,
97
+ queryContext,
98
+ ).enforcing();
99
+ }
100
+
101
+ /**
102
+ * @returns AuthorizationResultBasedEntityAssociationLoader for this entity
103
+ */
104
+ associationLoaderWithAuthorizationResults(
105
+ queryContext?: EntityQueryContext,
106
+ ): AuthorizationResultBasedEntityAssociationLoader<
107
+ TFields,
108
+ TIDField,
109
+ TViewerContext,
110
+ this,
111
+ TSelectedFields
112
+ > {
113
+ return new EntityAssociationLoader<TFields, TIDField, TViewerContext, this, TSelectedFields>(
114
+ this,
115
+ queryContext,
116
+ ).withAuthorizationResults();
91
117
  }
92
118
 
93
119
  /**
@@ -122,13 +148,101 @@ export default abstract class ReadonlyEntity<
122
148
  */
123
149
  static loader<
124
150
  TMFields extends object,
125
- TMID extends NonNullable<TMFields[TMSelectedFields]>,
151
+ TMIDField extends keyof NonNullable<Pick<TMFields, TMSelectedFields>>,
152
+ TMViewerContext extends ViewerContext,
153
+ TMViewerContext2 extends TMViewerContext,
154
+ TMEntity extends ReadonlyEntity<TMFields, TMIDField, TMViewerContext, TMSelectedFields>,
155
+ TMPrivacyPolicy extends EntityPrivacyPolicy<
156
+ TMFields,
157
+ TMIDField,
158
+ TMViewerContext,
159
+ TMEntity,
160
+ TMSelectedFields
161
+ >,
162
+ TMSelectedFields extends keyof TMFields = keyof TMFields,
163
+ >(
164
+ this: IEntityClass<
165
+ TMFields,
166
+ TMIDField,
167
+ TMViewerContext,
168
+ TMEntity,
169
+ TMPrivacyPolicy,
170
+ TMSelectedFields
171
+ >,
172
+ viewerContext: TMViewerContext2,
173
+ queryContext: EntityQueryContext = viewerContext
174
+ .getViewerScopedEntityCompanionForClass(this)
175
+ .getQueryContextProvider()
176
+ .getQueryContext(),
177
+ ): EnforcingEntityLoader<
178
+ TMFields,
179
+ TMIDField,
180
+ TMViewerContext,
181
+ TMEntity,
182
+ TMPrivacyPolicy,
183
+ TMSelectedFields
184
+ > {
185
+ return new EntityLoader(viewerContext, queryContext, this).enforcing();
186
+ }
187
+
188
+ /**
189
+ * Vend loader for loading an entity in a given query context.
190
+ * @param viewerContext - viewer context of loading user
191
+ * @param queryContext - query context in which to perform the load
192
+ */
193
+ static loaderWithAuthorizationResults<
194
+ TMFields extends object,
195
+ TMIDField extends keyof NonNullable<Pick<TMFields, TMSelectedFields>>,
196
+ TMViewerContext extends ViewerContext,
197
+ TMViewerContext2 extends TMViewerContext,
198
+ TMEntity extends ReadonlyEntity<TMFields, TMIDField, TMViewerContext, TMSelectedFields>,
199
+ TMPrivacyPolicy extends EntityPrivacyPolicy<
200
+ TMFields,
201
+ TMIDField,
202
+ TMViewerContext,
203
+ TMEntity,
204
+ TMSelectedFields
205
+ >,
206
+ TMSelectedFields extends keyof TMFields = keyof TMFields,
207
+ >(
208
+ this: IEntityClass<
209
+ TMFields,
210
+ TMIDField,
211
+ TMViewerContext,
212
+ TMEntity,
213
+ TMPrivacyPolicy,
214
+ TMSelectedFields
215
+ >,
216
+ viewerContext: TMViewerContext2,
217
+ queryContext: EntityQueryContext = viewerContext
218
+ .getViewerScopedEntityCompanionForClass(this)
219
+ .getQueryContextProvider()
220
+ .getQueryContext(),
221
+ ): AuthorizationResultBasedEntityLoader<
222
+ TMFields,
223
+ TMIDField,
224
+ TMViewerContext,
225
+ TMEntity,
226
+ TMPrivacyPolicy,
227
+ TMSelectedFields
228
+ > {
229
+ return new EntityLoader(viewerContext, queryContext, this).withAuthorizationResults();
230
+ }
231
+
232
+ /**
233
+ * Vend loader for loading an entity in a given query context.
234
+ * @param viewerContext - viewer context of loading user
235
+ * @param queryContext - query context in which to perform the load
236
+ */
237
+ static loaderUtils<
238
+ TMFields extends object,
239
+ TMIDField extends keyof NonNullable<Pick<TMFields, TMSelectedFields>>,
126
240
  TMViewerContext extends ViewerContext,
127
241
  TMViewerContext2 extends TMViewerContext,
128
- TMEntity extends ReadonlyEntity<TMFields, TMID, TMViewerContext, TMSelectedFields>,
242
+ TMEntity extends ReadonlyEntity<TMFields, TMIDField, TMViewerContext, TMSelectedFields>,
129
243
  TMPrivacyPolicy extends EntityPrivacyPolicy<
130
244
  TMFields,
131
- TMID,
245
+ TMIDField,
132
246
  TMViewerContext,
133
247
  TMEntity,
134
248
  TMSelectedFields
@@ -137,7 +251,7 @@ export default abstract class ReadonlyEntity<
137
251
  >(
138
252
  this: IEntityClass<
139
253
  TMFields,
140
- TMID,
254
+ TMIDField,
141
255
  TMViewerContext,
142
256
  TMEntity,
143
257
  TMPrivacyPolicy,
@@ -148,15 +262,14 @@ export default abstract class ReadonlyEntity<
148
262
  .getViewerScopedEntityCompanionForClass(this)
149
263
  .getQueryContextProvider()
150
264
  .getQueryContext(),
151
- ): EntityLoader<
265
+ ): EntityLoaderUtils<
152
266
  TMFields,
153
- TMID,
267
+ TMIDField,
154
268
  TMViewerContext,
155
- TMViewerContext2,
156
269
  TMEntity,
157
270
  TMPrivacyPolicy,
158
271
  TMSelectedFields
159
272
  > {
160
- return new EntityLoader(viewerContext, queryContext, this);
273
+ return new EntityLoader(viewerContext, queryContext, this).utils();
161
274
  }
162
275
  }
@@ -32,12 +32,12 @@ export default class ViewerContext {
32
32
 
33
33
  getViewerScopedEntityCompanionForClass<
34
34
  TMFields extends object,
35
- TMID extends NonNullable<TMFields[TMSelectedFields]>,
35
+ TMIDField extends keyof NonNullable<Pick<TMFields, TMSelectedFields>>,
36
36
  TMViewerContext extends ViewerContext,
37
- TMEntity extends ReadonlyEntity<TMFields, TMID, TMViewerContext, TMSelectedFields>,
37
+ TMEntity extends ReadonlyEntity<TMFields, TMIDField, TMViewerContext, TMSelectedFields>,
38
38
  TMPrivacyPolicy extends EntityPrivacyPolicy<
39
39
  TMFields,
40
- TMID,
40
+ TMIDField,
41
41
  TMViewerContext,
42
42
  TMEntity,
43
43
  TMSelectedFields
@@ -46,7 +46,7 @@ export default class ViewerContext {
46
46
  >(
47
47
  entityClass: IEntityClass<
48
48
  TMFields,
49
- TMID,
49
+ TMIDField,
50
50
  TMViewerContext,
51
51
  TMEntity,
52
52
  TMPrivacyPolicy,
@@ -54,7 +54,7 @@ export default class ViewerContext {
54
54
  >,
55
55
  ): ViewerScopedEntityCompanion<
56
56
  TMFields,
57
- TMID,
57
+ TMIDField,
58
58
  TMViewerContext,
59
59
  TMEntity,
60
60
  TMPrivacyPolicy,
@@ -12,13 +12,13 @@ import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
12
12
  * from the viewer-scoped entity companion provider.
13
13
  */
14
14
  export default class ViewerScopedEntityCompanion<
15
- TFields extends object,
16
- TID extends NonNullable<TFields[TSelectedFields]>,
15
+ TFields extends Record<string, any>,
16
+ TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
17
17
  TViewerContext extends ViewerContext,
18
- TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
18
+ TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
19
19
  TPrivacyPolicy extends EntityPrivacyPolicy<
20
20
  TFields,
21
- TID,
21
+ TIDField,
22
22
  TViewerContext,
23
23
  TEntity,
24
24
  TSelectedFields
@@ -28,7 +28,7 @@ export default class ViewerScopedEntityCompanion<
28
28
  constructor(
29
29
  public readonly entityCompanion: EntityCompanion<
30
30
  TFields,
31
- TID,
31
+ TIDField,
32
32
  TViewerContext,
33
33
  TEntity,
34
34
  TPrivacyPolicy,
@@ -42,7 +42,7 @@ export default class ViewerScopedEntityCompanion<
42
42
  */
43
43
  getLoaderFactory(): ViewerScopedEntityLoaderFactory<
44
44
  TFields,
45
- TID,
45
+ TIDField,
46
46
  TViewerContext,
47
47
  TEntity,
48
48
  TPrivacyPolicy,
@@ -59,7 +59,7 @@ export default class ViewerScopedEntityCompanion<
59
59
  */
60
60
  getMutatorFactory(): ViewerScopedEntityMutatorFactory<
61
61
  TFields,
62
- TID,
62
+ TIDField,
63
63
  TViewerContext,
64
64
  TEntity,
65
65
  TPrivacyPolicy,
@@ -21,13 +21,13 @@ export default class ViewerScopedEntityCompanionProvider {
21
21
  * @param entityClass - entity class to load
22
22
  */
23
23
  getViewerScopedCompanionForEntity<
24
- TFields extends object,
25
- TID extends NonNullable<TFields[TSelectedFields]>,
24
+ TFields extends Record<string, any>,
25
+ TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
26
26
  TViewerContext extends ViewerContext,
27
- TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
27
+ TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
28
28
  TPrivacyPolicy extends EntityPrivacyPolicy<
29
29
  TFields,
30
- TID,
30
+ TIDField,
31
31
  TViewerContext,
32
32
  TEntity,
33
33
  TSelectedFields
@@ -36,7 +36,7 @@ export default class ViewerScopedEntityCompanionProvider {
36
36
  >(
37
37
  entityClass: IEntityClass<
38
38
  TFields,
39
- TID,
39
+ TIDField,
40
40
  TViewerContext,
41
41
  TEntity,
42
42
  TPrivacyPolicy,
@@ -44,7 +44,7 @@ export default class ViewerScopedEntityCompanionProvider {
44
44
  >,
45
45
  ): ViewerScopedEntityCompanion<
46
46
  TFields,
47
- TID,
47
+ TIDField,
48
48
  TViewerContext,
49
49
  TEntity,
50
50
  TPrivacyPolicy,
@@ -9,13 +9,13 @@ import ViewerContext from './ViewerContext';
9
9
  * Provides a cleaner API for loading entities by passing through the ViewerContext.
10
10
  */
11
11
  export default class ViewerScopedEntityLoaderFactory<
12
- TFields extends object,
13
- TID extends NonNullable<TFields[TSelectedFields]>,
12
+ TFields extends Record<string, any>,
13
+ TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
14
14
  TViewerContext extends ViewerContext,
15
- TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
15
+ TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
16
16
  TPrivacyPolicy extends EntityPrivacyPolicy<
17
17
  TFields,
18
- TID,
18
+ TIDField,
19
19
  TViewerContext,
20
20
  TEntity,
21
21
  TSelectedFields
@@ -25,7 +25,7 @@ export default class ViewerScopedEntityLoaderFactory<
25
25
  constructor(
26
26
  private readonly entityLoaderFactory: EntityLoaderFactory<
27
27
  TFields,
28
- TID,
28
+ TIDField,
29
29
  TViewerContext,
30
30
  TEntity,
31
31
  TPrivacyPolicy,
@@ -38,14 +38,14 @@ export default class ViewerScopedEntityLoaderFactory<
38
38
  queryContext: EntityQueryContext,
39
39
  privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext<
40
40
  TFields,
41
- TID,
41
+ TIDField,
42
42
  TViewerContext,
43
43
  TEntity,
44
44
  TSelectedFields
45
45
  >,
46
46
  ): AuthorizationResultBasedEntityLoader<
47
47
  TFields,
48
- TID,
48
+ TIDField,
49
49
  TViewerContext,
50
50
  TEntity,
51
51
  TPrivacyPolicy,
@@ -13,13 +13,13 @@ import ViewerContext from './ViewerContext';
13
13
  * Provides a cleaner API for mutating entities by passing through the ViewerContext.
14
14
  */
15
15
  export default class ViewerScopedEntityMutatorFactory<
16
- TFields extends object,
17
- TID extends NonNullable<TFields[TSelectedFields]>,
16
+ TFields extends Record<string, any>,
17
+ TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
18
18
  TViewerContext extends ViewerContext,
19
- TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
19
+ TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
20
20
  TPrivacyPolicy extends EntityPrivacyPolicy<
21
21
  TFields,
22
- TID,
22
+ TIDField,
23
23
  TViewerContext,
24
24
  TEntity,
25
25
  TSelectedFields
@@ -29,7 +29,7 @@ export default class ViewerScopedEntityMutatorFactory<
29
29
  constructor(
30
30
  private readonly entityMutatorFactory: EntityMutatorFactory<
31
31
  TFields,
32
- TID,
32
+ TIDField,
33
33
  TViewerContext,
34
34
  TEntity,
35
35
  TPrivacyPolicy,
@@ -42,7 +42,7 @@ export default class ViewerScopedEntityMutatorFactory<
42
42
  queryContext: EntityQueryContext,
43
43
  ): AuthorizationResultBasedCreateMutator<
44
44
  TFields,
45
- TID,
45
+ TIDField,
46
46
  TViewerContext,
47
47
  TEntity,
48
48
  TPrivacyPolicy,
@@ -56,7 +56,7 @@ export default class ViewerScopedEntityMutatorFactory<
56
56
  queryContext: EntityQueryContext,
57
57
  ): AuthorizationResultBasedUpdateMutator<
58
58
  TFields,
59
- TID,
59
+ TIDField,
60
60
  TViewerContext,
61
61
  TEntity,
62
62
  TPrivacyPolicy,
@@ -70,7 +70,7 @@ export default class ViewerScopedEntityMutatorFactory<
70
70
  queryContext: EntityQueryContext,
71
71
  ): AuthorizationResultBasedDeleteMutator<
72
72
  TFields,
73
- TID,
73
+ TIDField,
74
74
  TViewerContext,
75
75
  TEntity,
76
76
  TPrivacyPolicy,