@expo/entity 0.41.0 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/build/AuthorizationResultBasedEntityAssociationLoader.d.ts +16 -16
  2. package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -1
  3. package/build/AuthorizationResultBasedEntityLoader.d.ts +39 -67
  4. package/build/AuthorizationResultBasedEntityLoader.js +85 -62
  5. package/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
  6. package/build/AuthorizationResultBasedEntityMutator.d.ts +16 -16
  7. package/build/AuthorizationResultBasedEntityMutator.js.map +1 -1
  8. package/build/ComposedEntityCacheAdapter.d.ts +7 -6
  9. package/build/ComposedEntityCacheAdapter.js +28 -28
  10. package/build/ComposedEntityCacheAdapter.js.map +1 -1
  11. package/build/ComposedSecondaryEntityCache.d.ts +1 -1
  12. package/build/ComposedSecondaryEntityCache.js.map +1 -1
  13. package/build/EnforcingEntityAssociationLoader.d.ts +15 -15
  14. package/build/EnforcingEntityAssociationLoader.js.map +1 -1
  15. package/build/EnforcingEntityCreator.d.ts +2 -2
  16. package/build/EnforcingEntityDeleter.d.ts +2 -2
  17. package/build/EnforcingEntityLoader.d.ts +104 -18
  18. package/build/EnforcingEntityLoader.js +113 -12
  19. package/build/EnforcingEntityLoader.js.map +1 -1
  20. package/build/EnforcingEntityUpdater.d.ts +2 -2
  21. package/build/Entity.d.ts +10 -10
  22. package/build/Entity.js.map +1 -1
  23. package/build/EntityAssociationLoader.d.ts +3 -3
  24. package/build/EntityCompanion.d.ts +5 -5
  25. package/build/EntityCompanion.js.map +1 -1
  26. package/build/EntityCompanionProvider.d.ts +6 -6
  27. package/build/EntityCompanionProvider.js.map +1 -1
  28. package/build/EntityConfiguration.d.ts +46 -5
  29. package/build/EntityConfiguration.js +39 -1
  30. package/build/EntityConfiguration.js.map +1 -1
  31. package/build/EntityCreator.d.ts +4 -4
  32. package/build/EntityDatabaseAdapter.d.ts +15 -14
  33. package/build/EntityDatabaseAdapter.js +20 -12
  34. package/build/EntityDatabaseAdapter.js.map +1 -1
  35. package/build/EntityDeleter.d.ts +4 -4
  36. package/build/EntityFieldDefinition.d.ts +20 -10
  37. package/build/EntityFieldDefinition.js +3 -1
  38. package/build/EntityFieldDefinition.js.map +1 -1
  39. package/build/EntityFields.d.ts +14 -12
  40. package/build/EntityFields.js.map +1 -1
  41. package/build/EntityLoader.d.ts +5 -5
  42. package/build/EntityLoaderFactory.d.ts +3 -3
  43. package/build/EntityLoaderFactory.js.map +1 -1
  44. package/build/EntityLoaderUtils.d.ts +2 -2
  45. package/build/EntityLoaderUtils.js +27 -1
  46. package/build/EntityLoaderUtils.js.map +1 -1
  47. package/build/EntityMutationInfo.d.ts +2 -2
  48. package/build/EntityMutationTriggerConfiguration.d.ts +14 -14
  49. package/build/EntityMutationTriggerConfiguration.js.map +1 -1
  50. package/build/EntityMutationValidator.d.ts +2 -2
  51. package/build/EntityMutatorFactory.d.ts +5 -5
  52. package/build/EntityMutatorFactory.js.map +1 -1
  53. package/build/EntityPrivacyPolicy.d.ts +14 -14
  54. package/build/EntityPrivacyPolicy.js.map +1 -1
  55. package/build/EntitySecondaryCacheLoader.d.ts +4 -4
  56. package/build/EntityUpdater.d.ts +4 -4
  57. package/build/GenericEntityCacheAdapter.d.ts +7 -6
  58. package/build/GenericEntityCacheAdapter.js +13 -14
  59. package/build/GenericEntityCacheAdapter.js.map +1 -1
  60. package/build/GenericSecondaryEntityCache.d.ts +3 -3
  61. package/build/GenericSecondaryEntityCache.js.map +1 -1
  62. package/build/IEntityCacheAdapter.d.ts +17 -16
  63. package/build/IEntityCacheAdapterProvider.d.ts +1 -1
  64. package/build/IEntityDatabaseAdapterProvider.d.ts +1 -1
  65. package/build/IEntityGenericCacher.d.ts +15 -5
  66. package/build/ReadonlyEntity.d.ts +8 -8
  67. package/build/ReadonlyEntity.js.map +1 -1
  68. package/build/ViewerContext.d.ts +1 -1
  69. package/build/ViewerScopedEntityCompanion.d.ts +5 -5
  70. package/build/ViewerScopedEntityCompanionProvider.d.ts +1 -1
  71. package/build/ViewerScopedEntityLoaderFactory.d.ts +3 -3
  72. package/build/ViewerScopedEntityMutatorFactory.d.ts +5 -5
  73. package/build/entityUtils.d.ts +1 -1
  74. package/build/entityUtils.js.map +1 -1
  75. package/build/errors/EntityInvalidFieldValueError.d.ts +2 -2
  76. package/build/errors/EntityNotAuthorizedError.d.ts +1 -1
  77. package/build/errors/EntityNotFoundError.d.ts +2 -2
  78. package/build/index.d.ts +7 -7
  79. package/build/index.js +8 -13
  80. package/build/index.js.map +1 -1
  81. package/build/internal/CompositeFieldHolder.d.ts +48 -0
  82. package/build/internal/CompositeFieldHolder.js +116 -0
  83. package/build/internal/CompositeFieldHolder.js.map +1 -0
  84. package/build/internal/CompositeFieldValueMap.d.ts +15 -0
  85. package/build/internal/CompositeFieldValueMap.js +51 -0
  86. package/build/internal/CompositeFieldValueMap.js.map +1 -0
  87. package/build/internal/EntityDataManager.d.ts +16 -16
  88. package/build/internal/EntityDataManager.js +42 -45
  89. package/build/internal/EntityDataManager.js.map +1 -1
  90. package/build/internal/EntityFieldTransformationUtils.d.ts +5 -5
  91. package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
  92. package/build/internal/EntityLoadInterfaces.d.ts +104 -0
  93. package/build/internal/EntityLoadInterfaces.js +25 -0
  94. package/build/internal/EntityLoadInterfaces.js.map +1 -0
  95. package/build/internal/EntityTableDataCoordinator.d.ts +6 -6
  96. package/build/internal/EntityTableDataCoordinator.js.map +1 -1
  97. package/build/internal/ReadThroughEntityCache.d.ts +17 -16
  98. package/build/internal/ReadThroughEntityCache.js +36 -36
  99. package/build/internal/ReadThroughEntityCache.js.map +1 -1
  100. package/build/internal/SingleFieldHolder.d.ts +34 -0
  101. package/build/internal/SingleFieldHolder.js +90 -0
  102. package/build/internal/SingleFieldHolder.js.map +1 -0
  103. package/build/metrics/EntityMetricsUtils.d.ts +2 -1
  104. package/build/metrics/EntityMetricsUtils.js.map +1 -1
  105. package/build/metrics/IEntityMetricsAdapter.d.ts +5 -0
  106. package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
  107. package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +2 -2
  108. package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
  109. package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +2 -2
  110. package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
  111. package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +2 -2
  112. package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
  113. package/build/rules/PrivacyPolicyRule.d.ts +2 -2
  114. package/build/tsconfig.build.tsbuildinfo +1 -0
  115. package/build/utils/EntityPrivacyUtils.d.ts +4 -4
  116. package/build/utils/EntityPrivacyUtils.js.map +1 -1
  117. package/build/utils/collections/SerializableKeyMap.d.ts +27 -0
  118. package/build/utils/collections/SerializableKeyMap.js +60 -0
  119. package/build/utils/collections/SerializableKeyMap.js.map +1 -0
  120. package/build/utils/collections/maps.js +1 -2
  121. package/build/utils/collections/maps.js.map +1 -1
  122. package/build/utils/collections/sets.d.ts +1 -0
  123. package/build/utils/collections/sets.js +7 -0
  124. package/build/utils/collections/sets.js.map +1 -0
  125. package/build/utils/mergeEntityMutationTriggerConfigurations.d.ts +1 -1
  126. package/package.json +8 -5
  127. package/src/AuthorizationResultBasedEntityAssociationLoader.ts +56 -49
  128. package/src/AuthorizationResultBasedEntityLoader.ts +194 -81
  129. package/src/AuthorizationResultBasedEntityMutator.ts +71 -45
  130. package/src/ComposedEntityCacheAdapter.ts +55 -46
  131. package/src/ComposedSecondaryEntityCache.ts +5 -2
  132. package/src/EnforcingEntityAssociationLoader.ts +52 -44
  133. package/src/EnforcingEntityCreator.ts +5 -5
  134. package/src/EnforcingEntityDeleter.ts +5 -5
  135. package/src/EnforcingEntityLoader.ts +158 -21
  136. package/src/EnforcingEntityUpdater.ts +5 -5
  137. package/src/Entity.ts +39 -39
  138. package/src/EntityAssociationLoader.ts +6 -6
  139. package/src/EntityCompanion.ts +11 -11
  140. package/src/EntityCompanionProvider.ts +21 -18
  141. package/src/EntityConfiguration.ts +123 -9
  142. package/src/EntityCreator.ts +7 -7
  143. package/src/EntityDatabaseAdapter.ts +51 -28
  144. package/src/EntityDeleter.ts +7 -7
  145. package/src/EntityFieldDefinition.ts +32 -12
  146. package/src/EntityFields.ts +49 -12
  147. package/src/EntityLoader.ts +8 -8
  148. package/src/EntityLoaderFactory.ts +8 -8
  149. package/src/EntityLoaderUtils.ts +39 -10
  150. package/src/EntityMutationInfo.ts +6 -6
  151. package/src/EntityMutationTriggerConfiguration.ts +68 -20
  152. package/src/EntityMutationValidator.ts +4 -4
  153. package/src/EntityMutatorFactory.ts +13 -13
  154. package/src/EntityPrivacyPolicy.ts +50 -26
  155. package/src/EntitySecondaryCacheLoader.ts +6 -6
  156. package/src/EntityUpdater.ts +7 -7
  157. package/src/GenericEntityCacheAdapter.ts +39 -28
  158. package/src/GenericSecondaryEntityCache.ts +6 -3
  159. package/src/IEntityCacheAdapter.ts +45 -25
  160. package/src/IEntityCacheAdapterProvider.ts +3 -3
  161. package/src/IEntityDatabaseAdapterProvider.ts +3 -3
  162. package/src/IEntityGenericCacher.ts +33 -5
  163. package/src/ReadonlyEntity.ts +24 -24
  164. package/src/ViewerContext.ts +5 -5
  165. package/src/ViewerScopedEntityCompanion.ts +7 -7
  166. package/src/ViewerScopedEntityCompanionProvider.ts +6 -6
  167. package/src/ViewerScopedEntityLoaderFactory.ts +7 -7
  168. package/src/ViewerScopedEntityMutatorFactory.ts +8 -8
  169. package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +4 -4
  170. package/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.ts +14 -13
  171. package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +367 -69
  172. package/src/__tests__/ComposedCacheAdapter-test.ts +235 -117
  173. package/src/__tests__/EnforcingEntityLoader-test.ts +135 -1
  174. package/src/__tests__/Entity-test.ts +2 -2
  175. package/src/__tests__/EntityAssociationLoader-test.ts +2 -2
  176. package/src/__tests__/EntityCommonUseCases-test.ts +11 -11
  177. package/src/__tests__/EntityCompanion-test.ts +4 -4
  178. package/src/__tests__/EntityCompanionProvider-test.ts +9 -8
  179. package/src/__tests__/EntityConfiguration-test.ts +85 -6
  180. package/src/__tests__/EntityDatabaseAdapter-test.ts +113 -17
  181. package/src/__tests__/EntityEdges-test.ts +97 -72
  182. package/src/__tests__/EntityFields-test.ts +2 -2
  183. package/src/__tests__/EntityLoader-test.ts +2 -2
  184. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +11 -11
  185. package/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.ts +73 -0
  186. package/src/__tests__/EntityMutator-test.ts +74 -46
  187. package/src/__tests__/EntityPrivacyPolicy-test.ts +51 -74
  188. package/src/__tests__/EntityQueryContext-test.ts +1 -1
  189. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +3 -3
  190. package/src/__tests__/EntitySelfReferentialEdges-test.ts +64 -39
  191. package/src/__tests__/GenericEntityCacheAdapter-test.ts +83 -28
  192. package/src/__tests__/ReadonlyEntity-test.ts +3 -3
  193. package/src/__tests__/ViewerContext-test.ts +1 -1
  194. package/src/__tests__/ViewerScopedEntityCompanion-test.ts +5 -2
  195. package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +1 -1
  196. package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +12 -3
  197. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +12 -12
  198. package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +12 -12
  199. package/src/entityUtils.ts +4 -1
  200. package/src/errors/EntityInvalidFieldValueError.ts +5 -5
  201. package/src/errors/EntityNotAuthorizedError.ts +3 -3
  202. package/src/errors/EntityNotFoundError.ts +5 -5
  203. package/src/index.ts +7 -7
  204. package/src/internal/CompositeFieldHolder.ts +218 -0
  205. package/src/internal/CompositeFieldValueMap.ts +78 -0
  206. package/src/internal/EntityDataManager.ts +107 -96
  207. package/src/internal/EntityFieldTransformationUtils.ts +33 -14
  208. package/src/internal/EntityLoadInterfaces.ts +143 -0
  209. package/src/internal/EntityTableDataCoordinator.ts +8 -5
  210. package/src/internal/ReadThroughEntityCache.ts +63 -50
  211. package/src/internal/SingleFieldHolder.ts +131 -0
  212. package/src/internal/__tests__/CompositeFieldHolder-test.ts +25 -0
  213. package/src/internal/__tests__/CompositeFieldValueMap-test.ts +43 -0
  214. package/src/internal/__tests__/EntityDataManager-test.ts +308 -91
  215. package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +3 -2
  216. package/src/internal/__tests__/ReadThroughEntityCache-test.ts +315 -107
  217. package/src/metrics/EntityMetricsUtils.ts +7 -2
  218. package/src/metrics/IEntityMetricsAdapter.ts +6 -0
  219. package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +5 -5
  220. package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +5 -5
  221. package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +5 -5
  222. package/src/rules/PrivacyPolicyRule.ts +4 -4
  223. package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +1 -1
  224. package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +1 -1
  225. package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +1 -1
  226. package/src/utils/EntityPrivacyUtils.ts +72 -30
  227. package/src/utils/{testing → __testfixtures__}/PrivacyPolicyRuleTestUtils.ts +26 -26
  228. package/src/{testfixtures → utils/__testfixtures__}/SimpleTestEntity.ts +16 -15
  229. package/src/utils/__testfixtures__/StubCacheAdapter.ts +164 -0
  230. package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapter.ts +19 -12
  231. package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapterProvider.ts +4 -4
  232. package/src/utils/__testfixtures__/TSMockitoExtensions.ts +69 -0
  233. package/src/{testfixtures → utils/__testfixtures__}/TestEntity.ts +21 -15
  234. package/src/{testfixtures → utils/__testfixtures__}/TestEntity2.ts +16 -15
  235. package/src/{testfixtures → utils/__testfixtures__}/TestEntityWithMutationTriggers.ts +23 -22
  236. package/src/{testfixtures → utils/__testfixtures__}/TestViewerContext.ts +1 -1
  237. package/src/utils/{testing → __testfixtures__}/describeFieldTestCase.ts +1 -1
  238. package/src/utils/__tests__/EntityPrivacyUtils-test.ts +62 -66
  239. package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +29 -25
  240. package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +1 -1
  241. package/src/utils/collections/SerializableKeyMap.ts +84 -0
  242. package/src/utils/collections/__tests__/SerializableKeyMap-test.ts +119 -0
  243. package/src/utils/collections/__tests__/sets-test.ts +17 -0
  244. package/src/utils/collections/maps.ts +7 -8
  245. package/src/utils/collections/sets.ts +3 -0
  246. package/src/utils/mergeEntityMutationTriggerConfigurations.ts +5 -5
  247. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +0 -1
  248. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +0 -242
  249. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +0 -1
  250. package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.d.ts +0 -26
  251. package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js +0 -110
  252. package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +0 -1
  253. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +0 -1
  254. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js +0 -401
  255. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +0 -1
  256. package/build/__tests__/ComposedCacheAdapter-test.d.ts +0 -1
  257. package/build/__tests__/ComposedCacheAdapter-test.js +0 -229
  258. package/build/__tests__/ComposedCacheAdapter-test.js.map +0 -1
  259. package/build/__tests__/ComposedSecondaryEntityCache-test.d.ts +0 -1
  260. package/build/__tests__/ComposedSecondaryEntityCache-test.js +0 -66
  261. package/build/__tests__/ComposedSecondaryEntityCache-test.js.map +0 -1
  262. package/build/__tests__/EnforcingEntityAssociationLoader-test.d.ts +0 -1
  263. package/build/__tests__/EnforcingEntityAssociationLoader-test.js +0 -115
  264. package/build/__tests__/EnforcingEntityAssociationLoader-test.js.map +0 -1
  265. package/build/__tests__/EnforcingEntityLoader-test.d.ts +0 -1
  266. package/build/__tests__/EnforcingEntityLoader-test.js +0 -253
  267. package/build/__tests__/EnforcingEntityLoader-test.js.map +0 -1
  268. package/build/__tests__/Entity-test.d.ts +0 -1
  269. package/build/__tests__/Entity-test.js +0 -94
  270. package/build/__tests__/Entity-test.js.map +0 -1
  271. package/build/__tests__/EntityAssociationLoader-test.d.ts +0 -1
  272. package/build/__tests__/EntityAssociationLoader-test.js +0 -30
  273. package/build/__tests__/EntityAssociationLoader-test.js.map +0 -1
  274. package/build/__tests__/EntityCommonUseCases-test.d.ts +0 -1
  275. package/build/__tests__/EntityCommonUseCases-test.js +0 -146
  276. package/build/__tests__/EntityCommonUseCases-test.js.map +0 -1
  277. package/build/__tests__/EntityCompanion-test.d.ts +0 -1
  278. package/build/__tests__/EntityCompanion-test.js +0 -77
  279. package/build/__tests__/EntityCompanion-test.js.map +0 -1
  280. package/build/__tests__/EntityCompanionProvider-test.d.ts +0 -1
  281. package/build/__tests__/EntityCompanionProvider-test.js +0 -54
  282. package/build/__tests__/EntityCompanionProvider-test.js.map +0 -1
  283. package/build/__tests__/EntityConfiguration-test.d.ts +0 -1
  284. package/build/__tests__/EntityConfiguration-test.js +0 -103
  285. package/build/__tests__/EntityConfiguration-test.js.map +0 -1
  286. package/build/__tests__/EntityDatabaseAdapter-test.d.ts +0 -1
  287. package/build/__tests__/EntityDatabaseAdapter-test.js +0 -146
  288. package/build/__tests__/EntityDatabaseAdapter-test.js.map +0 -1
  289. package/build/__tests__/EntityEdges-test.d.ts +0 -1
  290. package/build/__tests__/EntityEdges-test.js +0 -723
  291. package/build/__tests__/EntityEdges-test.js.map +0 -1
  292. package/build/__tests__/EntityFields-test.d.ts +0 -1
  293. package/build/__tests__/EntityFields-test.js +0 -63
  294. package/build/__tests__/EntityFields-test.js.map +0 -1
  295. package/build/__tests__/EntityLoader-test.d.ts +0 -1
  296. package/build/__tests__/EntityLoader-test.js +0 -36
  297. package/build/__tests__/EntityLoader-test.js.map +0 -1
  298. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +0 -1
  299. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +0 -73
  300. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +0 -1
  301. package/build/__tests__/EntityMutator-test.d.ts +0 -1
  302. package/build/__tests__/EntityMutator-test.js +0 -741
  303. package/build/__tests__/EntityMutator-test.js.map +0 -1
  304. package/build/__tests__/EntityPrivacyPolicy-test.d.ts +0 -1
  305. package/build/__tests__/EntityPrivacyPolicy-test.js +0 -463
  306. package/build/__tests__/EntityPrivacyPolicy-test.js.map +0 -1
  307. package/build/__tests__/EntityQueryContext-test.d.ts +0 -1
  308. package/build/__tests__/EntityQueryContext-test.js +0 -116
  309. package/build/__tests__/EntityQueryContext-test.js.map +0 -1
  310. package/build/__tests__/EntitySecondaryCacheLoader-test.d.ts +0 -1
  311. package/build/__tests__/EntitySecondaryCacheLoader-test.js +0 -60
  312. package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +0 -1
  313. package/build/__tests__/EntitySelfReferentialEdges-test.d.ts +0 -1
  314. package/build/__tests__/EntitySelfReferentialEdges-test.js +0 -201
  315. package/build/__tests__/EntitySelfReferentialEdges-test.js.map +0 -1
  316. package/build/__tests__/GenericEntityCacheAdapter-test.d.ts +0 -1
  317. package/build/__tests__/GenericEntityCacheAdapter-test.js +0 -80
  318. package/build/__tests__/GenericEntityCacheAdapter-test.js.map +0 -1
  319. package/build/__tests__/ReadonlyEntity-test.d.ts +0 -1
  320. package/build/__tests__/ReadonlyEntity-test.js +0 -211
  321. package/build/__tests__/ReadonlyEntity-test.js.map +0 -1
  322. package/build/__tests__/ViewerContext-test.d.ts +0 -1
  323. package/build/__tests__/ViewerContext-test.js +0 -30
  324. package/build/__tests__/ViewerContext-test.js.map +0 -1
  325. package/build/__tests__/ViewerScopedEntityCompanion-test.d.ts +0 -1
  326. package/build/__tests__/ViewerScopedEntityCompanion-test.js +0 -20
  327. package/build/__tests__/ViewerScopedEntityCompanion-test.js.map +0 -1
  328. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.d.ts +0 -1
  329. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js +0 -20
  330. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +0 -1
  331. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.d.ts +0 -1
  332. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js +0 -23
  333. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +0 -1
  334. package/build/__tests__/ViewerScopedEntityMutatorFactory-test.d.ts +0 -1
  335. package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js +0 -22
  336. package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +0 -1
  337. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.d.ts +0 -1
  338. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +0 -123
  339. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +0 -1
  340. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.d.ts +0 -1
  341. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +0 -121
  342. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +0 -1
  343. package/build/__tests__/entityUtils-test.d.ts +0 -1
  344. package/build/__tests__/entityUtils-test.js +0 -87
  345. package/build/__tests__/entityUtils-test.js.map +0 -1
  346. package/build/internal/__tests__/EntityDataManager-test.d.ts +0 -1
  347. package/build/internal/__tests__/EntityDataManager-test.js +0 -373
  348. package/build/internal/__tests__/EntityDataManager-test.js.map +0 -1
  349. package/build/internal/__tests__/EntityFieldTransformationUtils-test.d.ts +0 -1
  350. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +0 -136
  351. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +0 -1
  352. package/build/internal/__tests__/ReadThroughEntityCache-test.d.ts +0 -1
  353. package/build/internal/__tests__/ReadThroughEntityCache-test.js +0 -206
  354. package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +0 -1
  355. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.d.ts +0 -1
  356. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +0 -21
  357. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +0 -1
  358. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.d.ts +0 -1
  359. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +0 -21
  360. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +0 -1
  361. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.d.ts +0 -1
  362. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +0 -21
  363. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +0 -1
  364. package/build/testfixtures/DateIDTestEntity.d.ts +0 -19
  365. package/build/testfixtures/DateIDTestEntity.js +0 -48
  366. package/build/testfixtures/DateIDTestEntity.js.map +0 -1
  367. package/build/testfixtures/SimpleTestEntity.d.ts +0 -20
  368. package/build/testfixtures/SimpleTestEntity.js +0 -48
  369. package/build/testfixtures/SimpleTestEntity.js.map +0 -1
  370. package/build/testfixtures/TestEntity.d.ts +0 -30
  371. package/build/testfixtures/TestEntity.js +0 -93
  372. package/build/testfixtures/TestEntity.js.map +0 -1
  373. package/build/testfixtures/TestEntity2.d.ts +0 -20
  374. package/build/testfixtures/TestEntity2.js +0 -51
  375. package/build/testfixtures/TestEntity2.js.map +0 -1
  376. package/build/testfixtures/TestEntityNumberKey.d.ts +0 -19
  377. package/build/testfixtures/TestEntityNumberKey.js +0 -48
  378. package/build/testfixtures/TestEntityNumberKey.js.map +0 -1
  379. package/build/testfixtures/TestEntityWithMutationTriggers.d.ts +0 -36
  380. package/build/testfixtures/TestEntityWithMutationTriggers.js +0 -82
  381. package/build/testfixtures/TestEntityWithMutationTriggers.js.map +0 -1
  382. package/build/testfixtures/TestViewerContext.d.ts +0 -3
  383. package/build/testfixtures/TestViewerContext.js +0 -10
  384. package/build/testfixtures/TestViewerContext.js.map +0 -1
  385. package/build/utils/__tests__/EntityPrivacyUtils-test.d.ts +0 -1
  386. package/build/utils/__tests__/EntityPrivacyUtils-test.js +0 -486
  387. package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +0 -1
  388. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +0 -1
  389. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +0 -178
  390. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +0 -1
  391. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +0 -1
  392. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +0 -26
  393. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +0 -1
  394. package/build/utils/collections/__tests__/maps-test.d.ts +0 -1
  395. package/build/utils/collections/__tests__/maps-test.js +0 -120
  396. package/build/utils/collections/__tests__/maps-test.js.map +0 -1
  397. package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +0 -28
  398. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js +0 -52
  399. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +0 -1
  400. package/build/utils/testing/StubCacheAdapter.d.ts +0 -27
  401. package/build/utils/testing/StubCacheAdapter.js +0 -86
  402. package/build/utils/testing/StubCacheAdapter.js.map +0 -1
  403. package/build/utils/testing/StubDatabaseAdapter.d.ts +0 -25
  404. package/build/utils/testing/StubDatabaseAdapter.js +0 -191
  405. package/build/utils/testing/StubDatabaseAdapter.js.map +0 -1
  406. package/build/utils/testing/StubDatabaseAdapterProvider.d.ts +0 -7
  407. package/build/utils/testing/StubDatabaseAdapterProvider.js +0 -14
  408. package/build/utils/testing/StubDatabaseAdapterProvider.js.map +0 -1
  409. package/build/utils/testing/StubQueryContextProvider.d.ts +0 -7
  410. package/build/utils/testing/StubQueryContextProvider.js +0 -19
  411. package/build/utils/testing/StubQueryContextProvider.js.map +0 -1
  412. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.d.ts +0 -1
  413. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js +0 -42
  414. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js.map +0 -1
  415. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.d.ts +0 -1
  416. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +0 -402
  417. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +0 -1
  418. package/build/utils/testing/createUnitTestEntityCompanionProvider.d.ts +0 -7
  419. package/build/utils/testing/createUnitTestEntityCompanionProvider.js +0 -36
  420. package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +0 -1
  421. package/build/utils/testing/describeFieldTestCase.d.ts +0 -2
  422. package/build/utils/testing/describeFieldTestCase.js +0 -18
  423. package/build/utils/testing/describeFieldTestCase.js.map +0 -1
  424. package/src/testfixtures/DateIDTestEntity.ts +0 -59
  425. package/src/testfixtures/TestEntityNumberKey.ts +0 -59
  426. package/src/utils/testing/StubCacheAdapter.ts +0 -122
  427. package/src/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.ts +0 -42
  428. package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +0 -548
  429. /package/src/utils/{testing → __testfixtures__}/StubQueryContextProvider.ts +0 -0
  430. /package/src/utils/{testing → __testfixtures__}/createUnitTestEntityCompanionProvider.ts +0 -0
