@expo/entity 0.45.0 → 0.47.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 (425) hide show
  1. package/build/{AuthorizationResultBasedEntityAssociationLoader.d.ts → src/AuthorizationResultBasedEntityAssociationLoader.d.ts} +4 -4
  2. package/build/{AuthorizationResultBasedEntityAssociationLoader.js → src/AuthorizationResultBasedEntityAssociationLoader.js} +2 -1
  3. package/build/src/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -0
  4. package/build/{AuthorizationResultBasedEntityLoader.d.ts → src/AuthorizationResultBasedEntityLoader.d.ts} +8 -8
  5. package/build/{AuthorizationResultBasedEntityLoader.js → src/AuthorizationResultBasedEntityLoader.js} +6 -5
  6. package/build/src/AuthorizationResultBasedEntityLoader.js.map +1 -0
  7. package/build/{AuthorizationResultBasedEntityMutator.d.ts → src/AuthorizationResultBasedEntityMutator.d.ts} +15 -13
  8. package/build/{AuthorizationResultBasedEntityMutator.js → src/AuthorizationResultBasedEntityMutator.js} +77 -39
  9. package/build/src/AuthorizationResultBasedEntityMutator.js.map +1 -0
  10. package/build/{ComposedEntityCacheAdapter.d.ts → src/ComposedEntityCacheAdapter.d.ts} +2 -2
  11. package/build/{ComposedEntityCacheAdapter.js → src/ComposedEntityCacheAdapter.js} +2 -1
  12. package/build/src/ComposedEntityCacheAdapter.js.map +1 -0
  13. package/build/{ComposedSecondaryEntityCache.d.ts → src/ComposedSecondaryEntityCache.d.ts} +1 -1
  14. package/build/{ComposedSecondaryEntityCache.js → src/ComposedSecondaryEntityCache.js} +2 -1
  15. package/build/src/ComposedSecondaryEntityCache.js.map +1 -0
  16. package/build/{EnforcingEntityAssociationLoader.d.ts → src/EnforcingEntityAssociationLoader.d.ts} +5 -5
  17. package/build/{EnforcingEntityAssociationLoader.js → src/EnforcingEntityAssociationLoader.js} +2 -1
  18. package/build/src/EnforcingEntityAssociationLoader.js.map +1 -0
  19. package/build/{EnforcingEntityCreator.d.ts → src/EnforcingEntityCreator.d.ts} +4 -4
  20. package/build/{EnforcingEntityCreator.js → src/EnforcingEntityCreator.js} +2 -1
  21. package/build/src/EnforcingEntityCreator.js.map +1 -0
  22. package/build/{EnforcingEntityDeleter.d.ts → src/EnforcingEntityDeleter.d.ts} +4 -4
  23. package/build/{EnforcingEntityDeleter.js → src/EnforcingEntityDeleter.js} +2 -1
  24. package/build/src/EnforcingEntityDeleter.js.map +1 -0
  25. package/build/{EnforcingEntityLoader.d.ts → src/EnforcingEntityLoader.d.ts} +5 -5
  26. package/build/{EnforcingEntityLoader.js → src/EnforcingEntityLoader.js} +2 -1
  27. package/build/src/EnforcingEntityLoader.js.map +1 -0
  28. package/build/{EnforcingEntityUpdater.d.ts → src/EnforcingEntityUpdater.d.ts} +4 -4
  29. package/build/{EnforcingEntityUpdater.js → src/EnforcingEntityUpdater.js} +2 -1
  30. package/build/src/EnforcingEntityUpdater.js.map +1 -0
  31. package/build/{Entity.d.ts → src/Entity.d.ts} +7 -7
  32. package/build/{Entity.js → src/Entity.js} +13 -15
  33. package/build/src/Entity.js.map +1 -0
  34. package/build/{EntityAssociationLoader.d.ts → src/EntityAssociationLoader.d.ts} +5 -5
  35. package/build/{EntityAssociationLoader.js → src/EntityAssociationLoader.js} +6 -8
  36. package/build/src/EntityAssociationLoader.js.map +1 -0
  37. package/build/{EntityCompanion.d.ts → src/EntityCompanion.d.ts} +10 -10
  38. package/build/{EntityCompanion.js → src/EntityCompanion.js} +6 -8
  39. package/build/src/EntityCompanion.js.map +1 -0
  40. package/build/{EntityCompanionProvider.d.ts → src/EntityCompanionProvider.d.ts} +12 -12
  41. package/build/{EntityCompanionProvider.js → src/EntityCompanionProvider.js} +6 -5
  42. package/build/src/EntityCompanionProvider.js.map +1 -0
  43. package/build/{EntityConfiguration.d.ts → src/EntityConfiguration.d.ts} +2 -2
  44. package/build/{EntityConfiguration.js → src/EntityConfiguration.js} +2 -2
  45. package/build/src/EntityConfiguration.js.map +1 -0
  46. package/build/{EntityCreator.d.ts → src/EntityCreator.d.ts} +5 -5
  47. package/build/{EntityCreator.js → src/EntityCreator.js} +4 -6
  48. package/build/{EntityCreator.js.map → src/EntityCreator.js.map} +1 -1
  49. package/build/{EntityDatabaseAdapter.d.ts → src/EntityDatabaseAdapter.d.ts} +2 -2
  50. package/build/{EntityDatabaseAdapter.js → src/EntityDatabaseAdapter.js} +2 -2
  51. package/build/src/EntityDatabaseAdapter.js.map +1 -0
  52. package/build/{EntityDeleter.d.ts → src/EntityDeleter.d.ts} +5 -5
  53. package/build/{EntityDeleter.js → src/EntityDeleter.js} +5 -7
  54. package/build/{EntityDeleter.js.map → src/EntityDeleter.js.map} +1 -1
  55. package/build/{EntityFieldDefinition.d.ts → src/EntityFieldDefinition.d.ts} +3 -3
  56. package/build/src/EntityFieldDefinition.js.map +1 -0
  57. package/build/{EntityFields.d.ts → src/EntityFields.d.ts} +7 -0
  58. package/build/{EntityFields.js → src/EntityFields.js} +11 -1
  59. package/build/src/EntityFields.js.map +1 -0
  60. package/build/{EntityLoader.d.ts → src/EntityLoader.d.ts} +7 -7
  61. package/build/{EntityLoader.js → src/EntityLoader.js} +4 -6
  62. package/build/{EntityLoader.js.map → src/EntityLoader.js.map} +1 -1
  63. package/build/{EntityLoaderFactory.d.ts → src/EntityLoaderFactory.d.ts} +8 -8
  64. package/build/src/EntityLoaderFactory.js +29 -0
  65. package/build/src/EntityLoaderFactory.js.map +1 -0
  66. package/build/{EntityLoaderUtils.d.ts → src/EntityLoaderUtils.d.ts} +7 -7
  67. package/build/{EntityLoaderUtils.js → src/EntityLoaderUtils.js} +2 -1
  68. package/build/src/EntityLoaderUtils.js.map +1 -0
  69. package/build/{EntityMutationInfo.d.ts → src/EntityMutationInfo.d.ts} +2 -2
  70. package/build/src/EntityMutationInfo.js.map +1 -0
  71. package/build/{EntityMutationTriggerConfiguration.d.ts → src/EntityMutationTriggerConfiguration.d.ts} +3 -3
  72. package/build/src/EntityMutationTriggerConfiguration.js.map +1 -0
  73. package/build/{EntityMutationValidator.d.ts → src/EntityMutationValidator.d.ts} +3 -3
  74. package/build/{EntityMutationValidator.js → src/EntityMutationValidator.js} +2 -1
  75. package/build/src/EntityMutationValidator.js.map +1 -0
  76. package/build/{EntityMutatorFactory.d.ts → src/EntityMutatorFactory.d.ts} +15 -14
  77. package/build/{EntityMutatorFactory.js → src/EntityMutatorFactory.js} +6 -5
  78. package/build/src/EntityMutatorFactory.js.map +1 -0
  79. package/build/{EntityPrivacyPolicy.d.ts → src/EntityPrivacyPolicy.d.ts} +6 -6
  80. package/build/{EntityPrivacyPolicy.js → src/EntityPrivacyPolicy.js} +8 -11
  81. package/build/{EntityPrivacyPolicy.js.map → src/EntityPrivacyPolicy.js.map} +1 -1
  82. package/build/{EntityQueryContext.d.ts → src/EntityQueryContext.d.ts} +1 -1
  83. package/build/src/EntityQueryContext.js.map +1 -0
  84. package/build/{EntityQueryContextProvider.d.ts → src/EntityQueryContextProvider.d.ts} +2 -2
  85. package/build/{EntityQueryContextProvider.js → src/EntityQueryContextProvider.js} +2 -1
  86. package/build/src/EntityQueryContextProvider.js.map +1 -0
  87. package/build/{EntitySecondaryCacheLoader.d.ts → src/EntitySecondaryCacheLoader.d.ts} +5 -5
  88. package/build/{EntitySecondaryCacheLoader.js → src/EntitySecondaryCacheLoader.js} +2 -1
  89. package/build/src/EntitySecondaryCacheLoader.js.map +1 -0
  90. package/build/{EntityUpdater.d.ts → src/EntityUpdater.d.ts} +5 -5
  91. package/build/{EntityUpdater.js → src/EntityUpdater.js} +5 -7
  92. package/build/{EntityUpdater.js.map → src/EntityUpdater.js.map} +1 -1
  93. package/build/{GenericEntityCacheAdapter.d.ts → src/GenericEntityCacheAdapter.d.ts} +3 -3
  94. package/build/{GenericEntityCacheAdapter.js → src/GenericEntityCacheAdapter.js} +2 -1
  95. package/build/src/GenericEntityCacheAdapter.js.map +1 -0
  96. package/build/{GenericSecondaryEntityCache.d.ts → src/GenericSecondaryEntityCache.d.ts} +2 -2
  97. package/build/{GenericSecondaryEntityCache.js → src/GenericSecondaryEntityCache.js} +2 -1
  98. package/build/src/GenericSecondaryEntityCache.js.map +1 -0
  99. package/build/{IEntityCacheAdapter.d.ts → src/IEntityCacheAdapter.d.ts} +1 -1
  100. package/build/src/IEntityCacheAdapter.js.map +1 -0
  101. package/build/{IEntityCacheAdapterProvider.d.ts → src/IEntityCacheAdapterProvider.d.ts} +3 -3
  102. package/build/src/IEntityCacheAdapterProvider.js.map +1 -0
  103. package/build/{IEntityDatabaseAdapterProvider.d.ts → src/IEntityDatabaseAdapterProvider.d.ts} +3 -3
  104. package/build/src/IEntityDatabaseAdapterProvider.js.map +1 -0
  105. package/build/{IEntityGenericCacher.d.ts → src/IEntityGenericCacher.d.ts} +1 -1
  106. package/build/src/IEntityGenericCacher.js.map +1 -0
  107. package/build/{ReadonlyEntity.d.ts → src/ReadonlyEntity.d.ts} +8 -8
  108. package/build/{ReadonlyEntity.js → src/ReadonlyEntity.js} +9 -8
  109. package/build/src/ReadonlyEntity.js.map +1 -0
  110. package/build/{ViewerContext.d.ts → src/ViewerContext.d.ts} +5 -5
  111. package/build/{ViewerContext.js → src/ViewerContext.js} +4 -6
  112. package/build/{ViewerContext.js.map → src/ViewerContext.js.map} +1 -1
  113. package/build/{ViewerScopedEntityCompanion.d.ts → src/ViewerScopedEntityCompanion.d.ts} +9 -9
  114. package/build/{ViewerScopedEntityCompanion.js → src/ViewerScopedEntityCompanion.js} +6 -8
  115. package/build/{ViewerScopedEntityCompanion.js.map → src/ViewerScopedEntityCompanion.js.map} +1 -1
  116. package/build/{ViewerScopedEntityCompanionProvider.d.ts → src/ViewerScopedEntityCompanionProvider.d.ts} +6 -6
  117. package/build/{ViewerScopedEntityCompanionProvider.js → src/ViewerScopedEntityCompanionProvider.js} +4 -6
  118. package/build/src/ViewerScopedEntityCompanionProvider.js.map +1 -0
  119. package/build/{ViewerScopedEntityLoaderFactory.d.ts → src/ViewerScopedEntityLoaderFactory.d.ts} +6 -6
  120. package/build/{ViewerScopedEntityLoaderFactory.js → src/ViewerScopedEntityLoaderFactory.js} +2 -1
  121. package/build/src/ViewerScopedEntityLoaderFactory.js.map +1 -0
  122. package/build/{ViewerScopedEntityMutatorFactory.d.ts → src/ViewerScopedEntityMutatorFactory.d.ts} +9 -8
  123. package/build/{ViewerScopedEntityMutatorFactory.js → src/ViewerScopedEntityMutatorFactory.js} +6 -5
  124. package/build/src/ViewerScopedEntityMutatorFactory.js.map +1 -0
  125. package/build/src/entityUtils.js.map +1 -0
  126. package/build/{errors → src/errors}/EntityCacheAdapterError.d.ts +2 -2
  127. package/build/src/errors/EntityCacheAdapterError.js +13 -0
  128. package/build/src/errors/EntityCacheAdapterError.js.map +1 -0
  129. package/build/{errors → src/errors}/EntityDatabaseAdapterError.d.ts +2 -2
  130. package/build/{errors → src/errors}/EntityDatabaseAdapterError.js +4 -37
  131. package/build/src/errors/EntityDatabaseAdapterError.js.map +1 -0
  132. package/build/{errors → src/errors}/EntityError.d.ts +1 -1
  133. package/build/{errors → src/errors}/EntityError.js +2 -2
  134. package/build/src/errors/EntityError.js.map +1 -0
  135. package/build/{errors → src/errors}/EntityInvalidFieldValueError.d.ts +5 -5
  136. package/build/src/errors/EntityInvalidFieldValueError.js +13 -0
  137. package/build/src/errors/EntityInvalidFieldValueError.js.map +1 -0
  138. package/build/{errors → src/errors}/EntityNotAuthorizedError.d.ts +4 -4
  139. package/build/src/errors/EntityNotAuthorizedError.js +16 -0
  140. package/build/src/errors/EntityNotAuthorizedError.js.map +1 -0
  141. package/build/{errors → src/errors}/EntityNotFoundError.d.ts +5 -5
  142. package/build/src/errors/EntityNotFoundError.js +18 -0
  143. package/build/src/errors/EntityNotFoundError.js.map +1 -0
  144. package/build/src/index.d.ts +76 -0
  145. package/build/src/index.js +94 -0
  146. package/build/src/index.js.map +1 -0
  147. package/build/{internal → src/internal}/CompositeFieldHolder.d.ts +1 -1
  148. package/build/src/internal/CompositeFieldHolder.js.map +1 -0
  149. package/build/src/internal/CompositeFieldValueMap.js.map +1 -0
  150. package/build/{internal → src/internal}/EntityDataManager.d.ts +5 -5
  151. package/build/{internal → src/internal}/EntityDataManager.js +2 -1
  152. package/build/src/internal/EntityDataManager.js.map +1 -0
  153. package/build/{internal → src/internal}/EntityFieldTransformationUtils.d.ts +1 -1
  154. package/build/src/internal/EntityFieldTransformationUtils.js.map +1 -0
  155. package/build/{internal → src/internal}/EntityLoadInterfaces.d.ts +1 -1
  156. package/build/src/internal/EntityLoadInterfaces.js.map +1 -0
  157. package/build/{internal → src/internal}/EntityTableDataCoordinator.d.ts +9 -9
  158. package/build/{internal → src/internal}/EntityTableDataCoordinator.js +5 -7
  159. package/build/{internal → src/internal}/EntityTableDataCoordinator.js.map +1 -1
  160. package/build/{internal → src/internal}/ReadThroughEntityCache.d.ts +3 -3
  161. package/build/{internal → src/internal}/ReadThroughEntityCache.js +2 -2
  162. package/build/src/internal/ReadThroughEntityCache.js.map +1 -0
  163. package/build/{internal → src/internal}/SingleFieldHolder.d.ts +1 -1
  164. package/build/src/internal/SingleFieldHolder.js.map +1 -0
  165. package/build/{metrics → src/metrics}/EntityMetricsUtils.d.ts +1 -1
  166. package/build/src/metrics/EntityMetricsUtils.js.map +1 -0
  167. package/build/{metrics → src/metrics}/IEntityMetricsAdapter.d.ts +1 -1
  168. package/build/src/metrics/IEntityMetricsAdapter.js.map +1 -0
  169. package/build/{metrics → src/metrics}/NoOpEntityMetricsAdapter.d.ts +2 -2
  170. package/build/{metrics → src/metrics}/NoOpEntityMetricsAdapter.js +2 -1
  171. package/build/src/metrics/NoOpEntityMetricsAdapter.js.map +1 -0
  172. package/build/{rules → src/rules}/AlwaysAllowPrivacyPolicyRule.d.ts +4 -4
  173. package/build/src/rules/AlwaysAllowPrivacyPolicyRule.js +14 -0
  174. package/build/src/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -0
  175. package/build/{rules → src/rules}/AlwaysDenyPrivacyPolicyRule.d.ts +4 -4
  176. package/build/src/rules/AlwaysDenyPrivacyPolicyRule.js +14 -0
  177. package/build/src/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -0
  178. package/build/{rules → src/rules}/AlwaysSkipPrivacyPolicyRule.d.ts +4 -4
  179. package/build/src/rules/AlwaysSkipPrivacyPolicyRule.js +14 -0
  180. package/build/src/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -0
  181. package/build/{rules → src/rules}/PrivacyPolicyRule.d.ts +3 -3
  182. package/build/{rules → src/rules}/PrivacyPolicyRule.js +2 -2
  183. package/build/src/rules/PrivacyPolicyRule.js.map +1 -0
  184. package/build/{utils → src/utils}/EntityCreationUtils.d.ts +3 -3
  185. package/build/{utils → src/utils}/EntityCreationUtils.js +2 -5
  186. package/build/{utils → src/utils}/EntityCreationUtils.js.map +1 -1
  187. package/build/{utils → src/utils}/EntityPrivacyUtils.d.ts +4 -4
  188. package/build/{utils → src/utils}/EntityPrivacyUtils.js +4 -7
  189. package/build/{utils → src/utils}/EntityPrivacyUtils.js.map +1 -1
  190. package/build/src/utils/collections/SerializableKeyMap.js.map +1 -0
  191. package/build/src/utils/collections/maps.js.map +1 -0
  192. package/build/src/utils/collections/sets.js.map +1 -0
  193. package/build/{utils → src/utils}/mergeEntityMutationTriggerConfigurations.d.ts +3 -3
  194. package/build/src/utils/mergeEntityMutationTriggerConfigurations.js.map +1 -0
  195. package/package.json +14 -24
  196. package/src/AuthorizationResultBasedEntityAssociationLoader.ts +4 -4
  197. package/src/AuthorizationResultBasedEntityLoader.ts +13 -12
  198. package/src/AuthorizationResultBasedEntityMutator.ts +78 -63
  199. package/src/ComposedEntityCacheAdapter.ts +3 -3
  200. package/src/ComposedSecondaryEntityCache.ts +1 -1
  201. package/src/EnforcingEntityAssociationLoader.ts +6 -5
  202. package/src/EnforcingEntityCreator.ts +4 -4
  203. package/src/EnforcingEntityDeleter.ts +4 -4
  204. package/src/EnforcingEntityLoader.ts +5 -5
  205. package/src/EnforcingEntityUpdater.ts +4 -4
  206. package/src/Entity.ts +10 -10
  207. package/src/EntityAssociationLoader.ts +5 -5
  208. package/src/EntityCompanion.ts +10 -10
  209. package/src/EntityCompanionProvider.ts +13 -13
  210. package/src/EntityConfiguration.ts +3 -3
  211. package/src/EntityCreator.ts +5 -5
  212. package/src/EntityDatabaseAdapter.ts +3 -3
  213. package/src/EntityDeleter.ts +6 -6
  214. package/src/EntityFieldDefinition.ts +3 -3
  215. package/src/EntityFields.ts +13 -0
  216. package/src/EntityLoader.ts +7 -7
  217. package/src/EntityLoaderFactory.ts +9 -9
  218. package/src/EntityLoaderUtils.ts +7 -7
  219. package/src/EntityMutationInfo.ts +2 -2
  220. package/src/EntityMutationTriggerConfiguration.ts +3 -3
  221. package/src/EntityMutationValidator.ts +3 -3
  222. package/src/EntityMutatorFactory.ts +17 -12
  223. package/src/EntityPrivacyPolicy.ts +7 -6
  224. package/src/EntityQueryContext.ts +1 -1
  225. package/src/EntityQueryContextProvider.ts +3 -3
  226. package/src/EntitySecondaryCacheLoader.ts +5 -5
  227. package/src/EntityUpdater.ts +6 -6
  228. package/src/GenericEntityCacheAdapter.ts +3 -3
  229. package/src/GenericSecondaryEntityCache.ts +2 -2
  230. package/src/IEntityCacheAdapter.ts +1 -1
  231. package/src/IEntityCacheAdapterProvider.ts +3 -3
  232. package/src/IEntityDatabaseAdapterProvider.ts +3 -3
  233. package/src/IEntityGenericCacher.ts +1 -1
  234. package/src/ReadonlyEntity.ts +10 -10
  235. package/src/ViewerContext.ts +6 -6
  236. package/src/ViewerScopedEntityCompanion.ts +9 -9
  237. package/src/ViewerScopedEntityCompanionProvider.ts +6 -6
  238. package/src/ViewerScopedEntityLoaderFactory.ts +6 -6
  239. package/src/ViewerScopedEntityMutatorFactory.ts +11 -8
  240. package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +5 -4
  241. package/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.ts +14 -18
  242. package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +18 -16
  243. package/src/__tests__/ComposedCacheAdapter-test.ts +5 -3
  244. package/src/__tests__/ComposedSecondaryEntityCache-test.ts +2 -1
  245. package/src/__tests__/EnforcingEntityAssociationLoader-test.ts +4 -3
  246. package/src/__tests__/EnforcingEntityLoader-test.ts +4 -3
  247. package/src/__tests__/Entity-test.ts +8 -6
  248. package/src/__tests__/EntityAssociationLoader-test.ts +7 -5
  249. package/src/__tests__/EntityCommonUseCases-test.ts +10 -9
  250. package/src/__tests__/EntityCompanion-test.ts +13 -11
  251. package/src/__tests__/EntityCompanionProvider-test.ts +7 -5
  252. package/src/__tests__/EntityConfiguration-test.ts +3 -1
  253. package/src/__tests__/EntityDatabaseAdapter-test.ts +9 -7
  254. package/src/__tests__/EntityEdges-test.ts +10 -8
  255. package/src/__tests__/EntityFields-test.ts +15 -7
  256. package/src/__tests__/EntityLoader-test.ts +8 -6
  257. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +8 -6
  258. package/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.ts +5 -3
  259. package/src/__tests__/EntityMutator-test.ts +250 -45
  260. package/src/__tests__/EntityPrivacyPolicy-test.ts +19 -16
  261. package/src/__tests__/EntityQueryContext-test.ts +7 -6
  262. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +5 -3
  263. package/src/__tests__/EntitySelfReferentialEdges-test.ts +7 -5
  264. package/src/__tests__/GenericEntityCacheAdapter-test.ts +4 -3
  265. package/src/__tests__/ReadonlyEntity-test.ts +10 -9
  266. package/src/__tests__/ViewerContext-test.ts +3 -1
  267. package/src/__tests__/ViewerScopedEntityCompanion-test.ts +10 -8
  268. package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +7 -6
  269. package/src/__tests__/ViewerScopedEntityLoaderFactory-test.ts +5 -4
  270. package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +8 -6
  271. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +15 -13
  272. package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +7 -5
  273. package/src/__tests__/entityUtils-test.ts +3 -2
  274. package/src/errors/EntityCacheAdapterError.ts +2 -2
  275. package/src/errors/EntityDatabaseAdapterError.ts +2 -2
  276. package/src/errors/EntityError.ts +1 -1
  277. package/src/errors/EntityInvalidFieldValueError.ts +5 -5
  278. package/src/errors/EntityNotAuthorizedError.ts +4 -4
  279. package/src/errors/EntityNotFoundError.ts +5 -5
  280. package/src/errors/__tests__/EntityDatabaseAdapterError-test.ts +6 -3
  281. package/src/index.ts +39 -54
  282. package/src/internal/CompositeFieldHolder.ts +2 -1
  283. package/src/internal/EntityDataManager.ts +7 -5
  284. package/src/internal/EntityFieldTransformationUtils.ts +1 -1
  285. package/src/internal/EntityLoadInterfaces.ts +1 -1
  286. package/src/internal/EntityTableDataCoordinator.ts +10 -10
  287. package/src/internal/ReadThroughEntityCache.ts +3 -3
  288. package/src/internal/SingleFieldHolder.ts +1 -1
  289. package/src/internal/__tests__/CompositeFieldHolder-test.ts +2 -0
  290. package/src/internal/__tests__/CompositeFieldValueMap-test.ts +2 -0
  291. package/src/internal/__tests__/EntityDataManager-test.ts +34 -31
  292. package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +5 -3
  293. package/src/internal/__tests__/ReadThroughEntityCache-test.ts +5 -4
  294. package/src/metrics/EntityMetricsUtils.ts +3 -2
  295. package/src/metrics/IEntityMetricsAdapter.ts +1 -1
  296. package/src/metrics/NoOpEntityMetricsAdapter.ts +3 -2
  297. package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +4 -4
  298. package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +4 -4
  299. package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +4 -4
  300. package/src/rules/PrivacyPolicyRule.ts +3 -3
  301. package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +3 -3
  302. package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +3 -3
  303. package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +3 -3
  304. package/src/utils/EntityCreationUtils.ts +4 -4
  305. package/src/utils/EntityPrivacyUtils.ts +5 -5
  306. package/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.ts +5 -3
  307. package/src/utils/__testfixtures__/SimpleTestEntity.ts +6 -6
  308. package/src/utils/__testfixtures__/StubCacheAdapter.ts +4 -4
  309. package/src/utils/__testfixtures__/StubDatabaseAdapter.ts +8 -7
  310. package/src/utils/__testfixtures__/StubDatabaseAdapterProvider.ts +5 -5
  311. package/src/utils/__testfixtures__/StubQueryContextProvider.ts +2 -2
  312. package/src/utils/__testfixtures__/TestEntity.ts +7 -7
  313. package/src/utils/__testfixtures__/TestEntity2.ts +6 -6
  314. package/src/utils/__testfixtures__/TestEntityWithMutationTriggers.ts +6 -10
  315. package/src/utils/__testfixtures__/TestViewerContext.ts +2 -2
  316. package/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.ts +5 -5
  317. package/src/utils/__testfixtures__/describeFieldTestCase.ts +3 -1
  318. package/src/utils/__tests__/EntityCreationUtils-test.ts +5 -3
  319. package/src/utils/__tests__/EntityPrivacyUtils-test.ts +15 -13
  320. package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +10 -8
  321. package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +2 -0
  322. package/src/utils/collections/__tests__/SerializableKeyMap-test.ts +2 -0
  323. package/src/utils/collections/__tests__/maps-test.ts +3 -1
  324. package/src/utils/collections/__tests__/sets-test.ts +2 -0
  325. package/src/utils/mergeEntityMutationTriggerConfigurations.ts +3 -3
  326. package/LICENSE +0 -21
  327. package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +0 -1
  328. package/build/AuthorizationResultBasedEntityLoader.js.map +0 -1
  329. package/build/AuthorizationResultBasedEntityMutator.js.map +0 -1
  330. package/build/ComposedEntityCacheAdapter.js.map +0 -1
  331. package/build/ComposedSecondaryEntityCache.js.map +0 -1
  332. package/build/EnforcingEntityAssociationLoader.js.map +0 -1
  333. package/build/EnforcingEntityCreator.js.map +0 -1
  334. package/build/EnforcingEntityDeleter.js.map +0 -1
  335. package/build/EnforcingEntityLoader.js.map +0 -1
  336. package/build/EnforcingEntityUpdater.js.map +0 -1
  337. package/build/Entity.js.map +0 -1
  338. package/build/EntityAssociationLoader.js.map +0 -1
  339. package/build/EntityCompanion.js.map +0 -1
  340. package/build/EntityCompanionProvider.js.map +0 -1
  341. package/build/EntityConfiguration.js.map +0 -1
  342. package/build/EntityDatabaseAdapter.js.map +0 -1
  343. package/build/EntityFieldDefinition.js.map +0 -1
  344. package/build/EntityFields.js.map +0 -1
  345. package/build/EntityLoaderFactory.js +0 -31
  346. package/build/EntityLoaderFactory.js.map +0 -1
  347. package/build/EntityLoaderUtils.js.map +0 -1
  348. package/build/EntityMutationInfo.js.map +0 -1
  349. package/build/EntityMutationTriggerConfiguration.js.map +0 -1
  350. package/build/EntityMutationValidator.js.map +0 -1
  351. package/build/EntityMutatorFactory.js.map +0 -1
  352. package/build/EntityQueryContext.js.map +0 -1
  353. package/build/EntityQueryContextProvider.js.map +0 -1
  354. package/build/EntitySecondaryCacheLoader.js.map +0 -1
  355. package/build/GenericEntityCacheAdapter.js.map +0 -1
  356. package/build/GenericSecondaryEntityCache.js.map +0 -1
  357. package/build/IEntityCacheAdapter.js.map +0 -1
  358. package/build/IEntityCacheAdapterProvider.js.map +0 -1
  359. package/build/IEntityDatabaseAdapterProvider.js.map +0 -1
  360. package/build/IEntityGenericCacher.js.map +0 -1
  361. package/build/ReadonlyEntity.js.map +0 -1
  362. package/build/ViewerScopedEntityCompanionProvider.js.map +0 -1
  363. package/build/ViewerScopedEntityLoaderFactory.js.map +0 -1
  364. package/build/ViewerScopedEntityMutatorFactory.js.map +0 -1
  365. package/build/entityUtils.js.map +0 -1
  366. package/build/errors/EntityCacheAdapterError.js +0 -46
  367. package/build/errors/EntityCacheAdapterError.js.map +0 -1
  368. package/build/errors/EntityDatabaseAdapterError.js.map +0 -1
  369. package/build/errors/EntityError.js.map +0 -1
  370. package/build/errors/EntityInvalidFieldValueError.js +0 -45
  371. package/build/errors/EntityInvalidFieldValueError.js.map +0 -1
  372. package/build/errors/EntityNotAuthorizedError.js +0 -48
  373. package/build/errors/EntityNotAuthorizedError.js.map +0 -1
  374. package/build/errors/EntityNotFoundError.js +0 -50
  375. package/build/errors/EntityNotFoundError.js.map +0 -1
  376. package/build/index.d.ts +0 -91
  377. package/build/index.js +0 -155
  378. package/build/index.js.map +0 -1
  379. package/build/internal/CompositeFieldHolder.js.map +0 -1
  380. package/build/internal/CompositeFieldValueMap.js.map +0 -1
  381. package/build/internal/EntityDataManager.js.map +0 -1
  382. package/build/internal/EntityFieldTransformationUtils.js.map +0 -1
  383. package/build/internal/EntityLoadInterfaces.js.map +0 -1
  384. package/build/internal/ReadThroughEntityCache.js.map +0 -1
  385. package/build/internal/SingleFieldHolder.js.map +0 -1
  386. package/build/metrics/EntityMetricsUtils.js.map +0 -1
  387. package/build/metrics/IEntityMetricsAdapter.js.map +0 -1
  388. package/build/metrics/NoOpEntityMetricsAdapter.js.map +0 -1
  389. package/build/rules/AlwaysAllowPrivacyPolicyRule.js +0 -46
  390. package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +0 -1
  391. package/build/rules/AlwaysDenyPrivacyPolicyRule.js +0 -46
  392. package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +0 -1
  393. package/build/rules/AlwaysSkipPrivacyPolicyRule.js +0 -46
  394. package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +0 -1
  395. package/build/rules/PrivacyPolicyRule.js.map +0 -1
  396. package/build/tsconfig.build.tsbuildinfo +0 -1
  397. package/build/utils/collections/SerializableKeyMap.js.map +0 -1
  398. package/build/utils/collections/maps.js.map +0 -1
  399. package/build/utils/collections/sets.js.map +0 -1
  400. package/build/utils/mergeEntityMutationTriggerConfigurations.js.map +0 -1
  401. /package/build/{EntityFieldDefinition.js → src/EntityFieldDefinition.js} +0 -0
  402. /package/build/{EntityMutationInfo.js → src/EntityMutationInfo.js} +0 -0
  403. /package/build/{EntityMutationTriggerConfiguration.js → src/EntityMutationTriggerConfiguration.js} +0 -0
  404. /package/build/{EntityQueryContext.js → src/EntityQueryContext.js} +0 -0
  405. /package/build/{IEntityCacheAdapter.js → src/IEntityCacheAdapter.js} +0 -0
  406. /package/build/{IEntityCacheAdapterProvider.js → src/IEntityCacheAdapterProvider.js} +0 -0
  407. /package/build/{IEntityDatabaseAdapterProvider.js → src/IEntityDatabaseAdapterProvider.js} +0 -0
  408. /package/build/{IEntityGenericCacher.js → src/IEntityGenericCacher.js} +0 -0
  409. /package/build/{entityUtils.d.ts → src/entityUtils.d.ts} +0 -0
  410. /package/build/{entityUtils.js → src/entityUtils.js} +0 -0
  411. /package/build/{internal → src/internal}/CompositeFieldHolder.js +0 -0
  412. /package/build/{internal → src/internal}/CompositeFieldValueMap.d.ts +0 -0
  413. /package/build/{internal → src/internal}/CompositeFieldValueMap.js +0 -0
  414. /package/build/{internal → src/internal}/EntityFieldTransformationUtils.js +0 -0
  415. /package/build/{internal → src/internal}/EntityLoadInterfaces.js +0 -0
  416. /package/build/{internal → src/internal}/SingleFieldHolder.js +0 -0
  417. /package/build/{metrics → src/metrics}/EntityMetricsUtils.js +0 -0
  418. /package/build/{metrics → src/metrics}/IEntityMetricsAdapter.js +0 -0
  419. /package/build/{utils → src/utils}/collections/SerializableKeyMap.d.ts +0 -0
  420. /package/build/{utils → src/utils}/collections/SerializableKeyMap.js +0 -0
  421. /package/build/{utils → src/utils}/collections/maps.d.ts +0 -0
  422. /package/build/{utils → src/utils}/collections/maps.js +0 -0
  423. /package/build/{utils → src/utils}/collections/sets.d.ts +0 -0
  424. /package/build/{utils → src/utils}/collections/sets.js +0 -0
  425. /package/build/{utils → src/utils}/mergeEntityMutationTriggerConfigurations.js +0 -0
