@expo/entity 0.38.0 → 0.40.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 (206) hide show
  1. package/build/AuthorizationResultBasedEntityAssociationLoader.d.ts +99 -0
  2. package/build/AuthorizationResultBasedEntityAssociationLoader.js +124 -0
  3. package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -0
  4. package/build/AuthorizationResultBasedEntityLoader.d.ts +1 -1
  5. package/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
  6. package/build/{EntityMutator.d.ts → AuthorizationResultBasedEntityMutator.d.ts} +5 -17
  7. package/build/{EntityMutator.js → AuthorizationResultBasedEntityMutator.js} +22 -48
  8. package/build/AuthorizationResultBasedEntityMutator.js.map +1 -0
  9. package/build/EnforcingEntityAssociationLoader.d.ts +79 -0
  10. package/build/EnforcingEntityAssociationLoader.js +62 -0
  11. package/build/EnforcingEntityAssociationLoader.js.map +1 -0
  12. package/build/EnforcingEntityCreator.d.ts +24 -0
  13. package/build/EnforcingEntityCreator.js +32 -0
  14. package/build/EnforcingEntityCreator.js.map +1 -0
  15. package/build/EnforcingEntityDeleter.d.ts +17 -0
  16. package/build/EnforcingEntityDeleter.js +22 -0
  17. package/build/EnforcingEntityDeleter.js.map +1 -0
  18. package/build/EnforcingEntityUpdater.d.ts +24 -0
  19. package/build/EnforcingEntityUpdater.js +32 -0
  20. package/build/EnforcingEntityUpdater.js.map +1 -0
  21. package/build/Entity.d.ts +8 -12
  22. package/build/Entity.js +9 -34
  23. package/build/Entity.js.map +1 -1
  24. package/build/EntityAssociationLoader.d.ts +12 -91
  25. package/build/EntityAssociationLoader.js +20 -126
  26. package/build/EntityAssociationLoader.js.map +1 -1
  27. package/build/EntityCompanionProvider.d.ts +2 -2
  28. package/build/EntityCompanionProvider.js.map +1 -1
  29. package/build/EntityCreator.d.ts +27 -0
  30. package/build/EntityCreator.js +39 -0
  31. package/build/EntityCreator.js.map +1 -0
  32. package/build/EntityDatabaseAdapter.js +2 -2
  33. package/build/EntityDatabaseAdapter.js.map +1 -1
  34. package/build/EntityDeleter.d.ts +27 -0
  35. package/build/EntityDeleter.js +40 -0
  36. package/build/EntityDeleter.js.map +1 -0
  37. package/build/EntityLoader.d.ts +4 -14
  38. package/build/EntityLoader.js +7 -20
  39. package/build/EntityLoader.js.map +1 -1
  40. package/build/EntityLoaderFactory.d.ts +2 -2
  41. package/build/EntityLoaderFactory.js +4 -2
  42. package/build/EntityLoaderFactory.js.map +1 -1
  43. package/build/EntityMutatorFactory.d.ts +4 -4
  44. package/build/EntityMutatorFactory.js +4 -4
  45. package/build/EntityMutatorFactory.js.map +1 -1
  46. package/build/EntitySecondaryCacheLoader.d.ts +3 -3
  47. package/build/EntitySecondaryCacheLoader.js +1 -3
  48. package/build/EntitySecondaryCacheLoader.js.map +1 -1
  49. package/build/EntityUpdater.d.ts +27 -0
  50. package/build/EntityUpdater.js +40 -0
  51. package/build/EntityUpdater.js.map +1 -0
  52. package/build/ReadonlyEntity.d.ts +2 -2
  53. package/build/ReadonlyEntity.js +4 -6
  54. package/build/ReadonlyEntity.js.map +1 -1
  55. package/build/ViewerScopedEntityLoaderFactory.d.ts +2 -2
  56. package/build/ViewerScopedEntityLoaderFactory.js.map +1 -1
  57. package/build/ViewerScopedEntityMutatorFactory.d.ts +4 -4
  58. package/build/ViewerScopedEntityMutatorFactory.js.map +1 -1
  59. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +1 -0
  60. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +273 -0
  61. package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +1 -0
  62. package/build/__tests__/{EntityLoader-constructor-test.js → AuthorizationResultBasedEntityLoader-constructor-test.js} +11 -11
  63. package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +1 -0
  64. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +1 -0
  65. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js +401 -0
  66. package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +1 -0
  67. package/build/__tests__/EnforcingEntityAssociationLoader-test.d.ts +1 -0
  68. package/build/__tests__/EnforcingEntityAssociationLoader-test.js +115 -0
  69. package/build/__tests__/EnforcingEntityAssociationLoader-test.js.map +1 -0
  70. package/build/__tests__/Entity-test.js +23 -5
  71. package/build/__tests__/Entity-test.js.map +1 -1
  72. package/build/__tests__/EntityAssociationLoader-test.js +14 -184
  73. package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
  74. package/build/__tests__/EntityCommonUseCases-test.js +34 -12
  75. package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
  76. package/build/__tests__/EntityCompanion-test.js +17 -7
  77. package/build/__tests__/EntityCompanion-test.js.map +1 -1
  78. package/build/__tests__/EntityDatabaseAdapter-test.js.map +1 -1
  79. package/build/__tests__/EntityEdges-test.js +41 -23
  80. package/build/__tests__/EntityEdges-test.js.map +1 -1
  81. package/build/__tests__/EntityLoader-test.js +22 -386
  82. package/build/__tests__/EntityLoader-test.js.map +1 -1
  83. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +4 -3
  84. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
  85. package/build/__tests__/EntityMutator-test.js +67 -70
  86. package/build/__tests__/EntityMutator-test.js.map +1 -1
  87. package/build/__tests__/EntityPrivacyPolicy-test.js +17 -7
  88. package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
  89. package/build/__tests__/EntitySecondaryCacheLoader-test.js +7 -7
  90. package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
  91. package/build/__tests__/EntitySelfReferentialEdges-test.js +36 -24
  92. package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
  93. package/build/__tests__/ReadonlyEntity-test.js +1 -1
  94. package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
  95. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +4 -2
  96. package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
  97. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +7 -4
  98. package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
  99. package/build/__tests__/entityUtils-test.js +8 -0
  100. package/build/__tests__/entityUtils-test.js.map +1 -1
  101. package/build/entityUtils.d.ts +7 -0
  102. package/build/entityUtils.js +20 -10
  103. package/build/entityUtils.js.map +1 -1
  104. package/build/errors/EntityCacheAdapterError.js +17 -7
  105. package/build/errors/EntityCacheAdapterError.js.map +1 -1
  106. package/build/errors/EntityDatabaseAdapterError.js +17 -7
  107. package/build/errors/EntityDatabaseAdapterError.js.map +1 -1
  108. package/build/errors/EntityInvalidFieldValueError.js +17 -7
  109. package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
  110. package/build/errors/EntityNotAuthorizedError.js +17 -7
  111. package/build/errors/EntityNotAuthorizedError.js.map +1 -1
  112. package/build/errors/EntityNotFoundError.js +17 -7
  113. package/build/errors/EntityNotFoundError.js.map +1 -1
  114. package/build/index.d.ts +19 -11
  115. package/build/index.js +24 -7
  116. package/build/index.js.map +1 -1
  117. package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
  118. package/build/internal/__tests__/EntityDataManager-test.js +42 -32
  119. package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
  120. package/build/internal/__tests__/ReadThroughEntityCache-test.js +17 -7
  121. package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
  122. package/build/rules/AlwaysAllowPrivacyPolicyRule.js +17 -7
  123. package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
  124. package/build/rules/AlwaysDenyPrivacyPolicyRule.js +17 -7
  125. package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
  126. package/build/rules/AlwaysSkipPrivacyPolicyRule.js +17 -7
  127. package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
  128. package/build/utils/EntityPrivacyUtils.d.ts +32 -4
  129. package/build/utils/EntityPrivacyUtils.js +68 -24
  130. package/build/utils/EntityPrivacyUtils.js.map +1 -1
  131. package/build/utils/__tests__/EntityPrivacyUtils-test.js +148 -23
  132. package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +1 -1
  133. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +8 -5
  134. package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +1 -1
  135. package/build/utils/collections/__tests__/maps-test.js +1 -1
  136. package/build/utils/collections/__tests__/maps-test.js.map +1 -1
  137. package/build/utils/collections/maps.js +2 -2
  138. package/build/utils/collections/maps.js.map +1 -1
  139. package/build/utils/mergeEntityMutationTriggerConfigurations.js +1 -2
  140. package/build/utils/mergeEntityMutationTriggerConfigurations.js.map +1 -1
  141. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js +1 -1
  142. package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +1 -1
  143. package/build/utils/testing/StubDatabaseAdapter.js +17 -7
  144. package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
  145. package/build/utils/testing/StubQueryContextProvider.d.ts +1 -3
  146. package/build/utils/testing/StubQueryContextProvider.js +1 -3
  147. package/build/utils/testing/StubQueryContextProvider.js.map +1 -1
  148. package/build/utils/testing/createUnitTestEntityCompanionProvider.js +2 -1
  149. package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +1 -1
  150. package/build/utils/testing/describeFieldTestCase.js +1 -1
  151. package/build/utils/testing/describeFieldTestCase.js.map +1 -1
  152. package/package.json +19 -3
  153. package/src/AuthorizationResultBasedEntityAssociationLoader.ts +492 -0
  154. package/src/AuthorizationResultBasedEntityLoader.ts +2 -2
  155. package/src/{EntityMutator.ts → AuthorizationResultBasedEntityMutator.ts} +62 -58
  156. package/src/EnforcingEntityAssociationLoader.ts +390 -0
  157. package/src/EnforcingEntityCreator.ts +55 -0
  158. package/src/EnforcingEntityDeleter.ts +44 -0
  159. package/src/EnforcingEntityUpdater.ts +55 -0
  160. package/src/Entity.ts +20 -65
  161. package/src/EntityAssociationLoader.ts +38 -495
  162. package/src/EntityCompanionProvider.ts +5 -2
  163. package/src/EntityCreator.ts +73 -0
  164. package/src/EntityDeleter.ts +73 -0
  165. package/src/EntityLoader.ts +10 -49
  166. package/src/EntityLoaderFactory.ts +20 -3
  167. package/src/EntityMutatorFactory.ts +32 -7
  168. package/src/EntitySecondaryCacheLoader.ts +5 -7
  169. package/src/EntityUpdater.ts +73 -0
  170. package/src/ReadonlyEntity.ts +14 -13
  171. package/src/ViewerScopedEntityLoaderFactory.ts +9 -2
  172. package/src/ViewerScopedEntityMutatorFactory.ts +29 -4
  173. package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +354 -0
  174. package/src/__tests__/{EntityLoader-constructor-test.ts → AuthorizationResultBasedEntityLoader-constructor-test.ts} +17 -10
  175. package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +730 -0
  176. package/src/__tests__/EnforcingEntityAssociationLoader-test.ts +253 -0
  177. package/src/__tests__/Entity-test.ts +24 -5
  178. package/src/__tests__/EntityAssociationLoader-test.ts +16 -259
  179. package/src/__tests__/EntityCommonUseCases-test.ts +20 -8
  180. package/src/__tests__/EntityCompanion-test.ts +1 -1
  181. package/src/__tests__/EntityDatabaseAdapter-test.ts +6 -6
  182. package/src/__tests__/EntityEdges-test.ts +24 -16
  183. package/src/__tests__/EntityLoader-test.ts +25 -675
  184. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +4 -3
  185. package/src/__tests__/EntityMutator-test.ts +116 -103
  186. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +7 -7
  187. package/src/__tests__/EntitySelfReferentialEdges-test.ts +36 -24
  188. package/src/__tests__/ReadonlyEntity-test.ts +1 -1
  189. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +4 -2
  190. package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +7 -4
  191. package/src/__tests__/entityUtils-test.ts +12 -0
  192. package/src/entityUtils.ts +24 -9
  193. package/src/index.ts +19 -11
  194. package/src/internal/EntityFieldTransformationUtils.ts +2 -2
  195. package/src/internal/__tests__/EntityDataManager-test.ts +29 -29
  196. package/src/utils/EntityPrivacyUtils.ts +188 -107
  197. package/src/utils/__tests__/EntityPrivacyUtils-test.ts +169 -29
  198. package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +8 -5
  199. package/src/utils/collections/__tests__/maps-test.ts +1 -1
  200. package/src/utils/testing/PrivacyPolicyRuleTestUtils.ts +1 -1
  201. package/src/utils/testing/StubDatabaseAdapter.ts +1 -1
  202. package/src/utils/testing/StubQueryContextProvider.ts +1 -3
  203. package/src/utils/testing/createUnitTestEntityCompanionProvider.ts +3 -1
  204. package/build/EntityMutator.js.map +0 -1
  205. package/build/__tests__/EntityLoader-constructor-test.js.map +0 -1
  206. /package/build/__tests__/{EntityLoader-constructor-test.d.ts → AuthorizationResultBasedEntityLoader-constructor-test.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const EntityMutator_1 = require("./EntityMutator");
3
+ const AuthorizationResultBasedEntityMutator_1 = require("./AuthorizationResultBasedEntityMutator");
4
4
  /**
5
5
  * The primary interface for creating, mutating, and deleting entities.
6
6
  */
@@ -32,7 +32,7 @@ class EntityMutatorFactory {
32
32
  * @returns mutator for creating an entity
33
33
  */
34
34
  forCreate(viewerContext, queryContext) {
35
- 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);
35
+ return new AuthorizationResultBasedEntityMutator_1.AuthorizationResultBasedCreateMutator(this.entityCompanionProvider, viewerContext, queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter);
36
36
  }
37
37
  /**
38
38
  * Vend mutator for updating an existing entity in given query context.
@@ -41,7 +41,7 @@ class EntityMutatorFactory {
41
41
  * @returns mutator for updating existingEntity
42
42
  */
43
43
  forUpdate(existingEntity, queryContext) {
44
- 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);
44
+ return new AuthorizationResultBasedEntityMutator_1.AuthorizationResultBasedUpdateMutator(this.entityCompanionProvider, existingEntity.getViewerContext(), queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter, existingEntity);
45
45
  }
