@@ -28,8 +28,9 @@ import ViewerContext from './ViewerContext';
2828export default abstract class Entity <
2929 TFields ,
3030 TID ,
31- TViewerContext extends ViewerContext
32- > extends ReadonlyEntity < TFields , TID , TViewerContext > {
31+ TViewerContext extends ViewerContext ,
32+ TSelectedFields extends keyof TFields = keyof TFields
33+ > extends ReadonlyEntity < TFields , TID , TViewerContext , TSelectedFields > {
3334 /**
3435 * Vend mutator for creating a new entity in given query context.
3536 * @param viewerContext - viewer context of creating user
@@ -41,16 +42,30 @@ export default abstract class Entity<
4142 TMID ,
4243 TMViewerContext extends ViewerContext ,
4344 TMViewerContext2 extends TMViewerContext ,
44- TMEntity extends Entity < TMFields , TMID , TMViewerContext > ,
45- TMPrivacyPolicy extends EntityPrivacyPolicy < TMFields , TMID , TMViewerContext , TMEntity >
45+ TMEntity extends Entity < TMFields , TMID , TMViewerContext , TMSelectedFields > ,
46+ TMPrivacyPolicy extends EntityPrivacyPolicy <
47+ TMFields ,
48+ TMID ,
49+ TMViewerContext ,
50+ TMEntity ,
51+ TMSelectedFields
52+ > ,
53+ TMSelectedFields extends keyof TMFields = keyof TMFields
4654 > (
47- this : IEntityClass < TMFields , TMID , TMViewerContext , TMEntity , TMPrivacyPolicy > ,
55+ this : IEntityClass <
56+ TMFields ,
57+ TMID ,
58+ TMViewerContext ,
59+ TMEntity ,
60+ TMPrivacyPolicy ,
61+ TMSelectedFields
62+ > ,
4863 viewerContext : TMViewerContext2 ,
4964 queryContext : EntityQueryContext = viewerContext
5065 . getViewerScopedEntityCompanionForClass ( this )
5166 . getQueryContextProvider ( )
5267 . getRegularEntityQueryContext ( )
53- ) : CreateMutator < TMFields , TMID , TMViewerContext , TMEntity , TMPrivacyPolicy > {
68+ ) : CreateMutator < TMFields , TMID , TMViewerContext , TMEntity , TMPrivacyPolicy , TMSelectedFields > {
5469 return viewerContext
5570 . getViewerScopedEntityCompanionForClass ( this )
5671 . getMutatorFactory ( )
@@ -67,17 +82,31 @@ export default abstract class Entity<
6782 TMFields ,
6883 TMID ,
6984 TMViewerContext extends ViewerContext ,
70- TMEntity extends Entity < TMFields , TMID , TMViewerContext > ,
71- TMPrivacyPolicy extends EntityPrivacyPolicy < TMFields , TMID , TMViewerContext , TMEntity >
85+ TMEntity extends Entity < TMFields , TMID , TMViewerContext , TMSelectedFields > ,
86+ TMPrivacyPolicy extends EntityPrivacyPolicy <
87+ TMFields ,
88+ TMID ,
89+ TMViewerContext ,
90+ TMEntity ,
91+ TMSelectedFields
92+ > ,
93+ TMSelectedFields extends keyof TMFields = keyof TMFields
7294 > (
73- this : IEntityClass < TMFields , TMID , TMViewerContext , TMEntity , TMPrivacyPolicy > ,
95+ this : IEntityClass <
96+ TMFields ,
97+ TMID ,
98+ TMViewerContext ,
99+ TMEntity ,
100+ TMPrivacyPolicy ,
101+ TMSelectedFields
102+ > ,
74103 existingEntity : TMEntity ,
75104 queryContext : EntityQueryContext = existingEntity
76105 . getViewerContext ( )
77106 . getViewerScopedEntityCompanionForClass ( this )
78107 . getQueryContextProvider ( )
79108 . getRegularEntityQueryContext ( )
80- ) : UpdateMutator < TMFields , TMID , TMViewerContext , TMEntity , TMPrivacyPolicy > {
109+ ) : UpdateMutator < TMFields , TMID , TMViewerContext , TMEntity , TMPrivacyPolicy , TMSelectedFields > {
81110 return existingEntity
82111 . getViewerContext ( )
83112 . getViewerScopedEntityCompanionForClass ( this )
@@ -94,10 +123,24 @@ export default abstract class Entity<
94123 TMFields ,
95124 TMID ,
96125 TMViewerContext extends ViewerContext ,
97- TMEntity extends Entity < TMFields , TMID , TMViewerContext > ,
98- TMPrivacyPolicy extends EntityPrivacyPolicy < TMFields , TMID , TMViewerContext , TMEntity >
126+ TMEntity extends Entity < TMFields , TMID , TMViewerContext , TMSelectedFields > ,
127+ TMPrivacyPolicy extends EntityPrivacyPolicy <
128+ TMFields ,
129+ TMID ,
130+ TMViewerContext ,
131+ TMEntity ,
132+ TMSelectedFields
133+ > ,
134+ TMSelectedFields extends keyof TMFields = keyof TMFields
99135 > (
100- this : IEntityClass < TMFields , TMID , TMViewerContext , TMEntity , TMPrivacyPolicy > ,
136+ this : IEntityClass <
137+ TMFields ,
138+ TMID ,
139+ TMViewerContext ,
140+ TMEntity ,
141+ TMPrivacyPolicy ,
142+ TMSelectedFields
143+ > ,
101144 existingEntity : TMEntity ,
102145 queryContext : EntityQueryContext = existingEntity
103146 . getViewerContext ( )
@@ -122,10 +165,24 @@ export default abstract class Entity<
122165 TMFields ,
123166 TMID ,
124167 TMViewerContext extends ViewerContext ,
125- TMEntity extends Entity < TMFields , TMID , TMViewerContext > ,
126- TMPrivacyPolicy extends EntityPrivacyPolicy < TMFields , TMID , TMViewerContext , TMEntity >
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
127177 > (
128- this : IEntityClass < TMFields , TMID , TMViewerContext , TMEntity , TMPrivacyPolicy > ,
178+ this : IEntityClass <
179+ TMFields ,
180+ TMID ,
181+ TMViewerContext ,
182+ TMEntity ,
183+ TMPrivacyPolicy ,
184+ TMSelectedFields
185+ > ,
129186 existingEntity : TMEntity ,
130187 queryContext : EntityQueryContext = existingEntity
131188 . getViewerContext ( )
@@ -161,10 +218,24 @@ export default abstract class Entity<
161218 TMFields ,
162219 TMID ,
163220 TMViewerContext extends ViewerContext ,
164- TMEntity extends Entity < TMFields , TMID , TMViewerContext > ,
165- TMPrivacyPolicy extends EntityPrivacyPolicy < TMFields , TMID , TMViewerContext , TMEntity >
221+ TMEntity extends Entity < TMFields , TMID , TMViewerContext , TMSelectedFields > ,
222+ TMPrivacyPolicy extends EntityPrivacyPolicy <
223+ TMFields ,
224+ TMID ,
225+ TMViewerContext ,
226+ TMEntity ,
227+ TMSelectedFields
228+ > ,
229+ TMSelectedFields extends keyof TMFields = keyof TMFields
166230 > (
167- this : IEntityClass < TMFields , TMID , TMViewerContext , TMEntity , TMPrivacyPolicy > ,
231+ this : IEntityClass <
232+ TMFields ,
233+ TMID ,
234+ TMViewerContext ,
235+ TMEntity ,
236+ TMPrivacyPolicy ,
237+ TMSelectedFields
238+ > ,
168239 existingEntity : TMEntity ,
169240 queryContext : EntityQueryContext = existingEntity
170241 . getViewerContext ( )
@@ -196,10 +267,24 @@ export default abstract class Entity<
196267 TMFields ,
197268 TMID ,
198269 TMViewerContext extends ViewerContext ,
199- TMEntity extends Entity < TMFields , TMID , TMViewerContext > ,
200- TMPrivacyPolicy extends EntityPrivacyPolicy < TMFields , TMID , TMViewerContext , TMEntity >
270+ TMEntity extends Entity < TMFields , TMID , TMViewerContext , TMSelectedFields > ,
271+ TMPrivacyPolicy extends EntityPrivacyPolicy <
272+ TMFields ,
273+ TMID ,
274+ TMViewerContext ,
275+ TMEntity ,
276+ TMSelectedFields
277+ > ,
278+ TMSelectedFields extends keyof TMFields = keyof TMFields
201279 > (
202- this : IEntityClass < TMFields , TMID , TMViewerContext , TMEntity , TMPrivacyPolicy > ,
280+ this : IEntityClass <
281+ TMFields ,
282+ TMID ,
283+ TMViewerContext ,
284+ TMEntity ,
285+ TMPrivacyPolicy ,
286+ TMSelectedFields
287+ > ,
203288 existingEntity : TMEntity ,
204289 queryContext : EntityQueryContext = existingEntity
205290 . getViewerContext ( )
@@ -226,15 +311,23 @@ export interface IEntityClass<
226311 TFields ,
227312 TID ,
228313 TViewerContext extends ViewerContext ,
229- TEntity extends ReadonlyEntity < TFields , TID , TViewerContext > ,
230- TPrivacyPolicy extends EntityPrivacyPolicy < TFields , TID , TViewerContext , TEntity >
314+ TEntity extends ReadonlyEntity < TFields , TID , TViewerContext , TSelectedFields > ,
315+ TPrivacyPolicy extends EntityPrivacyPolicy <
316+ TFields ,
317+ TID ,
318+ TViewerContext ,
319+ TEntity ,
320+ TSelectedFields
321+ > ,
322+ TSelectedFields extends keyof TFields = keyof TFields
231323> {
232324 new ( viewerContext : TViewerContext , obj : Readonly < TFields > ) : TEntity ;
233325 getCompanionDefinition ( ) : EntityCompanionDefinition <
234326 TFields ,
235327 TID ,
236328 TViewerContext ,
237329 TEntity ,
238- TPrivacyPolicy
330+ TPrivacyPolicy ,
331+ TSelectedFields
239332 > ;
240333}
0 commit comments