@expo/entity 0.39.0 → 0.41.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.
- package/build/AuthorizationResultBasedEntityAssociationLoader.d.ts +99 -0
- package/build/AuthorizationResultBasedEntityAssociationLoader.js +122 -0
- package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -0
- package/build/AuthorizationResultBasedEntityLoader.d.ts +1 -1
- package/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
- package/build/{EntityMutator.d.ts → AuthorizationResultBasedEntityMutator.d.ts} +5 -17
- package/build/{EntityMutator.js → AuthorizationResultBasedEntityMutator.js} +22 -48
- package/build/AuthorizationResultBasedEntityMutator.js.map +1 -0
- package/build/EnforcingEntityAssociationLoader.d.ts +79 -0
- package/build/EnforcingEntityAssociationLoader.js +62 -0
- package/build/EnforcingEntityAssociationLoader.js.map +1 -0
- package/build/EnforcingEntityCreator.d.ts +24 -0
- package/build/EnforcingEntityCreator.js +32 -0
- package/build/EnforcingEntityCreator.js.map +1 -0
- package/build/EnforcingEntityDeleter.d.ts +17 -0
- package/build/EnforcingEntityDeleter.js +22 -0
- package/build/EnforcingEntityDeleter.js.map +1 -0
- package/build/EnforcingEntityUpdater.d.ts +24 -0
- package/build/EnforcingEntityUpdater.js +32 -0
- package/build/EnforcingEntityUpdater.js.map +1 -0
- package/build/Entity.d.ts +26 -8
- package/build/Entity.js +38 -25
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.d.ts +12 -91
- package/build/EntityAssociationLoader.js +20 -126
- package/build/EntityAssociationLoader.js.map +1 -1
- package/build/EntityCreator.d.ts +27 -0
- package/build/EntityCreator.js +39 -0
- package/build/EntityCreator.js.map +1 -0
- package/build/EntityDeleter.d.ts +27 -0
- package/build/EntityDeleter.js +40 -0
- package/build/EntityDeleter.js.map +1 -0
- package/build/EntityLoader.d.ts +4 -14
- package/build/EntityLoader.js +7 -20
- package/build/EntityLoader.js.map +1 -1
- package/build/EntityLoaderFactory.d.ts +2 -2
- package/build/EntityLoaderFactory.js +4 -2
- package/build/EntityLoaderFactory.js.map +1 -1
- package/build/EntityMutatorFactory.d.ts +4 -4
- package/build/EntityMutatorFactory.js +4 -4
- package/build/EntityMutatorFactory.js.map +1 -1
- package/build/EntitySecondaryCacheLoader.d.ts +3 -3
- package/build/EntitySecondaryCacheLoader.js +1 -3
- package/build/EntitySecondaryCacheLoader.js.map +1 -1
- package/build/EntityUpdater.d.ts +27 -0
- package/build/EntityUpdater.js +40 -0
- package/build/EntityUpdater.js.map +1 -0
- package/build/ReadonlyEntity.d.ts +24 -5
- package/build/ReadonlyEntity.js +33 -7
- package/build/ReadonlyEntity.js.map +1 -1
- package/build/ViewerScopedEntityLoaderFactory.d.ts +2 -2
- package/build/ViewerScopedEntityLoaderFactory.js.map +1 -1
- package/build/ViewerScopedEntityMutatorFactory.d.ts +4 -4
- package/build/ViewerScopedEntityMutatorFactory.js.map +1 -1
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +1 -0
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +242 -0
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +1 -0
- package/build/__tests__/{EntityLoader-constructor-test.js → AuthorizationResultBasedEntityLoader-constructor-test.js} +10 -10
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +1 -0
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +1 -0
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js +401 -0
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +1 -0
- package/build/__tests__/EnforcingEntityAssociationLoader-test.d.ts +1 -0
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js +115 -0
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js.map +1 -0
- package/build/__tests__/Entity-test.js +63 -5
- package/build/__tests__/Entity-test.js.map +1 -1
- package/build/__tests__/EntityAssociationLoader-test.js +14 -184
- package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
- package/build/__tests__/EntityCommonUseCases-test.js +34 -20
- package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
- package/build/__tests__/EntityCompanion-test.js +17 -7
- package/build/__tests__/EntityCompanion-test.js.map +1 -1
- package/build/__tests__/EntityEdges-test.js +57 -71
- package/build/__tests__/EntityEdges-test.js.map +1 -1
- package/build/__tests__/EntityLoader-test.js +22 -386
- package/build/__tests__/EntityLoader-test.js.map +1 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +6 -9
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
- package/build/__tests__/EntityMutator-test.js +67 -70
- package/build/__tests__/EntityMutator-test.js.map +1 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +17 -7
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.js +7 -7
- package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.js +47 -81
- package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
- package/build/__tests__/ReadonlyEntity-test.js +40 -7
- package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +6 -10
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +10 -22
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
- package/build/errors/EntityCacheAdapterError.js +17 -7
- package/build/errors/EntityCacheAdapterError.js.map +1 -1
- package/build/errors/EntityDatabaseAdapterError.js +17 -7
- package/build/errors/EntityDatabaseAdapterError.js.map +1 -1
- package/build/errors/EntityInvalidFieldValueError.js +17 -7
- package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
- package/build/errors/EntityNotAuthorizedError.js +17 -7
- package/build/errors/EntityNotAuthorizedError.js.map +1 -1
- package/build/errors/EntityNotFoundError.js +17 -7
- package/build/errors/EntityNotFoundError.js.map +1 -1
- package/build/index.d.ts +19 -11
- package/build/index.js +24 -7
- package/build/index.js.map +1 -1
- package/build/internal/__tests__/EntityDataManager-test.js +42 -32
- package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js +17 -7
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js +17 -7
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js +17 -7
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js +17 -7
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
- package/build/utils/EntityPrivacyUtils.js +4 -8
- package/build/utils/EntityPrivacyUtils.js.map +1 -1
- package/build/utils/__tests__/EntityPrivacyUtils-test.js +38 -28
- package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +1 -1
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +5 -5
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +1 -1
- package/build/utils/testing/StubDatabaseAdapter.js +17 -7
- package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
- package/build/utils/testing/StubQueryContextProvider.d.ts +1 -3
- package/build/utils/testing/StubQueryContextProvider.js +1 -3
- package/build/utils/testing/StubQueryContextProvider.js.map +1 -1
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js +2 -1
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +1 -1
- package/package.json +19 -3
- package/src/AuthorizationResultBasedEntityAssociationLoader.ts +490 -0
- package/src/AuthorizationResultBasedEntityLoader.ts +1 -1
- package/src/{EntityMutator.ts → AuthorizationResultBasedEntityMutator.ts} +62 -58
- package/src/EnforcingEntityAssociationLoader.ts +390 -0
- package/src/EnforcingEntityCreator.ts +55 -0
- package/src/EnforcingEntityDeleter.ts +44 -0
- package/src/EnforcingEntityUpdater.ts +55 -0
- package/src/Entity.ts +140 -29
- package/src/EntityAssociationLoader.ts +38 -495
- package/src/EntityCreator.ts +73 -0
- package/src/EntityDeleter.ts +73 -0
- package/src/EntityLoader.ts +10 -49
- package/src/EntityLoaderFactory.ts +20 -3
- package/src/EntityMutatorFactory.ts +32 -7
- package/src/EntitySecondaryCacheLoader.ts +5 -7
- package/src/EntityUpdater.ts +73 -0
- package/src/ReadonlyEntity.ts +121 -7
- package/src/ViewerScopedEntityLoaderFactory.ts +9 -2
- package/src/ViewerScopedEntityMutatorFactory.ts +29 -4
- package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +323 -0
- package/src/__tests__/{EntityLoader-constructor-test.ts → AuthorizationResultBasedEntityLoader-constructor-test.ts} +16 -9
- package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +730 -0
- package/src/__tests__/EnforcingEntityAssociationLoader-test.ts +253 -0
- package/src/__tests__/Entity-test.ts +77 -5
- package/src/__tests__/EntityAssociationLoader-test.ts +15 -260
- package/src/__tests__/EntityCommonUseCases-test.ts +24 -15
- package/src/__tests__/EntityEdges-test.ts +44 -64
- package/src/__tests__/EntityLoader-test.ts +29 -681
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +8 -9
- package/src/__tests__/EntityMutator-test.ts +116 -103
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +7 -7
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +65 -81
- package/src/__tests__/ReadonlyEntity-test.ts +47 -7
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +15 -15
- package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +19 -22
- package/src/index.ts +19 -11
- package/src/internal/__tests__/EntityDataManager-test.ts +25 -25
- package/src/utils/EntityPrivacyUtils.ts +10 -13
- package/src/utils/__tests__/EntityPrivacyUtils-test.ts +21 -23
- package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +5 -5
- package/src/utils/testing/StubQueryContextProvider.ts +1 -3
- package/src/utils/testing/createUnitTestEntityCompanionProvider.ts +3 -1
- package/build/EntityMutator.js.map +0 -1
- package/build/__tests__/EntityLoader-constructor-test.js.map +0 -1
- /package/build/__tests__/{EntityLoader-constructor-test.d.ts → AuthorizationResultBasedEntityLoader-constructor-test.d.ts} +0 -0
|
@@ -87,42 +87,34 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE', () => {
|
|
|
87
87
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
88
88
|
const viewerContext = new TestViewerContext(companionProvider);
|
|
89
89
|
|
|
90
|
-
const parentCategory = await CategoryEntity.creator(viewerContext).
|
|
90
|
+
const parentCategory = await CategoryEntity.creator(viewerContext).createAsync();
|
|
91
91
|
const subCategory = await CategoryEntity.creator(viewerContext)
|
|
92
92
|
.setField('parent_category_id', parentCategory.getID())
|
|
93
|
-
.
|
|
93
|
+
.createAsync();
|
|
94
94
|
const subSubCategory = await CategoryEntity.creator(viewerContext)
|
|
95
95
|
.setField('parent_category_id', subCategory.getID())
|
|
96
|
-
.
|
|
96
|
+
.createAsync();
|
|
97
97
|
|
|
98
98
|
await expect(
|
|
99
|
-
CategoryEntity.loader(viewerContext)
|
|
100
|
-
.enforcing()
|
|
101
|
-
.loadByIDNullableAsync(parentCategory.getID()),
|
|
99
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(parentCategory.getID()),
|
|
102
100
|
).resolves.not.toBeNull();
|
|
103
101
|
await expect(
|
|
104
|
-
CategoryEntity.loader(viewerContext).
|
|
102
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(subCategory.getID()),
|
|
105
103
|
).resolves.not.toBeNull();
|
|
106
104
|
await expect(
|
|
107
|
-
CategoryEntity.loader(viewerContext)
|
|
108
|
-
.enforcing()
|
|
109
|
-
.loadByIDNullableAsync(subSubCategory.getID()),
|
|
105
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(subSubCategory.getID()),
|
|
110
106
|
).resolves.not.toBeNull();
|
|
111
107
|
|
|
112
|
-
await CategoryEntity.
|
|
108
|
+
await CategoryEntity.deleter(parentCategory).deleteAsync();
|
|
113
109
|
|
|
114
110
|
await expect(
|
|
115
|
-
CategoryEntity.loader(viewerContext)
|
|
116
|
-
.enforcing()
|
|
117
|
-
.loadByIDNullableAsync(parentCategory.getID()),
|
|
111
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(parentCategory.getID()),
|
|
118
112
|
).resolves.toBeNull();
|
|
119
113
|
await expect(
|
|
120
|
-
CategoryEntity.loader(viewerContext).
|
|
114
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(subCategory.getID()),
|
|
121
115
|
).resolves.toBeNull();
|
|
122
116
|
await expect(
|
|
123
|
-
CategoryEntity.loader(viewerContext)
|
|
124
|
-
.enforcing()
|
|
125
|
-
.loadByIDNullableAsync(subSubCategory.getID()),
|
|
117
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(subSubCategory.getID()),
|
|
126
118
|
).resolves.toBeNull();
|
|
127
119
|
});
|
|
128
120
|
|
|
@@ -132,21 +124,21 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE', () => {
|
|
|
132
124
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
133
125
|
const viewerContext = new TestViewerContext(companionProvider);
|
|
134
126
|
|
|
135
|
-
const categoryA = await CategoryEntity.creator(viewerContext).
|
|
127
|
+
const categoryA = await CategoryEntity.creator(viewerContext).createAsync();
|
|
136
128
|
const categoryB = await CategoryEntity.creator(viewerContext)
|
|
137
129
|
.setField('parent_category_id', categoryA.getID())
|
|
138
|
-
.
|
|
130
|
+
.createAsync();
|
|
139
131
|
await CategoryEntity.updater(categoryA)
|
|
140
132
|
.setField('parent_category_id', categoryB.getID())
|
|
141
|
-
.
|
|
133
|
+
.updateAsync();
|
|
142
134
|
|
|
143
|
-
await CategoryEntity.
|
|
135
|
+
await CategoryEntity.deleter(categoryA).deleteAsync();
|
|
144
136
|
|
|
145
137
|
await expect(
|
|
146
|
-
CategoryEntity.loader(viewerContext).
|
|
138
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(categoryA.getID()),
|
|
147
139
|
).resolves.toBeNull();
|
|
148
140
|
await expect(
|
|
149
|
-
CategoryEntity.loader(viewerContext).
|
|
141
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(categoryB.getID()),
|
|
150
142
|
).resolves.toBeNull();
|
|
151
143
|
});
|
|
152
144
|
});
|
|
@@ -158,44 +150,38 @@ describe('EntityEdgeDeletionBehavior.SET_NULL', () => {
|
|
|
158
150
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
159
151
|
const viewerContext = new TestViewerContext(companionProvider);
|
|
160
152
|
|
|
161
|
-
const parentCategory = await CategoryEntity.creator(viewerContext).
|
|
153
|
+
const parentCategory = await CategoryEntity.creator(viewerContext).createAsync();
|
|
162
154
|
const subCategory = await CategoryEntity.creator(viewerContext)
|
|
163
155
|
.setField('parent_category_id', parentCategory.getID())
|
|
164
|
-
.
|
|
156
|
+
.createAsync();
|
|
165
157
|
const subSubCategory = await CategoryEntity.creator(viewerContext)
|
|
166
158
|
.setField('parent_category_id', subCategory.getID())
|
|
167
|
-
.
|
|
159
|
+
.createAsync();
|
|
168
160
|
|
|
169
161
|
await expect(
|
|
170
|
-
CategoryEntity.loader(viewerContext)
|
|
171
|
-
.enforcing()
|
|
172
|
-
.loadByIDNullableAsync(parentCategory.getID()),
|
|
162
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(parentCategory.getID()),
|
|
173
163
|
).resolves.not.toBeNull();
|
|
174
164
|
await expect(
|
|
175
|
-
CategoryEntity.loader(viewerContext).
|
|
165
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(subCategory.getID()),
|
|
176
166
|
).resolves.not.toBeNull();
|
|
177
167
|
await expect(
|
|
178
|
-
CategoryEntity.loader(viewerContext)
|
|
179
|
-
.enforcing()
|
|
180
|
-
.loadByIDNullableAsync(subSubCategory.getID()),
|
|
168
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(subSubCategory.getID()),
|
|
181
169
|
).resolves.not.toBeNull();
|
|
182
170
|
|
|
183
|
-
await CategoryEntity.
|
|
171
|
+
await CategoryEntity.deleter(parentCategory).deleteAsync();
|
|
184
172
|
|
|
185
173
|
await expect(
|
|
186
|
-
CategoryEntity.loader(viewerContext)
|
|
187
|
-
.enforcing()
|
|
188
|
-
.loadByIDNullableAsync(parentCategory.getID()),
|
|
174
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(parentCategory.getID()),
|
|
189
175
|
).resolves.toBeNull();
|
|
190
176
|
|
|
191
|
-
const loadedSubCategory = await CategoryEntity.loader(viewerContext)
|
|
192
|
-
.
|
|
193
|
-
|
|
177
|
+
const loadedSubCategory = await CategoryEntity.loader(viewerContext).loadByIDAsync(
|
|
178
|
+
subCategory.getID(),
|
|
179
|
+
);
|
|
194
180
|
expect(loadedSubCategory.getField('parent_category_id')).toBeNull();
|
|
195
181
|
|
|
196
|
-
const loadedSubSubCategory = await CategoryEntity.loader(viewerContext)
|
|
197
|
-
.
|
|
198
|
-
|
|
182
|
+
const loadedSubSubCategory = await CategoryEntity.loader(viewerContext).loadByIDAsync(
|
|
183
|
+
subSubCategory.getID(),
|
|
184
|
+
);
|
|
199
185
|
expect(loadedSubSubCategory.getField('parent_category_id')).not.toBeNull();
|
|
200
186
|
});
|
|
201
187
|
|
|
@@ -205,19 +191,19 @@ describe('EntityEdgeDeletionBehavior.SET_NULL', () => {
|
|
|
205
191
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
206
192
|
const viewerContext = new TestViewerContext(companionProvider);
|
|
207
193
|
|
|
208
|
-
const categoryA = await CategoryEntity.creator(viewerContext).
|
|
194
|
+
const categoryA = await CategoryEntity.creator(viewerContext).createAsync();
|
|
209
195
|
const categoryB = await CategoryEntity.creator(viewerContext)
|
|
210
196
|
.setField('parent_category_id', categoryA.getID())
|
|
211
|
-
.
|
|
197
|
+
.createAsync();
|
|
212
198
|
await CategoryEntity.updater(categoryA)
|
|
213
199
|
.setField('parent_category_id', categoryB.getID())
|
|
214
|
-
.
|
|
200
|
+
.updateAsync();
|
|
215
201
|
|
|
216
|
-
await CategoryEntity.
|
|
202
|
+
await CategoryEntity.deleter(categoryA).deleteAsync();
|
|
217
203
|
|
|
218
|
-
const loadedCategoryB = await CategoryEntity.loader(viewerContext)
|
|
219
|
-
.
|
|
220
|
-
|
|
204
|
+
const loadedCategoryB = await CategoryEntity.loader(viewerContext).loadByIDAsync(
|
|
205
|
+
categoryB.getID(),
|
|
206
|
+
);
|
|
221
207
|
expect(loadedCategoryB.getField('parent_category_id')).toBeNull();
|
|
222
208
|
});
|
|
223
209
|
});
|
|
@@ -231,28 +217,28 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
|
|
|
231
217
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
232
218
|
const viewerContext = new TestViewerContext(companionProvider);
|
|
233
219
|
|
|
234
|
-
const parentCategory = await CategoryEntity.creator(viewerContext).
|
|
220
|
+
const parentCategory = await CategoryEntity.creator(viewerContext).createAsync();
|
|
235
221
|
const subCategory = await CategoryEntity.creator(viewerContext)
|
|
236
222
|
.setField('parent_category_id', parentCategory.getID())
|
|
237
|
-
.
|
|
223
|
+
.createAsync();
|
|
238
224
|
const subSubCategory = await CategoryEntity.creator(viewerContext)
|
|
239
225
|
.setField('parent_category_id', subCategory.getID())
|
|
240
|
-
.
|
|
226
|
+
.createAsync();
|
|
241
227
|
|
|
242
228
|
await expect(
|
|
243
|
-
CategoryEntity.loader(viewerContext)
|
|
244
|
-
.enforcing()
|
|
245
|
-
.loadByIDNullableAsync(parentCategory.getID()),
|
|
229
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(parentCategory.getID()),
|
|
246
230
|
).resolves.not.toBeNull();
|
|
247
231
|
await expect(
|
|
248
|
-
CategoryEntity.loader(viewerContext)
|
|
249
|
-
|
|
250
|
-
|
|
232
|
+
CategoryEntity.loader(viewerContext).loadByFieldEqualingAsync(
|
|
233
|
+
'parent_category_id',
|
|
234
|
+
parentCategory.getID(),
|
|
235
|
+
),
|
|
251
236
|
).resolves.not.toBeNull();
|
|
252
237
|
await expect(
|
|
253
|
-
CategoryEntity.loader(viewerContext)
|
|
254
|
-
|
|
255
|
-
|
|
238
|
+
CategoryEntity.loader(viewerContext).loadByFieldEqualingAsync(
|
|
239
|
+
'parent_category_id',
|
|
240
|
+
subCategory.getID(),
|
|
241
|
+
),
|
|
256
242
|
).resolves.not.toBeNull();
|
|
257
243
|
|
|
258
244
|
const categoryCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(
|
|
@@ -271,7 +257,7 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
|
|
|
271
257
|
);
|
|
272
258
|
expect(subSubCategoryCachedBefore.get(subCategory.getID())?.status).toEqual(CacheStatus.HIT);
|
|
273
259
|
|
|
274
|
-
await CategoryEntity.
|
|
260
|
+
await CategoryEntity.deleter(parentCategory).deleteAsync();
|
|
275
261
|
|
|
276
262
|
const subCategoryCachedAfter = await categoryCacheAdapter.loadManyAsync('parent_category_id', [
|
|
277
263
|
parentCategory.getID(),
|
|
@@ -285,17 +271,13 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
|
|
|
285
271
|
expect(subSubCategoryCachedAfter.get(subCategory.getID())?.status).toEqual(CacheStatus.MISS);
|
|
286
272
|
|
|
287
273
|
await expect(
|
|
288
|
-
CategoryEntity.loader(viewerContext)
|
|
289
|
-
.enforcing()
|
|
290
|
-
.loadByIDNullableAsync(parentCategory.getID()),
|
|
274
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(parentCategory.getID()),
|
|
291
275
|
).resolves.toBeNull();
|
|
292
276
|
await expect(
|
|
293
|
-
CategoryEntity.loader(viewerContext).
|
|
277
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(subCategory.getID()),
|
|
294
278
|
).resolves.not.toBeNull();
|
|
295
279
|
await expect(
|
|
296
|
-
CategoryEntity.loader(viewerContext)
|
|
297
|
-
.enforcing()
|
|
298
|
-
.loadByIDNullableAsync(subSubCategory.getID()),
|
|
280
|
+
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(subSubCategory.getID()),
|
|
299
281
|
).resolves.not.toBeNull();
|
|
300
282
|
});
|
|
301
283
|
|
|
@@ -307,23 +289,25 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
|
|
|
307
289
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
308
290
|
const viewerContext = new TestViewerContext(companionProvider);
|
|
309
291
|
|
|
310
|
-
const categoryA = await CategoryEntity.creator(viewerContext).
|
|
292
|
+
const categoryA = await CategoryEntity.creator(viewerContext).createAsync();
|
|
311
293
|
const categoryB = await CategoryEntity.creator(viewerContext)
|
|
312
294
|
.setField('parent_category_id', categoryA.getID())
|
|
313
|
-
.
|
|
295
|
+
.createAsync();
|
|
314
296
|
await CategoryEntity.updater(categoryA)
|
|
315
297
|
.setField('parent_category_id', categoryB.getID())
|
|
316
|
-
.
|
|
298
|
+
.updateAsync();
|
|
317
299
|
|
|
318
300
|
await expect(
|
|
319
|
-
CategoryEntity.loader(viewerContext)
|
|
320
|
-
|
|
321
|
-
|
|
301
|
+
CategoryEntity.loader(viewerContext).loadByFieldEqualingAsync(
|
|
302
|
+
'parent_category_id',
|
|
303
|
+
categoryA.getID(),
|
|
304
|
+
),
|
|
322
305
|
).resolves.not.toBeNull();
|
|
323
306
|
await expect(
|
|
324
|
-
CategoryEntity.loader(viewerContext)
|
|
325
|
-
|
|
326
|
-
|
|
307
|
+
CategoryEntity.loader(viewerContext).loadByFieldEqualingAsync(
|
|
308
|
+
'parent_category_id',
|
|
309
|
+
categoryB.getID(),
|
|
310
|
+
),
|
|
327
311
|
).resolves.not.toBeNull();
|
|
328
312
|
|
|
329
313
|
const categoryCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(
|
|
@@ -338,7 +322,7 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
|
|
|
338
322
|
expect(categoriesCachedBefore.get(categoryA.getID())?.status).toEqual(CacheStatus.HIT);
|
|
339
323
|
expect(categoriesCachedBefore.get(categoryB.getID())?.status).toEqual(CacheStatus.HIT);
|
|
340
324
|
|
|
341
|
-
await CategoryEntity.
|
|
325
|
+
await CategoryEntity.deleter(categoryA).deleteAsync();
|
|
342
326
|
|
|
343
327
|
const categoriesCachedAfter = await categoryCacheAdapter.loadManyAsync('parent_category_id', [
|
|
344
328
|
categoryA.getID(),
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { instance, mock } from 'ts-mockito';
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import
|
|
3
|
+
import AuthorizationResultBasedEntityAssociationLoader from '../AuthorizationResultBasedEntityAssociationLoader';
|
|
4
|
+
import AuthorizationResultBasedEntityLoader from '../AuthorizationResultBasedEntityLoader';
|
|
5
|
+
import EnforcingEntityAssociationLoader from '../EnforcingEntityAssociationLoader';
|
|
6
|
+
import EnforcingEntityLoader from '../EnforcingEntityLoader';
|
|
7
|
+
import EntityLoaderUtils from '../EntityLoaderUtils';
|
|
5
8
|
import ReadonlyEntity from '../ReadonlyEntity';
|
|
6
9
|
import ViewerContext from '../ViewerContext';
|
|
7
10
|
import SimpleTestEntity from '../testfixtures/SimpleTestEntity';
|
|
@@ -127,7 +130,7 @@ describe(ReadonlyEntity, () => {
|
|
|
127
130
|
}).toThrow();
|
|
128
131
|
});
|
|
129
132
|
|
|
130
|
-
it('returns correct
|
|
133
|
+
it('returns correct viewerContext from instantiation', () => {
|
|
131
134
|
const viewerContext = instance(mock(ViewerContext));
|
|
132
135
|
const data = {
|
|
133
136
|
id: 'what',
|
|
@@ -157,7 +160,7 @@ describe(ReadonlyEntity, () => {
|
|
|
157
160
|
});
|
|
158
161
|
|
|
159
162
|
describe('associationLoader', () => {
|
|
160
|
-
it('returns a new
|
|
163
|
+
it('returns a new EnforcingEntityAssociationLoader', () => {
|
|
161
164
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
162
165
|
const viewerContext = new ViewerContext(companionProvider);
|
|
163
166
|
const data = {
|
|
@@ -169,15 +172,52 @@ describe(ReadonlyEntity, () => {
|
|
|
169
172
|
databaseFields: data,
|
|
170
173
|
selectedFields: data,
|
|
171
174
|
});
|
|
172
|
-
expect(testEntity.associationLoader()).toBeInstanceOf(
|
|
175
|
+
expect(testEntity.associationLoader()).toBeInstanceOf(EnforcingEntityAssociationLoader);
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
describe('associationLoaderWithAuthorizationResults', () => {
|
|
180
|
+
it('returns a new AuthorizationResultBasedEntityAssociationLoader', () => {
|
|
181
|
+
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
182
|
+
const viewerContext = new ViewerContext(companionProvider);
|
|
183
|
+
const data = {
|
|
184
|
+
id: 'what',
|
|
185
|
+
};
|
|
186
|
+
const testEntity = new SimpleTestEntity({
|
|
187
|
+
viewerContext,
|
|
188
|
+
id: 'what',
|
|
189
|
+
databaseFields: data,
|
|
190
|
+
selectedFields: data,
|
|
191
|
+
});
|
|
192
|
+
expect(testEntity.associationLoaderWithAuthorizationResults()).toBeInstanceOf(
|
|
193
|
+
AuthorizationResultBasedEntityAssociationLoader,
|
|
194
|
+
);
|
|
173
195
|
});
|
|
174
196
|
});
|
|
175
197
|
|
|
176
198
|
describe('loader', () => {
|
|
177
|
-
it('creates a new
|
|
199
|
+
it('creates a new EnforcingEntityLoader', async () => {
|
|
200
|
+
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
201
|
+
const viewerContext = new ViewerContext(companionProvider);
|
|
202
|
+
expect(SimpleTestEntity.loader(viewerContext)).toBeInstanceOf(EnforcingEntityLoader);
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
describe('loaderWithAuthorizationResults', () => {
|
|
207
|
+
it('creates a new AuthorizationResultBasedEntityLoader', async () => {
|
|
208
|
+
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
209
|
+
const viewerContext = new ViewerContext(companionProvider);
|
|
210
|
+
expect(SimpleTestEntity.loaderWithAuthorizationResults(viewerContext)).toBeInstanceOf(
|
|
211
|
+
AuthorizationResultBasedEntityLoader,
|
|
212
|
+
);
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
describe('loaderUtils', () => {
|
|
217
|
+
it('creates a new EntityLoaderUtils', async () => {
|
|
178
218
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
179
219
|
const viewerContext = new ViewerContext(companionProvider);
|
|
180
|
-
expect(SimpleTestEntity.
|
|
220
|
+
expect(SimpleTestEntity.loaderUtils(viewerContext)).toBeInstanceOf(EntityLoaderUtils);
|
|
181
221
|
});
|
|
182
222
|
});
|
|
183
223
|
});
|
|
@@ -16,28 +16,28 @@ describe('Two entities backed by the same table', () => {
|
|
|
16
16
|
const one = await OneTestEntity.creator(viewerContext)
|
|
17
17
|
.setField('entity_type', EntityType.ONE)
|
|
18
18
|
.setField('common_other_field', 'wat')
|
|
19
|
-
.
|
|
19
|
+
.createAsync();
|
|
20
20
|
|
|
21
21
|
const two = await TwoTestEntity.creator(viewerContext)
|
|
22
22
|
.setField('entity_type', EntityType.TWO)
|
|
23
23
|
.setField('other_field', 'blah')
|
|
24
24
|
.setField('common_other_field', 'wat')
|
|
25
|
-
.
|
|
25
|
+
.createAsync();
|
|
26
26
|
|
|
27
27
|
expect(one).toBeInstanceOf(OneTestEntity);
|
|
28
28
|
expect(two).toBeInstanceOf(TwoTestEntity);
|
|
29
29
|
|
|
30
30
|
await expect(
|
|
31
|
-
TwoTestEntity.loader(viewerContext).
|
|
31
|
+
TwoTestEntity.loader(viewerContext).loadByIDAsync(one.getID()),
|
|
32
32
|
).rejects.toThrowError('TwoTestEntity must be instantiated with two data');
|
|
33
33
|
|
|
34
34
|
await expect(
|
|
35
|
-
OneTestEntity.loader(viewerContext).
|
|
35
|
+
OneTestEntity.loader(viewerContext).loadByIDAsync(two.getID()),
|
|
36
36
|
).rejects.toThrowError('OneTestEntity must be instantiated with one data');
|
|
37
37
|
|
|
38
|
-
const manyResults = await OneTestEntity.
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
const manyResults = await OneTestEntity.loaderWithAuthorizationResults(
|
|
39
|
+
viewerContext,
|
|
40
|
+
).loadManyByFieldEqualingAsync('common_other_field', 'wat');
|
|
41
41
|
const successfulManyResults = successfulResults(manyResults);
|
|
42
42
|
const failedManyResults = failedResults(manyResults);
|
|
43
43
|
|
|
@@ -49,14 +49,14 @@ describe('Two entities backed by the same table', () => {
|
|
|
49
49
|
'OneTestEntity must be instantiated with one data',
|
|
50
50
|
);
|
|
51
51
|
|
|
52
|
-
const fieldEqualityConjunctionResults = await OneTestEntity.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
52
|
+
const fieldEqualityConjunctionResults = await OneTestEntity.loaderWithAuthorizationResults(
|
|
53
|
+
viewerContext,
|
|
54
|
+
).loadManyByFieldEqualityConjunctionAsync([
|
|
55
|
+
{
|
|
56
|
+
fieldName: 'common_other_field',
|
|
57
|
+
fieldValue: 'wat',
|
|
58
|
+
},
|
|
59
|
+
]);
|
|
60
60
|
const successfulfieldEqualityConjunctionResultsResults = successfulResults(
|
|
61
61
|
fieldEqualityConjunctionResults,
|
|
62
62
|
);
|
|
@@ -14,27 +14,23 @@ describe('Two entities backed by the same table', () => {
|
|
|
14
14
|
|
|
15
15
|
const entity1 = await OneTestEntity.creator(viewerContext)
|
|
16
16
|
.setField('fake_field', 'hello')
|
|
17
|
-
.
|
|
17
|
+
.createAsync();
|
|
18
18
|
expect(entity1).toBeInstanceOf(OneTestEntity);
|
|
19
19
|
|
|
20
|
-
const entity2 = await TwoTestEntity.loader(viewerContext)
|
|
21
|
-
.enforcing()
|
|
22
|
-
.loadByIDAsync(entity1.getID());
|
|
20
|
+
const entity2 = await TwoTestEntity.loader(viewerContext).loadByIDAsync(entity1.getID());
|
|
23
21
|
expect(entity2).toBeInstanceOf(TwoTestEntity);
|
|
24
22
|
|
|
25
23
|
const updated2 = await TwoTestEntity.updater(entity2)
|
|
26
24
|
.setField('fake_field', 'world')
|
|
27
25
|
.setField('other_field', 'wat')
|
|
28
|
-
.
|
|
26
|
+
.updateAsync();
|
|
29
27
|
expect(updated2.getAllFields()).toMatchObject({
|
|
30
28
|
id: updated2.getID(),
|
|
31
29
|
other_field: 'wat',
|
|
32
30
|
fake_field: 'world',
|
|
33
31
|
});
|
|
34
32
|
|
|
35
|
-
const loaded1 = await OneTestEntity.loader(viewerContext)
|
|
36
|
-
.enforcing()
|
|
37
|
-
.loadByIDAsync(entity1.getID());
|
|
33
|
+
const loaded1 = await OneTestEntity.loader(viewerContext).loadByIDAsync(entity1.getID());
|
|
38
34
|
expect(loaded1.getAllFields()).toMatchObject({
|
|
39
35
|
id: updated2.getID(),
|
|
40
36
|
fake_field: 'world',
|
|
@@ -48,34 +44,35 @@ describe('Two entities backed by the same table', () => {
|
|
|
48
44
|
const entity = await TwoTestEntity.creator(viewerContext)
|
|
49
45
|
.setField('fake_field', 'hello')
|
|
50
46
|
.setField('other_field', 'huh')
|
|
51
|
-
.
|
|
47
|
+
.createAsync();
|
|
52
48
|
|
|
53
|
-
const loadedEntity = await TwoTestEntity.loader(viewerContext)
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
const loadedEntity = await TwoTestEntity.loader(viewerContext).loadByFieldEqualingAsync(
|
|
50
|
+
'other_field',
|
|
51
|
+
'huh',
|
|
52
|
+
);
|
|
56
53
|
expect(loadedEntity?.getAllFields()).toMatchObject({
|
|
57
54
|
id: entity.getID(),
|
|
58
55
|
fake_field: 'hello',
|
|
59
56
|
other_field: 'huh',
|
|
60
57
|
});
|
|
61
58
|
|
|
62
|
-
const loaded1 = await OneTestEntity.loader(viewerContext)
|
|
63
|
-
|
|
64
|
-
.loadByIDAsync(entity.getID());
|
|
65
|
-
await OneTestEntity.updater(loaded1).setField('fake_field', 'world').enforceUpdateAsync();
|
|
59
|
+
const loaded1 = await OneTestEntity.loader(viewerContext).loadByIDAsync(entity.getID());
|
|
60
|
+
await OneTestEntity.updater(loaded1).setField('fake_field', 'world').updateAsync();
|
|
66
61
|
|
|
67
|
-
const loaded2 = await TwoTestEntity.loader(viewerContext)
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
const loaded2 = await TwoTestEntity.loader(viewerContext).loadByFieldEqualingAsync(
|
|
63
|
+
'other_field',
|
|
64
|
+
'huh',
|
|
65
|
+
);
|
|
70
66
|
expect(loaded2?.getAllFields()).toMatchObject({
|
|
71
67
|
id: entity.getID(),
|
|
72
68
|
fake_field: 'world',
|
|
73
69
|
other_field: 'huh',
|
|
74
70
|
});
|
|
75
71
|
|
|
76
|
-
const loaded22 = await TwoTestEntity.loader(viewerContext)
|
|
77
|
-
|
|
78
|
-
|
|
72
|
+
const loaded22 = await TwoTestEntity.loader(viewerContext).loadByFieldEqualingAsync(
|
|
73
|
+
'fake_field',
|
|
74
|
+
'world',
|
|
75
|
+
);
|
|
79
76
|
expect(loaded22?.getAllFields()).toMatchObject({
|
|
80
77
|
id: entity.getID(),
|
|
81
78
|
fake_field: 'world',
|
package/src/index.ts
CHANGED
|
@@ -4,31 +4,38 @@
|
|
|
4
4
|
* @module @expo/entity
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
export { default as AuthorizationResultBasedEntityAssociationLoader } from './AuthorizationResultBasedEntityAssociationLoader';
|
|
8
|
+
export * from './AuthorizationResultBasedEntityAssociationLoader';
|
|
7
9
|
export { default as AuthorizationResultBasedEntityLoader } from './AuthorizationResultBasedEntityLoader';
|
|
10
|
+
export * from './AuthorizationResultBasedEntityMutator';
|
|
8
11
|
export { default as ComposedEntityCacheAdapter } from './ComposedEntityCacheAdapter';
|
|
9
12
|
export { default as ComposedSecondaryEntityCache } from './ComposedSecondaryEntityCache';
|
|
13
|
+
export { default as EnforcingEntityAssociationLoader } from './EnforcingEntityAssociationLoader';
|
|
14
|
+
export { default as EnforcingEntityCreator } from './EnforcingEntityCreator';
|
|
15
|
+
export { default as EnforcingEntityDeleter } from './EnforcingEntityDeleter';
|
|
10
16
|
export { default as EnforcingEntityLoader } from './EnforcingEntityLoader';
|
|
17
|
+
export { default as EnforcingEntityUpdater } from './EnforcingEntityUpdater';
|
|
11
18
|
export { default as Entity } from './Entity';
|
|
12
19
|
export * from './Entity';
|
|
13
20
|
export { default as EntityAssociationLoader } from './EntityAssociationLoader';
|
|
14
|
-
export * from './EntityAssociationLoader';
|
|
15
21
|
export { default as EntityCompanion } from './EntityCompanion';
|
|
16
22
|
export * from './EntityCompanion';
|
|
17
23
|
export { default as EntityCompanionProvider } from './EntityCompanionProvider';
|
|
18
24
|
export * from './EntityCompanionProvider';
|
|
19
25
|
export { default as EntityConfiguration } from './EntityConfiguration';
|
|
26
|
+
export { default as EntityCreator } from './EntityCreator';
|
|
20
27
|
export { default as EntityDatabaseAdapter } from './EntityDatabaseAdapter';
|
|
21
28
|
export * from './EntityDatabaseAdapter';
|
|
29
|
+
export { default as EntityDeleter } from './EntityDeleter';
|
|
22
30
|
export * from './EntityFieldDefinition';
|
|
23
31
|
export * from './EntityFields';
|
|
24
32
|
export { default as EntityLoader } from './EntityLoader';
|
|
25
33
|
export { default as EntityLoaderFactory } from './EntityLoaderFactory';
|
|
26
34
|
export { default as EntityLoaderUtils } from './EntityLoaderUtils';
|
|
27
35
|
export * from './EntityMutationInfo';
|
|
28
|
-
export { default as EntityMutationTriggerConfiguration } from './EntityMutationTriggerConfiguration';
|
|
36
|
+
export { type default as EntityMutationTriggerConfiguration } from './EntityMutationTriggerConfiguration';
|
|
29
37
|
export * from './EntityMutationTriggerConfiguration';
|
|
30
38
|
export { default as EntityMutationValidator } from './EntityMutationValidator';
|
|
31
|
-
export * from './EntityMutator';
|
|
32
39
|
export { default as EntityMutatorFactory } from './EntityMutatorFactory';
|
|
33
40
|
export { default as EntityPrivacyPolicy } from './EntityPrivacyPolicy';
|
|
34
41
|
export * from './EntityPrivacyPolicy';
|
|
@@ -36,19 +43,20 @@ export * from './EntityQueryContext';
|
|
|
36
43
|
export { default as EntityQueryContextProvider } from './EntityQueryContextProvider';
|
|
37
44
|
export { default as EntitySecondaryCacheLoader } from './EntitySecondaryCacheLoader';
|
|
38
45
|
export * from './EntitySecondaryCacheLoader';
|
|
46
|
+
export { default as EntityUpdater } from './EntityUpdater';
|
|
47
|
+
export * from './entityUtils';
|
|
39
48
|
export { default as GenericEntityCacheAdapter } from './GenericEntityCacheAdapter';
|
|
40
49
|
export { default as GenericSecondaryEntityCache } from './GenericSecondaryEntityCache';
|
|
41
|
-
export { default as IEntityCacheAdapter } from './IEntityCacheAdapter';
|
|
42
|
-
export { default as IEntityCacheAdapterProvider } from './IEntityCacheAdapterProvider';
|
|
43
|
-
export { default as IEntityDatabaseAdapterProvider } from './IEntityDatabaseAdapterProvider';
|
|
44
|
-
export { default as IEntityGenericCacher } from './IEntityGenericCacher';
|
|
50
|
+
export { type default as IEntityCacheAdapter } from './IEntityCacheAdapter';
|
|
51
|
+
export { type default as IEntityCacheAdapterProvider } from './IEntityCacheAdapterProvider';
|
|
52
|
+
export { type default as IEntityDatabaseAdapterProvider } from './IEntityDatabaseAdapterProvider';
|
|
53
|
+
export { type default as IEntityGenericCacher } from './IEntityGenericCacher';
|
|
45
54
|
export { default as ReadonlyEntity } from './ReadonlyEntity';
|
|
46
55
|
export { default as ViewerContext } from './ViewerContext';
|
|
47
56
|
export { default as ViewerScopedEntityCompanion } from './ViewerScopedEntityCompanion';
|
|
48
57
|
export { default as ViewerScopedEntityCompanionProvider } from './ViewerScopedEntityCompanionProvider';
|
|
49
58
|
export { default as ViewerScopedEntityLoaderFactory } from './ViewerScopedEntityLoaderFactory';
|
|
50
59
|
export { default as ViewerScopedEntityMutatorFactory } from './ViewerScopedEntityMutatorFactory';
|
|
51
|
-
export * from './entityUtils';
|
|
52
60
|
export { default as EntityCacheAdapterError } from './errors/EntityCacheAdapterError';
|
|
53
61
|
export * from './errors/EntityCacheAdapterError';
|
|
54
62
|
export { default as EntityDatabaseAdapterError } from './errors/EntityDatabaseAdapterError';
|
|
@@ -64,7 +72,7 @@ export { default as EntityTableDataCoordinator } from './internal/EntityTableDat
|
|
|
64
72
|
export { default as ReadThroughEntityCache } from './internal/ReadThroughEntityCache';
|
|
65
73
|
export * from './internal/ReadThroughEntityCache';
|
|
66
74
|
export * from './metrics/EntityMetricsUtils';
|
|
67
|
-
export { default as IEntityMetricsAdapter } from './metrics/IEntityMetricsAdapter';
|
|
75
|
+
export { type default as IEntityMetricsAdapter } from './metrics/IEntityMetricsAdapter';
|
|
68
76
|
export * from './metrics/IEntityMetricsAdapter';
|
|
69
77
|
export { default as NoOpEntityMetricsAdapter } from './metrics/NoOpEntityMetricsAdapter';
|
|
70
78
|
export { default as AlwaysAllowPrivacyPolicyRule } from './rules/AlwaysAllowPrivacyPolicyRule';
|
|
@@ -75,10 +83,10 @@ export * from './rules/PrivacyPolicyRule';
|
|
|
75
83
|
export * from './utils/EntityPrivacyUtils';
|
|
76
84
|
export * from './utils/mergeEntityMutationTriggerConfigurations';
|
|
77
85
|
export * from './utils/collections/maps';
|
|
86
|
+
export * from './utils/testing/createUnitTestEntityCompanionProvider';
|
|
87
|
+
export { default as describeFieldTestCase } from './utils/testing/describeFieldTestCase';
|
|
78
88
|
export * from './utils/testing/PrivacyPolicyRuleTestUtils';
|
|
79
89
|
export * from './utils/testing/StubCacheAdapter';
|
|
80
90
|
export { default as StubDatabaseAdapter } from './utils/testing/StubDatabaseAdapter';
|
|
81
91
|
export { default as StubDatabaseAdapterProvider } from './utils/testing/StubDatabaseAdapterProvider';
|
|
82
92
|
export { default as StubQueryContextProvider } from './utils/testing/StubQueryContextProvider';
|
|
83
|
-
export * from './utils/testing/createUnitTestEntityCompanionProvider';
|
|
84
|
-
export { default as describeFieldTestCase } from './utils/testing/describeFieldTestCase';
|