46
46
  /**
47
47
  * Delete an existing entity in given query context.
@@ -49,7 +49,7 @@ class EntityMutatorFactory {
49
49
  * @param queryContext - query context in which to perform the delete
50
50
  */
51
51
  forDelete(existingEntity, queryContext) {
52
- 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);
52
+ return new AuthorizationResultBasedEntityMutator_1.AuthorizationResultBasedDeleteMutator(this.entityCompanionProvider, existingEntity.getViewerContext(), queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter, existingEntity);
53
53
  }
54
54
  }
55
55
  exports.default = EntityMutatorFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"EntityMutatorFactory.js","sourceRoot":"","sources":["../src/EntityMutatorFactory.ts"],"names":[],"mappings":";;AAOA,mDAA8E;AAM9E;;GAEG;AACH,MAAqB,oBAAoB;IAepB;IACA;IACA;IAQA;IACA;IAOA;IAOA;IAQA;IACA;IAnCnB,YACmB,uBAAgD,EAChD,mBAAiD,EACjD,WAOhB,EACgB,aAA6B,EAC7B,kBAMd,EACc,gBAMhB,EACgB,mBAOhB,EACgB,eAA+C,EAC/C,cAAqC;QAlCrC,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,wBAAmB,GAAnB,mBAAmB,CAA8B;QACjD,gBAAW,GAAX,WAAW,CAO3B;QACgB,kBAAa,GAAb,aAAa,CAAgB;QAC7B,uBAAkB,GAAlB,kBAAkB,CAMhC;QACc,qBAAgB,GAAhB,gBAAgB,CAMhC;QACgB,wBAAmB,GAAnB,mBAAmB,CAOnC;QACgB,oBAAe,GAAf,eAAe,CAAgC;QAC/C,mBAAc,GAAd,cAAc,CAAuB;IACrD,CAAC;IAEJ;;;;;OAKG;IACH,SAAS,CACP,aAA6B,EAC7B,YAAgC;QAEhC,OAAO,IAAI,6BAAa,CACtB,IAAI,CAAC,uBAAuB,EAC5B,aAAa,EACb,YAAY,EACZ,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,SAAS,CACP,cAAuB,EACvB,YAAgC;QAEhC,OAAO,IAAI,6BAAa,CACtB,IAAI,CAAC,uBAAuB,EAC5B,cAAc,CAAC,gBAAgB,EAAE,EACjC,YAAY,EACZ,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,cAAc,CACf,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,SAAS,CACP,cAAuB,EACvB,YAAgC;QAEhC,OAAO,IAAI,6BAAa,CACtB,IAAI,CAAC,uBAAuB,EAC5B,cAAc,CAAC,gBAAgB,EAAE,EACjC,YAAY,EACZ,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,EACnB,cAAc,CACf,CAAC;IACJ,CAAC;CACF;AA/HD,uCA+HC"}
