@expo/entity 0.40.0 → 0.42.0

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