@expo/entity 0.34.0 → 0.36.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 (333) hide show
  1. package/build/AuthorizationResultBasedEntityLoader.d.ts +128 -0
  2. package/build/AuthorizationResultBasedEntityLoader.js +196 -0
  3. package/build/AuthorizationResultBasedEntityLoader.js.map +1 -0
  4. package/build/ComposedEntityCacheAdapter.js +1 -0
  5. package/build/ComposedEntityCacheAdapter.js.map +1 -1
  6. package/build/ComposedSecondaryEntityCache.js +1 -0
  7. package/build/ComposedSecondaryEntityCache.js.map +1 -1
  8. package/build/EnforcingEntityLoader.d.ts +5 -4
  9. package/build/EnforcingEntityLoader.js +4 -2
  10. package/build/EnforcingEntityLoader.js.map +1 -1
  11. package/build/Entity.d.ts +4 -31
  12. package/build/Entity.js +19 -46
  13. package/build/Entity.js.map +1 -1
  14. package/build/EntityAssociationLoader.d.ts +9 -9
  15. package/build/EntityAssociationLoader.js +37 -12
  16. package/build/EntityAssociationLoader.js.map +1 -1
  17. package/build/EntityCompanion.js +9 -1
  18. package/build/EntityCompanion.js.map +1 -1
  19. package/build/EntityCompanionProvider.d.ts +3 -1
  20. package/build/EntityCompanionProvider.js +10 -4
  21. package/build/EntityCompanionProvider.js.map +1 -1
  22. package/build/EntityConfiguration.d.ts +2 -1
  23. package/build/EntityConfiguration.js +19 -1
  24. package/build/EntityConfiguration.js.map +1 -1
  25. package/build/EntityDatabaseAdapter.d.ts +2 -2
  26. package/build/EntityDatabaseAdapter.js +5 -3
  27. package/build/EntityDatabaseAdapter.js.map +1 -1
  28. package/build/EntityFieldDefinition.d.ts +21 -10
  29. package/build/EntityFieldDefinition.js +8 -9
  30. package/build/EntityFieldDefinition.js.map +1 -1
  31. package/build/EntityFields.d.ts +10 -0
  32. package/build/EntityFields.js +15 -1
  33. package/build/EntityFields.js.map +1 -1
  34. package/build/EntityLoader.d.ts +12 -125
  35. package/build/EntityLoader.js +24 -239
  36. package/build/EntityLoader.js.map +1 -1
  37. package/build/EntityLoaderFactory.d.ts +1 -1
  38. package/build/EntityLoaderFactory.js +3 -0
  39. package/build/EntityLoaderFactory.js.map +1 -1
  40. package/build/EntityLoaderUtils.d.ts +58 -0
  41. package/build/EntityLoaderUtils.js +109 -0
  42. package/build/EntityLoaderUtils.js.map +1 -0
  43. package/build/EntityMutator.d.ts +1 -0
  44. package/build/EntityMutator.js +71 -56
  45. package/build/EntityMutator.js.map +1 -1
  46. package/build/EntityMutatorFactory.js +9 -0
  47. package/build/EntityMutatorFactory.js.map +1 -1
  48. package/build/EntityPrivacyPolicy.d.ts +11 -5
  49. package/build/EntityPrivacyPolicy.js +5 -7
  50. package/build/EntityPrivacyPolicy.js.map +1 -1
  51. package/build/EntityQueryContext.d.ts +2 -1
  52. package/build/EntityQueryContext.js +11 -6
  53. package/build/EntityQueryContext.js.map +1 -1
  54. package/build/EntityQueryContextProvider.d.ts +1 -1
  55. package/build/EntityQueryContextProvider.js +1 -1
  56. package/build/EntityQueryContextProvider.js.map +1 -1
  57. package/build/EntitySecondaryCacheLoader.js +5 -1
  58. package/build/EntitySecondaryCacheLoader.js.map +1 -1
  59. package/build/GenericEntityCacheAdapter.js +1 -0
  60. package/build/GenericEntityCacheAdapter.js.map +1 -1
  61. package/build/GenericSecondaryEntityCache.js +2 -0
  62. package/build/GenericSecondaryEntityCache.js.map +1 -1
  63. package/build/IEntityCacheAdapterProvider.d.ts +1 -1
  64. package/build/IEntityDatabaseAdapterProvider.d.ts +1 -1
  65. package/build/ReadonlyEntity.d.ts +1 -1
  66. package/build/ReadonlyEntity.js +9 -2
  67. package/build/ReadonlyEntity.js.map +1 -1
  68. package/build/ViewerContext.d.ts +2 -2
  69. package/build/ViewerContext.js +5 -3
  70. package/build/ViewerContext.js.map +1 -1
  71. package/build/ViewerScopedEntityCompanion.js +2 -0
  72. package/build/ViewerScopedEntityCompanion.js.map +1 -1
  73. package/build/ViewerScopedEntityCompanionProvider.d.ts +0 -1
  74. package/build/ViewerScopedEntityCompanionProvider.js +2 -1
  75. package/build/ViewerScopedEntityCompanionProvider.js.map +1 -1
  76. package/build/ViewerScopedEntityLoaderFactory.d.ts +1 -1
  77. package/build/ViewerScopedEntityLoaderFactory.js +2 -0
  78. package/build/ViewerScopedEntityLoaderFactory.js.map +1 -1
  79. package/build/ViewerScopedEntityMutatorFactory.js +2 -0
  80. package/build/ViewerScopedEntityMutatorFactory.js.map +1 -1
  81. package/build/__tests__/ComposedCacheAdapter-test.js +2 -0
  82. package/build/__tests__/ComposedCacheAdapter-test.js.map +1 -1
  83. package/build/__tests__/ComposedSecondaryEntityCache-test.js +1 -0
  84. package/build/__tests__/ComposedSecondaryEntityCache-test.js.map +1 -1
  85. package/build/__tests__/EnforcingEntityLoader-test.js +101 -113
  86. package/build/__tests__/EnforcingEntityLoader-test.js.map +1 -1
  87. package/build/__tests__/Entity-test.js +5 -137
  88. package/build/__tests__/Entity-test.js.map +1 -1
  89. package/build/__tests__/EntityAssociationLoader-test.js +37 -65
  90. package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
  91. package/build/__tests__/EntityCommonUseCases-test.js +31 -37
  92. package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
  93. package/build/__tests__/EntityCompanion-test.js +26 -3
  94. package/build/__tests__/EntityCompanion-test.js.map +1 -1
  95. package/build/__tests__/EntityConfiguration-test.js +103 -0
  96. package/build/__tests__/EntityConfiguration-test.js.map +1 -0
  97. package/build/__tests__/EntityDatabaseAdapter-test.js +6 -0
  98. package/build/__tests__/EntityDatabaseAdapter-test.js.map +1 -1
  99. package/build/__tests__/EntityEdges-test.js +89 -80
  100. package/build/__tests__/EntityEdges-test.js.map +1 -1
  101. package/build/__tests__/EntityFields-test.js +6 -0
  102. package/build/__tests__/EntityFields-test.js.map +1 -1
  103. package/build/__tests__/EntityLoader-constructor-test.js +17 -18
  104. package/build/__tests__/EntityLoader-constructor-test.js.map +1 -1
  105. package/build/__tests__/EntityLoader-test.js +93 -41
  106. package/build/__tests__/EntityLoader-test.js.map +1 -1
  107. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +18 -21
  108. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
  109. package/build/__tests__/EntityMutator-test.js +74 -29
  110. package/build/__tests__/EntityMutator-test.js.map +1 -1
  111. package/build/__tests__/EntityPrivacyPolicy-test.js +77 -59
  112. package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
  113. package/build/__tests__/EntityQueryContext-test.js +9 -0
  114. package/build/__tests__/EntityQueryContext-test.js.map +1 -1
  115. package/build/__tests__/EntitySecondaryCacheLoader-test.js +10 -10
  116. package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
  117. package/build/__tests__/EntitySelfReferentialEdges-test.js +59 -74
  118. package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
  119. package/build/__tests__/ReadonlyEntity-test.js +13 -13
  120. package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
  121. package/build/__tests__/ViewerContext-test.js +2 -2
  122. package/build/__tests__/ViewerContext-test.js.map +1 -1
  123. package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +1 -1
  124. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +26 -28
  125. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
  126. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +25 -30
  127. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
  128. package/build/entityUtils.d.ts +1 -1
  129. package/build/entityUtils.js.map +1 -1
  130. package/build/errors/EntityCacheAdapterError.js +2 -5
  131. package/build/errors/EntityCacheAdapterError.js.map +1 -1
  132. package/build/errors/EntityDatabaseAdapterError.js +14 -35
  133. package/build/errors/EntityDatabaseAdapterError.js.map +1 -1
  134. package/build/errors/EntityError.js +1 -0
  135. package/build/errors/EntityError.js.map +1 -1
  136. package/build/errors/EntityInvalidFieldValueError.js +2 -2
  137. package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
  138. package/build/errors/EntityNotAuthorizedError.js +3 -2
  139. package/build/errors/EntityNotAuthorizedError.js.map +1 -1
  140. package/build/errors/EntityNotFoundError.js +2 -2
  141. package/build/errors/EntityNotFoundError.js.map +1 -1
  142. package/build/index.d.ts +1 -0
  143. package/build/index.js +1 -0
  144. package/build/index.js.map +1 -1
  145. package/build/internal/EntityDataManager.d.ts +1 -1
  146. package/build/internal/EntityDataManager.js +7 -2
  147. package/build/internal/EntityDataManager.js.map +1 -1
  148. package/build/internal/EntityFieldTransformationUtils.d.ts +5 -5
  149. package/build/internal/EntityFieldTransformationUtils.js +5 -8
  150. package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
  151. package/build/internal/EntityTableDataCoordinator.d.ts +1 -1
  152. package/build/internal/EntityTableDataCoordinator.js +5 -0
  153. package/build/internal/EntityTableDataCoordinator.js.map +1 -1
  154. package/build/internal/ReadThroughEntityCache.d.ts +1 -1
  155. package/build/internal/ReadThroughEntityCache.js +2 -0
  156. package/build/internal/ReadThroughEntityCache.js.map +1 -1
  157. package/build/internal/__tests__/EntityDataManager-test.js +11 -11
  158. package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
  159. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +6 -2
  160. package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +1 -1
  161. package/build/internal/__tests__/ReadThroughEntityCache-test.js +33 -0
  162. package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
  163. package/build/metrics/IEntityMetricsAdapter.d.ts +1 -1
  164. package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +1 -1
  165. package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
  166. package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +1 -1
  167. package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
  168. package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +1 -1
  169. package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
  170. package/build/rules/PrivacyPolicyRule.d.ts +1 -1
  171. package/build/rules/PrivacyPolicyRule.js.map +1 -1
  172. package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +1 -1
  173. package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +1 -1
  174. package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +1 -1
  175. package/build/testfixtures/DateIDTestEntity.js +12 -15
  176. package/build/testfixtures/DateIDTestEntity.js.map +1 -1
  177. package/build/testfixtures/SimpleTestEntity.d.ts +8 -8
  178. package/build/testfixtures/SimpleTestEntity.js +12 -15
  179. package/build/testfixtures/SimpleTestEntity.js.map +1 -1
  180. package/build/testfixtures/TestEntity.d.ts +12 -12
  181. package/build/testfixtures/TestEntity.js +12 -15
  182. package/build/testfixtures/TestEntity.js.map +1 -1
  183. package/build/testfixtures/TestEntity2.d.ts +8 -8
  184. package/build/testfixtures/TestEntity2.js +12 -15
  185. package/build/testfixtures/TestEntity2.js.map +1 -1
  186. package/build/testfixtures/TestEntityNumberKey.js +12 -15
  187. package/build/testfixtures/TestEntityNumberKey.js.map +1 -1
  188. package/build/testfixtures/TestEntityWithMutationTriggers.d.ts +36 -0
  189. package/build/testfixtures/TestEntityWithMutationTriggers.js +82 -0
  190. package/build/testfixtures/TestEntityWithMutationTriggers.js.map +1 -0
  191. package/build/testfixtures/TestViewerContext.d.ts +0 -3
  192. package/build/testfixtures/TestViewerContext.js +0 -6
  193. package/build/testfixtures/TestViewerContext.js.map +1 -1
  194. package/build/utils/EntityPrivacyUtils.d.ts +34 -0
  195. package/build/utils/EntityPrivacyUtils.js +160 -0
  196. package/build/utils/EntityPrivacyUtils.js.map +1 -0
  197. package/build/utils/__tests__/EntityPrivacyUtils-test.d.ts +1 -0
  198. package/build/utils/__tests__/EntityPrivacyUtils-test.js +395 -0
  199. package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +1 -0
  200. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +1 -0
  201. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +26 -0
  202. package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +1 -0
  203. package/build/utils/collections/maps.js.map +1 -1
  204. package/build/utils/mergeEntityMutationTriggerConfigurations.d.ts +4 -0
  205. package/build/utils/mergeEntityMutationTriggerConfigurations.js +28 -0
  206. package/build/utils/mergeEntityMutationTriggerConfigurations.js.map +1 -0
  207. package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +1 -1
  208. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +1 -1
  209. package/build/utils/testing/StubCacheAdapter.d.ts +3 -3
  210. package/build/utils/testing/StubCacheAdapter.js +3 -3
  211. package/build/utils/testing/StubCacheAdapter.js.map +1 -1
  212. package/build/utils/testing/StubDatabaseAdapter.d.ts +2 -2
  213. package/build/utils/testing/StubDatabaseAdapter.js +4 -2
  214. package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
  215. package/build/utils/testing/StubDatabaseAdapterProvider.d.ts +1 -1
  216. package/build/utils/testing/StubDatabaseAdapterProvider.js +1 -3
  217. package/build/utils/testing/StubDatabaseAdapterProvider.js.map +1 -1
  218. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.d.ts +1 -0
  219. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js +42 -0
  220. package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js.map +1 -0
  221. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +53 -0
  222. package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +1 -1
  223. package/build/utils/testing/describeFieldTestCase.js.map +1 -1
  224. package/package.json +4 -3
  225. package/src/AuthorizationResultBasedEntityLoader.ts +297 -0
  226. package/src/ComposedEntityCacheAdapter.ts +6 -6
  227. package/src/ComposedSecondaryEntityCache.ts +8 -8
  228. package/src/EnforcingEntityLoader.ts +20 -19
  229. package/src/Entity.ts +26 -118
  230. package/src/EntityAssociationLoader.ts +56 -41
  231. package/src/EntityCompanion.ts +8 -4
  232. package/src/EntityCompanionProvider.ts +24 -16
  233. package/src/EntityConfiguration.ts +18 -7
  234. package/src/EntityDatabaseAdapter.ts +41 -41
  235. package/src/EntityFieldDefinition.ts +28 -18
  236. package/src/EntityFields.ts +15 -0
  237. package/src/EntityLoader.ts +63 -357
  238. package/src/EntityLoaderFactory.ts +10 -4
  239. package/src/EntityLoaderUtils.ts +149 -0
  240. package/src/EntityMutationInfo.ts +2 -2
  241. package/src/EntityMutationTriggerConfiguration.ts +5 -5
  242. package/src/EntityMutationValidator.ts +2 -2
  243. package/src/EntityMutator.ts +146 -144
  244. package/src/EntityMutatorFactory.ts +8 -8
  245. package/src/EntityPrivacyPolicy.ts +78 -28
  246. package/src/EntityQueryContext.ts +14 -13
  247. package/src/EntityQueryContextProvider.ts +6 -6
  248. package/src/EntitySecondaryCacheLoader.ts +13 -11
  249. package/src/GenericEntityCacheAdapter.ts +10 -10
  250. package/src/GenericSecondaryEntityCache.ts +6 -6
  251. package/src/IEntityCacheAdapter.ts +4 -4
  252. package/src/IEntityCacheAdapterProvider.ts +2 -2
  253. package/src/IEntityDatabaseAdapterProvider.ts +2 -2
  254. package/src/ReadonlyEntity.ts +8 -5
  255. package/src/ViewerContext.ts +10 -10
  256. package/src/ViewerScopedEntityCompanion.ts +4 -4
  257. package/src/ViewerScopedEntityCompanionProvider.ts +4 -5
  258. package/src/ViewerScopedEntityLoaderFactory.ts +10 -4
  259. package/src/ViewerScopedEntityMutatorFactory.ts +5 -5
  260. package/src/__tests__/ComposedCacheAdapter-test.ts +12 -10
  261. package/src/__tests__/ComposedSecondaryEntityCache-test.ts +8 -8
  262. package/src/__tests__/EnforcingEntityLoader-test.ts +236 -159
  263. package/src/__tests__/Entity-test.ts +5 -223
  264. package/src/__tests__/EntityAssociationLoader-test.ts +91 -169
  265. package/src/__tests__/EntityCommonUseCases-test.ts +36 -38
  266. package/src/__tests__/EntityCompanion-test.ts +57 -5
  267. package/src/__tests__/EntityConfiguration-test.ts +118 -0
  268. package/src/__tests__/EntityDatabaseAdapter-test.ts +11 -11
  269. package/src/__tests__/EntityEdges-test.ts +128 -118
  270. package/src/__tests__/EntityFields-test.ts +14 -2
  271. package/src/__tests__/EntityLoader-constructor-test.ts +21 -8
  272. package/src/__tests__/EntityLoader-test.ts +233 -105
  273. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +17 -20
  274. package/src/__tests__/EntityMutator-test.ts +342 -163
  275. package/src/__tests__/EntityPrivacyPolicy-test.ts +166 -53
  276. package/src/__tests__/EntityQueryContext-test.ts +30 -12
  277. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +17 -26
  278. package/src/__tests__/EntitySelfReferentialEdges-test.ts +67 -115
  279. package/src/__tests__/GenericEntityCacheAdapter-test.ts +2 -2
  280. package/src/__tests__/ReadonlyEntity-test.ts +13 -15
  281. package/src/__tests__/ViewerContext-test.ts +3 -4
  282. package/src/__tests__/ViewerScopedEntityCompanion-test.ts +2 -2
  283. package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +2 -2
  284. package/src/__tests__/ViewerScopedEntityLoaderFactory-test.ts +2 -1
  285. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +34 -45
  286. package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +22 -30
  287. package/src/__tests__/entityUtils-test.ts +2 -2
  288. package/src/entityUtils.ts +4 -4
  289. package/src/errors/EntityError.ts +4 -1
  290. package/src/errors/EntityInvalidFieldValueError.ts +2 -2
  291. package/src/errors/EntityNotAuthorizedError.ts +3 -3
  292. package/src/errors/EntityNotFoundError.ts +2 -2
  293. package/src/index.ts +1 -0
  294. package/src/internal/EntityDataManager.ts +25 -25
  295. package/src/internal/EntityFieldTransformationUtils.ts +39 -32
  296. package/src/internal/EntityTableDataCoordinator.ts +3 -3
  297. package/src/internal/ReadThroughEntityCache.ts +9 -9
  298. package/src/internal/__tests__/EntityDataManager-test.ts +62 -62
  299. package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +14 -10
  300. package/src/internal/__tests__/ReadThroughEntityCache-test.ts +74 -18
  301. package/src/metrics/EntityMetricsUtils.ts +4 -4
  302. package/src/metrics/IEntityMetricsAdapter.ts +1 -1
  303. package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +9 -3
  304. package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +9 -3
  305. package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +9 -3
  306. package/src/rules/PrivacyPolicyRule.ts +9 -3
  307. package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +2 -1
  308. package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +2 -1
  309. package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +2 -1
  310. package/src/testfixtures/SimpleTestEntity.ts +8 -8
  311. package/src/testfixtures/TestEntity.ts +13 -16
  312. package/src/testfixtures/TestEntity2.ts +8 -8
  313. package/src/testfixtures/TestEntityWithMutationTriggers.ts +156 -0
  314. package/src/testfixtures/TestViewerContext.ts +1 -12
  315. package/src/utils/EntityPrivacyUtils.ts +325 -0
  316. package/src/utils/__tests__/EntityPrivacyUtils-test.ts +570 -0
  317. package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +29 -0
  318. package/src/utils/collections/__tests__/maps-test.ts +2 -2
  319. package/src/utils/collections/maps.ts +11 -11
  320. package/src/utils/mergeEntityMutationTriggerConfigurations.ts +44 -0
  321. package/src/utils/testing/PrivacyPolicyRuleTestUtils.ts +25 -22
  322. package/src/utils/testing/StubCacheAdapter.ts +17 -15
  323. package/src/utils/testing/StubDatabaseAdapter.ts +35 -30
  324. package/src/utils/testing/StubDatabaseAdapterProvider.ts +2 -2
  325. package/src/utils/testing/StubQueryContextProvider.ts +2 -2
  326. package/src/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.ts +42 -0
  327. package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +111 -29
  328. package/src/utils/testing/createUnitTestEntityCompanionProvider.ts +2 -2
  329. package/src/utils/testing/describeFieldTestCase.ts +1 -1
  330. package/build/__tests__/EntityDataConfiguration-test.js +0 -68
  331. package/build/__tests__/EntityDataConfiguration-test.js.map +0 -1
  332. package/src/__tests__/EntityDataConfiguration-test.ts +0 -77
  333. /package/build/__tests__/{EntityDataConfiguration-test.d.ts → EntityConfiguration-test.d.ts} +0 -0
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const results_1 = require("@expo/results");
7
+ const nullthrows_1 = __importDefault(require("nullthrows"));
8
+ const entityUtils_1 = require("./entityUtils");
9
+ const maps_1 = require("./utils/collections/maps");
10
+ /**
11
+ * Entity loader utilities for things like invalidation, entity construction, and authorization.
12
+ * Methods are exposed publicly since in rare cases they may need to be called manually.
13
+ */
14
+ class EntityLoaderUtils {
15
+ viewerContext;
16
+ queryContext;
17
+ privacyPolicyEvaluationContext;
18
+ entityConfiguration;
19
+ entityClass;
20
+ entitySelectedFields;
21
+ privacyPolicy;
22
+ dataManager;
23
+ metricsAdapter;
24
+ constructor(viewerContext, queryContext, privacyPolicyEvaluationContext, entityConfiguration, entityClass, entitySelectedFields, privacyPolicy, dataManager, metricsAdapter) {
25
+ this.viewerContext = viewerContext;
26
+ this.queryContext = queryContext;
27
+ this.privacyPolicyEvaluationContext = privacyPolicyEvaluationContext;
28
+ this.entityConfiguration = entityConfiguration;
29
+ this.entityClass = entityClass;
30
+ this.entitySelectedFields = entitySelectedFields;
31
+ this.privacyPolicy = privacyPolicy;
32
+ this.dataManager = dataManager;
33
+ this.metricsAdapter = metricsAdapter;
34
+ }
35
+ /**
36
+ * Invalidate all caches for an entity's fields. Exposed primarily for internal use by EntityMutator.
37
+ * @param objectFields - entity data object to be invalidated
38
+ */
39
+ async invalidateFieldsAsync(objectFields) {
40
+ await this.dataManager.invalidateObjectFieldsAsync(objectFields);
41
+ }
42
+ /**
43
+ * Invalidate all caches for an entity. One potential use case would be to keep the entity
44
+ * framework in sync with changes made to data outside of the framework.
45
+ * @param entity - entity to be invalidated
46
+ */
47
+ async invalidateEntityAsync(entity) {
48
+ await this.invalidateFieldsAsync(entity.getAllDatabaseFields());
49
+ }
50
+ /**
51
+ * Construct an entity from a fields object (applying field selection if applicable),
52
+ * checking that the ID field is specified.
53
+ *
54
+ * @param fieldsObject - fields object
55
+ */
56
+ constructEntity(fieldsObject) {
57
+ const idField = this.entityConfiguration.idField;
58
+ const id = (0, nullthrows_1.default)(fieldsObject[idField], 'must provide ID to create an entity');
59
+ const entitySelectedFields = this.entitySelectedFields ?? Array.from(this.entityConfiguration.schema.keys());
60
+ const selectedFields = (0, entityUtils_1.pick)(fieldsObject, entitySelectedFields);
61
+ return new this.entityClass({
62
+ viewerContext: this.viewerContext,
63
+ id: id,
64
+ databaseFields: fieldsObject,
65
+ selectedFields,
66
+ });
67
+ }
68
+ /**
69
+ * Construct and authorize entities from fields map, returning error results for entities that fail
70
+ * to construct or fail to authorize.
71
+ *
72
+ * @param map - map from an arbitrary key type to an array of entity field objects
73
+ */
74
+ async constructAndAuthorizeEntitiesAsync(map) {
75
+ return await (0, maps_1.mapMapAsync)(map, async (fieldObjects) => {
76
+ return await this.constructAndAuthorizeEntitiesArrayAsync(fieldObjects);
77
+ });
78
+ }
79
+ /**
80
+ * Construct and authorize entities from field objects array, returning error results for entities that fail
81
+ * to construct or fail to authorize.
82
+ *
83
+ * @param fieldObjects - array of field objects
84
+ */
85
+ async constructAndAuthorizeEntitiesArrayAsync(fieldObjects) {
86
+ const uncheckedEntityResults = this.tryConstructEntities(fieldObjects);
87
+ return await Promise.all(uncheckedEntityResults.map(async (uncheckedEntityResult) => {
88
+ if (!uncheckedEntityResult.ok) {
89
+ return uncheckedEntityResult;
90
+ }
91
+ return await (0, results_1.asyncResult)(this.privacyPolicy.authorizeReadAsync(this.viewerContext, this.queryContext, this.privacyPolicyEvaluationContext, uncheckedEntityResult.value, this.metricsAdapter));
92
+ }));
93
+ }
94
+ tryConstructEntities(fieldsObjects) {
95
+ return fieldsObjects.map((fieldsObject) => {
96
+ try {
97
+ return (0, results_1.result)(this.constructEntity(fieldsObject));
98
+ }
99
+ catch (e) {
100
+ if (!(e instanceof Error)) {
101
+ throw e;
102
+ }
103
+ return (0, results_1.result)(e);
104
+ }
105
+ });
106
+ }
107
+ }
108
+ exports.default = EntityLoaderUtils;
109
+ //# sourceMappingURL=EntityLoaderUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityLoaderUtils.js","sourceRoot":"","sources":["../src/EntityLoaderUtils.ts"],"names":[],"mappings":"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"}
@@ -79,6 +79,7 @@ export declare class UpdateMutator<TFields extends object, TID extends NonNullab
79
79
  enforceUpdateAsync(): Promise<TEntity>;