1
+ {"version":3,"file":"EntityMutatorFactory.js","sourceRoot":"","sources":["../src/EntityMutatorFactory.ts"],"names":[],"mappings":";;AAAA,mGAIiD;AAajD;;GAEG;AACH,MAAqB,oBAAoB;IAepB;IACA;IACA;IAQA;IACA;IAOA;IAOA;IAQA;IACA;IAnCnB,YACmB,uBAAgD,EAChD,mBAAiD,EACjD,WAOhB,EACgB,aAA6B,EAC7B,kBAMd,EACc,gBAMhB,EACgB,mBAOhB,EACgB,eAA+C,EAC/C,cAAqC;QAlCrC,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,wBAAmB,GAAnB,mBAAmB,CAA8B;QACjD,gBAAW,GAAX,WAAW,CAO3B;QACgB,kBAAa,GAAb,aAAa,CAAgB;QAC7B,uBAAkB,GAAlB,kBAAkB,CAMhC;QACc,qBAAgB,GAAhB,gBAAgB,CAMhC;QACgB,wBAAmB,GAAnB,mBAAmB,CAOnC;QACgB,oBAAe,GAAf,eAAe,CAAgC;QAC/C,mBAAc,GAAd,cAAc,CAAuB;IACrD,CAAC;IAEJ;;;;;OAKG;IACH,SAAS,CACP,aAA6B,EAC7B,YAAgC;QAShC,OAAO,IAAI,6EAAqC,CAC9C,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;QAShC,OAAO,IAAI,6EAAqC,CAC9C,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;QAShC,OAAO,IAAI,6EAAqC,CAC9C,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;AApJD,uCAoJC"}
@@ -1,5 +1,5 @@
1
1
  import { Result } from '@expo/results';