@@ -1,12 +1,12 @@
1
- import EntityCompanionProvider, { EntityCompanionDefinition } from './EntityCompanionProvider';
2
- import EntityLoaderFactory from './EntityLoaderFactory';
3
- import EntityMutatorFactory from './EntityMutatorFactory';
4
- import EntityPrivacyPolicy from './EntityPrivacyPolicy';
5
- import EntityQueryContextProvider from './EntityQueryContextProvider';
6
- import ReadonlyEntity from './ReadonlyEntity';
7
- import ViewerContext from './ViewerContext';
8
- import EntityTableDataCoordinator from './internal/EntityTableDataCoordinator';
9
- import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
1
+ import { EntityCompanionDefinition, EntityCompanionProvider } from './EntityCompanionProvider';
2
+ import { EntityLoaderFactory } from './EntityLoaderFactory';
3
+ import { EntityMutatorFactory } from './EntityMutatorFactory';
4
+ import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
5
+ import { EntityQueryContextProvider } from './EntityQueryContextProvider';
6
+ import { ReadonlyEntity } from './ReadonlyEntity';
7
+ import { ViewerContext } from './ViewerContext';
8
+ import { EntityTableDataCoordinator } from './internal/EntityTableDataCoordinator';
9
+ import { IEntityMetricsAdapter } from './metrics/IEntityMetricsAdapter';
10
10
  import { mergeEntityMutationTriggerConfigurations } from './utils/mergeEntityMutationTriggerConfigurations';
