@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
@@ -0,0 +1,44 @@
1
+ import { enforceAsyncResult } from '@expo/results';
2
+
3
+ import { AuthorizationResultBasedDeleteMutator } from './AuthorizationResultBasedEntityMutator';
4
+ import EntityPrivacyPolicy from './EntityPrivacyPolicy';
5
+ import ReadonlyEntity from './ReadonlyEntity';
6
+ import ViewerContext from './ViewerContext';
7
+
8
+ /**
9
+ * Enforcing entity deleter. All deletes
10
+ * through this deleter will throw if authorization is not successful.
11
+ */
12
+ export default class EnforcingEntityDeleter<
13
+ TFields extends object,
14
+ TID extends NonNullable<TFields[TSelectedFields]>,
15
+ TViewerContext extends ViewerContext,
16
+ TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
17
+ TPrivacyPolicy extends EntityPrivacyPolicy<
18
+ TFields,
19
+ TID,
20
+ TViewerContext,
21
+ TEntity,
22
+ TSelectedFields
23
+ >,
24
+ TSelectedFields extends keyof TFields,
25
+ > {
26
+ constructor(
27
+ private readonly entityDeleter: AuthorizationResultBasedDeleteMutator<
28
+ TFields,
29
+ TID,
30
+ TViewerContext,
31
+ TEntity,
32
+ TPrivacyPolicy,
33
+ TSelectedFields
34
+ >,
35
+ ) {}
36
+
37
+ /**
38
+ * Delete the entity after authorizing against delete privacy rules. The entity is invalidated in all caches.
39
+ * Throws when delete is not successful.
40
+ */
41
+ async deleteAsync(): Promise<void> {
42
+ await enforceAsyncResult(this.entityDeleter.deleteAsync());
43
+ }
44
+ }
@@ -0,0 +1,55 @@
1
+ import { enforceAsyncResult } from '@expo/results';
2
+
3
+ import { AuthorizationResultBasedUpdateMutator } from './AuthorizationResultBasedEntityMutator';
4
+ import EntityPrivacyPolicy from './EntityPrivacyPolicy';
5
+ import ReadonlyEntity from './ReadonlyEntity';
6
+ import ViewerContext from './ViewerContext';
7
+
8
+ /**
9
+ * Enforcing entity updater. All updates
10
+ * through this updater will throw if authorization is not successful.
11
+ */
12
+ export default class EnforcingEntityUpdater<
13
+ TFields extends object,
14
+ TID extends NonNullable<TFields[TSelectedFields]>,
15
+ TViewerContext extends ViewerContext,
16
+ TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
17
+ TPrivacyPolicy extends EntityPrivacyPolicy<
18
+ TFields,
19
+ TID,
20
+ TViewerContext,
21
+ TEntity,
22
+ TSelectedFields
23
+ >,
24
+ TSelectedFields extends keyof TFields,
25
+ > {
26
+ constructor(
27
+ private readonly entityUpdater: AuthorizationResultBasedUpdateMutator<
28
+ TFields,
29
+ TID,
30
+ TViewerContext,
31
+ TEntity,
32
+ TPrivacyPolicy,
33
+ TSelectedFields
34
+ >,
35
+ ) {}
36
+
37
+ /**
38
+ * Set the value for entity field.
39
+ * @param fieldName - entity field being updated
40
+ * @param value - value for entity field
41
+ */
42
+ setField<K extends keyof Pick<TFields, TSelectedFields>>(fieldName: K, value: TFields[K]): this {
43
+ this.entityUpdater.setField(fieldName, value);
44
+ return this;
45
+ }
46
+
47
+ /**
48
+ * Commit the changes to the entity after authorizing against update privacy rules.
49
+ * Invalidates all caches for pre-update entity.
50
+ * @returns authorized updated entity, throws upon update failure
51
+ */
52
+ async updateAsync(): Promise<TEntity> {
53
+ return await enforceAsyncResult(this.entityUpdater.updateAsync());
54
+ }
55
+ }
package/src/Entity.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { Result } from '@expo/results';
2
-
3
1
  import { EntityCompanionDefinition } from './EntityCompanionProvider';
4
- import { CreateMutator, UpdateMutator } from './EntityMutator';
2
+ import EntityCreator from './EntityCreator';
3
+ import EntityDeleter from './EntityDeleter';
5
4
  import EntityPrivacyPolicy from './EntityPrivacyPolicy';
6
5
  import { EntityQueryContext } from './EntityQueryContext';