2
- import EntityLoader from './EntityLoader';
2
+ import AuthorizationResultBasedEntityLoader from './AuthorizationResultBasedEntityLoader';
3
3
  import EntityPrivacyPolicy from './EntityPrivacyPolicy';
4
4
  import ReadonlyEntity from './ReadonlyEntity';
5
5
  import ViewerContext from './ViewerContext';
@@ -35,8 +35,8 @@ export interface ISecondaryEntityCache<TFields, TLoadParams> {
35
35
  */
36
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
- protected readonly entityLoader: EntityLoader<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
39
- constructor(secondaryEntityCache: ISecondaryEntityCache<TFields, TLoadParams>, entityLoader: EntityLoader<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>);
38
+ protected readonly entityLoader: AuthorizationResultBasedEntityLoader<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
39
+ constructor(secondaryEntityCache: ISecondaryEntityCache<TFields, TLoadParams>, entityLoader: AuthorizationResultBasedEntityLoader<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>);
40
40
  /**
41
41
  * Load many by load params objects
42
42
  *
@@ -27,9 +27,7 @@ class EntitySecondaryCacheLoader {
27
27
  async loadManyAsync(loadParamsArray) {
28
28
  const loadParamsToFieldObjects = await this.secondaryEntityCache.loadManyThroughAsync(loadParamsArray, this.fetchObjectsFromDatabaseAsync.bind(this));
29
29
  // convert value to and from array to reuse complex code
30
- const entitiesMap = await this.entityLoader
31
- .utils()
32
- .constructAndAuthorizeEntitiesAsync((0, maps_1.mapMap)(loadParamsToFieldObjects, (fieldObject) => (fieldObject ? [fieldObject] : [])));
30
+ const entitiesMap = await this.entityLoader.utils.constructAndAuthorizeEntitiesAsync((0, maps_1.mapMap)(loadParamsToFieldObjects, (fieldObject) => (fieldObject ? [fieldObject] : [])));
33
31
  return (0, maps_1.mapMap)(entitiesMap, (fieldObjects) => fieldObjects[0] ?? null);
34
32
  }
35
33
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"EntitySecondaryCacheLoader.js","sourceRoot":"","sources":["../src/EntitySecondaryCacheLoader.ts"],"names":[],"mappings":";;AAMA,mDAAkD;AA4BlD;;;;;;;;;;GAUG;AACH,MAA8B,0BAA0B;IAgBnC;IACE;IAFrB,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;aACxC,KAAK,EAAE;aACP,kCAAkC,CACjC,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;QACJ,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;AApED,6CAoEC"}
1
+ {"version":3,"file":"EntitySecondaryCacheLoader.js","sourceRoot":"","sources":["../src/EntitySecondaryCacheLoader.ts"],"names":[],"mappings":";;AAMA,mDAAkD;AA4BlD;;;;;;;;;;GAUG;AACH,MAA8B,0BAA0B;IAgBnC;IACE;IAFrB,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,KAAK,CAAC,kCAAkC,CAClF,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,27 @@
1
+ import { AuthorizationResultBasedUpdateMutator } from './AuthorizationResultBasedEntityMutator';
2
+ import EnforcingEntityUpdater from './EnforcingEntityUpdater';
3
+ import { IEntityClass } from './Entity';
4
+ import EntityPrivacyPolicy from './EntityPrivacyPolicy';
5
+ import { EntityQueryContext } from './EntityQueryContext';
6
+ import ReadonlyEntity from './ReadonlyEntity';
7
+ import ViewerContext from './ViewerContext';
8
+ /**
9
+ * The primary interface for updating entities.
10
+ */
11
+ export default class EntityUpdater<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> {
12
+ private readonly existingEntity;
13
+ private readonly queryContext;
14
+ private readonly entityClass;
15
+ constructor(existingEntity: TEntity, queryContext: EntityQueryContext, entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>);
16
+ /**
17
+ * Enforcing entity updater. All updates through this updater are
18
+ * guaranteed to be successful and will throw otherwise.
19
+ */
20
+ enforcing(): EnforcingEntityUpdater<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
21
+ /**
22
+ * Authorization-result-based entity updater. All updates through this
23
+ * updater are results, where an unsuccessful result means an authorization
24
+ * error or entity construction error occurred. Other errors are thrown.
25
+ */
26
+ withAuthorizationResults(): AuthorizationResultBasedUpdateMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
27
+ }
@@ -0,0 +1,40 @@
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 EnforcingEntityUpdater_1 = __importDefault(require("./EnforcingEntityUpdater"));
7
+ /**
8
+ * The primary interface for updating entities.
9
+ */
10
+ class EntityUpdater {
11
+ existingEntity;
12
+ queryContext;
13
+ entityClass;
14
+ constructor(existingEntity, queryContext, entityClass) {
15
+ this.existingEntity = existingEntity;
16
+ this.queryContext = queryContext;
17
+ this.entityClass = entityClass;
18
+ }
19
+ /**
20
+ * Enforcing entity updater. All updates through this updater are
21
+ * guaranteed to be successful and will throw otherwise.
22
+ */
23
+ enforcing() {
24
+ return new EnforcingEntityUpdater_1.default(this.withAuthorizationResults());
25
+ }
26
+ /**
27
+ * Authorization-result-based entity updater. All updates through this
28
+ * updater are results, where an unsuccessful result means an authorization
29
+ * error or entity construction error occurred. Other errors are thrown.
30
+ */
31
+ withAuthorizationResults() {
32
+ return this.existingEntity
33
+ .getViewerContext()
34
+ .getViewerScopedEntityCompanionForClass(this.entityClass)
35
+ .getMutatorFactory()
36
+ .forUpdate(this.existingEntity, this.queryContext);
37
+ }
38
+ }
39
+ exports.default = EntityUpdater;
40
+ //# sourceMappingURL=EntityUpdater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityUpdater.js","sourceRoot":"","sources":["../src/EntityUpdater.ts"],"names":[],"mappings":";;;;;AACA,sFAA8D;AAO9D;;GAEG;AACH,MAAqB,aAAa;IAeb;IACA;IACA;IAHnB,YACmB,cAAuB,EACvB,YAAgC,EAChC,WAOhB;QATgB,mBAAc,GAAd,cAAc,CAAS;QACvB,iBAAY,GAAZ,YAAY,CAAoB;QAChC,gBAAW,GAAX,WAAW,CAO3B;IACA,CAAC;IAEJ;;;OAGG;IACH,SAAS;QAQP,OAAO,IAAI,gCAAsB,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;;;OAIG;IACH,wBAAwB;QAQtB,OAAO,IAAI,CAAC,cAAc;aACvB,gBAAgB,EAAE;aAClB,sCAAsC,CAAC,IAAI,CAAC,WAAW,CAAC;aACxD,iBAAiB,EAAE;aACnB,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC;CACF;AA7DD,gCA6DC"}
@@ -50,7 +50,7 @@ export default abstract class ReadonlyEntity<TFields extends object, TID extends
50
50
  /**
51
51
  * @returns EntityAssociationLoader for this entity
52
52
  */
53
- associationLoader(): EntityAssociationLoader<TFields, TID, TViewerContext, this, TSelectedFields>;
53
+ associationLoader(queryContext?: EntityQueryContext): EntityAssociationLoader<TFields, TID, TViewerContext, this, TSelectedFields>;
54
54
  /**
55
55
  * Get a underlying field from this entity's data
56
56
  * @param fieldName - the field to get
@@ -70,5 +70,5 @@ export default abstract class ReadonlyEntity<TFields extends object, TID extends
70
70
  * @param viewerContext - viewer context of loading user
71
71
  * @param queryContext - query context in which to perform the load
72
72
  */
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>;
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, TMViewerContext2, TMEntity, TMPrivacyPolicy, TMSelectedFields>;
74
74
  }