11
11
 
12
12
  export interface IPrivacyPolicyClass<TPrivacyPolicy> {
@@ -16,7 +16,7 @@ export interface IPrivacyPolicyClass<TPrivacyPolicy> {
16
16
  /**
17
17
  * Composition root responsible for orchestrating setup of Entity mutators and loaders.
18
18
  */
19
- export default class EntityCompanion<
19
+ export class EntityCompanion<
20
20
  TFields extends Record<string, any>,
21
21
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
22
22
  TViewerContext extends ViewerContext,
@@ -1,18 +1,18 @@
1
1
  import invariant from 'invariant';
2
2
 
3
3
  import { IEntityClass } from './Entity';
4
- import EntityCompanion, { IPrivacyPolicyClass } from './EntityCompanion';
5
- import EntityConfiguration from './EntityConfiguration';
6
- import EntityMutationTriggerConfiguration from './EntityMutationTriggerConfiguration';
7
- import EntityMutationValidator from './EntityMutationValidator';
8
- import EntityPrivacyPolicy from './EntityPrivacyPolicy';
9
- import EntityQueryContextProvider from './EntityQueryContextProvider';
10
- import IEntityCacheAdapterProvider from './IEntityCacheAdapterProvider';
11
- import IEntityDatabaseAdapterProvider from './IEntityDatabaseAdapterProvider';
12
- import ReadonlyEntity from './ReadonlyEntity';
13
- import ViewerContext from './ViewerContext';
14
- import EntityTableDataCoordinator from './internal/EntityTableDataCoordinator';
15
- import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
4
+ import { EntityCompanion, IPrivacyPolicyClass } from './EntityCompanion';
5
+ import { EntityConfiguration } from './EntityConfiguration';
6
+ import { EntityMutationTriggerConfiguration } from './EntityMutationTriggerConfiguration';
7
+ import { EntityMutationValidator } from './EntityMutationValidator';
8
+ import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
9
+ import { EntityQueryContextProvider } from './EntityQueryContextProvider';
10
+ import { IEntityCacheAdapterProvider } from './IEntityCacheAdapterProvider';
11
+ import { IEntityDatabaseAdapterProvider } from './IEntityDatabaseAdapterProvider';
12
+ import { ReadonlyEntity } from './ReadonlyEntity';
13
+ import { ViewerContext } from './ViewerContext';
14
+ import { EntityTableDataCoordinator } from './internal/EntityTableDataCoordinator';
15
+ import { IEntityMetricsAdapter } from './metrics/IEntityMetricsAdapter';
16
16
  import { computeIfAbsent } from './utils/collections/maps';
17
17
 
18
18
  /**
@@ -124,7 +124,7 @@ export interface EntityCompanionDefinition<
124
124
  * Internally, this is a lazy entity companion factory that instantiates and caches one
125
125
  * EntityCompanion for each type of Entity.
126
126
  */
127
- export default class EntityCompanionProvider {
127
+ export class EntityCompanionProvider {
128
128
  private readonly companionDefinitionMap: Map<
129
129
  string,
130
130
  EntityCompanionDefinition<any, any, any, any, any, any>
@@ -1,13 +1,13 @@
1
1
  import invariant from 'invariant';
2
2
 
3
3
  import { IEntityClass } from './Entity';
4
- import { DatabaseAdapterFlavor, CacheAdapterFlavor } from './EntityCompanionProvider';
4
+ import { CacheAdapterFlavor, DatabaseAdapterFlavor } from './EntityCompanionProvider';
5
5
  import { EntityFieldDefinition } from './EntityFieldDefinition';
6
6
  import {
7
7
  CompositeFieldHolder,
8
8
  SerializedCompositeFieldHolder,
9
9
  } from './internal/CompositeFieldHolder';
10
- import { mapMap, invertMap, reduceMap } from './utils/collections/maps';
10
+ import { invertMap, mapMap, reduceMap } from './utils/collections/maps';
11
11
 
12
12
  /**
13
13
  * A composite field is an unordered set of fields by which entities can be loaded in a batched
@@ -103,7 +103,7 @@ export class CompositeFieldInfo<
103
103
  * The data storage configuration for a type of Entity. Contains information relating to IDs,
104
104
  * cachable fields, field mappings, and types of cache and database adapter.
105
105
  */
106
- export default class EntityConfiguration<
106
+ export class EntityConfiguration<
107
107
  TFields extends Record<string, any>,
108
108
  TIDField extends keyof TFields,
109
109
  > {
@@ -1,15 +1,15 @@
1
1
  import { AuthorizationResultBasedCreateMutator } from './AuthorizationResultBasedEntityMutator';
2
- import EnforcingEntityCreator from './EnforcingEntityCreator';
2
+ import { EnforcingEntityCreator } from './EnforcingEntityCreator';
3
3
  import { IEntityClass } from './Entity';
4
- import EntityPrivacyPolicy from './EntityPrivacyPolicy';
4
+ import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
5
5
  import { EntityQueryContext } from './EntityQueryContext';
6
- import ReadonlyEntity from './ReadonlyEntity';
7
- import ViewerContext from './ViewerContext';
6
+ import { ReadonlyEntity } from './ReadonlyEntity';
7
+ import { ViewerContext } from './ViewerContext';
8
8
 
9
9
  /**
10
10
  * The primary interface for creating entities.
11
11
  */
12
- export default class EntityCreator<
12
+ export class EntityCreator<
13
13
  TFields extends Record<string, any>,
14
14
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
15
15
  TViewerContext extends ViewerContext,
@@ -1,12 +1,12 @@
1
1
  import invariant from 'invariant';
2
2
 
3
- import EntityConfiguration from './EntityConfiguration';
3
+ import { EntityConfiguration } from './EntityConfiguration';
4
4
  import { EntityQueryContext } from './EntityQueryContext';
5
5
  import {
6
+ FieldTransformerMap,
6
7
  getDatabaseFieldForEntityField,
7
8
  transformDatabaseObjectToFields,
8
9
  transformFieldsToDatabaseObject,
9
- FieldTransformerMap,
10
10
  } from './internal/EntityFieldTransformationUtils';
11
11
  import { IEntityLoadKey, IEntityLoadValue } from './internal/EntityLoadInterfaces';
12
12
 
@@ -117,7 +117,7 @@ export interface TableQuerySelectionModifiersWithOrderByRaw extends TableQuerySe
117
117
  * handles all entity field transformation. Subclasses are responsible for
118
118
  * implementing database-specific logic for a type of database.
119
119
  */
120
- export default abstract class EntityDatabaseAdapter<
120
+ export abstract class EntityDatabaseAdapter<
121
121
  TFields extends Record<string, any>,
122
122
  TIDField extends keyof TFields,
123
123
  > {
@@ -1,15 +1,15 @@
1
1
  import { AuthorizationResultBasedDeleteMutator } from './AuthorizationResultBasedEntityMutator';
2
- import EnforcingEntityDeleter from './EnforcingEntityDeleter';
2
+ import { EnforcingEntityDeleter } from './EnforcingEntityDeleter';
3
3
  import { IEntityClass } from './Entity';
4
- import EntityPrivacyPolicy from './EntityPrivacyPolicy';
4
+ import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
5
5
  import { EntityQueryContext } from './EntityQueryContext';
6
- import ReadonlyEntity from './ReadonlyEntity';
7
- import ViewerContext from './ViewerContext';
6
+ import { ReadonlyEntity } from './ReadonlyEntity';
7
+ import { ViewerContext } from './ViewerContext';
8
8
 
9
9
  /**
10
10
  * The primary interface for deleting entities.
11
11
  */
12
- export default class EntityDeleter<
12
+ export class EntityDeleter<
13
13
  TFields extends Record<string, any>,
14
14
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
15
15
  TViewerContext extends ViewerContext,
@@ -68,6 +68,6 @@ export default class EntityDeleter<
68
68
  .getViewerContext()
69
69
  .getViewerScopedEntityCompanionForClass(this.entityClass)
70
70
  .getMutatorFactory()
71
- .forDelete(this.existingEntity, this.queryContext);
71
+ .forDelete(this.existingEntity, this.queryContext, /* cascadingDeleteCause */ null);
72
72
  }
73
73
  }
@@ -1,7 +1,7 @@
1
1
  import { IEntityClass } from './Entity';
2
- import EntityPrivacyPolicy from './EntityPrivacyPolicy';
3
- import ReadonlyEntity from './ReadonlyEntity';
4
- import ViewerContext from './ViewerContext';
2
+ import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
3
+ import { ReadonlyEntity } from './ReadonlyEntity';
4
+ import { ViewerContext } from './ViewerContext';
5
5
 
6
6
  export enum EntityEdgeDeletionBehavior {
7
7
  /**
@@ -121,6 +121,7 @@ export class EnumField<TRequireExplicitCache extends boolean> extends EntityFiel
121
121
 
122
122
  /**
123
123
  * EntityFieldDefinition for a enum column with a strict typescript enum type.
124
+ * The strict version checks that the value of the field adheres to a particular typescript enum
124
125
  */
125
126
  export class StrictEnumField<
126
127
  T extends object,
@@ -140,3 +141,15 @@ export class StrictEnumField<
140
141
  return super.validateInputValueInternal(value) && Object.values(this.enum).includes(value);
141
142
  }
142
143
  }
144
+
145
+ /**
146
+ * EntityFieldDefinition for a column with a JS Buffer type.
147
+ */
148
+ export class BufferField<TRequireExplicitCache extends boolean> extends EntityFieldDefinition<
149
+ Buffer,
150
+ TRequireExplicitCache
151
+ > {
152
+ protected validateInputValueInternal(value: Buffer): boolean {
153
+ return Buffer.isBuffer(value);
154
+ }
155
+ }
@@ -1,17 +1,17 @@
1
- import AuthorizationResultBasedEntityLoader from './AuthorizationResultBasedEntityLoader';
2
- import EnforcingEntityLoader from './EnforcingEntityLoader';
1
+ import { AuthorizationResultBasedEntityLoader } from './AuthorizationResultBasedEntityLoader';
2
+ import { EnforcingEntityLoader } from './EnforcingEntityLoader';
3
3
  import { IEntityClass } from './Entity';
4
- import EntityLoaderUtils from './EntityLoaderUtils';
5
- import EntityPrivacyPolicy from './EntityPrivacyPolicy';
4
+ import { EntityLoaderUtils } from './EntityLoaderUtils';
5
+ import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
6
6
  import { EntityQueryContext } from './EntityQueryContext';
7
- import ReadonlyEntity from './ReadonlyEntity';
8
- import ViewerContext from './ViewerContext';
7
+ import { ReadonlyEntity } from './ReadonlyEntity';
8
+ import { ViewerContext } from './ViewerContext';
9
9
 
10
10
  /**
11
11
  * The primary interface for loading entities. All normal loads are batched,
12
12
  * cached, and authorized against the entity's EntityPrivacyPolicy.
13
13
  */
14
- export default class EntityLoader<
14
+ export class EntityLoader<
15
15
  TFields extends Record<string, any>,
16
16
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
17
17
  TViewerContext extends ViewerContext,
@@ -1,17 +1,17 @@
1
- import AuthorizationResultBasedEntityLoader from './AuthorizationResultBasedEntityLoader';
2
- import EntityCompanion from './EntityCompanion';
3
- import EntityLoaderUtils from './EntityLoaderUtils';
4
- import EntityPrivacyPolicy, { EntityPrivacyPolicyEvaluationContext } from './EntityPrivacyPolicy';
1
+ import { AuthorizationResultBasedEntityLoader } from './AuthorizationResultBasedEntityLoader';
2
+ import { EntityCompanion } from './EntityCompanion';
3
+ import { EntityLoaderUtils } from './EntityLoaderUtils';
4
+ import { EntityPrivacyPolicy, EntityPrivacyPolicyEvaluationContext } from './EntityPrivacyPolicy';
5
5
  import { EntityQueryContext } from './EntityQueryContext';
6
- import ReadonlyEntity from './ReadonlyEntity';
7
- import ViewerContext from './ViewerContext';
8
- import EntityDataManager from './internal/EntityDataManager';
9
- import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
6
+ import { ReadonlyEntity } from './ReadonlyEntity';
7
+ import { ViewerContext } from './ViewerContext';
8
+ import { EntityDataManager } from './internal/EntityDataManager';
9
+ import { IEntityMetricsAdapter } from './metrics/IEntityMetricsAdapter';
10
10
 
11
11
  /**
12
12
  * The primary entry point for loading entities.
13
13
  */
14
- export default class EntityLoaderFactory<
14
+ export class EntityLoaderFactory<
15
15
  TFields extends Record<string, any>,
16
16
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
17
17
  TViewerContext extends ViewerContext,
@@ -2,23 +2,23 @@ import { Result, asyncResult, result } from '@expo/results';
2
2
  import nullthrows from 'nullthrows';
3
3
 
4
4
  import { IEntityClass } from './Entity';
5
- import EntityConfiguration from './EntityConfiguration';
6
- import EntityPrivacyPolicy, { EntityPrivacyPolicyEvaluationContext } from './EntityPrivacyPolicy';
5
+ import { EntityConfiguration } from './EntityConfiguration';
6
+ import { EntityPrivacyPolicy, EntityPrivacyPolicyEvaluationContext } from './EntityPrivacyPolicy';
7
7
  import { EntityQueryContext, EntityTransactionalQueryContext } from './EntityQueryContext';
8
- import ReadonlyEntity from './ReadonlyEntity';
9
- import ViewerContext from './ViewerContext';
8
+ import { ReadonlyEntity } from './ReadonlyEntity';
9
+ import { ViewerContext } from './ViewerContext';
10
10
  import { pick } from './entityUtils';
11
- import EntityDataManager from './internal/EntityDataManager';
11
+ import { EntityDataManager } from './internal/EntityDataManager';
12
12
  import { LoadPair } from './internal/EntityLoadInterfaces';
13
13
  import { SingleFieldHolder, SingleFieldValueHolder } from './internal/SingleFieldHolder';
14
- import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
14
+ import { IEntityMetricsAdapter } from './metrics/IEntityMetricsAdapter';
15
15
  import { mapMapAsync } from './utils/collections/maps';
16
16
 
17
17
  /**
18
18
  * Entity loader utilities for things like invalidation, entity construction, and authorization.
19
19
  * Methods are exposed publicly since in rare cases they may need to be called manually.
20
20
  */
21
- export default class EntityLoaderUtils<
21
+ export class EntityLoaderUtils<
22
22
  TFields extends Record<string, any>,
23
23
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
24
24
  TViewerContext extends ViewerContext,
@@ -1,5 +1,5 @@
1
- import Entity from './Entity';
2
- import ViewerContext from './ViewerContext';
1
+ import { Entity } from './Entity';
2
+ import { ViewerContext } from './ViewerContext';
3
3
 
4
4
  export enum EntityMutationType {
5
5
  CREATE,
@@ -1,12 +1,12 @@
1
1
  import { EntityTriggerMutationInfo } from './EntityMutationInfo';
2
2
  import { EntityTransactionalQueryContext } from './EntityQueryContext';
3
- import ReadonlyEntity from './ReadonlyEntity';
4
- import ViewerContext from './ViewerContext';
3
+ import { ReadonlyEntity } from './ReadonlyEntity';
4
+ import { ViewerContext } from './ViewerContext';
5
5
 
6
6
  /**
7
7
  * Interface to define trigger behavior for entities.
8
8
  */
9
- export default interface EntityMutationTriggerConfiguration<
9
+ export interface EntityMutationTriggerConfiguration<
10
10
  TFields extends Record<string, any>,
11
11
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
12
12
  TViewerContext extends ViewerContext,
@@ -1,13 +1,13 @@
1
1
  import { EntityValidatorMutationInfo } from './EntityMutationInfo';
2
2
  import { EntityTransactionalQueryContext } from './EntityQueryContext';
3
- import ReadonlyEntity from './ReadonlyEntity';
4
- import ViewerContext from './ViewerContext';
3
+ import { ReadonlyEntity } from './ReadonlyEntity';
4
+ import { ViewerContext } from './ViewerContext';
5
5
 
6
6
  /**
7
7
  * A validator is a way to specify entity mutation validation that runs within the
8
8
  * same transaction as the mutation itself before creating or updating an entity.
9
9
  */
10
- export default abstract class EntityMutationValidator<
10
+ export abstract class EntityMutationValidator<
11
11
  TFields extends Record<string, any>,
12
12
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
13
13
  TViewerContext extends ViewerContext,
@@ -1,24 +1,25 @@
1
1
  import {
2
2
  AuthorizationResultBasedCreateMutator,
3
- AuthorizationResultBasedUpdateMutator,
4
3
  AuthorizationResultBasedDeleteMutator,
4
+ AuthorizationResultBasedUpdateMutator,
5
5
  } from './AuthorizationResultBasedEntityMutator';
6
- import Entity, { IEntityClass } from './Entity';
7
- import EntityCompanionProvider from './EntityCompanionProvider';
8
- import EntityConfiguration from './EntityConfiguration';
9
- import EntityDatabaseAdapter from './EntityDatabaseAdapter';
10
- import EntityLoaderFactory from './EntityLoaderFactory';
11
- import EntityMutationTriggerConfiguration from './EntityMutationTriggerConfiguration';
12
- import EntityMutationValidator from './EntityMutationValidator';
13
- import EntityPrivacyPolicy from './EntityPrivacyPolicy';
6
+ import { Entity, IEntityClass } from './Entity';
7
+ import { EntityCompanionProvider } from './EntityCompanionProvider';
8
+ import { EntityConfiguration } from './EntityConfiguration';
9
+ import { EntityDatabaseAdapter } from './EntityDatabaseAdapter';
10
+ import { EntityLoaderFactory } from './EntityLoaderFactory';
11
+ import { EntityCascadingDeletionInfo } from './EntityMutationInfo';
12
+ import { EntityMutationTriggerConfiguration } from './EntityMutationTriggerConfiguration';
13
+ import { EntityMutationValidator } from './EntityMutationValidator';
14
+ import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
14
15
  import { EntityQueryContext } from './EntityQueryContext';
15
- import ViewerContext from './ViewerContext';
16
- import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
16
+ import { ViewerContext } from './ViewerContext';
17
+ import { IEntityMetricsAdapter } from './metrics/IEntityMetricsAdapter';
17
18
 
18
19
  /**
19
20
  * The primary interface for creating, mutating, and deleting entities.
20
21
  */
21
- export default class EntityMutatorFactory<
22
+ export class EntityMutatorFactory<
22
23
  TFields extends Record<string, any>,
23
24
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
24
25
  TViewerContext extends ViewerContext,
@@ -111,6 +112,7 @@ export default class EntityMutatorFactory<
111
112
  forUpdate(
112
113
  existingEntity: TEntity,
113
114
  queryContext: EntityQueryContext,
115
+ cascadingDeleteCause: EntityCascadingDeletionInfo | null,
114
116
  ): AuthorizationResultBasedUpdateMutator<
115
117
  TFields,
116
118
  TIDField,
@@ -132,6 +134,7 @@ export default class EntityMutatorFactory<
132
134
  this.databaseAdapter,
133
135
  this.metricsAdapter,
134
136
  existingEntity,
137
+ cascadingDeleteCause,
135
138
  );
136
139
  }
137
140
 
@@ -143,6 +146,7 @@ export default class EntityMutatorFactory<
143
146
  forDelete(
144
147
  existingEntity: TEntity,
145
148
  queryContext: EntityQueryContext,
149
+ cascadingDeleteCause: EntityCascadingDeletionInfo | null,
146
150
  ): AuthorizationResultBasedDeleteMutator<
147
151
  TFields,
148
152
  TIDField,
@@ -164,6 +168,7 @@ export default class EntityMutatorFactory<
164
168
  this.databaseAdapter,
165
169
  this.metricsAdapter,
166
170
  existingEntity,
171
+ cascadingDeleteCause,
167
172
  );
168
173
  }