6
+ import EntityUpdater from './EntityUpdater';
7
7
  import ReadonlyEntity from './ReadonlyEntity';
8
8
  import ViewerContext from './ViewerContext';
9
9
 
@@ -65,11 +65,16 @@ export default abstract class Entity<
65
65
  .getViewerScopedEntityCompanionForClass(this)
66
66
  .getQueryContextProvider()
67
67
  .getQueryContext(),
68
- ): CreateMutator<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields> {
69
- return viewerContext
70
- .getViewerScopedEntityCompanionForClass(this)
71
- .getMutatorFactory()
72
- .forCreate(queryContext);
68
+ ): EntityCreator<
69
+ TMFields,
70
+ TMID,
71
+ TMViewerContext,
72
+ TMViewerContext2,
73
+ TMEntity,
74
+ TMPrivacyPolicy,
75
+ TMSelectedFields
76
+ > {
77
+ return new EntityCreator(viewerContext, queryContext, this);
73
78
  }
74
79
 
75
80
  /**
@@ -106,20 +111,17 @@ export default abstract class Entity<
106
111
  .getViewerScopedEntityCompanionForClass(this)
107
112
  .getQueryContextProvider()
108
113
  .getQueryContext(),
109
- ): UpdateMutator<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields> {
110
- return existingEntity
111
- .getViewerContext()
112
- .getViewerScopedEntityCompanionForClass(this)
113
- .getMutatorFactory()
114
- .forUpdate(existingEntity, queryContext);
114
+ ): EntityUpdater<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields> {
115
+ return new EntityUpdater(existingEntity, queryContext, this);
115
116
  }
116
117
 
117
118
  /**
118
- * Delete an existing entity in given query context.
119
+ * Vend mutator for deleting an existing entity in given query context.
119
120
  * @param existingEntity - entity to delete
120
121
  * @param queryContext - query context in which to perform the delete
122
+ * @returns mutator for deleting existingEntity
121
123
  */
122
- static deleteAsync<
124
+ static deleter<
123
125
  TMFields extends object,
124
126
  TMID extends NonNullable<TMFields[TMSelectedFields]>,
125
127
  TMViewerContext extends ViewerContext,
@@ -147,55 +149,8 @@ export default abstract class Entity<
147
149
  .getViewerScopedEntityCompanionForClass(this)
148
150
  .getQueryContextProvider()
149
151
  .getQueryContext(),
150
- ): Promise<Result<void>> {
151
- return existingEntity
152
- .getViewerContext()
153
- .getViewerScopedEntityCompanionForClass(this)
154
- .getMutatorFactory()
155
- .forDelete(existingEntity, queryContext)
156
- .deleteAsync();
157
- }
158
-
159
- /**
160
- * Delete an existing entity in given query context, throwing if deletion is unsuccessful.
161
- * @param existingEntity - entity to delete
162
- * @param queryContext - query context in which to perform the delete
163
- */
164
- static enforceDeleteAsync<
165
- TMFields extends object,
166
- TMID extends NonNullable<TMFields[TMSelectedFields]>,
167
- TMViewerContext extends ViewerContext,
168
- TMEntity extends Entity<TMFields, TMID, TMViewerContext, TMSelectedFields>,
169
- TMPrivacyPolicy extends EntityPrivacyPolicy<
170
- TMFields,
171
- TMID,
172
- TMViewerContext,
173
- TMEntity,
174
- TMSelectedFields
175
- >,
176
- TMSelectedFields extends keyof TMFields = keyof TMFields,
177
- >(
178
- this: IEntityClass<
179
- TMFields,
180
- TMID,
181
- TMViewerContext,
182
- TMEntity,
183
- TMPrivacyPolicy,
184
- TMSelectedFields
185
- >,
186
- existingEntity: TMEntity,
187
- queryContext: EntityQueryContext = existingEntity
188
- .getViewerContext()
189
- .getViewerScopedEntityCompanionForClass(this)
190
- .getQueryContextProvider()
191
- .getQueryContext(),
192
- ): Promise<void> {
193
- return existingEntity
194
- .getViewerContext()
195
- .getViewerScopedEntityCompanionForClass(this)
196
- .getMutatorFactory()
197
- .forDelete(existingEntity, queryContext)
198
- .enforceDeleteAsync();
152
+ ): EntityDeleter<TMFields, TMID, TMViewerContext, TMEntity, TMPrivacyPolicy, TMSelectedFields> {
153
+ return new EntityDeleter(existingEntity, queryContext, this);
199
154
  }
200
155
  }
201
156