@expo/entity 0.31.1 → 0.32.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 (255) hide show
  1. package/build/ComposedEntityCacheAdapter.d.ts +4 -6
  2. package/build/ComposedEntityCacheAdapter.js +3 -6
  3. package/build/ComposedEntityCacheAdapter.js.map +1 -1
  4. package/build/EnforcingEntityLoader.d.ts +1 -1
  5. package/build/Entity.d.ts +20 -10
  6. package/build/Entity.js +2 -2
  7. package/build/Entity.js.map +1 -1
  8. package/build/EntityAssociationLoader.d.ts +9 -9
  9. package/build/EntityCompanion.d.ts +6 -5
  10. package/build/EntityCompanion.js +6 -4
  11. package/build/EntityCompanion.js.map +1 -1
  12. package/build/EntityCompanionProvider.d.ts +28 -36
  13. package/build/EntityCompanionProvider.js +4 -19
  14. package/build/EntityCompanionProvider.js.map +1 -1
  15. package/build/EntityConfiguration.d.ts +3 -3
  16. package/build/EntityConfiguration.js +2 -2
  17. package/build/EntityConfiguration.js.map +1 -1
  18. package/build/EntityDatabaseAdapter.d.ts +1 -1
  19. package/build/EntityDatabaseAdapter.js +1 -1
  20. package/build/EntityDatabaseAdapter.js.map +1 -1
  21. package/build/EntityFieldDefinition.d.ts +2 -2
  22. package/build/EntityFieldDefinition.js +1 -1
  23. package/build/EntityFieldDefinition.js.map +1 -1
  24. package/build/EntityLoader.d.ts +4 -2
  25. package/build/EntityLoader.js +21 -7
  26. package/build/EntityLoader.js.map +1 -1
  27. package/build/EntityLoaderFactory.d.ts +4 -7
  28. package/build/EntityLoaderFactory.js +3 -5
  29. package/build/EntityLoaderFactory.js.map +1 -1
  30. package/build/EntityMutationInfo.d.ts +3 -3
  31. package/build/EntityMutationInfo.js +1 -1
  32. package/build/EntityMutationInfo.js.map +1 -1
  33. package/build/EntityMutationTriggerConfiguration.d.ts +3 -3
  34. package/build/EntityMutationValidator.d.ts +1 -1
  35. package/build/EntityMutator.d.ts +9 -7
  36. package/build/EntityMutator.js +21 -21
  37. package/build/EntityMutator.js.map +1 -1
  38. package/build/EntityMutatorFactory.d.ts +4 -2
  39. package/build/EntityMutatorFactory.js +5 -4
  40. package/build/EntityMutatorFactory.js.map +1 -1
  41. package/build/EntityPrivacyPolicy.d.ts +3 -3
  42. package/build/EntityPrivacyPolicy.js +2 -2
  43. package/build/EntityPrivacyPolicy.js.map +1 -1
  44. package/build/EntityQueryContext.d.ts +13 -5
  45. package/build/EntityQueryContext.js +11 -4
  46. package/build/EntityQueryContext.js.map +1 -1
  47. package/build/EntityQueryContextProvider.d.ts +3 -3
  48. package/build/EntityQueryContextProvider.js +2 -2
  49. package/build/EntityQueryContextProvider.js.map +1 -1
  50. package/build/EntitySecondaryCacheLoader.d.ts +1 -1
  51. package/build/EntitySecondaryCacheLoader.js +1 -1
  52. package/build/EntitySecondaryCacheLoader.js.map +1 -1
  53. package/build/GenericEntityCacheAdapter.d.ts +14 -0
  54. package/build/GenericEntityCacheAdapter.js +38 -0
  55. package/build/GenericEntityCacheAdapter.js.map +1 -0
  56. package/build/{EntityCacheAdapter.d.ts → IEntityCacheAdapter.d.ts} +5 -8
  57. package/build/IEntityCacheAdapter.js +3 -0
  58. package/build/IEntityCacheAdapter.js.map +1 -0
  59. package/build/IEntityCacheAdapterProvider.d.ts +2 -2
  60. package/build/IEntityGenericCacher.d.ts +31 -2
  61. package/build/ReadonlyEntity.d.ts +19 -7
  62. package/build/ReadonlyEntity.js +15 -13
  63. package/build/ReadonlyEntity.js.map +1 -1
  64. package/build/ViewerContext.d.ts +3 -3
  65. package/build/ViewerContext.js +3 -3
  66. package/build/ViewerContext.js.map +1 -1
  67. package/build/ViewerScopedEntityCompanion.d.ts +2 -2
  68. package/build/ViewerScopedEntityCompanion.js.map +1 -1
  69. package/build/ViewerScopedEntityCompanionProvider.d.ts +3 -3
  70. package/build/ViewerScopedEntityCompanionProvider.js +3 -3
  71. package/build/ViewerScopedEntityCompanionProvider.js.map +1 -1
  72. package/build/ViewerScopedEntityLoaderFactory.d.ts +1 -1
  73. package/build/ViewerScopedEntityMutatorFactory.d.ts +1 -1
  74. package/build/__tests__/ComposedCacheAdapter-test.js +4 -8
  75. package/build/__tests__/ComposedCacheAdapter-test.js.map +1 -1
  76. package/build/__tests__/EnforcingEntityLoader-test.js +1 -0
  77. package/build/__tests__/EnforcingEntityLoader-test.js.map +1 -1
  78. package/build/__tests__/Entity-test.js +42 -20
  79. package/build/__tests__/Entity-test.js.map +1 -1
  80. package/build/__tests__/EntityAssociationLoader-test.js +6 -6
  81. package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
  82. package/build/__tests__/EntityCommonUseCases-test.js +20 -22
  83. package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
  84. package/build/__tests__/EntityCompanion-test.js +2 -1
  85. package/build/__tests__/EntityCompanion-test.js.map +1 -1
  86. package/build/__tests__/EntityCompanionProvider-test.js +15 -40
  87. package/build/__tests__/EntityCompanionProvider-test.js.map +1 -1
  88. package/build/__tests__/EntityEdges-test.js +48 -54
  89. package/build/__tests__/EntityEdges-test.js.map +1 -1
  90. package/build/__tests__/EntityLoader-constructor-test.d.ts +9 -5
  91. package/build/__tests__/EntityLoader-constructor-test.js +13 -14
  92. package/build/__tests__/EntityLoader-constructor-test.js.map +1 -1
  93. package/build/__tests__/EntityLoader-test.js +19 -11
  94. package/build/__tests__/EntityLoader-test.js.map +1 -1
  95. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +20 -22
  96. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
  97. package/build/__tests__/EntityMutator-test.js +67 -14
  98. package/build/__tests__/EntityMutator-test.js.map +1 -1
  99. package/build/__tests__/EntityPrivacyPolicy-test.js +82 -29
  100. package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
  101. package/build/__tests__/EntityQueryContext-test.js +12 -0
  102. package/build/__tests__/EntityQueryContext-test.js.map +1 -1
  103. package/build/__tests__/EntitySecondaryCacheLoader-test.js +1 -2
  104. package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
  105. package/build/__tests__/EntitySelfReferentialEdges-test.js +16 -20
  106. package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
  107. package/build/__tests__/GenericEntityCacheAdapter-test.d.ts +1 -0
  108. package/build/__tests__/GenericEntityCacheAdapter-test.js +80 -0
  109. package/build/__tests__/GenericEntityCacheAdapter-test.js.map +1 -0
  110. package/build/__tests__/ReadonlyEntity-test.js +79 -13
  111. package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
  112. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js +2 -25
  113. package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +1 -1
  114. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +20 -23
  115. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
  116. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +17 -20
  117. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
  118. package/build/errors/EntityError.js +2 -2
  119. package/build/errors/EntityError.js.map +1 -1
  120. package/build/errors/EntityInvalidFieldValueError.d.ts +2 -2
  121. package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
  122. package/build/errors/EntityNotAuthorizedError.d.ts +2 -2
  123. package/build/errors/EntityNotAuthorizedError.js +1 -1
  124. package/build/errors/EntityNotAuthorizedError.js.map +1 -1
  125. package/build/errors/EntityNotFoundError.d.ts +2 -2
  126. package/build/errors/EntityNotFoundError.js.map +1 -1
  127. package/build/index.d.ts +2 -1
  128. package/build/index.js +3 -3
  129. package/build/index.js.map +1 -1
  130. package/build/internal/EntityDataManager.d.ts +1 -1
  131. package/build/internal/EntityDataManager.js +1 -1
  132. package/build/internal/EntityDataManager.js.map +1 -1
  133. package/build/internal/EntityFieldTransformationUtils.d.ts +1 -1
  134. package/build/internal/EntityFieldTransformationUtils.js +4 -4
  135. package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
  136. package/build/internal/EntityTableDataCoordinator.d.ts +3 -3
  137. package/build/internal/EntityTableDataCoordinator.js.map +1 -1
  138. package/build/internal/ReadThroughEntityCache.d.ts +3 -3
  139. package/build/internal/ReadThroughEntityCache.js +1 -1
  140. package/build/internal/ReadThroughEntityCache.js.map +1 -1
  141. package/build/internal/__tests__/EntityDataManager-test.js +1 -1
  142. package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
  143. package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
  144. package/build/metrics/EntityMetricsUtils.js.map +1 -1
  145. package/build/metrics/IEntityMetricsAdapter.js +4 -4
  146. package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
  147. package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +2 -2
  148. package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
  149. package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +2 -2
  150. package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
  151. package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +2 -2
  152. package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
  153. package/build/rules/PrivacyPolicyRule.d.ts +1 -1
  154. package/build/rules/PrivacyPolicyRule.js +1 -1
  155. package/build/rules/PrivacyPolicyRule.js.map +1 -1
  156. package/build/testfixtures/DateIDTestEntity.d.ts +2 -3
  157. package/build/testfixtures/DateIDTestEntity.js +7 -9
  158. package/build/testfixtures/DateIDTestEntity.js.map +1 -1
  159. package/build/testfixtures/SimpleTestEntity.d.ts +3 -4
  160. package/build/testfixtures/SimpleTestEntity.js +7 -9
  161. package/build/testfixtures/SimpleTestEntity.js.map +1 -1
  162. package/build/testfixtures/TestEntity.d.ts +2 -3
  163. package/build/testfixtures/TestEntity.js +14 -10
  164. package/build/testfixtures/TestEntity.js.map +1 -1
  165. package/build/testfixtures/TestEntity2.d.ts +2 -3
  166. package/build/testfixtures/TestEntity2.js +7 -9
  167. package/build/testfixtures/TestEntity2.js.map +1 -1
  168. package/build/testfixtures/TestEntityNumberKey.d.ts +2 -3
  169. package/build/testfixtures/TestEntityNumberKey.js +7 -9
  170. package/build/testfixtures/TestEntityNumberKey.js.map +1 -1
  171. package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +4 -4
  172. package/build/utils/testing/StubCacheAdapter.d.ts +6 -5
  173. package/build/utils/testing/StubCacheAdapter.js +5 -6
  174. package/build/utils/testing/StubCacheAdapter.js.map +1 -1
  175. package/build/utils/testing/StubDatabaseAdapterProvider.js.map +1 -1
  176. package/build/utils/testing/StubQueryContextProvider.d.ts +2 -1
  177. package/build/utils/testing/StubQueryContextProvider.js +1 -1
  178. package/build/utils/testing/StubQueryContextProvider.js.map +1 -1
  179. package/build/utils/testing/createUnitTestEntityCompanionProvider.js +2 -2
  180. package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +1 -1
  181. package/package.json +3 -3
  182. package/src/ComposedEntityCacheAdapter.ts +4 -11
  183. package/src/EnforcingEntityLoader.ts +1 -1
  184. package/src/Entity.ts +23 -12
  185. package/src/EntityAssociationLoader.ts +12 -12
  186. package/src/EntityCompanion.ts +13 -32
  187. package/src/EntityCompanionProvider.ts +41 -80
  188. package/src/EntityConfiguration.ts +4 -5
  189. package/src/EntityFieldDefinition.ts +2 -2
  190. package/src/EntityLoader.ts +19 -2
  191. package/src/EntityLoaderFactory.ts +7 -9
  192. package/src/EntityMutationInfo.ts +2 -2
  193. package/src/EntityMutationTriggerConfiguration.ts +3 -3
  194. package/src/EntityMutationValidator.ts +1 -1
  195. package/src/EntityMutator.ts +38 -31
  196. package/src/EntityMutatorFactory.ts +6 -1
  197. package/src/EntityPrivacyPolicy.ts +2 -2
  198. package/src/EntityQueryContext.ts +24 -4
  199. package/src/EntityQueryContextProvider.ts +7 -5
  200. package/src/EntitySecondaryCacheLoader.ts +1 -1
  201. package/src/GenericEntityCacheAdapter.ts +65 -0
  202. package/src/{EntityCacheAdapter.ts → IEntityCacheAdapter.ts} +5 -8
  203. package/src/IEntityCacheAdapterProvider.ts +2 -2
  204. package/src/IEntityGenericCacher.ts +32 -2
  205. package/src/ReadonlyEntity.ts +32 -32
  206. package/src/ViewerContext.ts +10 -8
  207. package/src/ViewerScopedEntityCompanion.ts +2 -2
  208. package/src/ViewerScopedEntityCompanionProvider.ts +4 -12
  209. package/src/ViewerScopedEntityLoaderFactory.ts +1 -1
  210. package/src/ViewerScopedEntityMutatorFactory.ts +1 -1
  211. package/src/__tests__/ComposedCacheAdapter-test.ts +6 -11
  212. package/src/__tests__/EnforcingEntityLoader-test.ts +1 -0
  213. package/src/__tests__/Entity-test.ts +42 -21
  214. package/src/__tests__/EntityCommonUseCases-test.ts +20 -22
  215. package/src/__tests__/EntityCompanion-test.ts +6 -9
  216. package/src/__tests__/EntityCompanionProvider-test.ts +14 -26
  217. package/src/__tests__/EntityEdges-test.ts +43 -49
  218. package/src/__tests__/EntityLoader-constructor-test.ts +16 -12
  219. package/src/__tests__/EntityLoader-test.ts +9 -0
  220. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +20 -22
  221. package/src/__tests__/EntityMutator-test.ts +119 -19
  222. package/src/__tests__/EntityPrivacyPolicy-test.ts +82 -29
  223. package/src/__tests__/EntityQueryContext-test.ts +23 -1
  224. package/src/__tests__/EntitySelfReferentialEdges-test.ts +8 -10
  225. package/src/__tests__/GenericEntityCacheAdapter-test.ts +102 -0
  226. package/src/__tests__/ReadonlyEntity-test.ts +79 -13
  227. package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +2 -5
  228. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +30 -24
  229. package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +14 -18
  230. package/src/errors/EntityInvalidFieldValueError.ts +2 -2
  231. package/src/errors/EntityNotAuthorizedError.ts +2 -2
  232. package/src/errors/EntityNotFoundError.ts +2 -2
  233. package/src/index.ts +2 -1
  234. package/src/internal/EntityDataManager.ts +1 -1
  235. package/src/internal/EntityTableDataCoordinator.ts +4 -4
  236. package/src/internal/ReadThroughEntityCache.ts +2 -2
  237. package/src/internal/__tests__/EntityDataManager-test.ts +2 -1
  238. package/src/internal/__tests__/ReadThroughEntityCache-test.ts +8 -8
  239. package/src/metrics/EntityMetricsUtils.ts +1 -1
  240. package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +2 -2
  241. package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +2 -2
  242. package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +2 -2
  243. package/src/rules/PrivacyPolicyRule.ts +1 -1
  244. package/src/testfixtures/DateIDTestEntity.ts +6 -8
  245. package/src/testfixtures/SimpleTestEntity.ts +6 -8
  246. package/src/testfixtures/TestEntity.ts +19 -15
  247. package/src/testfixtures/TestEntity2.ts +6 -8
  248. package/src/testfixtures/TestEntityNumberKey.ts +6 -8
  249. package/src/utils/testing/PrivacyPolicyRuleTestUtils.ts +4 -4
  250. package/src/utils/testing/StubCacheAdapter.ts +9 -11
  251. package/src/utils/testing/StubDatabaseAdapterProvider.ts +1 -1
  252. package/src/utils/testing/StubQueryContextProvider.ts +4 -3
  253. package/src/utils/testing/createUnitTestEntityCompanionProvider.ts +3 -3
  254. package/build/EntityCacheAdapter.js +0 -13
  255. package/build/EntityCacheAdapter.js.map +0 -1