@@ -1,723 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const invariant_1 = __importDefault(require("invariant"));
40
- const Entity_1 = __importDefault(require("../Entity"));
41
- const EntityConfiguration_1 = __importDefault(require("../EntityConfiguration"));
42
- const EntityFieldDefinition_1 = require("../EntityFieldDefinition");
43
- const EntityFields_1 = require("../EntityFields");
44
- const EntityMutationInfo_1 = require("../EntityMutationInfo");
45
- const EntityMutationTriggerConfiguration_1 = require("../EntityMutationTriggerConfiguration");
46
- const EntityPrivacyPolicy_1 = __importStar(require("../EntityPrivacyPolicy"));
47
- const ReadThroughEntityCache_1 = require("../internal/ReadThroughEntityCache");
48
- const PrivacyPolicyRule_1 = __importStar(require("../rules/PrivacyPolicyRule"));
49
- const TestViewerContext_1 = __importDefault(require("../testfixtures/TestViewerContext"));
50
- const createUnitTestEntityCompanionProvider_1 = require("../utils/testing/createUnitTestEntityCompanionProvider");
51
- // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
52
- const makeEntityClasses = (edgeDeletionBehavior) => {
53
- const triggerExecutionCounts = {
54
- ParentEntityDeletion: 0,
55
- ChildEntityDeletion: 0,
56
- GrandChildEntityDeletion: 0,
57
- ParentEntityUpdate: 0,
58
- ChildEntityUpdate: 0,
59
- GrandChildEntityUpdate: 0,
60
- };
61
- const privacyPolicyEvaluationRecords = {
62
- shouldRecord: false,
63
- ParentEntity: {
64
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
65
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [],
66
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
67
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [],
68
- },
69
- ChildEntity: {
70
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
71
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [],
72
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
73
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [],
74
- },
75
- GrandChildEntity: {
76
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
77
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [],
78
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
79
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [],
80
- },
81
- };
82
- class AlwaysAllowPrivacyPolicyRuleThatRecords extends PrivacyPolicyRule_1.default {
83
- action;
84
- constructor(action) {
85
- super();
86
- this.action = action;
87
- }
88
- async evaluateAsync(_viewerContext, _queryContext, evaluationContext, entity) {
89
- if (privacyPolicyEvaluationRecords.shouldRecord) {
90
- privacyPolicyEvaluationRecords[entity.constructor.name][this.action].push(evaluationContext);
91
- }
92
- return PrivacyPolicyRule_1.RuleEvaluationResult.ALLOW;
93
- }
94
- }
95
- class TestEntityPrivacyPolicy extends EntityPrivacyPolicy_1.default {
96
- readRules = [
97
- new AlwaysAllowPrivacyPolicyRuleThatRecords(EntityPrivacyPolicy_1.EntityAuthorizationAction.READ),
98
- ];
99
- createRules = [
100
- new AlwaysAllowPrivacyPolicyRuleThatRecords(EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE),
101
- ];
102
- updateRules = [
103
- new AlwaysAllowPrivacyPolicyRuleThatRecords(EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE),
104
- ];
105
- deleteRules = [
106
- new AlwaysAllowPrivacyPolicyRuleThatRecords(EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE),
107
- ];
108
- }
109
- class ParentCheckInfoDeletionTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
110
- async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
111
- (0, invariant_1.default)(mutationInfo.type === EntityMutationInfo_1.EntityMutationType.DELETE, 'invalid EntityMutationType');
112
- if (mutationInfo.cascadingDeleteCause !== null) {
113
- throw new Error('Parent entity should not have casade delete cause');
114
- }
115
- triggerExecutionCounts.ParentEntityDeletion++;
116
- }
117
- }
118
- class ParentCheckInfoUpdateTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
119
- async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
120
- (0, invariant_1.default)(mutationInfo.type === EntityMutationInfo_1.EntityMutationType.UPDATE, 'invalid EntityMutationType');
121
- if (mutationInfo.cascadingDeleteCause !== null) {
122
- throw new Error('Parent entity should not have casade delete cause');
123
- }
124
- triggerExecutionCounts.ParentEntityUpdate++;
125
- }
126
- }
127
- class ChildCheckInfoDeletionTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
128
- async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
129
- (0, invariant_1.default)(mutationInfo.type === EntityMutationInfo_1.EntityMutationType.DELETE, 'invalid EntityMutationType');
130
- if (mutationInfo.cascadingDeleteCause === null) {
131
- throw new Error('Child entity should have casade delete cause');
132
- }
133
- const cascadingDeleteCauseEntity = mutationInfo.cascadingDeleteCause.entity;
134
- if (!(cascadingDeleteCauseEntity instanceof ParentEntity)) {
135
- throw new Error('Child entity should have casade delete cause entity of type ParentEntity');
136
- }
137
- const secondLevelCascadingDeleteCause = mutationInfo.cascadingDeleteCause.cascadingDeleteCause;
138
- if (secondLevelCascadingDeleteCause) {
139
- throw new Error('Child entity should not have two-level casade delete cause');
140
- }
141
- triggerExecutionCounts.ChildEntityDeletion++;
142
- }
143
- }
144
- class ChildCheckInfoUpdateTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
145
- async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
146
- (0, invariant_1.default)(mutationInfo.type === EntityMutationInfo_1.EntityMutationType.UPDATE, 'invalid EntityMutationType');
147
- if (mutationInfo.cascadingDeleteCause === null) {
148
- throw new Error('Child entity should have casade delete cause');
149
- }
150
- const cascadingDeleteCauseEntity = mutationInfo.cascadingDeleteCause.entity;
151
- if (!(cascadingDeleteCauseEntity instanceof ParentEntity)) {
152
- throw new Error('Child entity should have casade delete cause entity of type ParentEntity');
153
- }
154
- const secondLevelCascadingDeleteCause = mutationInfo.cascadingDeleteCause.cascadingDeleteCause;
155
- if (secondLevelCascadingDeleteCause) {
156
- throw new Error('Child entity should not have two-level casade delete cause');
157
- }
158
- triggerExecutionCounts.ChildEntityUpdate++;
159
- }
160
- }
161
- class GrandChildCheckInfoDeletionTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
162
- async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
163
- (0, invariant_1.default)(mutationInfo.type === EntityMutationInfo_1.EntityMutationType.DELETE, 'invalid EntityMutationType');
164
- if (mutationInfo.cascadingDeleteCause === null) {
165
- throw new Error('GrandChild entity should have cascade delete cause');
166
- }
167
- const cascadingDeleteCauseEntity = mutationInfo.cascadingDeleteCause.entity;
168
- if (!(cascadingDeleteCauseEntity instanceof ChildEntity)) {
169
- throw new Error('GrandChild entity should have cascade delete cause entity of type ChildEntity');
170
- }
171
- const secondLevelCascadingDeleteCause = mutationInfo.cascadingDeleteCause.cascadingDeleteCause;
172
- if (!secondLevelCascadingDeleteCause) {
173
- throw new Error('GrandChild entity should have two-level casade delete cause');
174
- }
175
- const secondLevelCascadingDeleteCauseEntity = secondLevelCascadingDeleteCause.entity;
176
- if (!(secondLevelCascadingDeleteCauseEntity instanceof ParentEntity)) {
177
- throw new Error('GrandChild entity should have second level casade delete cause entity of type ParentEntity');
178
- }
179
- const thirdLevelCascadingDeleteCause = secondLevelCascadingDeleteCause.cascadingDeleteCause;
180
- if (thirdLevelCascadingDeleteCause) {
181
- throw new Error('GrandChild entity should not have three-level casade delete cause');
182
- }
183
- triggerExecutionCounts.GrandChildEntityDeletion++;
184
- }
185
- }
186
- class GrandChildCheckInfoUpdateTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
187
- async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
188
- (0, invariant_1.default)(mutationInfo.type === EntityMutationInfo_1.EntityMutationType.UPDATE, 'invalid EntityMutationType');
189
- if (mutationInfo.cascadingDeleteCause === null) {
190
- throw new Error('GrandChild entity should have cascade delete cause');
191
- }
192
- const cascadingDeleteCauseEntity = mutationInfo.cascadingDeleteCause.entity;
193
- if (!(cascadingDeleteCauseEntity instanceof ChildEntity)) {
194
- throw new Error('GrandChild entity should have cascade delete cause entity of type ChildEntity');
195
- }
196
- const secondLevelCascadingDeleteCause = mutationInfo.cascadingDeleteCause.cascadingDeleteCause;
197
- if (!secondLevelCascadingDeleteCause) {
198
- throw new Error('GrandChild entity should have two-level casade delete cause');
199
- }
200
- const secondLevelCascadingDeleteCauseEntity = secondLevelCascadingDeleteCause.entity;
201
- if (!(secondLevelCascadingDeleteCauseEntity instanceof ParentEntity)) {
202
- throw new Error('GrandChild entity should have second level casade delete cause entity of type ParentEntity');
203
- }
204
- const thirdLevelCascadingDeleteCause = secondLevelCascadingDeleteCause.cascadingDeleteCause;
205
- if (thirdLevelCascadingDeleteCause) {
206
- throw new Error('GrandChild entity should not have three-level casade delete cause');
207
- }
208
- triggerExecutionCounts.GrandChildEntityUpdate++;
209
- }
210
- }
211
- class OtherEntity extends Entity_1.default {
212
- static defineCompanionDefinition() {
213
- return {
214
- entityClass: ParentEntity,
215
- entityConfiguration: otherEntityConfiguration,
216
- privacyPolicyClass: TestEntityPrivacyPolicy,
217
- };
218
- }
219
- }
220
- class ParentEntity extends Entity_1.default {
221
- static defineCompanionDefinition() {
222
- return {
223
- entityClass: ParentEntity,
224
- entityConfiguration: parentEntityConfiguration,
225
- privacyPolicyClass: TestEntityPrivacyPolicy,
226
- mutationTriggers: {
227
- beforeDelete: [new ParentCheckInfoDeletionTrigger()],
228
- afterDelete: [new ParentCheckInfoDeletionTrigger()],
229
- beforeUpdate: [new ParentCheckInfoUpdateTrigger()],
230
- afterUpdate: [new ParentCheckInfoUpdateTrigger()],
231
- },
232
- };
233
- }
234
- }
235
- class ChildEntity extends Entity_1.default {
236
- static defineCompanionDefinition() {
237
- return {
238
- entityClass: ChildEntity,
239
- entityConfiguration: childEntityConfiguration,
240
- privacyPolicyClass: TestEntityPrivacyPolicy,
241
- mutationTriggers: {
242
- beforeDelete: [new ChildCheckInfoDeletionTrigger()],
243
- afterDelete: [new ChildCheckInfoDeletionTrigger()],
244
- beforeUpdate: [new ChildCheckInfoUpdateTrigger()],
245
- afterUpdate: [new ChildCheckInfoUpdateTrigger()],
246
- },
247
- };
248
- }
249
- }
250
- class GrandChildEntity extends Entity_1.default {
251
- static defineCompanionDefinition() {
252
- return {
253
- entityClass: GrandChildEntity,
254
- entityConfiguration: grandChildEntityConfiguration,
255
- privacyPolicyClass: TestEntityPrivacyPolicy,
256
- mutationTriggers: {
257
- beforeDelete: [new GrandChildCheckInfoDeletionTrigger()],
258
- afterDelete: [new GrandChildCheckInfoDeletionTrigger()],
259
- beforeUpdate: [new GrandChildCheckInfoUpdateTrigger()],
260
- afterUpdate: [new GrandChildCheckInfoUpdateTrigger()],
261
- },
262
- };
263
- }
264
- }
265
- const otherEntityConfiguration = new EntityConfiguration_1.default({
266
- idField: 'id',
267
- tableName: 'others',
268
- schema: {
269
- id: new EntityFields_1.UUIDField({
270
- columnName: 'id',
271
- cache: true,
272
- }),
273
- },
274
- databaseAdapterFlavor: 'postgres',
275
- cacheAdapterFlavor: 'redis',
276
- });
277
- const parentEntityConfiguration = new EntityConfiguration_1.default({
278
- idField: 'id',
279
- tableName: 'parents',
280
- inboundEdges: [ChildEntity],
281
- schema: {
282
- id: new EntityFields_1.UUIDField({
283
- columnName: 'id',
284
- cache: true,
285
- }),
286
- },
287
- databaseAdapterFlavor: 'postgres',
288
- cacheAdapterFlavor: 'redis',
289
- });
290
- const childEntityConfiguration = new EntityConfiguration_1.default({
291
- idField: 'id',
292
- tableName: 'children',
293
- inboundEdges: [GrandChildEntity],
294
- schema: {
295
- id: new EntityFields_1.UUIDField({
296
- columnName: 'id',
297
- cache: true,
298
- }),
299
- unused_other_edge_id: new EntityFields_1.UUIDField({
300
- columnName: 'unused_other_edge_id',
301
- association: {
302
- associatedEntityClass: OtherEntity,
303
- edgeDeletionBehavior,
304
- },
305
- }),
306
- parent_id: new EntityFields_1.UUIDField({
307
- columnName: 'parent_id',
308
- cache: true,
309
- association: {
310
- associatedEntityClass: ParentEntity,
311
- associatedEntityLookupByField: 'id', // sanity check that this functionality works by using it for one edge
312
- edgeDeletionBehavior,
313
- },
314
- }),
315
- },
316
- databaseAdapterFlavor: 'postgres',
317
- cacheAdapterFlavor: 'redis',
318
- });
319
- const grandChildEntityConfiguration = new EntityConfiguration_1.default({
320
- idField: 'id',
321
- tableName: 'grandchildren',
322
- schema: {
323
- id: new EntityFields_1.UUIDField({
324
- columnName: 'id',
325
- cache: true,
326
- }),
327
- parent_id: new EntityFields_1.UUIDField({
328
- columnName: 'parent_id',
329
- cache: true,
330
- association: {
331
- associatedEntityClass: ChildEntity,
332
- edgeDeletionBehavior,
333
- },
334
- }),
335
- },
336
- databaseAdapterFlavor: 'postgres',
337
- cacheAdapterFlavor: 'redis',
338
- });
339
- return {
340
- ParentEntity,
341
- ChildEntity,
342
- GrandChildEntity,
343
- triggerExecutionCounts,
344
- privacyPolicyEvaluationRecords,
345
- };
346
- };
347
- describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
348
- describe('EntityEdgeDeletionBehavior.CASCADE_DELETE', () => {
349
- it('deletes', async () => {
350
- const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts, privacyPolicyEvaluationRecords, } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE);
351
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
352
- const viewerContext = new TestViewerContext_1.default(companionProvider);
353
- const parent = await ParentEntity.creator(viewerContext).createAsync();
354
- const child = await ChildEntity.creator(viewerContext)
355
- .setField('parent_id', parent.getID())
356
- .createAsync();
357
- const grandchild = await GrandChildEntity.creator(viewerContext)
358
- .setField('parent_id', child.getID())
359
- .createAsync();
360
- await expect(ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID())).resolves.not.toBeNull();
361
- await expect(ChildEntity.loader(viewerContext).loadByIDNullableAsync(child.getID())).resolves.not.toBeNull();
362
- await expect(GrandChildEntity.loader(viewerContext).loadByIDNullableAsync(grandchild.getID())).resolves.not.toBeNull();
363
- privacyPolicyEvaluationRecords.shouldRecord = true;
364
- await ParentEntity.deleter(parent).deleteAsync();
365
- privacyPolicyEvaluationRecords.shouldRecord = false;
366
- await expect(ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID())).resolves.toBeNull();
367
- await expect(ChildEntity.loader(viewerContext).loadByIDNullableAsync(child.getID())).resolves.toBeNull();
368
- await expect(GrandChildEntity.loader(viewerContext).loadByIDNullableAsync(grandchild.getID())).resolves.toBeNull();
369
- // two calls for each trigger, one beforeDelete, one afterDelete
370
- expect(triggerExecutionCounts).toMatchObject({
371
- ParentEntityDeletion: 2,
372
- ChildEntityDeletion: 2,
373
- GrandChildEntityDeletion: 2,
374
- ParentEntityUpdate: 0,
375
- ChildEntityUpdate: 0,
376
- GrandChildEntityUpdate: 0,
377
- });
378
- expect(privacyPolicyEvaluationRecords).toMatchObject({
379
- ParentEntity: {
380
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
381
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [],
382
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
383
- // one DELETE auth action for parent (since it's being deleted)
384
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [{ cascadingDeleteCause: null }],
385
- },
386
- ChildEntity: {
387
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
388
- // one READ auth action for child in order to delete via cascade
389
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [
390
- {
391
- cascadingDeleteCause: {
392
- entity: expect.any(ParentEntity),
393
- cascadingDeleteCause: null,
394
- },
395
- },
396
- ],
397
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
398
- // one DELETE auth action for child (since it's being deleted via cascade)
399
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [
400
- {
401
- cascadingDeleteCause: {
402
- entity: expect.any(ParentEntity),
403
- cascadingDeleteCause: null,
404
- },
405
- },
406
- ],
407
- },
408
- GrandChildEntity: {
409
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
410
- // one READ auth action for grandchild in order to delete via cascade
411
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [
412
- {
413
- cascadingDeleteCause: {
414
- entity: expect.any(ChildEntity),
415
- cascadingDeleteCause: {
416
- entity: expect.any(ParentEntity),
417
- cascadingDeleteCause: null,
418
- },
419
- },
420
- },
421
- ],
422
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
423
- // one DELETE auth action for grandchild (since it's being deleted via cascade)
424
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [
425
- {
426
- cascadingDeleteCause: {
427
- entity: expect.any(ChildEntity),
428
- cascadingDeleteCause: {
429
- entity: expect.any(ParentEntity),
430
- cascadingDeleteCause: null,
431
- },
432
- },
433
- },
434
- ],
435
- },
436
- });
437
- });
438
- });
439
- describe('EntityEdgeDeletionBehavior.SET_NULL', () => {
440
- it('sets null', async () => {
441
- const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts, privacyPolicyEvaluationRecords, } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL);
442
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
443
- const viewerContext = new TestViewerContext_1.default(companionProvider);
444
- const parent = await ParentEntity.creator(viewerContext).createAsync();
445
- const child = await ChildEntity.creator(viewerContext)
446
- .setField('parent_id', parent.getID())
447
- .createAsync();
448
- const grandchild = await GrandChildEntity.creator(viewerContext)
449
- .setField('parent_id', child.getID())
450
- .createAsync();
451
- await expect(ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID())).resolves.not.toBeNull();
452
- await expect(ChildEntity.loader(viewerContext).loadByIDNullableAsync(child.getID())).resolves.not.toBeNull();
453
- await expect(GrandChildEntity.loader(viewerContext).loadByIDNullableAsync(grandchild.getID())).resolves.not.toBeNull();
454
- privacyPolicyEvaluationRecords.shouldRecord = true;
455
- await ParentEntity.deleter(parent).deleteAsync();
456
- privacyPolicyEvaluationRecords.shouldRecord = false;
457
- await expect(ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID())).resolves.toBeNull();
458
- const loadedChild = await ChildEntity.loader(viewerContext).loadByIDAsync(child.getID());
459
- expect(loadedChild.getField('parent_id')).toBeNull();
460
- const loadedGrandchild = await GrandChildEntity.loader(viewerContext).loadByIDAsync(grandchild.getID());
461
- expect(loadedGrandchild.getField('parent_id')).toEqual(loadedChild.getID());
462
- // two calls for only parent trigger, one beforeDelete, one afterDelete
463
- // when using set null the descendants aren't deleted
464
- expect(triggerExecutionCounts).toMatchObject({
465
- ParentEntityDeletion: 2,
466
- ChildEntityDeletion: 0,
467
- GrandChildEntityDeletion: 0,
468
- ParentEntityUpdate: 0,
469
- ChildEntityUpdate: 2,
470
- GrandChildEntityUpdate: 0,
471
- });
472
- expect(privacyPolicyEvaluationRecords).toMatchObject({
473
- ParentEntity: {
474
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
475
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [],
476
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
477
- // one DELETE auth action for parent (since it's being deleted)
478
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [{ cascadingDeleteCause: null }],
479
- },
480
- ChildEntity: {
481
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
482
- // two READs auth action for Child during parent deletion:
483
- // 1. Read to initiate the SET_NULL (to update the entity)
484
- // 1. Read automatically post-update
485
- // no other entities are read since it is not cascaded past first entity
486
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [
487
- {
488
- cascadingDeleteCause: {
489
- entity: expect.any(ParentEntity),
490
- cascadingDeleteCause: null,
491
- },
492
- },
493
- {
494
- cascadingDeleteCause: {
495
- entity: expect.any(ParentEntity),
496
- cascadingDeleteCause: null,
497
- },
498
- },
499
- ],
500
- // one UPDATE to set null
501
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [
502
- {
503
- cascadingDeleteCause: {
504
- entity: expect.any(ParentEntity),
505
- cascadingDeleteCause: null,
506
- },
507
- },
508
- ],
509
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [],
510
- },
511
- GrandChildEntity: {
512
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
513
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [],
514
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
515
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [],
516
- },
517
- });
518
- });
519
- });
520
- describe('EntityEdgeDeletionBehavior.SET_NULL_INVALIDATE_CACHE_ONLY', () => {
521
- it('invalidates the cache', async () => {
522
- const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts, privacyPolicyEvaluationRecords, } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL_INVALIDATE_CACHE_ONLY);
523
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
524
- const viewerContext = new TestViewerContext_1.default(companionProvider);
525
- const parent = await ParentEntity.creator(viewerContext).createAsync();
526
- const child = await ChildEntity.creator(viewerContext)
527
- .setField('parent_id', parent.getID())
528
- .createAsync();
529
- const grandchild = await GrandChildEntity.creator(viewerContext)
530
- .setField('parent_id', child.getID())
531
- .createAsync();
532
- await expect(ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID())).resolves.not.toBeNull();
533
- await expect(ChildEntity.loader(viewerContext).loadByFieldEqualingAsync('parent_id', parent.getID())).resolves.not.toBeNull();
534
- await expect(GrandChildEntity.loader(viewerContext).loadByFieldEqualingAsync('parent_id', child.getID())).resolves.not.toBeNull();
535
- const childCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(ChildEntity)['entityCompanion']['tableDataCoordinator']['cacheAdapter'];
536
- const childCachedBefore = await childCacheAdapter.loadManyAsync('parent_id', [
537
- parent.getID(),
538
- ]);
539
- expect(childCachedBefore.get(parent.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.HIT);
540
- const grandChildCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(GrandChildEntity)['entityCompanion']['tableDataCoordinator']['cacheAdapter'];
541
- const grandChildCachedBefore = await grandChildCacheAdapter.loadManyAsync('parent_id', [
542
- child.getID(),
543
- ]);
544
- expect(grandChildCachedBefore.get(child.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.HIT);
545
- privacyPolicyEvaluationRecords.shouldRecord = true;
546
- await ParentEntity.deleter(parent).deleteAsync();
547
- privacyPolicyEvaluationRecords.shouldRecord = false;
548
- const childCachedAfter = await childCacheAdapter.loadManyAsync('parent_id', [parent.getID()]);
549
- expect(childCachedAfter.get(parent.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.MISS);
550
- const grandChildCachedAfter = await grandChildCacheAdapter.loadManyAsync('parent_id', [
551
- child.getID(),
552
- ]);
553
- expect(grandChildCachedAfter.get(child.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.HIT);
554
- await expect(ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID())).resolves.toBeNull();
555
- const loadedChild = await ChildEntity.loader(viewerContext).loadByIDAsync(child.getID());
556
- expect(loadedChild).not.toBeNull();
557
- const loadedGrandchild = await GrandChildEntity.loader(viewerContext).loadByIDAsync(grandchild.getID());
558
- expect(loadedGrandchild.getField('parent_id')).toEqual(loadedChild.getID());
559
- // two calls for only parent trigger, one beforeDelete, one afterDelete
560
- // when using set null the descendants aren't deleted
561
- expect(triggerExecutionCounts).toMatchObject({
562
- ParentEntityDeletion: 2,
563
- ChildEntityDeletion: 0,
564
- GrandChildEntityDeletion: 0,
565
- ParentEntityUpdate: 0,
566
- ChildEntityUpdate: 2,
567
- GrandChildEntityUpdate: 0,
568
- });
569
- expect(privacyPolicyEvaluationRecords).toMatchObject({
570
- ParentEntity: {
571
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
572
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [],
573
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
574
- // one DELETE auth action for parent (since it's being deleted)
575
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [{ cascadingDeleteCause: null }],
576
- },
577
- ChildEntity: {
578
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
579
- // two READs auth action for child in order to update via cascade
580
- // no other entities are read since it is not cascaded past first entity
581
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [
582
- {
583
- cascadingDeleteCause: {
584
- entity: expect.any(ParentEntity),
585
- cascadingDeleteCause: null,
586
- },
587
- },
588
- {
589
- cascadingDeleteCause: {
590
- entity: expect.any(ParentEntity),
591
- cascadingDeleteCause: null,
592
- },
593
- },
594
- ],
595
- // one UPDATE to set null
596
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [
597
- {
598
- cascadingDeleteCause: {
599
- entity: expect.any(ParentEntity),
600
- cascadingDeleteCause: null,
601
- },
602
- },
603
- ],
604
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [],
605
- },
606
- GrandChildEntity: {
607
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
608
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [],
609
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
610
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [],
611
- },
612
- });
613
- });
614
- });
615
- describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE_ONLY', () => {
616
- it('invalidates the cache', async () => {
617
- const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts, privacyPolicyEvaluationRecords, } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE_ONLY);
618
- const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
619
- const viewerContext = new TestViewerContext_1.default(companionProvider);
620
- const parent = await ParentEntity.creator(viewerContext).createAsync();
621
- const child = await ChildEntity.creator(viewerContext)
622
- .setField('parent_id', parent.getID())
623
- .createAsync();
624
- const grandchild = await GrandChildEntity.creator(viewerContext)
625
- .setField('parent_id', child.getID())
626
- .createAsync();
627
- await expect(ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID())).resolves.not.toBeNull();
628
- await expect(ChildEntity.loader(viewerContext).loadByFieldEqualingAsync('parent_id', parent.getID())).resolves.not.toBeNull();
629
- await expect(GrandChildEntity.loader(viewerContext).loadByFieldEqualingAsync('parent_id', child.getID())).resolves.not.toBeNull();
630
- const childCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(ChildEntity)['entityCompanion']['tableDataCoordinator']['cacheAdapter'];
631
- const childCachedBefore = await childCacheAdapter.loadManyAsync('parent_id', [
632
- parent.getID(),
633
- ]);
634
- expect(childCachedBefore.get(parent.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.HIT);
635
- const grandChildCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(GrandChildEntity)['entityCompanion']['tableDataCoordinator']['cacheAdapter'];
636
- const grandChildCachedBefore = await grandChildCacheAdapter.loadManyAsync('parent_id', [
637
- child.getID(),
638
- ]);
639
- expect(grandChildCachedBefore.get(child.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.HIT);
640
- privacyPolicyEvaluationRecords.shouldRecord = true;
641
- await ParentEntity.deleter(parent).deleteAsync();
642
- privacyPolicyEvaluationRecords.shouldRecord = false;
643
- const childCachedAfter = await childCacheAdapter.loadManyAsync('parent_id', [parent.getID()]);
644
- expect(childCachedAfter.get(parent.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.MISS);
645
- const grandChildCachedAfter = await grandChildCacheAdapter.loadManyAsync('parent_id', [
646
- child.getID(),
647
- ]);
648
- expect(grandChildCachedAfter.get(child.getID())?.status).toEqual(ReadThroughEntityCache_1.CacheStatus.MISS);
649
- await expect(ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID())).resolves.toBeNull();
650
- await expect(ChildEntity.loader(viewerContext).loadByIDNullableAsync(child.getID())).resolves.not.toBeNull();
651
- await expect(GrandChildEntity.loader(viewerContext).loadByIDNullableAsync(grandchild.getID())).resolves.not.toBeNull();
652
- // two calls for each trigger, one beforeDelete, one afterDelete
653
- expect(triggerExecutionCounts).toMatchObject({
654
- ParentEntityDeletion: 2,
655
- ChildEntityDeletion: 2,
656
- GrandChildEntityDeletion: 2,
657
- ParentEntityUpdate: 0,
658
- ChildEntityUpdate: 0,
659
- GrandChildEntityUpdate: 0,
660
- });
661
- expect(privacyPolicyEvaluationRecords).toMatchObject({
662
- ParentEntity: {
663
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
664
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [],
665
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
666
- // one DELETE auth action for parent (since it's being deleted)
667
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [{ cascadingDeleteCause: null }],
668
- },
669
- ChildEntity: {
670
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
671
- // one READ auth action for child in order to delete via cascade
672
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [
673
- {
674
- cascadingDeleteCause: {
675
- entity: expect.any(ParentEntity),
676
- cascadingDeleteCause: null,
677
- },
678
- },
679
- ],
680
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
681
- // one DELETE auth action for child (since it's being deleted via cascade)
682
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [
683
- {
684
- cascadingDeleteCause: {
685
- entity: expect.any(ParentEntity),
686
- cascadingDeleteCause: null,
687
- },
688
- },
689
- ],
690
- },
691
- GrandChildEntity: {
692
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.CREATE]: [],
693
- // one READ auth action for grandchild in order to delete via cascade
694
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.READ]: [
695
- {
696
- cascadingDeleteCause: {
697
- entity: expect.any(ChildEntity),
698
- cascadingDeleteCause: {
699
- entity: expect.any(ParentEntity),
700
- cascadingDeleteCause: null,
701
- },
702
- },
703
- },
704
- ],
705
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.UPDATE]: [],
706
- // one DELETE auth action for grandchild (since it's being deleted via cascade)
707
- [EntityPrivacyPolicy_1.EntityAuthorizationAction.DELETE]: [
708
- {
709
- cascadingDeleteCause: {
710
- entity: expect.any(ChildEntity),
711
- cascadingDeleteCause: {
712
- entity: expect.any(ParentEntity),
713
- cascadingDeleteCause: null,
714
- },
715
- },
716
- },
717
- ],
718
- },
719
- });
720
- });
721
- });
722
- });
723
- //# sourceMappingURL=EntityEdges-test.js.map