@@ -5,6 +5,7 @@ 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 EntityLoader_1 = __importDefault(require("./EntityLoader"));
8
9
  /**
9
10
  * A readonly entity exposes only the read functionality of an Entity. Used as the base
10
11
  * type for most entity operations excluding mutations.
@@ -60,8 +61,8 @@ class ReadonlyEntity {
60
61
  /**
61
62
  * @returns EntityAssociationLoader for this entity
62
63
  */
63
- associationLoader() {
64
- return new EntityAssociationLoader_1.default(this);
64
+ associationLoader(queryContext) {
65
+ return new EntityAssociationLoader_1.default(this, queryContext);
65
66
  }
66
67
  /**
67
68
  * Get a underlying field from this entity's data
@@ -92,10 +93,7 @@ class ReadonlyEntity {
92
93
  .getViewerScopedEntityCompanionForClass(this)
93
94
  .getQueryContextProvider()
94
95
  .getQueryContext()) {
95
- return viewerContext
96
- .getViewerScopedEntityCompanionForClass(this)
97
- .getLoaderFactory()
98
- .forLoad(queryContext, { previousValue: null, cascadingDeleteCause: null });
96
+ return new EntityLoader_1.default(viewerContext, queryContext, this);
99
97
  }
100
98
  }
101
99
  exports.default = ReadonlyEntity;
@@ -1 +1 @@
1
- {"version":3,"file":"ReadonlyEntity.js","sourceRoot":"","sources":["../src/ReadonlyEntity.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAGlC,wFAAgE;AAMhE;;;;;;;GAOG;AACH,MAA8B,cAAc;IAMzB,aAAa,CAAiB;IAC9B,EAAE,CAAM;IACR,cAAc,CAAoB;IAClC,cAAc,CAA2C;IAE1E;;;;;;;;;;;;;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,aAAa,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;CACF;AA/ID,iCA+IC"}
1
+ {"version":3,"file":"ReadonlyEntity.js","sourceRoot":"","sources":["../src/ReadonlyEntity.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAGlC,wFAAgE;AAChE,kEAA0C;AAK1C;;;;;;;GAOG;AACH,MAA8B,cAAc;IAMzB,aAAa,CAAiB;IAC9B,EAAE,CAAM;IACR,cAAc,CAAoB;IAClC,cAAc,CAA2C;IAE1E;;;;;;;;;;;;;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,CACf,YAAiC;QAEjC,OAAO,IAAI,iCAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACzD,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;QAUpB,OAAO,IAAI,sBAAY,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;CACF;AAhJD,iCAgJC"}
@@ -1,4 +1,4 @@
1
- import EntityLoader from './EntityLoader';
1
+ import AuthorizationResultBasedEntityLoader from './AuthorizationResultBasedEntityLoader';
2
2
  import EntityLoaderFactory from './EntityLoaderFactory';
3
3
  import EntityPrivacyPolicy, { EntityPrivacyPolicyEvaluationContext } from './EntityPrivacyPolicy';
4
4
  import { EntityQueryContext } from './EntityQueryContext';
@@ -11,5 +11,5 @@ export default class ViewerScopedEntityLoaderFactory<TFields extends object, TID
11
11
  private readonly entityLoaderFactory;
12
12
  private readonly viewerContext;
13
13
  constructor(entityLoaderFactory: EntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, viewerContext: TViewerContext);
14
- forLoad(queryContext: EntityQueryContext, privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TID, TViewerContext, TEntity, TSelectedFields>): EntityLoader<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
14
+ forLoad(queryContext: EntityQueryContext, privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TID, TViewerContext, TEntity, TSelectedFields>): AuthorizationResultBasedEntityLoader<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ViewerScopedEntityLoaderFactory.js","sourceRoot":"","sources":["../src/ViewerScopedEntityLoaderFactory.ts"],"names":[],"mappings":";;AAOA;;GAEG;AACH,MAAqB,+BAA+B;IAe/B;IAQA;IATnB,YACmB,mBAOhB,EACgB,aAA6B;QAR7B,wBAAmB,GAAnB,mBAAmB,CAOnC;QACgB,kBAAa,GAAb,aAAa,CAAgB;IAC7C,CAAC;IAEJ,OAAO,CACL,YAAgC,EAChC,8BAMC;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CACrC,IAAI,CAAC,aAAa,EAClB,YAAY,EACZ,8BAA8B,CAC/B,CAAC;IACJ,CAAC;CACF;AA1CD,kDA0CC"}
1
+ {"version":3,"file":"ViewerScopedEntityLoaderFactory.js","sourceRoot":"","sources":["../src/ViewerScopedEntityLoaderFactory.ts"],"names":[],"mappings":";;AAOA;;GAEG;AACH,MAAqB,+BAA+B;IAe/B;IAQA;IATnB,YACmB,mBAOhB,EACgB,aAA6B;QAR7B,wBAAmB,GAAnB,mBAAmB,CAOnC;QACgB,kBAAa,GAAb,aAAa,CAAgB;IAC7C,CAAC;IAEJ,OAAO,CACL,YAAgC,EAChC,8BAMC;QASD,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CACrC,IAAI,CAAC,aAAa,EAClB,YAAY,EACZ,8BAA8B,CAC/B,CAAC;IACJ,CAAC;CACF;AAjDD,kDAiDC"}
@@ -1,4 +1,4 @@
1
- import { CreateMutator, UpdateMutator, DeleteMutator } from './EntityMutator';
1
+ import { AuthorizationResultBasedCreateMutator, AuthorizationResultBasedUpdateMutator, AuthorizationResultBasedDeleteMutator } from './AuthorizationResultBasedEntityMutator';
2
2
  import EntityMutatorFactory from './EntityMutatorFactory';
3
3
  import EntityPrivacyPolicy from './EntityPrivacyPolicy';
4
4
  import { EntityQueryContext } from './EntityQueryContext';
@@ -11,7 +11,7 @@ export default class ViewerScopedEntityMutatorFactory<TFields extends object, TI
11
11
  private readonly entityMutatorFactory;
12
12
  private readonly viewerContext;
13
13
  constructor(entityMutatorFactory: EntityMutatorFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, viewerContext: TViewerContext);
14
- forCreate(queryContext: EntityQueryContext): CreateMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
15
- forUpdate(existingEntity: TEntity, queryContext: EntityQueryContext): UpdateMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
16
- forDelete(existingEntity: TEntity, queryContext: EntityQueryContext): DeleteMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
14
+ forCreate(queryContext: EntityQueryContext): AuthorizationResultBasedCreateMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
15
+ forUpdate(existingEntity: TEntity, queryContext: EntityQueryContext): AuthorizationResultBasedUpdateMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
16
+ forDelete(existingEntity: TEntity, queryContext: EntityQueryContext): AuthorizationResultBasedDeleteMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ViewerScopedEntityMutatorFactory.js","sourceRoot":"","sources":["../src/ViewerScopedEntityMutatorFactory.ts"],"names":[],"mappings":";;AAOA;;GAEG;AACH,MAAqB,gCAAgC;IAehC;IAQA;IATnB,YACmB,oBAOhB,EACgB,aAA6B;QAR7B,yBAAoB,GAApB,oBAAoB,CAOpC;QACgB,kBAAa,GAAb,aAAa,CAAgB;IAC7C,CAAC;IAEJ,SAAS,CACP,YAAgC;QAEhC,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC/E,CAAC;IAED,SAAS,CACP,cAAuB,EACvB,YAAgC;QAEhC,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC3E,CAAC;IAED,SAAS,CACP,cAAuB,EACvB,YAAgC;QAEhC,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC3E,CAAC;CACF;AA7CD,mDA6CC"}
1
+ {"version":3,"file":"ViewerScopedEntityMutatorFactory.js","sourceRoot":"","sources":["../src/ViewerScopedEntityMutatorFactory.ts"],"names":[],"mappings":";;AAWA;;GAEG;AACH,MAAqB,gCAAgC;IAehC;IAQA;IATnB,YACmB,oBAOhB,EACgB,aAA6B;QAR7B,yBAAoB,GAApB,oBAAoB,CAOpC;QACgB,kBAAa,GAAb,aAAa,CAAgB;IAC7C,CAAC;IAEJ,SAAS,CACP,YAAgC;QAShC,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC/E,CAAC;IAED,SAAS,CACP,cAAuB,EACvB,YAAgC;QAShC,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC3E,CAAC;IAED,SAAS,CACP,cAAuB,EACvB,YAAgC;QAShC,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC3E,CAAC;CACF;AAlED,mDAkEC"}
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const results_1 = require("@expo/results");
7
+ const uuid_1 = require("uuid");
8
+ const AuthorizationResultBasedEntityAssociationLoader_1 = __importDefault(require("../AuthorizationResultBasedEntityAssociationLoader"));
9
+ const entityUtils_1 = require("../entityUtils");
10
+ const TestEntity_1 = __importDefault(require("../testfixtures/TestEntity"));
11
+ const TestEntity2_1 = __importDefault(require("../testfixtures/TestEntity2"));
12
+ const TestViewerContext_1 = __importDefault(require("../testfixtures/TestViewerContext"));
13
+ const createUnitTestEntityCompanionProvider_1 = require("../utils/testing/createUnitTestEntityCompanionProvider");
14
+ describe(AuthorizationResultBasedEntityAssociationLoader_1.default, () => {
15
+ describe('loadAssociatedEntityAsync', () => {
16
+ it('loads associated entities by ID and correctly handles a null value', async () => {
17
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
18
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
19
+ const testOtherEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).withAuthorizationResults().createAsync());
20
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
21
+ .withAuthorizationResults()
22
+ .setField('stringField', testOtherEntity.getID())
23
+ .createAsync());
24
+ const loadedOther = await (0, results_1.enforceAsyncResult)(testEntity
25
+ .associationLoader()
26
+ .withAuthorizationResults()
27
+ .loadAssociatedEntityAsync('stringField', TestEntity_1.default));
28
+ expect(loadedOther.getID()).toEqual(testOtherEntity.getID());
29
+ const loadedOther2 = await (0, results_1.enforceAsyncResult)(testEntity
30
+ .associationLoader()
31
+ .withAuthorizationResults()
32
+ .loadAssociatedEntityAsync('nullableField', TestEntity_1.default));
33
+ expect(loadedOther2).toBeNull();
34
+ });
35
+ });
36
+ describe('loadManyAssociatedEntitiesAsync', () => {
37
+ it('loads many associated entities referencing this entity', async () => {
38
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
39
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
40
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).withAuthorizationResults().createAsync());
41
+ const testOtherEntity1 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
42
+ .withAuthorizationResults()
43
+ .setField('stringField', testEntity.getID())
44
+ .createAsync());
45
+ const testOtherEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
46
+ .withAuthorizationResults()
47
+ .setField('stringField', testEntity.getID())
48
+ .createAsync());
49
+ const loaded = await (0, entityUtils_1.enforceResultsAsync)(testEntity
50
+ .associationLoader()
51
+ .withAuthorizationResults()
52
+ .loadManyAssociatedEntitiesAsync(TestEntity_1.default, 'stringField'));
53
+ expect(loaded).toHaveLength(2);
54
+ expect(loaded.find((e) => e.getID() === testOtherEntity1.getID())).not.toBeUndefined();
55
+ expect(loaded.find((e) => e.getID() === testOtherEntity2.getID())).not.toBeUndefined();
56
+ });
57
+ });
58
+ describe('loadAssociatedEntityByFieldEqualingAsync', () => {
59
+ it('loads associated entity by field equaling', async () => {
60
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
61
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
62
+ const testOtherEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).withAuthorizationResults().createAsync());
63
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
64
+ .withAuthorizationResults()
65
+ .setField('stringField', testOtherEntity.getID())
66
+ .createAsync());
67
+ const loadedOtherResult = await testEntity
68
+ .associationLoader()
69
+ .withAuthorizationResults()
70
+ .loadAssociatedEntityByFieldEqualingAsync('stringField', TestEntity_1.default, 'customIdField');
71
+ expect(loadedOtherResult?.enforceValue().getID()).toEqual(testOtherEntity.getID());
72
+ });
73
+ it('returns null when loading associated entities by field equaling a non existent association', async () => {
74
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
75
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
76
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
77
+ .withAuthorizationResults()
78
+ .setField('stringField', (0, uuid_1.v4)())
79
+ .createAsync());
80
+ const loadedOtherResult = await testEntity
81
+ .associationLoader()
82
+ .withAuthorizationResults()
83
+ .loadAssociatedEntityByFieldEqualingAsync('stringField', TestEntity_1.default, 'customIdField');
84
+ expect(loadedOtherResult).toBeNull();
85
+ });
86
+ it('returns null when load-by field is null', async () => {
87
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
88
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
89
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
90
+ .withAuthorizationResults()
91
+ .setField('stringField', 'blah')
92
+ .createAsync());
93
+ const loadedOtherResult = await testEntity
94
+ .associationLoader()
95
+ .withAuthorizationResults()
96
+ .loadAssociatedEntityByFieldEqualingAsync('nullableField', TestEntity_1.default, 'customIdField');
97
+ expect(loadedOtherResult).toBeNull();
98
+ });
99
+ });
100
+ describe('loadManyAssociatedEntitiesByFieldEqualingAsync', () => {
101
+ it('loads many associated entities by field equaling', async () => {
102
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
103
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
104
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).withAuthorizationResults().createAsync());
105
+ const testOtherEntity1 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
106
+ .withAuthorizationResults()
107
+ .setField('stringField', testEntity.getID())
108
+ .createAsync());
109
+ const testOtherEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
110
+ .withAuthorizationResults()
111
+ .setField('stringField', testEntity.getID())
112
+ .createAsync());
113
+ const loaded = await (0, entityUtils_1.enforceResultsAsync)(testEntity
114
+ .associationLoader()
115
+ .withAuthorizationResults()
116
+ .loadManyAssociatedEntitiesByFieldEqualingAsync('customIdField', TestEntity_1.default, 'stringField'));
117
+ expect(loaded).toHaveLength(2);
118
+ expect(loaded.find((e) => e.getID() === testOtherEntity1.getID())).not.toBeUndefined();
119
+ expect(loaded.find((e) => e.getID() === testOtherEntity2.getID())).not.toBeUndefined();
120
+ });
121
+ it('returns empty results when field being queried by is null', async () => {
122
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
123
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
124
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).withAuthorizationResults().createAsync());
125
+ const loaded = await (0, entityUtils_1.enforceResultsAsync)(testEntity
126
+ .associationLoader()
127
+ .withAuthorizationResults()
128
+ .loadManyAssociatedEntitiesByFieldEqualingAsync('nullableField', TestEntity_1.default, 'stringField'));
129
+ expect(loaded).toHaveLength(0);
130
+ });
131
+ });
132
+ describe('loadAssociatedEntityThroughAsync', () => {
133
+ it('chain loads associated entities', async () => {
134
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
135
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
136
+ const testEntity4 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext).withAuthorizationResults().createAsync());
137
+ const testEntity3 = await (0, results_1.enforceAsyncResult)(TestEntity2_1.default.creator(viewerContext)
138
+ .withAuthorizationResults()
139
+ .setField('foreignKey', testEntity4.getID())
140
+ .createAsync());
141
+ const testEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
142
+ .withAuthorizationResults()
143
+ .setField('testIndexedField', testEntity3.getID())
144
+ .createAsync());
145
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.default.creator(viewerContext)
146
+ .withAuthorizationResults()
147
+ .setField('foreignKey', testEntity2.getID())
148
+ .createAsync());
149
+ const loaded2Result = await testEntity
150
+ .associationLoader()
151
+ .withAuthorizationResults()
152
+ .loadAssociatedEntityThroughAsync([
153
+ {
154
+ associatedEntityClass: TestEntity_1.default,
155
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
156
+ },
157
+ ]);
158
+ expect(loaded2Result?.enforceValue().getID()).toEqual(testEntity2.getID());
159
+ const loaded3Result = await testEntity
160
+ .associationLoader()
161
+ .withAuthorizationResults()
162
+ .loadAssociatedEntityThroughAsync([
163
+ {
164
+ associatedEntityClass: TestEntity_1.default,
165
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
166
+ },
167
+ {
168
+ associatedEntityClass: TestEntity2_1.default,
169
+ fieldIdentifyingAssociatedEntity: 'testIndexedField',
170
+ },
171
+ ]);
172
+ expect(loaded3Result?.enforceValue().getID()).toEqual(testEntity3.getID());
173
+ const loaded4Result = await testEntity
174
+ .associationLoader()
175
+ .withAuthorizationResults()
176
+ .loadAssociatedEntityThroughAsync([
177
+ {
178
+ associatedEntityClass: TestEntity_1.default,
179
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
180
+ },
181
+ {
182
+ associatedEntityClass: TestEntity2_1.default,
183
+ fieldIdentifyingAssociatedEntity: 'testIndexedField',
184
+ },
185
+ {
186
+ associatedEntityClass: TestEntity_1.default,
187
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
188
+ },
189
+ ]);
190
+ expect(loaded4Result?.enforceValue().getID()).toEqual(testEntity4.getID());
191
+ });
192
+ it('fails when chain loading associated entity fails', async () => {
193
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
194
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
195
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.default.creator(viewerContext)
196
+ .withAuthorizationResults()
197
+ .setField('foreignKey', (0, uuid_1.v4)())
198
+ .createAsync());
199
+ const loadResult = await testEntity
200
+ .associationLoader()
201
+ .withAuthorizationResults()
202
+ .loadAssociatedEntityThroughAsync([
203
+ {
204
+ associatedEntityClass: TestEntity_1.default,
205
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
206
+ },
207
+ ]);
208
+ expect(loadResult?.ok).toBe(false);
209
+ });
210
+ it('supports chain loading by field equality', async () => {
211
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
212
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
213
+ const fieldValue = (0, uuid_1.v4)();
214
+ const testEntity2 = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
215
+ .withAuthorizationResults()
216
+ .setField('stringField', fieldValue)
217
+ .createAsync());
218
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.default.creator(viewerContext)
219
+ .withAuthorizationResults()
220
+ .setField('foreignKey', fieldValue)
221
+ .createAsync());
222
+ const loaded2Result = await testEntity
223
+ .associationLoader()
224
+ .withAuthorizationResults()
225
+ .loadAssociatedEntityThroughAsync([
226
+ {
227
+ associatedEntityClass: TestEntity_1.default,
228
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
229
+ associatedEntityLookupByField: 'stringField',
230
+ },
231
+ ]);
232
+ expect(loaded2Result?.enforceValue().getID()).toEqual(testEntity2.getID());
233
+ });
234
+ it('returns null when chain loading by field equality returns null', async () => {
235
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
236
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
237
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity2_1.default.creator(viewerContext)
238
+ .withAuthorizationResults()
239
+ .setField('foreignKey', (0, uuid_1.v4)())
240
+ .createAsync());
241
+ const loaded2Result = await testEntity
242
+ .associationLoader()
243
+ .withAuthorizationResults()
244
+ .loadAssociatedEntityThroughAsync([
245
+ {
246
+ associatedEntityClass: TestEntity_1.default,
247
+ fieldIdentifyingAssociatedEntity: 'foreignKey',
248
+ associatedEntityLookupByField: 'stringField',
249
+ },
250
+ ]);
251
+ expect(loaded2Result).toBeNull();
252
+ });
253
+ it('returns null when chain loading by field is null', async () => {
254
+ const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
255
+ const viewerContext = new TestViewerContext_1.default(companionProvider);
256
+ const testEntity = await (0, results_1.enforceAsyncResult)(TestEntity_1.default.creator(viewerContext)
257
+ .withAuthorizationResults()
258
+ .setField('nullableField', null)
259
+ .createAsync());
260
+ const loadedResult = await testEntity
261
+ .associationLoader()
262
+ .withAuthorizationResults()
263
+ .loadAssociatedEntityThroughAsync([
264
+ {
265
+ associatedEntityClass: TestEntity_1.default,
266
+ fieldIdentifyingAssociatedEntity: 'nullableField',
267
+ },
268
+ ]);
269
+ expect(loadedResult).toBeNull();
270
+ });
271
+ });
272
+ });
273
+ //# sourceMappingURL=AuthorizationResultBasedEntityAssociationLoader-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthorizationResultBasedEntityAssociationLoader-test.js","sourceRoot":"","sources":["../../src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts"],"names":[],"mappings":"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"}