@@ -1,4 +1,5 @@
1
1
  import Entity, { IEntityClass } from './Entity';
2
+ import EntityCompanionProvider from './EntityCompanionProvider';
2
3
  import EntityConfiguration from './EntityConfiguration';
3
4
  import EntityDatabaseAdapter from './EntityDatabaseAdapter';
4
5
  import EntityLoaderFactory from './EntityLoaderFactory';
@@ -12,7 +13,8 @@ import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
12
13
  /**
13
14
  * The primary interface for creating, mutating, and deleting entities.
14
15
  */
15
- export default class EntityMutatorFactory<TFields, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> {
16
+ export default class EntityMutatorFactory<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> {
17
+ private readonly entityCompanionProvider;
16
18
  private readonly entityConfiguration;
17
19
  private readonly entityClass;
18
20
  private readonly privacyPolicy;
@@ -21,7 +23,7 @@ export default class EntityMutatorFactory<TFields, TID extends NonNullable<TFiel
21
23
  private readonly entityLoaderFactory;
22
24
  private readonly databaseAdapter;
23
25
  private readonly metricsAdapter;
24
- constructor(entityConfiguration: EntityConfiguration<TFields>, entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, privacyPolicy: TPrivacyPolicy, mutationValidators: EntityMutationValidator<TFields, TID, TViewerContext, TEntity, TSelectedFields>[], mutationTriggers: EntityMutationTriggerConfiguration<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entityLoaderFactory: EntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, databaseAdapter: EntityDatabaseAdapter<TFields>, metricsAdapter: IEntityMetricsAdapter);
26
+ constructor(entityCompanionProvider: EntityCompanionProvider, entityConfiguration: EntityConfiguration<TFields>, entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, privacyPolicy: TPrivacyPolicy, mutationValidators: EntityMutationValidator<TFields, TID, TViewerContext, TEntity, TSelectedFields>[], mutationTriggers: EntityMutationTriggerConfiguration<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entityLoaderFactory: EntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, databaseAdapter: EntityDatabaseAdapter<TFields>, metricsAdapter: IEntityMetricsAdapter);
25
27
  /**
26
28
  * Vend mutator for creating a new entity in given query context.
27
29
  * @param viewerContext - viewer context of creating user
@@ -5,7 +5,8 @@ const EntityMutator_1 = require("./EntityMutator");
5
5
  * The primary interface for creating, mutating, and deleting entities.
6
6
  */
7
7
  class EntityMutatorFactory {
8
- constructor(entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter) {
8
+ constructor(entityCompanionProvider, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter) {
9
+ this.entityCompanionProvider = entityCompanionProvider;
9
10
  this.entityConfiguration = entityConfiguration;
10
11
  this.entityClass = entityClass;
11
12
  this.privacyPolicy = privacyPolicy;
@@ -22,7 +23,7 @@ class EntityMutatorFactory {
22
23
  * @returns mutator for creating an entity
23
24
  */
24
25
  forCreate(viewerContext, queryContext) {
25
- return new EntityMutator_1.CreateMutator(viewerContext, queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter);
26
+ return new EntityMutator_1.CreateMutator(this.entityCompanionProvider, viewerContext, queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter);
26
27
  }
27
28
  /**
28
29
  * Vend mutator for updating an existing entity in given query context.
@@ -31,7 +32,7 @@ class EntityMutatorFactory {
31
32
  * @returns mutator for updating existingEntity
32
33
  */
33
34
  forUpdate(existingEntity, queryContext) {
34
- return new EntityMutator_1.UpdateMutator(existingEntity.getViewerContext(), queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter, existingEntity);
35
+ return new EntityMutator_1.UpdateMutator(this.entityCompanionProvider, existingEntity.getViewerContext(), queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter, existingEntity);
35
36
  }
36
37
  /**
37
38
  * Delete an existing entity in given query context.
@@ -39,7 +40,7 @@ class EntityMutatorFactory {
39
40
  * @param queryContext - query context in which to perform the delete
40
41
  */
41
42
  forDelete(existingEntity, queryContext) {
42
- return new EntityMutator_1.DeleteMutator(existingEntity.getViewerContext(), queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter, existingEntity);
43
+ return new EntityMutator_1.DeleteMutator(this.entityCompanionProvider, existingEntity.getViewerContext(), queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter, existingEntity);
43
44
  }
44
45
  }
45
46
  exports.default = EntityMutatorFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"EntityMutatorFactory.js","sourceRoot":"","sources":["../src/EntityMutatorFactory.ts"],"names":[],"mappings":";;AAMA,mDAA8E;AAM9E;;GAEG;AACH,MAAqB,oBAAoB;IAcvC,YACmB,mBAAiD,EACjD,WAOhB,EACgB,aAA6B,EAC7B,kBAMd,EACc,gBAMhB,EACgB,mBAOhB,EACgB,eAA+C,EAC/C,cAAqC;QAjCrC,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,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,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,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;AA3HD,uCA2HC"}
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"}
@@ -8,7 +8,7 @@ import PrivacyPolicyRule from './rules/PrivacyPolicyRule';
8
8
  /**
9
9
  * Information about the reason this privacy policy is being evaluated.
10
10
  */
11
- export declare type EntityPrivacyPolicyEvaluationContext = {
11
+ export type EntityPrivacyPolicyEvaluationContext = {
12
12
  /**
13
13
  * When this privacy policy is being evaluated as a result of a cascading deletion, this will be populated
14
14
  * with information on the cascading delete.
@@ -33,7 +33,7 @@ export declare enum EntityPrivacyPolicyEvaluationMode {
33
33
  */
34
34
  ENFORCE_AND_LOG = 2
35
35
  }
36
- export declare type EntityPrivacyPolicyEvaluator<TFields, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> = {
36
+ export type EntityPrivacyPolicyEvaluator<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> = {
37
37
  mode: EntityPrivacyPolicyEvaluationMode.ENFORCE;
38
38
  } | {
39
39
  mode: EntityPrivacyPolicyEvaluationMode.DRY_RUN;
@@ -69,7 +69,7 @@ export declare enum EntityAuthorizationAction {
69
69
  * return not authorized if all rules skip
70
70
  * ```
71
71
  */
72
- export default abstract class EntityPrivacyPolicy<TFields, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> {
72
+ export default abstract class EntityPrivacyPolicy<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> {
73
73
  protected readonly createRules: readonly PrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>[];
74
74
  protected readonly readRules: readonly PrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>[];
75
75
  protected readonly updateRules: readonly PrivacyPolicyRule<TFields, TID, TViewerContext, TEntity, TSelectedFields>[];
@@ -25,14 +25,14 @@ var EntityPrivacyPolicyEvaluationMode;
25
25
  * Enforce this privacy policy. Throw and log upon denial.
26
26
  */
27
27
  EntityPrivacyPolicyEvaluationMode[EntityPrivacyPolicyEvaluationMode["ENFORCE_AND_LOG"] = 2] = "ENFORCE_AND_LOG";
28
- })(EntityPrivacyPolicyEvaluationMode = exports.EntityPrivacyPolicyEvaluationMode || (exports.EntityPrivacyPolicyEvaluationMode = {}));
28
+ })(EntityPrivacyPolicyEvaluationMode || (exports.EntityPrivacyPolicyEvaluationMode = EntityPrivacyPolicyEvaluationMode = {}));
29
29
  var EntityAuthorizationAction;
30
30
  (function (EntityAuthorizationAction) {
31
31
  EntityAuthorizationAction[EntityAuthorizationAction["CREATE"] = 0] = "CREATE";
32
32
  EntityAuthorizationAction[EntityAuthorizationAction["READ"] = 1] = "READ";
33
33
  EntityAuthorizationAction[EntityAuthorizationAction["UPDATE"] = 2] = "UPDATE";
34
34
  EntityAuthorizationAction[EntityAuthorizationAction["DELETE"] = 3] = "DELETE";
35
- })(EntityAuthorizationAction = exports.EntityAuthorizationAction || (exports.EntityAuthorizationAction = {}));
35
+ })(EntityAuthorizationAction || (exports.EntityAuthorizationAction = EntityAuthorizationAction = {}));
36
36
  /**
37
37
  * Privacy policy for an entity.
38
38
  *
@@ -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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"}
@@ -1,6 +1,14 @@
1
1
  import EntityQueryContextProvider from './EntityQueryContextProvider';
2
- export declare type PostCommitCallback = (...args: any) => Promise<any>;
3
- export declare type PreCommitCallback = (queryContext: EntityTransactionalQueryContext, ...args: any) => Promise<any>;
2
+ export type PostCommitCallback = (...args: any) => Promise<any>;
3
+ export type PreCommitCallback = (queryContext: EntityTransactionalQueryContext, ...args: any) => Promise<any>;
4
+ export declare enum TransactionIsolationLevel {
5
+ READ_COMMITTED = "READ_COMMITTED",
6
+ REPEATABLE_READ = "REPEATABLE_READ",
7
+ SERIALIZABLE = "SERIALIZABLE"
8
+ }
9
+ export type TransactionConfig = {
10
+ isolationLevel?: TransactionIsolationLevel;
11
+ };
4
12
  /**
5
13
  * Entity framework representation of transactional and non-transactional database
6
14
  * query execution units.
@@ -13,7 +21,7 @@ export declare abstract class EntityQueryContext {
13
21
  constructor(queryInterface: any);
14
22
  abstract isInTransaction(): boolean;
15
23
  getQueryInterface(): any;
16
- abstract runInTransactionIfNotInTransactionAsync<T>(transactionScope: (queryContext: EntityTransactionalQueryContext) => Promise<T>): Promise<T>;
24
+ abstract runInTransactionIfNotInTransactionAsync<T>(transactionScope: (queryContext: EntityTransactionalQueryContext) => Promise<T>, transactionConfig?: TransactionConfig): Promise<T>;
17
25
  }
18
26
  /**
19
27
  * Entity framework representation of a non-transactional query execution unit.
@@ -25,7 +33,7 @@ export declare class EntityNonTransactionalQueryContext extends EntityQueryConte
25
33
  private readonly entityQueryContextProvider;
26
34
  constructor(queryInterface: any, entityQueryContextProvider: EntityQueryContextProvider);
27
35
  isInTransaction(): boolean;
28
- runInTransactionIfNotInTransactionAsync<T>(transactionScope: (queryContext: EntityTransactionalQueryContext) => Promise<T>): Promise<T>;
36
+ runInTransactionIfNotInTransactionAsync<T>(transactionScope: (queryContext: EntityTransactionalQueryContext) => Promise<T>, transactionConfig?: TransactionConfig): Promise<T>;
29
37
  }
30
38
  /**
31
39
  * Entity framework representation of a transactional query execution unit. When supplied
@@ -62,7 +70,7 @@ export declare class EntityTransactionalQueryContext extends EntityQueryContext
62
70
  runPreCommitCallbacksAsync(): Promise<void>;
63
71
  runPostCommitCallbacksAsync(): Promise<void>;
64
72
  isInTransaction(): boolean;
65
- runInTransactionIfNotInTransactionAsync<T>(transactionScope: (queryContext: EntityTransactionalQueryContext) => Promise<T>): Promise<T>;
73
+ runInTransactionIfNotInTransactionAsync<T>(transactionScope: (queryContext: EntityTransactionalQueryContext) => Promise<T>, transactionConfig?: TransactionConfig): Promise<T>;
66
74
  runInNestedTransactionAsync<T>(transactionScope: (innerQueryContext: EntityTransactionalQueryContext) => Promise<T>): Promise<T>;
67
75
  }
68
76
  /**
@@ -3,8 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.EntityNestedTransactionalQueryContext = exports.EntityTransactionalQueryContext = exports.EntityNonTransactionalQueryContext = exports.EntityQueryContext = void 0;
6
+ exports.EntityNestedTransactionalQueryContext = exports.EntityTransactionalQueryContext = exports.EntityNonTransactionalQueryContext = exports.EntityQueryContext = exports.TransactionIsolationLevel = void 0;
7
7
  const assert_1 = __importDefault(require("assert"));
8
+ var TransactionIsolationLevel;
9
+ (function (TransactionIsolationLevel) {
10
+ TransactionIsolationLevel["READ_COMMITTED"] = "READ_COMMITTED";
11
+ TransactionIsolationLevel["REPEATABLE_READ"] = "REPEATABLE_READ";
12
+ TransactionIsolationLevel["SERIALIZABLE"] = "SERIALIZABLE";
13
+ })(TransactionIsolationLevel || (exports.TransactionIsolationLevel = TransactionIsolationLevel = {}));
8
14
  /**
9
15
  * Entity framework representation of transactional and non-transactional database
10
16
  * query execution units.
@@ -35,8 +41,8 @@ class EntityNonTransactionalQueryContext extends EntityQueryContext {
35
41
  isInTransaction() {
36
42
  return false;
37
43
  }
38
- async runInTransactionIfNotInTransactionAsync(transactionScope) {
39
- return await this.entityQueryContextProvider.runInTransactionAsync(transactionScope);
44
+ async runInTransactionIfNotInTransactionAsync(transactionScope, transactionConfig) {
45
+ return await this.entityQueryContextProvider.runInTransactionAsync(transactionScope, transactionConfig);
40
46
  }
41
47
  }
42
48
  exports.EntityNonTransactionalQueryContext = EntityNonTransactionalQueryContext;
@@ -101,7 +107,8 @@ class EntityTransactionalQueryContext extends EntityQueryContext {
101
107
  isInTransaction() {
102
108
  return true;
103
109
  }
104
- async runInTransactionIfNotInTransactionAsync(transactionScope) {
110
+ async runInTransactionIfNotInTransactionAsync(transactionScope, transactionConfig) {
111
+ (0, assert_1.default)(transactionConfig === undefined, 'Should not pass transactionConfig to a nested transaction');
105
112
  return await transactionScope(this);
106
113
  }
107
114
  async runInNestedTransactionAsync(transactionScope) {
@@ -1 +1 @@
1
- {"version":3,"file":"EntityQueryContext.js","sourceRoot":"","sources":["../src/EntityQueryContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntityQueryContext.js","sourceRoot":"","sources":["../src/EntityQueryContext.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { EntityTransactionalQueryContext, EntityNonTransactionalQueryContext, EntityNestedTransactionalQueryContext } from './EntityQueryContext';
1
+ import { EntityTransactionalQueryContext, EntityNonTransactionalQueryContext, EntityNestedTransactionalQueryContext, TransactionConfig } from './EntityQueryContext';
2
2
  /**
3
3
  * A query context provider vends transactional and non-transactional query contexts.
4
4
  */
@@ -14,13 +14,13 @@ export default abstract class EntityQueryContextProvider {
14
14
  /**
15
15
  * Vend a transaction runner for use in runInTransactionAsync.
16
16
  */
17
- protected abstract createTransactionRunner<T>(): (transactionScope: (queryInterface: any) => Promise<T>) => Promise<T>;
17
+ protected abstract createTransactionRunner<T>(transactionConfig?: TransactionConfig): (transactionScope: (queryInterface: any) => Promise<T>) => Promise<T>;
18
18
  protected abstract createNestedTransactionRunner<T>(outerQueryInterface: any): (transactionScope: (queryInterface: any) => Promise<T>) => Promise<T>;
19
19
  /**
20
20
  * Start a transaction and execute the provided transaction-scoped closure within the transaction.
21
21
  * @param transactionScope - async callback to execute within the transaction
22
22
  */
23
- runInTransactionAsync<T>(transactionScope: (queryContext: EntityTransactionalQueryContext) => Promise<T>): Promise<T>;
23
+ runInTransactionAsync<T>(transactionScope: (queryContext: EntityTransactionalQueryContext) => Promise<T>, transactionConfig?: TransactionConfig): Promise<T>;
24
24
  /**
25
25
  * Start a nested transaction from the specified parent transaction and execure the
26
26
  * provided nested-transaction-scoped closure within the nested transaction.
@@ -15,8 +15,8 @@ class EntityQueryContextProvider {
15
15
  * Start a transaction and execute the provided transaction-scoped closure within the transaction.
16
16
  * @param transactionScope - async callback to execute within the transaction
17
17
  */
18
- async runInTransactionAsync(transactionScope) {
19
- const [returnedValue, queryContext] = await this.createTransactionRunner()(async (queryInterface) => {
18
+ async runInTransactionAsync(transactionScope, transactionConfig) {
19
+ const [returnedValue, queryContext] = await this.createTransactionRunner(transactionConfig)(async (queryInterface) => {
20
20
  const queryContext = new EntityQueryContext_1.EntityTransactionalQueryContext(queryInterface, this);
21
21
  const result = await transactionScope(queryContext);
22
22
  await queryContext.runPreCommitCallbacksAsync();
@@ -1 +1 @@
1
- {"version":3,"file":"EntityQueryContextProvider.js","sourceRoot":"","sources":["../src/EntityQueryContextProvider.ts"],"names":[],"mappings":";;AAAA,6DAI8B;AAE9B;;GAEG;AACH,MAA8B,0BAA0B;IACtD;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,uDAAkC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAkBD;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CACzB,gBAA+E;QAE/E,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAErE,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE;YAC3B,MAAM,YAAY,GAAG,IAAI,oDAA+B,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACpD,MAAM,YAAY,CAAC,0BAA0B,EAAE,CAAC;YAChD,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,2BAA2B,EAAE,CAAC;QACjD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,2BAA2B,CAC/B,iBAAkD,EAClD,gBAA0F;QAE1F,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAEjF,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,CAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE;YACrE,MAAM,iBAAiB,GAAG,IAAI,0DAAqC,CACjE,mBAAmB,EACnB,iBAAiB,EACjB,IAAI,CACL,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;YACzD,MAAM,iBAAiB,CAAC,0BAA0B,EAAE,CAAC;YACrD,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,wHAAwH;QACxH,iBAAiB,CAAC,mCAAmC,EAAE,CAAC;QACxD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AArED,6CAqEC"}
1
+ {"version":3,"file":"EntityQueryContextProvider.js","sourceRoot":"","sources":["../src/EntityQueryContextProvider.ts"],"names":[],"mappings":";;AAAA,6DAK8B;AAE9B;;GAEG;AACH,MAA8B,0BAA0B;IACtD;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,uDAAkC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAkBD;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CACzB,gBAA+E,EAC/E,iBAAqC;QAErC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAEtE,iBAAiB,CAAC,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE;YAC5C,MAAM,YAAY,GAAG,IAAI,oDAA+B,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACpD,MAAM,YAAY,CAAC,0BAA0B,EAAE,CAAC;YAChD,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,2BAA2B,EAAE,CAAC;QACjD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,2BAA2B,CAC/B,iBAAkD,EAClD,gBAA0F;QAE1F,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,GAAG,MAAM,IAAI,CAAC,6BAA6B,CAEjF,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,CAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE;YACrE,MAAM,iBAAiB,GAAG,IAAI,0DAAqC,CACjE,mBAAmB,EACnB,iBAAiB,EACjB,IAAI,CACL,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;YACzD,MAAM,iBAAiB,CAAC,0BAA0B,EAAE,CAAC;YACrD,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,wHAAwH;QACxH,iBAAiB,CAAC,mCAAmC,EAAE,CAAC;QACxD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AAtED,6CAsEC"}
@@ -33,7 +33,7 @@ export interface ISecondaryEntityCache<TFields, TLoadParams> {
33
33
  * due to use of a non-unique-field-based EntityLoader method like `loadManyByFieldEqualityConjunctionAsync` or
34
34
  * `loadManyByRawWhereClauseAsync`.
35
35
  */
36
- export default abstract class EntitySecondaryCacheLoader<TLoadParams, TFields, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> {
36
+ export default abstract class EntitySecondaryCacheLoader<TLoadParams, TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> {
37
37
  private readonly secondaryEntityCache;
38
38
  protected readonly entityLoader: EntityLoader<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
39
39
  constructor(secondaryEntityCache: ISecondaryEntityCache<TFields, TLoadParams>, entityLoader: EntityLoader<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>);
@@ -26,7 +26,7 @@ class EntitySecondaryCacheLoader {
26
26
  const loadParamsToFieldObjects = await this.secondaryEntityCache.loadManyThroughAsync(loadParamsArray, this.fetchObjectsFromDatabaseAsync.bind(this));
27
27
  // convert value to and from array to reuse complex code
28
28
  const entitiesMap = await this.entityLoader.constructAndAuthorizeEntitiesAsync((0, maps_1.mapMap)(loadParamsToFieldObjects, (fieldObject) => (fieldObject ? [fieldObject] : [])));
29
- return (0, maps_1.mapMap)(entitiesMap, (fieldObjects) => { var _a; return (_a = fieldObjects[0]) !== null && _a !== void 0 ? _a : null; });
29
+ return (0, maps_1.mapMap)(entitiesMap, (fieldObjects) => fieldObjects[0] ?? null);
30
30
  }
31
31
  /**
32
32
  * Invalidate the cache for objects cached by loadParams.
@@ -1 +1 @@
1
- {"version":3,"file":"EntitySecondaryCacheLoader.js","sourceRoot":"","sources":["../src/EntitySecondaryCacheLoader.ts"],"names":[],"mappings":";;AAMA,mDAAkD;AA4BlD;;;;;;;;;;GAUG;AACH,MAA8B,0BAA0B;IAetD,YACmB,oBAAiE,EAC/D,YAOlB;QARgB,yBAAoB,GAApB,oBAAoB,CAA6C;QAC/D,iBAAY,GAAZ,YAAY,CAO9B;IACA,CAAC;IAEJ;;;;OAIG;IACI,KAAK,CAAC,aAAa,CACxB,eAAiD;QAEjD,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CACnF,eAAe,EACf,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9C,CAAC;QAEF,wDAAwD;QACxD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kCAAkC,CAC5E,IAAA,aAAM,EAAC,wBAAwB,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACtF,CAAC;QACF,OAAO,IAAA,aAAM,EAAC,WAAW,EAAE,CAAC,YAAY,EAAE,EAAE,WAAC,OAAA,MAAA,YAAY,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAA,EAAA,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,mBAAmB,CAC9B,eAAiD;QAEjD,MAAM,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACvE,CAAC;CAUF;AAlED,6CAkEC"}
1
+ {"version":3,"file":"EntitySecondaryCacheLoader.js","sourceRoot":"","sources":["../src/EntitySecondaryCacheLoader.ts"],"names":[],"mappings":";;AAMA,mDAAkD;AA4BlD;;;;;;;;;;GAUG;AACH,MAA8B,0BAA0B;IAetD,YACmB,oBAAiE,EAC/D,YAOlB;QARgB,yBAAoB,GAApB,oBAAoB,CAA6C;QAC/D,iBAAY,GAAZ,YAAY,CAO9B;IACA,CAAC;IAEJ;;;;OAIG;IACI,KAAK,CAAC,aAAa,CACxB,eAAiD;QAEjD,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CACnF,eAAe,EACf,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9C,CAAC;QAEF,wDAAwD;QACxD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kCAAkC,CAC5E,IAAA,aAAM,EAAC,wBAAwB,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACtF,CAAC;QACF,OAAO,IAAA,aAAM,EAAC,WAAW,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,mBAAmB,CAC9B,eAAiD;QAEjD,MAAM,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACvE,CAAC;CAUF;AAlED,6CAkEC"}
@@ -0,0 +1,14 @@
1
+ import IEntityCacheAdapter from './IEntityCacheAdapter';
2
+ import IEntityGenericCacher from './IEntityGenericCacher';
3
+ import { CacheLoadResult } from './internal/ReadThroughEntityCache';
4
+ /**
5
+ * A standard IEntityCacheAdapter that coordinates caching through an IEntityGenericCacher.
6
+ */
7
+ export default class GenericEntityCacheAdapter<TFields> implements IEntityCacheAdapter<TFields> {
8
+ private readonly genericCacher;
9
+ constructor(genericCacher: IEntityGenericCacher<TFields>);
10
+ loadManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult<TFields>>>;
11
+ cacheManyAsync<N extends keyof TFields>(fieldName: N, objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields>>): Promise<void>;
12
+ cacheDBMissesAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<void>;
13
+ invalidateManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<void>;
14
+ }
@@ -0,0 +1,38 @@
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 invariant_1 = __importDefault(require("invariant"));
7
+ const maps_1 = require("./utils/collections/maps");
8
+ /**
9
+ * A standard IEntityCacheAdapter that coordinates caching through an IEntityGenericCacher.
10
+ */
11
+ class GenericEntityCacheAdapter {
12
+ constructor(genericCacher) {
13
+ this.genericCacher = genericCacher;
14
+ }
15
+ async loadManyAsync(fieldName, fieldValues) {
16
+ const redisCacheKeyToFieldValueMapping = new Map(fieldValues.map((fieldValue) => [
17
+ this.genericCacher.makeCacheKey(fieldName, fieldValue),
18
+ fieldValue,
19
+ ]));
20
+ const cacheResults = await this.genericCacher.loadManyAsync(Array.from(redisCacheKeyToFieldValueMapping.keys()));
21
+ return (0, maps_1.mapKeys)(cacheResults, (redisCacheKey) => {
22
+ const fieldValue = redisCacheKeyToFieldValueMapping.get(redisCacheKey);
23
+ (0, invariant_1.default)(fieldValue !== undefined, 'Unspecified cache key %s returned from generic cacher', redisCacheKey);
24
+ return fieldValue;
25
+ });
26
+ }
27
+ async cacheManyAsync(fieldName, objectMap) {
28
+ await this.genericCacher.cacheManyAsync((0, maps_1.mapKeys)(objectMap, (fieldValue) => this.genericCacher.makeCacheKey(fieldName, fieldValue)));
29
+ }
30
+ async cacheDBMissesAsync(fieldName, fieldValues) {
31
+ await this.genericCacher.cacheDBMissesAsync(fieldValues.map((fieldValue) => this.genericCacher.makeCacheKey(fieldName, fieldValue)));
32
+ }
33
+ async invalidateManyAsync(fieldName, fieldValues) {
34
+ await this.genericCacher.invalidateManyAsync(fieldValues.map((fieldValue) => this.genericCacher.makeCacheKey(fieldName, fieldValue)));
35
+ }
36
+ }
37
+ exports.default = GenericEntityCacheAdapter;
38
+ //# sourceMappingURL=GenericEntityCacheAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericEntityCacheAdapter.js","sourceRoot":"","sources":["../src/GenericEntityCacheAdapter.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAKlC,mDAAmD;AAEnD;;GAEG;AACH,MAAqB,yBAAyB;IAC5C,YAA6B,aAA4C;QAA5C,kBAAa,GAAb,aAAa,CAA+B;IAAG,CAAC;IAEtE,KAAK,CAAC,aAAa,CACxB,SAAY,EACZ,WAA+C;QAE/C,MAAM,gCAAgC,GAAG,IAAI,GAAG,CAC9C,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC;YACtD,UAAU;SACX,CAAC,CACH,CAAC;QACF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CACzD,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,IAAI,EAAE,CAAC,CACpD,CAAC;QAEF,OAAO,IAAA,cAAO,EAAC,YAAY,EAAE,CAAC,aAAa,EAAE,EAAE;YAC7C,MAAM,UAAU,GAAG,gCAAgC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACvE,IAAA,mBAAS,EACP,UAAU,KAAK,SAAS,EACxB,uDAAuD,EACvD,aAAa,CACd,CAAC;YACF,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,SAAY,EACZ,SAAkE;QAElE,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CACrC,IAAA,cAAO,EAAC,SAAS,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAC3F,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,SAAY,EACZ,WAA+C;QAE/C,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACzC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CACxF,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAC9B,SAAY,EACZ,WAA+C;QAE/C,MAAM,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAC1C,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CACxF,CAAC;IACJ,CAAC;CACF;AAtDD,4CAsDC"}
@@ -1,36 +1,33 @@
1
- import EntityConfiguration from './EntityConfiguration';
2
1
  import { CacheLoadResult } from './internal/ReadThroughEntityCache';
3
2
  /**
4
3
  * A cache adapter is an interface by which objects can be
5
4
  * cached, fetched from cache, and removed from cache (invalidated).
6
5
  */
7
- export default abstract class EntityCacheAdapter<TFields> {
8
- protected readonly entityConfiguration: EntityConfiguration<TFields>;
9
- constructor(entityConfiguration: EntityConfiguration<TFields>);
6
+ export default interface IEntityCacheAdapter<TFields> {
10
7
  /**
11
8
  * Load many objects from cache.
12
9
  * @param fieldName - object field being queried
13
10
  * @param fieldValues - fieldName field values being queried
14
11
  * @returns map from all field values to a CacheLoadResult for each input value
15
12
  */
16
- abstract loadManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult<TFields>>>;
13
+ loadManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult<TFields>>>;
17
14
  /**
18
15
  * Cache many objects fetched from the DB.
19
16
  * @param fieldName - object field being queried
20
17
  * @param objectMap - map from field value to object to cache
21
18
  */
22
- abstract cacheManyAsync<N extends keyof TFields>(fieldName: N, objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields>>): Promise<void>;
19
+ cacheManyAsync<N extends keyof TFields>(fieldName: N, objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields>>): Promise<void>;
23
20
  /**
24
21
  * Negatively cache objects that could not be found in the cache or DB.
25
22
  * @param fieldName - object field being queried
26
23
  * @param fieldValues - fieldValues for objects reported as CacheStatus.NEGATIVE
27
24
  * in the cache and not found in the DB.
28
25
  */
29
- abstract cacheDBMissesAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<void>;
26
+ cacheDBMissesAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<void>;
30
27
  /**
31
28
  * Invalidate the cache for objects cached by (fieldName, fieldValue).
32
29
  * @param fieldName - object field being queried
33
30
  * @param fieldValues - fieldName field values to be invalidated
34
31
  */
35
- abstract invalidateManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<void>;
32
+ invalidateManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<void>;
36
33
  }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IEntityCacheAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IEntityCacheAdapter.js","sourceRoot":"","sources":["../src/IEntityCacheAdapter.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
- import EntityCacheAdapter from './EntityCacheAdapter';
2
1
  import EntityConfiguration from './EntityConfiguration';
2
+ import IEntityCacheAdapter from './IEntityCacheAdapter';
3
3
  /**
4
4
  * A cache adapter provider vends cache adapters for a particular cache adapter type.
5
5
  * Allows for passing global configuration to cache adapters.
@@ -8,5 +8,5 @@ export default interface IEntityCacheAdapterProvider {
8
8
  /**
9
9
  * Vend a cache adapter.
10
10
  */
11
- getCacheAdapter<TFields>(entityConfiguration: EntityConfiguration<TFields>): EntityCacheAdapter<TFields>;
11
+ getCacheAdapter<TFields>(entityConfiguration: EntityConfiguration<TFields>): IEntityCacheAdapter<TFields>;
12
12
  }
@@ -1,11 +1,40 @@
1
1
  import { CacheLoadResult } from './internal/ReadThroughEntityCache';
2
2
  /**
3
- * A cacher stores and loads key-value pairs. It also supports negative caching - it stores the absence
4
- * of keys that don't exist in the backing datastore.
3
+ * A generic cacher stores and loads key-value pairs. It also supports negative caching - it stores the absence
4
+ * of keys that don't exist in the backing datastore. It is also responsible for cache key creation.
5
5
  */
6
6
  export default interface IEntityGenericCacher<TFields> {
7
+ /**
8
+ * Load many keys from the cache. Return info in a format that is useful for read-through caching and
9
+ * negative caching.
10
+ *
11
+ * @param keys - cache keys to load
12
+ */
7
13
  loadManyAsync(keys: readonly string[]): Promise<ReadonlyMap<string, CacheLoadResult<TFields>>>;
14
+ /**
15
+ * Cache many objects for specified keys.
16
+ *
17
+ * @param objectMap - map from cache key to object to cache for key
18
+ */
8
19
  cacheManyAsync(objectMap: ReadonlyMap<string, Readonly<TFields>>): Promise<void>;
20
+ /**
21
+ * Negatively-cache specified keys. Subsequent loads for these keys (without calling invalidate) may
22
+ * return a negative CacheLoadResult
23
+ *
24
+ * @param keys - keys to cache negatively
25
+ */
9
26
  cacheDBMissesAsync(keys: readonly string[]): Promise<void>;
27
+ /**
28
+ * Invalidate specified keys in cache. Subsequent loads for these keys may return a cache miss.
29
+ *
30
+ * @param keys - keys to invalidate
31
+ */
10
32
  invalidateManyAsync(keys: readonly string[]): Promise<void>;
33
+ /**
34
+ * Create a cache key for a field and value of a object being cached or invalidated.
35
+ *
36
+ * @param fieldName - name of the object field for this cache key
37
+ * @param fieldValue - value of the obejct field for this cache key
38
+ */
39
+ makeCacheKey<N extends keyof TFields>(fieldName: N, fieldValue: NonNullable<TFields[N]>): string;
11
40
  }
@@ -12,19 +12,31 @@ import ViewerContext from './ViewerContext';
12
12
  * - Entities representing SQL views.
13
13
  * - Entities representing immutable tables.
14
14
  */
15
- export default abstract class ReadonlyEntity<TFields, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TSelectedFields extends keyof TFields = keyof TFields> {
15
+ export default abstract class ReadonlyEntity<TFields extends object, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TSelectedFields extends keyof TFields = keyof TFields> {
16
16
  private readonly viewerContext;
17
- private readonly databaseFields;
18
17
  private readonly id;
19
- private readonly rawFields;
18
+ private readonly databaseFields;
19
+ private readonly selectedFields;
20
20
  /**
21
21
  * Constructs an instance of an Entity.
22
- * @param viewerContext - the ViewerContext reading this entity
23
- * @param rawFields - all underlying fields for this entity's data
22
+ *
23
+ * @param constructorParam - data needed to construct an instance of an entity
24
+ * viewerContext - the ViewerContext reading this entity
25
+ * id - the ID of this entity
26
+ * databaseFields - all underlying fields for this entity's data
27
+ * selectedFields - selected fields for this entity from TSelectedFields type
28
+ *
29
+ * This should only be overridden in cases where additional data validation is needed.
30
+ * The params should not be modified when calling super during constructions.
24
31
  *
25
32
  * @internal
26
33
  */
27
- constructor(viewerContext: TViewerContext, databaseFields: Readonly<TFields>);
34
+ constructor({ viewerContext, id, databaseFields, selectedFields, }: {
35
+ viewerContext: TViewerContext;
36
+ id: TID;
37
+ databaseFields: Readonly<TFields>;
38
+ selectedFields: Readonly<Pick<TFields, TSelectedFields>>;
39
+ });
28
40
  toString(): string;
29
41
  getUniqueIdentifier(): string;
30
42
  /**
@@ -58,5 +70,5 @@ export default abstract class ReadonlyEntity<TFields, TID extends NonNullable<TF
58
70
  * @param viewerContext - viewer context of loading user
59
71
  * @param queryContext - query context in which to perform the load
60
72
  */
61
- static loader<TMFields, TMID extends NonNullable<TMFields[TMSelectedFields]>, TMViewerContext extends ViewerContext, TMViewerContext2 extends TMViewerContext, TMEntity extends ReadonlyEntity<TMFields, TMID, TMViewerContext, TMSelectedFields>, TMPrivacyPolicy extends EntityPrivacyPolicy<TMFields, TMID, TMViewerContext, TMEntity, TMSelectedFields>, TMSelectedFields extends keyof TMFields = keyof TMFields>(this: IEntityClass<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>, viewerContext: TMViewerContext2, queryContext?: EntityQueryContext): EntityLoader<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>;
73
+ static loader<TMFields extends object, TMID extends NonNullable<TMFields[TMSelectedFields]>, TMViewerContext extends ViewerContext, TMViewerContext2 extends TMViewerContext, TMEntity extends ReadonlyEntity<TMFields, TMID, TMViewerContext, TMSelectedFields>, TMPrivacyPolicy extends EntityPrivacyPolicy<TMFields, TMID, TMViewerContext, TMEntity, TMSelectedFields>, TMSelectedFields extends keyof TMFields = keyof TMFields>(this: IEntityClass<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>, viewerContext: TMViewerContext2, queryContext?: EntityQueryContext): EntityLoader<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields>;
62
74
  }
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const invariant_1 = __importDefault(require("invariant"));
7
7
  const EntityAssociationLoader_1 = __importDefault(require("./EntityAssociationLoader"));
8
- const entityUtils_1 = require("./entityUtils");
9
8
  /**
10
9
  * A readonly entity exposes only the read functionality of an Entity. Used as the base
11
10
  * type for most entity operations excluding mutations.
@@ -17,21 +16,24 @@ const entityUtils_1 = require("./entityUtils");
17
16
  class ReadonlyEntity {
18
17
  /**
19
18
  * Constructs an instance of an Entity.
20
- * @param viewerContext - the ViewerContext reading this entity
21
- * @param rawFields - all underlying fields for this entity's data
19
+ *
20
+ * @param constructorParam - data needed to construct an instance of an entity
21
+ * viewerContext - the ViewerContext reading this entity
22
+ * id - the ID of this entity
23
+ * databaseFields - all underlying fields for this entity's data
24
+ * selectedFields - selected fields for this entity from TSelectedFields type
25
+ *
26
+ * This should only be overridden in cases where additional data validation is needed.
27
+ * The params should not be modified when calling super during constructions.
22
28
  *
23
29
  * @internal
24
30
  */
25
- constructor(viewerContext, databaseFields) {
31
+ constructor({ viewerContext, id, databaseFields, selectedFields, }) {
32
+ (0, invariant_1.default)(id !== null && id !== undefined, 'id must be non-null');
26
33
  this.viewerContext = viewerContext;
27
- this.databaseFields = databaseFields;
28
- const companionDefinition = this.constructor.getCompanionDefinition();
29
- const idField = companionDefinition.entityConfiguration.idField;
30
- const id = databaseFields[idField];
31
- (0, invariant_1.default)(id, 'must provide ID to create an entity');
32
34
  this.id = id;
33
- const entitySelectedFields = companionDefinition.entitySelectedFields;
34
- this.rawFields = (0, entityUtils_1.pick)(databaseFields, entitySelectedFields);
35
+ this.databaseFields = databaseFields;
36
+ this.selectedFields = selectedFields;
35
37
  }
36
38
  toString() {
37
39
  return `${this.constructor.name}[${this.getID()}]`;
@@ -63,13 +65,13 @@ class ReadonlyEntity {
63
65
  * @returns the value of the field or undefined if not loaded with that field
64
66
  */
65
67
  getField(fieldName) {
66
- return this.rawFields[fieldName];
68
+ return this.selectedFields[fieldName];
67
69
  }
68
70
  /**
69
71
  * @returns all underlying fields from this entity's data
70
72
  */
71
73
  getAllFields() {
72
- return { ...this.rawFields };
74
+ return { ...this.selectedFields };
73
75
  }
74
76
  /**
75
77
  * @returns all underlying fields from this entity's database data
@@ -1 +1 @@
1
- {"version":3,"file":"ReadonlyEntity.js","sourceRoot":"","sources":["../src/ReadonlyEntity.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAGlC,wFAAgE;AAMhE,+CAAqC;AAErC;;;;;;;GAOG;AACH,MAA8B,cAAc;IAS1C;;;;;;OAMG;IACH,YACmB,aAA6B,EAC7B,cAAiC;QADjC,kBAAa,GAAb,aAAa,CAAgB;QAC7B,mBAAc,GAAd,cAAc,CAAmB;QAElD,MAAM,mBAAmB,GACvB,IAAI,CAAC,WACN,CAAC,sBAAsB,EAOvB,CAAC;QACF,MAAM,OAAO,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,OAGvD,CAAC;QACF,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACnC,IAAA,mBAAS,EAAC,EAAE,EAAE,qCAAqC,CAAC,CAAC;QACrD,IAAI,CAAC,EAAE,GAAG,EAAS,CAAC;QAEpB,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,oBAAyC,CAAC;QAC3F,IAAI,CAAC,SAAS,GAAG,IAAA,kBAAI,EAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;IAC9D,CAAC;IAED,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;IACrD,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,iBAAiB;QAOf,OAAO,IAAI,iCAAuB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,QAAQ,CACN,SAAY;QAEZ,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAuBX,aAA+B,EAC/B,eAAmC,aAAa;SAC7C,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QAEpB,OAAO,aAAa;aACjB,sCAAsC,CAAC,IAAI,CAAC;aAC5C,gBAAgB,EAAE;aAClB,OAAO,CAAC,YAAY,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;CACF;AA7ID,iCA6IC"}
1
+ {"version":3,"file":"ReadonlyEntity.js","sourceRoot":"","sources":["../src/ReadonlyEntity.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAGlC,wFAAgE;AAMhE;;;;;;;GAOG;AACH,MAA8B,cAAc;IAW1C;;;;;;;;;;;;;OAaG;IACH,YAAY,EACV,aAAa,EACb,EAAE,EACF,cAAc,EACd,cAAc,GAMf;QACC,IAAA,mBAAS,EAAC,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAElE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;IACrD,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,iBAAiB;QAOf,OAAO,IAAI,iCAAuB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,QAAQ,CACN,SAAY;QAEZ,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAuBX,aAA+B,EAC/B,eAAmC,aAAa;SAC7C,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QAEpB,OAAO,aAAa;aACjB,sCAAsC,CAAC,IAAI,CAAC;aAC5C,gBAAgB,EAAE;aAClB,OAAO,CAAC,YAAY,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;CACF;AA/ID,iCA+IC"}