80
80
  private updateInTransactionAsync;
81
81
  private updateInternalAsync;
82
+ private ensureStableIDField;
82
83
  }
83
84
  /**
84
85
  * Mutator for deleting an existing entity.
@@ -13,6 +13,17 @@ const EntityMetricsUtils_1 = require("./metrics/EntityMetricsUtils");
13
13
  const IEntityMetricsAdapter_1 = require("./metrics/IEntityMetricsAdapter");
14
14
  const maps_1 = require("./utils/collections/maps");
15
15
  class BaseMutator {
16
+ companionProvider;
17
+ viewerContext;
18
+ queryContext;
19
+ entityConfiguration;
20
+ entityClass;
21
+ privacyPolicy;
22
+ mutationValidators;
23
+ mutationTriggers;
24
+ entityLoaderFactory;
25
+ databaseAdapter;
26
+ metricsAdapter;
16
27
  constructor(companionProvider, viewerContext, queryContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter) {
17
28
  this.companionProvider = companionProvider;
18
29
  this.viewerContext = viewerContext;
@@ -57,10 +68,7 @@ class BaseMutator {
57
68
  * Mutator for creating a new entity.
58
69
  */
59
70
  class CreateMutator extends BaseMutator {
60
- constructor() {
61
- super(...arguments);
62
- this.fieldsForEntity = {};
63
- }
71
+ fieldsForEntity = {};
64
72
  /**
65
73
  * Set the value for entity field.
66
74
  * @param fieldName - entity field being updated
@@ -90,13 +98,14 @@ class CreateMutator extends BaseMutator {
90
98
  async createInternalAsync(queryContext) {
91
99
  this.validateFields(this.fieldsForEntity);
92
100
  const entityLoader = this.entityLoaderFactory.forLoad(this.viewerContext, queryContext, {
101
+ previousValue: null,
93
102
  cascadingDeleteCause: null,
94
103
  });
95
- const temporaryEntityForPrivacyCheck = entityLoader.constructEntity({
96
- [this.entityConfiguration.idField]: '00000000-0000-0000-0000-000000000000',
104
+ const temporaryEntityForPrivacyCheck = entityLoader.utils().constructEntity({
105
+ [this.entityConfiguration.idField]: '00000000-0000-0000-0000-000000000000', // zero UUID
97
106
  ...this.fieldsForEntity,
98
107
  });
99
- const authorizeCreateResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeCreateAsync(this.viewerContext, queryContext, { cascadingDeleteCause: null }, temporaryEntityForPrivacyCheck, this.metricsAdapter));
108
+ const authorizeCreateResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeCreateAsync(this.viewerContext, queryContext, { previousValue: null, cascadingDeleteCause: null }, temporaryEntityForPrivacyCheck, this.metricsAdapter));
100
109
  if (!authorizeCreateResult.ok) {
101
110
  return authorizeCreateResult;
102
111
  }
@@ -104,8 +113,8 @@ class CreateMutator extends BaseMutator {
104
113
  await this.executeMutationTriggersAsync(this.mutationTriggers.beforeAll, queryContext, temporaryEntityForPrivacyCheck, { type: EntityMutationInfo_1.EntityMutationType.CREATE });
105
114
  await this.executeMutationTriggersAsync(this.mutationTriggers.beforeCreate, queryContext, temporaryEntityForPrivacyCheck, { type: EntityMutationInfo_1.EntityMutationType.CREATE });
106
115
  const insertResult = await this.databaseAdapter.insertAsync(queryContext, this.fieldsForEntity);
107
- queryContext.appendPostCommitInvalidationCallback(entityLoader.invalidateFieldsAsync.bind(entityLoader, insertResult));
108
- const unauthorizedEntityAfterInsert = entityLoader.constructEntity(insertResult);
116
+ queryContext.appendPostCommitInvalidationCallback(entityLoader.utils().invalidateFieldsAsync.bind(entityLoader, insertResult));
117
+ const unauthorizedEntityAfterInsert = entityLoader.utils().constructEntity(insertResult);
109
118
  const newEntity = await entityLoader
110
119
  .enforcing()
111
120
  .loadByIDAsync(unauthorizedEntityAfterInsert.getID());
@@ -120,9 +129,11 @@ exports.CreateMutator = CreateMutator;
120
129
  * Mutator for updating an existing entity.
121
130
  */
122
131
  class UpdateMutator extends BaseMutator {
132
+ originalEntity;
133
+ fieldsForEntity;
134
+ updatedFields = {};
123
135
  constructor(companionProvider, viewerContext, queryContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter, originalEntity) {
124
136
  super(companionProvider, viewerContext, queryContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter);
125
- this.updatedFields = {};
126
137
  this.originalEntity = originalEntity;
127
138
  this.fieldsForEntity = { ...originalEntity.getAllDatabaseFields() };
128
139
  }
@@ -155,11 +166,13 @@ class UpdateMutator extends BaseMutator {
155
166
  }
156
167
  async updateInternalAsync(queryContext, skipDatabaseUpdate, cascadingDeleteCause) {
157
168
  this.validateFields(this.updatedFields);
169
+ this.ensureStableIDField(this.updatedFields);
158
170
  const entityLoader = this.entityLoaderFactory.forLoad(this.viewerContext, queryContext, {
171
+ previousValue: this.originalEntity,
159
172
  cascadingDeleteCause,
160
173
  });
161
- const entityAboutToBeUpdated = entityLoader.constructEntity(this.fieldsForEntity);
162
- const authorizeUpdateResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeUpdateAsync(this.viewerContext, queryContext, { cascadingDeleteCause }, entityAboutToBeUpdated, this.metricsAdapter));
174
+ const entityAboutToBeUpdated = entityLoader.utils().constructEntity(this.fieldsForEntity);
175
+ const authorizeUpdateResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeUpdateAsync(this.viewerContext, queryContext, { previousValue: this.originalEntity, cascadingDeleteCause }, entityAboutToBeUpdated, this.metricsAdapter));
163
176
  if (!authorizeUpdateResult.ok) {
164
177
  return authorizeUpdateResult;
165
178
  }
@@ -167,18 +180,16 @@ class UpdateMutator extends BaseMutator {
167
180
  await this.executeMutationTriggersAsync(this.mutationTriggers.beforeAll, queryContext, entityAboutToBeUpdated, { type: EntityMutationInfo_1.EntityMutationType.UPDATE, previousValue: this.originalEntity, cascadingDeleteCause });
168
181
  await this.executeMutationTriggersAsync(this.mutationTriggers.beforeUpdate, queryContext, entityAboutToBeUpdated, { type: EntityMutationInfo_1.EntityMutationType.UPDATE, previousValue: this.originalEntity, cascadingDeleteCause });
169
182
  // skip the database update when specified
170
- const updateResult = skipDatabaseUpdate
171
- ? null
172
- : await this.databaseAdapter.updateAsync(queryContext, this.entityConfiguration.idField, entityAboutToBeUpdated.getID(), this.updatedFields);
173
- queryContext.appendPostCommitInvalidationCallback(entityLoader.invalidateFieldsAsync.bind(entityLoader, this.originalEntity.getAllDatabaseFields()));
174
- queryContext.appendPostCommitInvalidationCallback(entityLoader.invalidateFieldsAsync.bind(entityLoader, this.fieldsForEntity));
175
- // when the database update was skipped, assume it succeeded and use the optimistic
176
- // entity to execute triggers
177
- const updatedEntity = updateResult
178
- ? await entityLoader
179
- .enforcing()
180
- .loadByIDAsync(entityLoader.constructEntity(updateResult).getID())
181
- : entityAboutToBeUpdated;
183
+ if (!skipDatabaseUpdate) {
184
+ await this.databaseAdapter.updateAsync(queryContext, this.entityConfiguration.idField, entityAboutToBeUpdated.getID(), this.updatedFields);
185
+ }
186
+ queryContext.appendPostCommitInvalidationCallback(entityLoader
187
+ .utils()
188
+ .invalidateFieldsAsync.bind(entityLoader, this.originalEntity.getAllDatabaseFields()));
189
+ queryContext.appendPostCommitInvalidationCallback(entityLoader.utils().invalidateFieldsAsync.bind(entityLoader, this.fieldsForEntity));
190
+ const updatedEntity = await entityLoader
191
+ .enforcing()
192
+ .loadByIDAsync(entityAboutToBeUpdated.getID()); // ID is guaranteed to be stable by ensureStableIDField
182
193
  await this.executeMutationTriggersAsync(this.mutationTriggers.afterUpdate, queryContext, updatedEntity, { type: EntityMutationInfo_1.EntityMutationType.UPDATE, previousValue: this.originalEntity, cascadingDeleteCause });
183
194
  await this.executeMutationTriggersAsync(this.mutationTriggers.afterAll, queryContext, updatedEntity, { type: EntityMutationInfo_1.EntityMutationType.UPDATE, previousValue: this.originalEntity, cascadingDeleteCause });
184
195
  queryContext.appendPostCommitCallback(this.executeNonTransactionalMutationTriggersAsync.bind(this, this.mutationTriggers.afterCommit, updatedEntity, {
@@ -188,12 +199,20 @@ class UpdateMutator extends BaseMutator {
188
199
  }));
189
200
  return (0, results_1.result)(updatedEntity);
190
201
  }
202
+ ensureStableIDField(updatedFields) {
203
+ const originalId = this.originalEntity.getID();
204
+ const idField = this.entityConfiguration.idField;
205
+ if (updatedFields.hasOwnProperty(idField) && originalId !== updatedFields[idField]) {
206
+ throw new Error(`id field updates not supported: (entityClass = ${this.entityClass.name})`);
207
+ }
208
+ }
191
209
  }
192
210
  exports.UpdateMutator = UpdateMutator;
193
211
  /**
194
212
  * Mutator for deleting an existing entity.
195
213
  */
196
214
  class DeleteMutator extends BaseMutator {
215
+ entity;
197
216
  constructor(companionProvider, viewerContext, queryContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter, entity) {
198
217
  super(companionProvider, viewerContext, queryContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter);
199
218
  this.entity = entity;
@@ -215,7 +234,7 @@ class DeleteMutator extends BaseMutator {
215
234
  return await this.queryContext.runInTransactionIfNotInTransactionAsync((innerQueryContext) => this.deleteInternalAsync(innerQueryContext, processedEntityIdentifiersFromTransitiveDeletions, skipDatabaseDeletion, cascadingDeleteCause));
216
235
  }
217
236
  async deleteInternalAsync(queryContext, processedEntityIdentifiersFromTransitiveDeletions, skipDatabaseDeletion, cascadingDeleteCause) {
218
- const authorizeDeleteResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeDeleteAsync(this.viewerContext, queryContext, { cascadingDeleteCause }, this.entity, this.metricsAdapter));
237
+ const authorizeDeleteResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeDeleteAsync(this.viewerContext, queryContext, { previousValue: null, cascadingDeleteCause }, this.entity, this.metricsAdapter));
219
238
  if (!authorizeDeleteResult.ok) {
220
239
  return authorizeDeleteResult;
221
240
  }
@@ -226,9 +245,12 @@ class DeleteMutator extends BaseMutator {
226
245
  await this.databaseAdapter.deleteAsync(queryContext, this.entityConfiguration.idField, this.entity.getID());
227
246
  }
228
247
  const entityLoader = this.entityLoaderFactory.forLoad(this.viewerContext, queryContext, {
248
+ previousValue: null,
229
249
  cascadingDeleteCause,
230
250
  });
231
- queryContext.appendPostCommitInvalidationCallback(entityLoader.invalidateFieldsAsync.bind(entityLoader, this.entity.getAllDatabaseFields()));
251
+ queryContext.appendPostCommitInvalidationCallback(entityLoader
252
+ .utils()
253
+ .invalidateFieldsAsync.bind(entityLoader, this.entity.getAllDatabaseFields()));
232
254
  await this.executeMutationTriggersAsync(this.mutationTriggers.afterDelete, queryContext, this.entity, { type: EntityMutationInfo_1.EntityMutationType.DELETE, cascadingDeleteCause });
233
255
  await this.executeMutationTriggersAsync(this.mutationTriggers.afterAll, queryContext, this.entity, { type: EntityMutationInfo_1.EntityMutationType.DELETE, cascadingDeleteCause });
234
256
  queryContext.appendPostCommitCallback(this.executeNonTransactionalMutationTriggersAsync.bind(this, this.mutationTriggers.afterCommit, this.entity, { type: EntityMutationInfo_1.EntityMutationType.DELETE, cascadingDeleteCause }));
@@ -257,7 +279,19 @@ class DeleteMutator extends BaseMutator {
257
279
  const companionDefinition = this.companionProvider.getCompanionForEntity(entity.constructor).entityCompanionDefinition;
258
280
  const entityConfiguration = companionDefinition.entityConfiguration;
259
281
  const inboundEdges = entityConfiguration.inboundEdges;
282
+ const newCascadingDeleteCause = {
283
+ entity,
284
+ cascadingDeleteCause,
285
+ };
260
286
  await Promise.all(inboundEdges.map(async (entityClass) => {
287
+ const loaderFactory = entity
288
+ .getViewerContext()
289
+ .getViewerScopedEntityCompanionForClass(entityClass)
290
+ .getLoaderFactory();
291
+ const mutatorFactory = entity
292
+ .getViewerContext()
293
+ .getViewerScopedEntityCompanionForClass(entityClass)
294
+ .getMutatorFactory();
261
295
  return await (0, maps_1.mapMapAsync)(this.companionProvider.getCompanionForEntity(entityClass).entityCompanionDefinition
262
296
  .entityConfiguration.schema, async (fieldDefinition, fieldName) => {
263
297
  const association = fieldDefinition.association;
@@ -268,32 +302,15 @@ class DeleteMutator extends BaseMutator {
268
302
  if (associatedConfiguration !== entityConfiguration) {
269
303
  return;
270
304
  }
271
- const associatedEntityLookupByField = association.associatedEntityLookupByField;
272
- const loaderFactory = entity
273
- .getViewerContext()
274
- .getViewerScopedEntityCompanionForClass(entityClass)
275
- .getLoaderFactory();
276
- const mutatorFactory = entity
277
- .getViewerContext()
278
- .getViewerScopedEntityCompanionForClass(entityClass)
279
- .getMutatorFactory();
280
- const newCascadingDeleteCause = {
281
- entity,
282
- cascadingDeleteCause,
283
- };
284
- let inboundReferenceEntities;
285
- if (associatedEntityLookupByField) {
286
- inboundReferenceEntities = await loaderFactory
287
- .forLoad(queryContext, { cascadingDeleteCause: newCascadingDeleteCause })
288
- .enforcing()
289
- .loadManyByFieldEqualingAsync(fieldName, entity.getField(associatedEntityLookupByField));
290
- }
291
- else {
292
- inboundReferenceEntities = await loaderFactory
293
- .forLoad(queryContext, { cascadingDeleteCause: newCascadingDeleteCause })
294
- .enforcing()
295
- .loadManyByFieldEqualingAsync(fieldName, entity.getID());
296
- }
305
+ const inboundReferenceEntities = await loaderFactory
306
+ .forLoad(queryContext, {
307
+ previousValue: null,
308
+ cascadingDeleteCause: newCascadingDeleteCause,
309
+ })
310
+ .enforcing()
311
+ .loadManyByFieldEqualingAsync(fieldName, association.associatedEntityLookupByField
312
+ ? entity.getField(association.associatedEntityLookupByField)
313
+ : entity.getID());
297
314
  switch (association.edgeDeletionBehavior) {
298
315
  case EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE_ONLY: {
299
316
  await Promise.all(inboundReferenceEntities.map((inboundReferenceEntity) => (0, results_1.enforceAsyncResult)(mutatorFactory
@@ -306,15 +323,13 @@ class DeleteMutator extends BaseMutator {
306
323
  case EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL_INVALIDATE_CACHE_ONLY: {
307
324
  await Promise.all(inboundReferenceEntities.map((inboundReferenceEntity) => (0, results_1.enforceAsyncResult)(mutatorFactory
308
325
  .forUpdate(inboundReferenceEntity, queryContext)
309
- .setField(fieldName, null)['updateInTransactionAsync'](
310
- /* skipDatabaseUpdate */ true, newCascadingDeleteCause))));
326
+ .setField(fieldName, null)['updateInTransactionAsync'](/* skipDatabaseUpdate */ true, newCascadingDeleteCause))));
311
327
  break;
312
328
  }
313
329
  case EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL: {
314
330
  await Promise.all(inboundReferenceEntities.map((inboundReferenceEntity) => (0, results_1.enforceAsyncResult)(mutatorFactory
315
331
  .forUpdate(inboundReferenceEntity, queryContext)
316
- .setField(fieldName, null)['updateInTransactionAsync'](
317
- /* skipDatabaseUpdate */ false, newCascadingDeleteCause))));
332
+ .setField(fieldName, null)['updateInTransactionAsync'](/* skipDatabaseUpdate */ false, newCascadingDeleteCause))));
318
333
  break;
319
334
  }
320
335
  case EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE: {
@@ -1 +1 @@
1
- {"version":3,"file":"EntityMutator.js","sourceRoot":"","sources":["../src/EntityMutator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntityMutator.js","sourceRoot":"","sources":["../src/EntityMutator.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,15 @@ const EntityMutator_1 = require("./EntityMutator");
5
5
  * The primary interface for creating, mutating, and deleting entities.
6
6
  */
7
7
  class EntityMutatorFactory {
8
+ entityCompanionProvider;
9
+ entityConfiguration;
10
+ entityClass;
11
+ privacyPolicy;
12
+ mutationValidators;
13
+ mutationTriggers;
14
+ entityLoaderFactory;
15
+ databaseAdapter;
16
+ metricsAdapter;
8
17
  constructor(entityCompanionProvider, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter) {
9
18
  this.entityCompanionProvider = entityCompanionProvider;
10
19
  this.entityConfiguration = entityConfiguration;
@@ -1 +1 @@
1
- {"version":3,"file":"EntityMutatorFactory.js","sourceRoot":"","sources":["../src/EntityMutatorFactory.ts"],"names":[],"mappings":";;AAOA,mDAA8E;AAM9E;;GAEG;AACH,MAAqB,oBAAoB;IAcvC,YACmB,uBAAgD,EAChD,mBAAiD,EACjD,WAOhB,EACgB,aAA6B,EAC7B,kBAMd,EACc,gBAMhB,EACgB,mBAOhB,EACgB,eAA+C,EAC/C,cAAqC;QAlCrC,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,wBAAmB,GAAnB,mBAAmB,CAA8B;QACjD,gBAAW,GAAX,WAAW,CAO3B;QACgB,kBAAa,GAAb,aAAa,CAAgB;QAC7B,uBAAkB,GAAlB,kBAAkB,CAMhC;QACc,qBAAgB,GAAhB,gBAAgB,CAMhC;QACgB,wBAAmB,GAAnB,mBAAmB,CAOnC;QACgB,oBAAe,GAAf,eAAe,CAAgC;QAC/C,mBAAc,GAAd,cAAc,CAAuB;IACrD,CAAC;IAEJ;;;;;OAKG;IACH,SAAS,CACP,aAA6B,EAC7B,YAAgC;QAEhC,OAAO,IAAI,6BAAa,CACtB,IAAI,CAAC,uBAAuB,EAC5B,aAAa,EACb,YAAY,EACZ,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,SAAS,CACP,cAAuB,EACvB,YAAgC;QAEhC,OAAO,IAAI,6BAAa,CACtB,IAAI,CAAC,uBAAuB,EAC5B,cAAc,CAAC,gBAAgB,EAAE,EACjC,YAAY,EACZ,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,cAAc,CACf,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,SAAS,CACP,cAAuB,EACvB,YAAgC;QAEhC,OAAO,IAAI,6BAAa,CACtB,IAAI,CAAC,uBAAuB,EAC5B,cAAc,CAAC,gBAAgB,EAAE,EACjC,YAAY,EACZ,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,cAAc,CACf,CAAC;IACJ,CAAC;CACF;AA/HD,uCA+HC"}
1
+ {"version":3,"file":"EntityMutatorFactory.js","sourceRoot":"","sources":["../src/EntityMutatorFactory.ts"],"names":[],"mappings":";;AAOA,mDAA8E;AAM9E;;GAEG;AACH,MAAqB,oBAAoB;IAepB;IACA;IACA;IAQA;IACA;IAOA;IAOA;IAQA;IACA;IAnCnB,YACmB,uBAAgD,EAChD,mBAAiD,EACjD,WAOhB,EACgB,aAA6B,EAC7B,kBAMd,EACc,gBAMhB,EACgB,mBAOhB,EACgB,eAA+C,EAC/C,cAAqC;QAlCrC,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,wBAAmB,GAAnB,mBAAmB,CAA8B;QACjD,gBAAW,GAAX,WAAW,CAO3B;QACgB,kBAAa,GAAb,aAAa,CAAgB;QAC7B,uBAAkB,GAAlB,kBAAkB,CAMhC;QACc,qBAAgB,GAAhB,gBAAgB,CAMhC;QACgB,wBAAmB,GAAnB,mBAAmB,CAOnC;QACgB,oBAAe,GAAf,eAAe,CAAgC;QAC/C,mBAAc,GAAd,cAAc,CAAuB;IACrD,CAAC;IAEJ;;;;;OAKG;IACH,SAAS,CACP,aAA6B,EAC7B,YAAgC;QAEhC,OAAO,IAAI,6BAAa,CACtB,IAAI,CAAC,uBAAuB,EAC5B,aAAa,EACb,YAAY,EACZ,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,SAAS,CACP,cAAuB,EACvB,YAAgC;QAEhC,OAAO,IAAI,6BAAa,CACtB,IAAI,CAAC,uBAAuB,EAC5B,cAAc,CAAC,gBAAgB,EAAE,EACjC,YAAY,EACZ,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,cAAc,CACf,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,SAAS,CACP,cAAuB,EACvB,YAAgC;QAEhC,OAAO,IAAI,6BAAa,CACtB,IAAI,CAAC,uBAAuB,EAC5B,cAAc,CAAC,gBAAgB,EAAE,EACjC,YAAY,EACZ,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,cAAc,CACf,CAAC;IACJ,CAAC;CACF;AA/HD,uCA+HC"}
@@ -8,7 +8,13 @@ import PrivacyPolicyRule from './rules/PrivacyPolicyRule';
8
8
  /**
9
9
  * Information about the reason this privacy policy is being evaluated.
10
10
  */
11
- export type EntityPrivacyPolicyEvaluationContext = {
11
+ export type EntityPrivacyPolicyEvaluationContext<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> = {
12
+ /**
13
+ * When this privacy policy is being evaluated as a result of an update, this will be populated with the value
14
+ * of the entity before the update. Note that this doesn't only apply to UPDATE authorization actions though:
15
+ * when an entity is updated it is re-LOADed after the update completes.
16
+ */
17
+ previousValue: TEntity | null;
12
18
  /**
13
19
  * When this privacy policy is being evaluated as a result of a cascading deletion, this will be populated
14
20
  * with information on the cascading delete.
@@ -91,7 +97,7 @@ export default abstract class EntityPrivacyPolicy<TFields extends object, TID ex
91
97
  * @returns entity if authorized
92
98
  * @throws EntityNotAuthorizedError when not authorized
93
99
  */
94
- authorizeCreateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
100
+ authorizeCreateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
95
101
  /**
96
102
  * Authorize an entity against read policy.
97
103
  * @param viewerContext - viewer context of user reading the entity
@@ -100,7 +106,7 @@ export default abstract class EntityPrivacyPolicy<TFields extends object, TID ex
100
106
  * @returns entity if authorized
101
107
  * @throws EntityNotAuthorizedError when not authorized
102
108
  */
103
- authorizeReadAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
109
+ authorizeReadAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
104
110
  /**
105
111
  * Authorize an entity against update policy.
106
112
  * @param viewerContext - viewer context of user updating the entity
@@ -109,7 +115,7 @@ export default abstract class EntityPrivacyPolicy<TFields extends object, TID ex
109
115
  * @returns entity if authorized
110
116
  * @throws EntityNotAuthorizedError when not authorized
111
117
  */
112
- authorizeUpdateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
118
+ authorizeUpdateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
113
119
  /**
114
120
  * Authorize an entity against deletion policy.
115
121
  * @param viewerContext - viewer context of user deleting the entity
@@ -118,7 +124,7 @@ export default abstract class EntityPrivacyPolicy<TFields extends object, TID ex
118
124
  * @returns entity if authorized
119
125
  * @throws EntityNotAuthorizedError when not authorized
120
126
  */
121
- authorizeDeleteAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
127
+ authorizeDeleteAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
122
128
  private authorizeForRulesetAsync;
123
129
  private authorizeForRulesetInnerAsync;
124
130
  }
@@ -55,12 +55,10 @@ var EntityAuthorizationAction;
55
55
  * ```
56
56
  */
57
57
  class EntityPrivacyPolicy {
58
- constructor() {
59
- this.createRules = [];
60
- this.readRules = [];
61
- this.updateRules = [];
62
- this.deleteRules = [];
63
- }
58
+ createRules = [];
59
+ readRules = [];
60
+ updateRules = [];
61
+ deleteRules = [];
64
62
  /**
65
63
  * Get the privacy policy evaluation mode and deny handler for this policy.
66
64
  * Defaults to normal enforcing policy.
@@ -206,7 +204,7 @@ class EntityPrivacyPolicy {
206
204
  case PrivacyPolicyRule_1.RuleEvaluationResult.ALLOW:
207
205
  return entity;
208
206
  default:
209
- throw new Error('should not be a fourth type of rule evaluation result');
207
+ throw new Error(`Invalid RuleEvaluationResult returned from rule: ${entity} (viewer = ${viewerContext}, action = ${EntityAuthorizationAction[action]}, ruleIndex = ${i})`);
210
208
  }
211
209
  }
212
210
  throw new EntityNotAuthorizedError_1.default(entity, viewerContext, action, -1);
@@ -1 +1 @@
1
- {"version":3,"file":"EntityPrivacyPolicy.js","sourceRoot":"","sources":["../src/EntityPrivacyPolicy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntityPrivacyPolicy.js","sourceRoot":"","sources":["../src/EntityPrivacyPolicy.ts"],"names":[],"mappings":"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"}
@@ -78,7 +78,8 @@ export declare class EntityTransactionalQueryContext extends EntityQueryContext
78
78
  * to EntityMutator and EntityLoader methods, those methods and their
79
79
  * dependent triggers and validators will run within the nested transaction.
80
80
  *
81
- * This exists to forward post-commit callbacks to the parent query context.
81
+ * This exists to forward post-commit callbacks to the parent query context but only after
82
+ * successful commit of the nested transaction.
82
83
  */
83
84
  export declare class EntityNestedTransactionalQueryContext extends EntityTransactionalQueryContext {
84
85
  private readonly parentQueryContext;
@@ -19,6 +19,7 @@ var TransactionIsolationLevel;
19
19
  * differs when in a transactional context.
20
20
  */
21
21
  class EntityQueryContext {
22
+ queryInterface;
22
23
  constructor(queryInterface) {
23
24
  this.queryInterface = queryInterface;
24
25
  }
@@ -34,6 +35,7 @@ exports.EntityQueryContext = EntityQueryContext;
34
35
  * independent transactions internally when not being run in a transaction).
35
36
  */
36
37
  class EntityNonTransactionalQueryContext extends EntityQueryContext {
38
+ entityQueryContextProvider;
37
39
  constructor(queryInterface, entityQueryContextProvider) {
38
40
  super(queryInterface);
39
41
  this.entityQueryContextProvider = entityQueryContextProvider;
@@ -52,12 +54,13 @@ exports.EntityNonTransactionalQueryContext = EntityNonTransactionalQueryContext;
52
54
  * dependent triggers and validators will run within the transaction.
53
55
  */
54
56
  class EntityTransactionalQueryContext extends EntityQueryContext {
57
+ entityQueryContextProvider;
58
+ postCommitInvalidationCallbacks = [];
59
+ postCommitCallbacks = [];
60
+ preCommitCallbacks = [];
55
61
  constructor(queryInterface, entityQueryContextProvider) {
56
62
  super(queryInterface);
57
63
  this.entityQueryContextProvider = entityQueryContextProvider;
58
- this.postCommitInvalidationCallbacks = [];
59
- this.postCommitCallbacks = [];
60
- this.preCommitCallbacks = [];
61
64
  }
62
65
  /**
63
66
  * Schedule a pre-commit callback. These will be run within the transaction right before it is
@@ -121,14 +124,16 @@ exports.EntityTransactionalQueryContext = EntityTransactionalQueryContext;
121
124
  * to EntityMutator and EntityLoader methods, those methods and their
122
125
  * dependent triggers and validators will run within the nested transaction.
123
126
  *
124
- * This exists to forward post-commit callbacks to the parent query context.
127
+ * This exists to forward post-commit callbacks to the parent query context but only after
128
+ * successful commit of the nested transaction.
125
129
  */
126
130
  class EntityNestedTransactionalQueryContext extends EntityTransactionalQueryContext {
131
+ parentQueryContext;
132
+ postCommitInvalidationCallbacksToTransfer = [];
133
+ postCommitCallbacksToTransfer = [];
127
134
  constructor(queryInterface, parentQueryContext, entityQueryContextProvider) {
128
135
  super(queryInterface, entityQueryContextProvider);
129
136
  this.parentQueryContext = parentQueryContext;
130
- this.postCommitInvalidationCallbacksToTransfer = [];
131
- this.postCommitCallbacksToTransfer = [];
132
137
  }
133
138
  appendPostCommitCallback(callback) {
134
139
  this.postCommitInvalidationCallbacksToTransfer.push(callback);