169
174
  }
@@ -1,12 +1,13 @@
1
1
  import { EntityCascadingDeletionInfo } from './EntityMutationInfo';
2
2
  import { EntityQueryContext } from './EntityQueryContext';
3
- import ReadonlyEntity from './ReadonlyEntity';
4
- import ViewerContext from './ViewerContext';
5
- import EntityNotAuthorizedError from './errors/EntityNotAuthorizedError';
6
- import IEntityMetricsAdapter, {
3
+ import { ReadonlyEntity } from './ReadonlyEntity';
4
+ import { ViewerContext } from './ViewerContext';
5
+ import { EntityNotAuthorizedError } from './errors/EntityNotAuthorizedError';
6
+ import {
7
7
  EntityMetricsAuthorizationResult,
8
+ IEntityMetricsAdapter,
8
9
  } from './metrics/IEntityMetricsAdapter';
9
- import PrivacyPolicyRule, { RuleEvaluationResult } from './rules/PrivacyPolicyRule';
10
+ import { PrivacyPolicyRule, RuleEvaluationResult } from './rules/PrivacyPolicyRule';
10
11
 
11
12
  /**
12
13
  * Information about the reason this privacy policy is being evaluated.
@@ -115,7 +116,7 @@ export enum EntityAuthorizationAction {
115
116
  * return not authorized if all rules skip
116
117
  * ```
117
118
  */
118
- export default abstract class EntityPrivacyPolicy<
119
+ export abstract class EntityPrivacyPolicy<
119
120
  TFields extends Record<string, any>,
120
121
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
121
122
  TViewerContext extends ViewerContext,
@@ -1,6 +1,6 @@
1
1
  import assert from 'assert';
2
2
 
3
- import EntityQueryContextProvider from './EntityQueryContextProvider';
3
+ import { EntityQueryContextProvider } from './EntityQueryContextProvider';
4
4
 
5
5
  export type PostCommitCallback = (...args: any) => Promise<any>;
6
6
  export type PreCommitCallback = (
@@ -1,9 +1,9 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
 
3
3
  import {
4
- EntityTransactionalQueryContext,
5
- EntityNonTransactionalQueryContext,
6
4
  EntityNestedTransactionalQueryContext,
5
+ EntityNonTransactionalQueryContext,
6
+ EntityTransactionalQueryContext,
7
7
  TransactionConfig,
8
8
  TransactionalDataLoaderMode,
9
9
  } from './EntityQueryContext';
@@ -11,7 +11,7 @@ import {
11
11
  /**
12
12
  * A query context provider vends transactional and non-transactional query contexts.
13
13
  */
14
- export default abstract class EntityQueryContextProvider {
14
+ export abstract class EntityQueryContextProvider {
15
15
  /**
16
16
  * Vend a regular (non-transactional) entity query context.
17
17
  */
@@ -1,9 +1,9 @@
1
1
  import { Result } from '@expo/results';
2
2
 
3
- import AuthorizationResultBasedEntityLoader from './AuthorizationResultBasedEntityLoader';
4
- import EntityPrivacyPolicy from './EntityPrivacyPolicy';
5
- import ReadonlyEntity from './ReadonlyEntity';
6
- import ViewerContext from './ViewerContext';
3
+ import { AuthorizationResultBasedEntityLoader } from './AuthorizationResultBasedEntityLoader';
4
+ import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
5
+ import { ReadonlyEntity } from './ReadonlyEntity';
6
+ import { ViewerContext } from './ViewerContext';
7
7
  import { mapMap } from './utils/collections/maps';
8
8
 
9
9
  /**
@@ -43,7 +43,7 @@ export interface ISecondaryEntityCache<TFields extends Record<string, any>, TLoa
43
43
  * due to use of a non-unique-field-based EntityLoader method like `loadManyByFieldEqualityConjunctionAsync` or
44
44
  * `loadManyByRawWhereClauseAsync`.
45
45
  */
46
- export default abstract class EntitySecondaryCacheLoader<
46
+ export abstract class EntitySecondaryCacheLoader<
47
47
  TLoadParams,
48
48
  TFields extends Record<string, any>,
49
49
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
@@ -1,15 +1,15 @@
1
1
  import { AuthorizationResultBasedUpdateMutator } from './AuthorizationResultBasedEntityMutator';
2
- import EnforcingEntityUpdater from './EnforcingEntityUpdater';
2
+ import { EnforcingEntityUpdater } from './EnforcingEntityUpdater';
3
3
  import { IEntityClass } from './Entity';
4
- import EntityPrivacyPolicy from './EntityPrivacyPolicy';
4
+ import { EntityPrivacyPolicy } from './EntityPrivacyPolicy';
5
5
  import { EntityQueryContext } from './EntityQueryContext';
6
- import ReadonlyEntity from './ReadonlyEntity';
7
- import ViewerContext from './ViewerContext';
6
+ import { ReadonlyEntity } from './ReadonlyEntity';
7
+ import { ViewerContext } from './ViewerContext';
8
8
 
9
9
  /**
10
10
  * The primary interface for updating entities.
11
11
  */
12
- export default class EntityUpdater<
12
+ export class EntityUpdater<
13
13
  TFields extends Record<string, any>,
14
14
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
15
15
  TViewerContext extends ViewerContext,
@@ -68,6 +68,6 @@ export default class EntityUpdater<
68
68
  .getViewerContext()
69
69
  .getViewerScopedEntityCompanionForClass(this.entityClass)
70
70
  .getMutatorFactory()
71
- .forUpdate(this.existingEntity, this.queryContext);
71
+ .forUpdate(this.existingEntity, this.queryContext, /* cascadingDeleteCause */ null);
72
72
  }
73
73
  }
@@ -1,7 +1,7 @@
1
1
  import invariant from 'invariant';
2
2
 
3
- import IEntityCacheAdapter from './IEntityCacheAdapter';
4
- import IEntityGenericCacher from './IEntityGenericCacher';
3
+ import { IEntityCacheAdapter } from './IEntityCacheAdapter';
4
+ import { IEntityGenericCacher } from './IEntityGenericCacher';
5
5
  import { IEntityLoadKey, IEntityLoadValue } from './internal/EntityLoadInterfaces';
6
6
  import { CacheLoadResult } from './internal/ReadThroughEntityCache';
7
7
  import { mapKeys } from './utils/collections/maps';
@@ -9,7 +9,7 @@ import { mapKeys } from './utils/collections/maps';
9
9
  /**
10
10
  * A standard IEntityCacheAdapter that coordinates caching through an IEntityGenericCacher.
11
11
  */
12
- export default class GenericEntityCacheAdapter<
12
+ export class GenericEntityCacheAdapter<
13
13
  TFields extends Record<string, any>,
14
14
  TIDField extends keyof TFields,
15
15
  > implements IEntityCacheAdapter<TFields, TIDField>
@@ -1,7 +1,7 @@
1
1
  import invariant from 'invariant';
2
2
 
3
3
  import { ISecondaryEntityCache } from './EntitySecondaryCacheLoader';
4
- import IEntityGenericCacher from './IEntityGenericCacher';
4
+ import { IEntityGenericCacher } from './IEntityGenericCacher';
5
5
  import { CacheStatus } from './internal/ReadThroughEntityCache';
6
6
  import { filterMap, zipToMap } from './utils/collections/maps';
7
7
 
@@ -10,7 +10,7 @@ import { filterMap, zipToMap } from './utils/collections/maps';
10
10
  * single entity load. One common way this may be used is to add a second layer of caching in a hot path that makes
11
11
  * a call to EntityLoader.loadManyByFieldEqualityConjunctionAsync is guaranteed to return at most one entity.
12
12
  */
13
- export default abstract class GenericSecondaryEntityCache<
13
+ export abstract class GenericSecondaryEntityCache<
14
14
  TFields extends Record<string, any>,
15
15
  TIDField extends keyof TFields,
16
16
  TLoadParams,
@@ -5,7 +5,7 @@ import { CacheLoadResult } from './internal/ReadThroughEntityCache';
5
5
  * A cache adapter is an interface by which objects can be
6
6
  * cached, fetched from cache, and removed from cache (invalidated).
7
7
  */
8
- export default interface IEntityCacheAdapter<
8
+ export interface IEntityCacheAdapter<
9
9
  TFields extends Record<string, any>,
10
10
  TIDField extends keyof TFields,
11
11
  > {
@@ -1,11 +1,11 @@
1
- import EntityConfiguration from './EntityConfiguration';
2
- import IEntityCacheAdapter from './IEntityCacheAdapter';
1
+ import { EntityConfiguration } from './EntityConfiguration';
2
+ import { IEntityCacheAdapter } from './IEntityCacheAdapter';
3
3
 
4
4
  /**
5
5
  * A cache adapter provider vends cache adapters for a particular cache adapter type.
6
6
  * Allows for passing global configuration to cache adapters.
7
7
  */
8
- export default interface IEntityCacheAdapterProvider {
8
+ export interface IEntityCacheAdapterProvider {
9
9
  /**
10
10
  * Vend a cache adapter for an entity configuration.
11
11
  */
@@ -1,11 +1,11 @@
1
- import EntityConfiguration from './EntityConfiguration';
2
- import EntityDatabaseAdapter from './EntityDatabaseAdapter';
1
+ import { EntityConfiguration } from './EntityConfiguration';
2
+ import { EntityDatabaseAdapter } from './EntityDatabaseAdapter';
3
3
 
4
4
  /**
5
5
  * A database adapter provider vends database adapters for a particular database adapter type.
6
6
  * Allows for passing global configuration to databse adapters, making testing easier.
7
7
  */
8
- export default interface IEntityDatabaseAdapterProvider {
8
+ export interface IEntityDatabaseAdapterProvider {
9
9
  /**
10
10
  * Vend a database adapter.
11
11
  */
@@ -5,7 +5,7 @@ import { CacheLoadResult } from './internal/ReadThroughEntityCache';
5
5
  * A generic cacher stores and loads key-value pairs. It also supports negative caching - it stores the absence
6
6
  * of keys that don't exist in the backing datastore. It is also responsible for cache key creation.
7
7
  */
8
- export default interface IEntityGenericCacher<
8
+ export interface IEntityGenericCacher<
9
9
  TFields extends Record<string, any>,
10
10
  TIDField extends keyof TFields,
11
11
  > {