@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
@@ -23,7 +23,7 @@ import {
23
23
  getCanViewerDeleteResultAsync,
24
24
  getCanViewerUpdateResultAsync,
25
25
  } from '../EntityPrivacyUtils';
26
- import { createUnitTestEntityCompanionProvider } from '../testing/createUnitTestEntityCompanionProvider';
26
+ import { createUnitTestEntityCompanionProvider } from '../__testfixtures__/createUnitTestEntityCompanionProvider';
27
27
 
28
28
  function assertEntityPrivacyEvaluationResultFailure(
29
29
  evaluationResult: EntityPrivacyEvaluationResult,
@@ -50,9 +50,7 @@ describe(canViewerUpdateAsync, () => {
50
50
  it('appropriately executes update privacy policy', async () => {
51
51
  const companionProvider = createUnitTestEntityCompanionProvider();
52
52
  const viewerContext = new ViewerContext(companionProvider);
53
- const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext)
54
- .enforcing()
55
- .createAsync();
53
+ const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext).createAsync();
56
54
  const canViewerUpdate = await canViewerUpdateAsync(SimpleTestDenyDeleteEntity, testEntity);
57
55
  expect(canViewerUpdate).toBe(true);
58
56
  const canViewerUpdateResult = await getCanViewerUpdateResultAsync(
@@ -65,9 +63,7 @@ describe(canViewerUpdateAsync, () => {
65
63
  it('denies when policy denies', async () => {
66
64
  const companionProvider = createUnitTestEntityCompanionProvider();
67
65
  const viewerContext = new ViewerContext(companionProvider);
68
- const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
69
- .enforcing()
70
- .createAsync();
66
+ const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
71
67
  const canViewerUpdate = await canViewerUpdateAsync(SimpleTestDenyUpdateEntity, testEntity);
72
68
  expect(canViewerUpdate).toBe(false);
73
69
  const canViewerUpdateResult = await getCanViewerUpdateResultAsync(
@@ -83,9 +79,7 @@ describe(canViewerUpdateAsync, () => {
83
79
  it('rethrows non-authorization errors', async () => {
84
80
  const companionProvider = createUnitTestEntityCompanionProvider();
85
81
  const viewerContext = new ViewerContext(companionProvider);
86
- const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext)
87
- .enforcing()
88
- .createAsync();
82
+ const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext).createAsync();
89
83
  await expect(canViewerUpdateAsync(SimpleTestThrowOtherErrorEntity, testEntity)).rejects.toThrow(
90
84
  'update error',
91
85
  );
@@ -99,9 +93,7 @@ describe(canViewerDeleteAsync, () => {
99
93
  it('appropriately executes update privacy policy', async () => {
100
94
  const companionProvider = createUnitTestEntityCompanionProvider();
101
95
  const viewerContext = new ViewerContext(companionProvider);
102
- const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
103
- .enforcing()
104
- .createAsync();
96
+ const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
105
97
  const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
106
98
  expect(canViewerDelete).toBe(true);
107
99
  const canViewerDeleteResult = await getCanViewerDeleteResultAsync(
@@ -114,9 +106,7 @@ describe(canViewerDeleteAsync, () => {
114
106
  it('denies when policy denies', async () => {
115
107
  const companionProvider = createUnitTestEntityCompanionProvider();
116
108
  const viewerContext = new ViewerContext(companionProvider);
117
- const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext)
118
- .enforcing()
119
- .createAsync();
109
+ const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext).createAsync();
120
110
  const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyDeleteEntity, testEntity);
121
111
  expect(canViewerDelete).toBe(false);
122
112
  const canViewerDeleteResult = await getCanViewerDeleteResultAsync(
@@ -132,12 +122,9 @@ describe(canViewerDeleteAsync, () => {
132
122
  it('denies when recursive policy denies for CASCADE_DELETE', async () => {
133
123
  const companionProvider = createUnitTestEntityCompanionProvider();
134
124
  const viewerContext = new ViewerContext(companionProvider);
135
- const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
136
- .enforcing()
137
- .createAsync();
125
+ const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
138
126
  // add another entity referencing testEntity that would cascade deletion to itself when testEntity is deleted
139
127
  const leafEntity = await LeafDenyDeleteEntity.creator(viewerContext)
140
- .enforcing()
141
128
  .setField('simple_test_deny_update_cascade_delete_id', testEntity.getID())
142
129
  .createAsync();
143
130
  const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
@@ -155,12 +142,9 @@ describe(canViewerDeleteAsync, () => {
155
142
  it('denies when recursive policy denies for SET_NULL', async () => {
156
143
  const companionProvider = createUnitTestEntityCompanionProvider();
157
144
  const viewerContext = new ViewerContext(companionProvider);
158
- const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
159
- .enforcing()
160
- .createAsync();
145
+ const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
161
146
  // add another entity referencing testEntity that would set null to its column when testEntity is deleted
162
147
  const leafEntity = await LeafDenyUpdateEntity.creator(viewerContext)
163
- .enforcing()
164
148
  .setField('simple_test_deny_update_set_null_id', testEntity.getID())
165
149
  .createAsync();
166
150
  const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
@@ -178,17 +162,13 @@ describe(canViewerDeleteAsync, () => {
178
162
  it('allows when recursive policy allows for CASCADE_DELETE and SET_NULL', async () => {
179
163
  const companionProvider = createUnitTestEntityCompanionProvider();
180
164
  const viewerContext = new ViewerContext(companionProvider);
181
- const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
182
- .enforcing()
183
- .createAsync();
165
+ const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
184
166
  // add another entity referencing testEntity that would cascade deletion to itself when testEntity is deleted
185
167
  await LeafDenyUpdateEntity.creator(viewerContext)
186
- .enforcing()
187
168
  .setField('simple_test_deny_update_cascade_delete_id', testEntity.getID())
188
169
  .createAsync();
189
170
  // add another entity referencing testEntity that would set null to its column when testEntity is deleted
190
171
  await LeafDenyDeleteEntity.creator(viewerContext)
191
- .enforcing()
192
172
  .setField('simple_test_deny_update_set_null_id', testEntity.getID())
193
173
  .createAsync();
194
174
 
@@ -204,9 +184,7 @@ describe(canViewerDeleteAsync, () => {
204
184
  it('rethrows non-authorization errors', async () => {
205
185
  const companionProvider = createUnitTestEntityCompanionProvider();
206
186
  const viewerContext = new ViewerContext(companionProvider);
207
- const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext)
208
- .enforcing()
209
- .createAsync();
187
+ const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext).createAsync();
210
188
  await expect(
211
189
  canViewerDeleteAsync(SimpleTestThrowOtherErrorEntity, testEntity),
212
190
  ).rejects.toThrowError('delete error');
@@ -218,11 +196,8 @@ describe(canViewerDeleteAsync, () => {
218
196
  it('returns false when edge cannot be read', async () => {
219
197
  const companionProvider = createUnitTestEntityCompanionProvider();
220
198
  const viewerContext = new ViewerContext(companionProvider);
221
- const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
222
- .enforcing()
223
- .createAsync();
199
+ const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
224
200
  const leafEntity = await LeafDenyReadEntity.creator(viewerContext)
225
- .enforcing()
226
201
  .setField('simple_test_id', testEntity.getID())
227
202
  .createAsync();
228
203
  const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
@@ -240,11 +215,8 @@ describe(canViewerDeleteAsync, () => {
240
215
  it('rethrows non-authorization edge read errors', async () => {
241
216
  const companionProvider = createUnitTestEntityCompanionProvider();
242
217
  const viewerContext = new ViewerContext(companionProvider);
243
- const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
244
- .enforcing()
245
- .createAsync();
218
+ const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
246
219
  await SimpleTestThrowOtherErrorEntity.creator(viewerContext)
247
- .enforcing()
248
220
  .setField('simple_test_id', testEntity.getID())
249
221
  .createAsync();
250
222
  await expect(canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity)).rejects.toThrowError(
@@ -261,11 +233,11 @@ describe(canViewerDeleteAsync, () => {
261
233
  const canViewerDelete = await viewerContext.runInTransactionForDatabaseAdaptorFlavorAsync(
262
234
  'postgres',
263
235
  async (queryContext) => {
264
- const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext, queryContext)
265
- .enforcing()
266
- .createAsync();
236
+ const testEntity = await SimpleTestDenyUpdateEntity.creator(
237
+ viewerContext,
238
+ queryContext,
239
+ ).createAsync();
267
240
  await LeafDenyReadEntity.creator(viewerContext, queryContext)
268
- .enforcing()
269
241
  .setField('simple_test_id', testEntity.getID())
270
242
  .createAsync();
271
243
  // this would fail if transactions weren't supported or correctly passed through
@@ -277,11 +249,11 @@ describe(canViewerDeleteAsync, () => {
277
249
  const canViewerDeleteResult = await viewerContext.runInTransactionForDatabaseAdaptorFlavorAsync(
278
250
  'postgres',
279
251
  async (queryContext) => {
280
- const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext, queryContext)
281
- .enforcing()
282
- .createAsync();
252
+ const testEntity = await SimpleTestDenyUpdateEntity.creator(
253
+ viewerContext,
254
+ queryContext,
255
+ ).createAsync();
283
256
  await LeafDenyReadEntity.creator(viewerContext, queryContext)
284
- .enforcing()
285
257
  .setField('simple_test_id', testEntity.getID())
286
258
  .createAsync();
287
259
  // this would fail if transactions weren't supported or correctly passed through
@@ -324,54 +296,54 @@ type TestEntityThrowOtherErrorFields = {
324
296
  };
325
297
 
326
298
  class DenyUpdateEntityPrivacyPolicy<
327
- TFields extends object,
328
- TID extends NonNullable<TFields[TSelectedFields]>,
299
+ TFields extends Record<'id', any>,
300
+ TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
329
301
  TViewerContext extends ViewerContext,
330
- TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
302
+ TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
331
303
  TSelectedFields extends keyof TFields = keyof TFields,
332
- > extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields> {
304
+ > extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
333
305
  protected override readonly readRules = [
334
- new AlwaysAllowPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
306
+ new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
335
307
  ];
336
308
  protected override readonly createRules = [
337
- new AlwaysAllowPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
309
+ new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
338
310
  ];
339
311
  protected override readonly updateRules = [
340
- new AlwaysDenyPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
312
+ new AlwaysDenyPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
341
313
  ];
342
314
  protected override readonly deleteRules = [
343
- new AlwaysAllowPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
315
+ new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
344
316
  ];
345
317
  }
346
318
 
347
319
  class DenyDeleteEntityPrivacyPolicy<
348
- TFields extends object,
349
- TID extends NonNullable<TFields[TSelectedFields]>,
320
+ TFields extends Record<'id', any>,
321
+ TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
350
322
  TViewerContext extends ViewerContext,
351
- TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
323
+ TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
352
324
  TSelectedFields extends keyof TFields = keyof TFields,
353
- > extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields> {
325
+ > extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
354
326
  protected override readonly readRules = [
355
- new AlwaysAllowPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
327
+ new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
356
328
  ];
357
329
  protected override readonly createRules = [
358
- new AlwaysAllowPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
330
+ new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
359
331
  ];
360
332
  protected override readonly updateRules = [
361
- new AlwaysAllowPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
333
+ new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
362
334
  ];
363
335
  protected override readonly deleteRules = [
364
- new AlwaysDenyPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
336
+ new AlwaysDenyPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
365
337
  ];
366
338
  }
367
339
 
368
340
  class ThrowOtherErrorEntityPrivacyPolicy<
369
- TFields extends object,
370
- TID extends NonNullable<TFields[TSelectedFields]>,
341
+ TFields extends Record<'id', any>,
342
+ TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
371
343
  TViewerContext extends ViewerContext,
372
- TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
344
+ TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
373
345
  TSelectedFields extends keyof TFields = keyof TFields,
374
- > extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields> {
346
+ > extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
375
347
  protected override readonly readRules = [
376
348
  {
377
349
  async evaluateAsync(
@@ -379,7 +351,7 @@ class ThrowOtherErrorEntityPrivacyPolicy<
379
351
  _queryContext: EntityQueryContext,
380
352
  evaluationContext: EntityPrivacyPolicyEvaluationContext<
381
353
  TFields,
382
- TID,
354
+ TIDField,
383
355
  TViewerContext,
384
356
  TEntity,
385
357
  TSelectedFields
@@ -392,10 +364,10 @@ class ThrowOtherErrorEntityPrivacyPolicy<
392
364
  return RuleEvaluationResult.SKIP;
393
365
  },
394
366
  },
395
- new AlwaysAllowPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
367
+ new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
396
368
  ];
397
369
  protected override readonly createRules = [
398
- new AlwaysAllowPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
370
+ new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
399
371
  ];
400
372
  protected override readonly updateRules = [
401
373
  {
@@ -414,12 +386,12 @@ class ThrowOtherErrorEntityPrivacyPolicy<
414
386
  }
415
387
 
416
388
  class DenyReadEntityPrivacyPolicy<
417
- TFields extends object,
418
- TID extends NonNullable<TFields[TSelectedFields]>,
389
+ TFields extends Record<'id', any>,
390
+ TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
419
391
  TViewerContext extends ViewerContext,
420
- TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
392
+ TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
421
393
  TSelectedFields extends keyof TFields = keyof TFields,
422
- > extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields> {
394
+ > extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
423
395
  protected override readonly readRules = [
424
396
  {
425
397
  async evaluateAsync(
@@ -427,7 +399,7 @@ class DenyReadEntityPrivacyPolicy<
427
399
  queryContext: EntityQueryContext,
428
400
  evaluationContext: EntityPrivacyPolicyEvaluationContext<
429
401
  TFields,
430
- TID,
402
+ TIDField,
431
403
  TViewerContext,
432
404
  TEntity,
433
405
  TSelectedFields
@@ -444,37 +416,38 @@ class DenyReadEntityPrivacyPolicy<
444
416
  },
445
417
  ];
446
418
  protected override readonly createRules = [
447
- new AlwaysAllowPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
419
+ new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
448
420
  ];
449
421
  protected override readonly updateRules = [
450
- new AlwaysAllowPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
422
+ new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
451
423
  ];
452
424
  protected override readonly deleteRules = [
453
- new AlwaysAllowPrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>(),
425
+ new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
454
426
  ];
455
427
  }
456
428
 
457
- class LeafDenyUpdateEntity extends Entity<TestLeafDenyUpdateFields, string, ViewerContext> {
429
+ class LeafDenyUpdateEntity extends Entity<TestLeafDenyUpdateFields, 'id', ViewerContext> {
458
430
  static defineCompanionDefinition(): EntityCompanionDefinition<
459
431
  TestLeafDenyUpdateFields,
460
- string,
432
+ 'id',
461
433
  ViewerContext,
462
434
  LeafDenyUpdateEntity,
463
435
  DenyUpdateEntityPrivacyPolicy<
464
436
  TestLeafDenyUpdateFields,
465
- string,
437
+ 'id',
466
438
  ViewerContext,
467
439
  LeafDenyUpdateEntity
468
440
  >
469
441
  > {
470
442
  return {
471
443
  entityClass: LeafDenyUpdateEntity,
472
- entityConfiguration: new EntityConfiguration<TestLeafDenyUpdateFields>({
444
+ entityConfiguration: new EntityConfiguration<TestLeafDenyUpdateFields, 'id'>({
473
445
  idField: 'id',
474
446
  tableName: 'leaf_1',
475
447
  schema: {
476
448
  id: new UUIDField({
477
449
  columnName: 'custom_id',
450
+ cache: false,
478
451
  }),
479
452
  // to ensure edge traversal doesn't process other edges
480
453
  unused_other_association: new UUIDField({
@@ -509,27 +482,28 @@ class LeafDenyUpdateEntity extends Entity<TestLeafDenyUpdateFields, string, View
509
482
  }
510
483
  }
511
484
 
512
- class LeafDenyDeleteEntity extends Entity<TestLeafDenyDeleteFields, string, ViewerContext> {
485
+ class LeafDenyDeleteEntity extends Entity<TestLeafDenyDeleteFields, 'id', ViewerContext> {
513
486
  static defineCompanionDefinition(): EntityCompanionDefinition<
514
487
  TestLeafDenyDeleteFields,
515
- string,
488
+ 'id',
516
489
  ViewerContext,
517
490
  LeafDenyDeleteEntity,
518
491
  DenyDeleteEntityPrivacyPolicy<
519
492
  TestLeafDenyDeleteFields,
520
- string,
493
+ 'id',
521
494
  ViewerContext,
522
495
  LeafDenyDeleteEntity
523
496
  >
524
497
  > {
525
498
  return {
526
499
  entityClass: LeafDenyDeleteEntity,
527
- entityConfiguration: new EntityConfiguration<TestLeafDenyDeleteFields>({
500
+ entityConfiguration: new EntityConfiguration<TestLeafDenyDeleteFields, 'id'>({
528
501
  idField: 'id',
529
502
  tableName: 'leaf_2',
530
503
  schema: {
531
504
  id: new UUIDField({
532
505
  columnName: 'custom_id',
506
+ cache: false,
533
507
  }),
534
508
  // deletion behavior should fail since this entity can't be deleted
535
509
  simple_test_deny_update_cascade_delete_id: new UUIDField({
@@ -556,23 +530,24 @@ class LeafDenyDeleteEntity extends Entity<TestLeafDenyDeleteFields, string, View
556
530
  }
557
531
  }
558
532
 
559
- class LeafDenyReadEntity extends Entity<TestLeafDenyReadFields, string, ViewerContext> {
533
+ class LeafDenyReadEntity extends Entity<TestLeafDenyReadFields, 'id', ViewerContext> {
560
534
  static defineCompanionDefinition(): EntityCompanionDefinition<
561
535
  TestLeafDenyReadFields,
562
- string,
536
+ 'id',
563
537
  ViewerContext,
564
538
  LeafDenyReadEntity,
565
- DenyReadEntityPrivacyPolicy<TestLeafDenyReadFields, string, ViewerContext, LeafDenyReadEntity>
539
+ DenyReadEntityPrivacyPolicy<TestLeafDenyReadFields, 'id', ViewerContext, LeafDenyReadEntity>
566
540
  > {
567
541
  return {
568
542
  entityClass: LeafDenyReadEntity,
569
- entityConfiguration: new EntityConfiguration<TestLeafDenyReadFields>({
543
+ entityConfiguration: new EntityConfiguration<TestLeafDenyReadFields, 'id'>({
570
544
  idField: 'id',
571
545
  tableName: 'leaf_4',
572
546
  inboundEdges: [],
573
547
  schema: {
574
548
  id: new UUIDField({
575
549
  columnName: 'custom_id',
550
+ cache: false,
576
551
  }),
577
552
  simple_test_id: new UUIDField({
578
553
  columnName: 'simple_test_id',
@@ -591,22 +566,17 @@ class LeafDenyReadEntity extends Entity<TestLeafDenyReadFields, string, ViewerCo
591
566
  }
592
567
  }
593
568
 
594
- class SimpleTestDenyUpdateEntity extends Entity<TestEntityFields, string, ViewerContext> {
569
+ class SimpleTestDenyUpdateEntity extends Entity<TestEntityFields, 'id', ViewerContext> {
595
570
  static defineCompanionDefinition(): EntityCompanionDefinition<
596
571
  TestEntityFields,
597
- string,
572
+ 'id',
598
573
  ViewerContext,
599
574
  SimpleTestDenyUpdateEntity,
600
- DenyUpdateEntityPrivacyPolicy<
601
- TestEntityFields,
602
- string,
603
- ViewerContext,
604
- SimpleTestDenyUpdateEntity
605
- >
575
+ DenyUpdateEntityPrivacyPolicy<TestEntityFields, 'id', ViewerContext, SimpleTestDenyUpdateEntity>
606
576
  > {
607
577
  return {
608
578
  entityClass: SimpleTestDenyUpdateEntity,
609
- entityConfiguration: new EntityConfiguration<TestEntityFields>({
579
+ entityConfiguration: new EntityConfiguration<TestEntityFields, 'id'>({
610
580
  idField: 'id',
611
581
  tableName: 'blah',
612
582
  inboundEdges: [
@@ -618,6 +588,7 @@ class SimpleTestDenyUpdateEntity extends Entity<TestEntityFields, string, Viewer
618
588
  schema: {
619
589
  id: new UUIDField({
620
590
  columnName: 'custom_id',
591
+ cache: false,
621
592
  }),
622
593
  },
623
594
  databaseAdapterFlavor: 'postgres',
@@ -628,22 +599,17 @@ class SimpleTestDenyUpdateEntity extends Entity<TestEntityFields, string, Viewer
628
599
  }
629
600
  }
630
601
 
631
- class SimpleTestDenyDeleteEntity extends Entity<TestEntityFields, string, ViewerContext> {
602
+ class SimpleTestDenyDeleteEntity extends Entity<TestEntityFields, 'id', ViewerContext> {
632
603
  static defineCompanionDefinition(): EntityCompanionDefinition<
633
604
  TestEntityFields,
634
- string,
605
+ 'id',
635
606
  ViewerContext,
636
607
  SimpleTestDenyDeleteEntity,
637
- DenyDeleteEntityPrivacyPolicy<
638
- TestEntityFields,
639
- string,
640
- ViewerContext,
641
- SimpleTestDenyDeleteEntity
642
- >
608
+ DenyDeleteEntityPrivacyPolicy<TestEntityFields, 'id', ViewerContext, SimpleTestDenyDeleteEntity>
643
609
  > {
644
610
  return {
645
611
  entityClass: SimpleTestDenyDeleteEntity,
646
- entityConfiguration: new EntityConfiguration<TestEntityFields>({
612
+ entityConfiguration: new EntityConfiguration<TestEntityFields, 'id'>({
647
613
  idField: 'id',
648
614
  tableName: 'blah_2',
649
615
  inboundEdges: [
@@ -655,6 +621,7 @@ class SimpleTestDenyDeleteEntity extends Entity<TestEntityFields, string, Viewer
655
621
  schema: {
656
622
  id: new UUIDField({
657
623
  columnName: 'custom_id',
624
+ cache: false,
658
625
  }),
659
626
  },
660
627
  databaseAdapterFlavor: 'postgres',
@@ -667,30 +634,31 @@ class SimpleTestDenyDeleteEntity extends Entity<TestEntityFields, string, Viewer
667
634
 
668
635
  class SimpleTestThrowOtherErrorEntity extends Entity<
669
636
  TestEntityThrowOtherErrorFields,
670
- string,
637
+ 'id',
671
638
  ViewerContext
672
639
  > {
673
640
  static defineCompanionDefinition(): EntityCompanionDefinition<
674
641
  TestEntityThrowOtherErrorFields,
675
- string,
642
+ 'id',
676
643
  ViewerContext,
677
644
  SimpleTestThrowOtherErrorEntity,
678
645
  ThrowOtherErrorEntityPrivacyPolicy<
679
646
  TestEntityThrowOtherErrorFields,
680
- string,
647
+ 'id',
681
648
  ViewerContext,
682
649
  SimpleTestThrowOtherErrorEntity
683
650
  >
684
651
  > {
685
652
  return {
686
653
  entityClass: SimpleTestThrowOtherErrorEntity,
687
- entityConfiguration: new EntityConfiguration<TestEntityThrowOtherErrorFields>({
654
+ entityConfiguration: new EntityConfiguration<TestEntityThrowOtherErrorFields, 'id'>({
688
655
  idField: 'id',
689
656
  tableName: 'blah_3',
690
657
  inboundEdges: [],
691
658
  schema: {
692
659
  id: new UUIDField({
693
660
  columnName: 'custom_id',
661
+ cache: false,
694
662
  }),
695
663
  simple_test_id: new UUIDField({
696
664
  columnName: 'simple_test_id',