@expo/entity 0.23.0 → 0.25.1
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/ComposedEntityCacheAdapter.d.ts +19 -0
- package/build/ComposedEntityCacheAdapter.js +66 -0
- package/build/ComposedEntityCacheAdapter.js.map +1 -0
- package/build/ComposedSecondaryEntityCache.d.ts +15 -0
- package/build/ComposedSecondaryEntityCache.js +37 -0
- package/build/ComposedSecondaryEntityCache.js.map +1 -0
- package/build/Entity.js +6 -6
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.js +4 -4
- package/build/EntityAssociationLoader.js.map +1 -1
- package/build/EntityFieldDefinition.d.ts +8 -0
- package/build/EntityFieldDefinition.js +5 -0
- package/build/EntityFieldDefinition.js.map +1 -1
- package/build/EntityFields.d.ts +38 -0
- package/build/EntityFields.js +38 -0
- package/build/EntityFields.js.map +1 -1
- package/build/EntityLoader.d.ts +3 -2
- package/build/EntityLoader.js +5 -4
- package/build/EntityLoader.js.map +1 -1
- package/build/EntityLoaderFactory.d.ts +2 -2
- package/build/EntityLoaderFactory.js +2 -2
- package/build/EntityLoaderFactory.js.map +1 -1
- package/build/EntityMutationInfo.d.ts +12 -3
- package/build/EntityMutator.d.ts +5 -4
- package/build/EntityMutator.js +31 -24
- package/build/EntityMutator.js.map +1 -1
- package/build/EntityMutatorFactory.d.ts +4 -4
- package/build/EntityMutatorFactory.js +6 -6
- package/build/EntityMutatorFactory.js.map +1 -1
- package/build/EntityPrivacyPolicy.d.ts +15 -4
- package/build/EntityPrivacyPolicy.js +14 -14
- package/build/EntityPrivacyPolicy.js.map +1 -1
- package/build/GenericSecondaryEntityCache.d.ts +19 -0
- package/build/GenericSecondaryEntityCache.js +74 -0
- package/build/GenericSecondaryEntityCache.js.map +1 -0
- package/build/IEntityGenericCacher.d.ts +11 -0
- package/build/IEntityGenericCacher.js +3 -0
- package/build/IEntityGenericCacher.js.map +1 -0
- package/build/ReadonlyEntity.js +1 -1
- package/build/ReadonlyEntity.js.map +1 -1
- package/build/ViewerScopedEntityLoaderFactory.d.ts +2 -2
- package/build/ViewerScopedEntityLoaderFactory.js +2 -2
- package/build/ViewerScopedEntityLoaderFactory.js.map +1 -1
- package/build/ViewerScopedEntityMutatorFactory.d.ts +4 -4
- package/build/ViewerScopedEntityMutatorFactory.js +6 -6
- package/build/ViewerScopedEntityMutatorFactory.js.map +1 -1
- package/build/__tests__/ComposedCacheAdapter-test.d.ts +1 -0
- package/build/__tests__/ComposedCacheAdapter-test.js +198 -0
- package/build/__tests__/ComposedCacheAdapter-test.js.map +1 -0
- package/build/__tests__/ComposedSecondaryEntityCache-test.d.ts +1 -0
- package/build/__tests__/ComposedSecondaryEntityCache-test.js +65 -0
- package/build/__tests__/ComposedSecondaryEntityCache-test.js.map +1 -0
- package/build/__tests__/EntityCommonUseCases-test.js +1 -1
- package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
- package/build/__tests__/EntityEdges-test.js +260 -37
- package/build/__tests__/EntityEdges-test.js.map +1 -1
- package/build/__tests__/EntityLoader-constructor-test.js +2 -1
- package/build/__tests__/EntityLoader-constructor-test.js.map +1 -1
- package/build/__tests__/EntityLoader-test.js +19 -11
- package/build/__tests__/EntityLoader-test.js.map +1 -1
- package/build/__tests__/EntityMutator-test.js +96 -43
- package/build/__tests__/EntityMutator-test.js.map +1 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +23 -12
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.js +1 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js +3 -2
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +1 -1
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js +3 -2
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +1 -1
- package/build/index.d.ts +4 -0
- package/build/index.js +7 -1
- package/build/index.js.map +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +2 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +2 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +2 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
- package/build/rules/PrivacyPolicyRule.d.ts +2 -1
- package/build/rules/PrivacyPolicyRule.js.map +1 -1
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +1 -0
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +1 -1
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +1 -0
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +1 -1
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +1 -0
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +1 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +2 -0
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js +6 -6
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +1 -1
- package/package.json +1 -1
- package/src/ComposedEntityCacheAdapter.ts +86 -0
- package/src/ComposedSecondaryEntityCache.ts +63 -0
- package/src/Entity.ts +6 -4
- package/src/EntityAssociationLoader.ts +4 -4
- package/src/EntityFieldDefinition.ts +8 -0
- package/src/EntityFields.ts +45 -0
- package/src/EntityLoader.ts +5 -1
- package/src/EntityLoaderFactory.ts +4 -2
- package/src/EntityMutationInfo.ts +13 -3
- package/src/EntityMutator.ts +44 -21
- package/src/EntityMutatorFactory.ts +10 -4
- package/src/EntityPrivacyPolicy.ts +31 -1
- package/src/GenericSecondaryEntityCache.ts +98 -0
- package/src/IEntityGenericCacher.ts +15 -0
- package/src/ReadonlyEntity.ts +1 -1
- package/src/ViewerScopedEntityLoaderFactory.ts +8 -3
- package/src/ViewerScopedEntityMutatorFactory.ts +22 -7
- package/src/__tests__/ComposedCacheAdapter-test.ts +280 -0
- package/src/__tests__/ComposedSecondaryEntityCache-test.ts +101 -0
- package/src/__tests__/EntityCommonUseCases-test.ts +2 -1
- package/src/__tests__/EntityEdges-test.ts +286 -45
- package/src/__tests__/EntityLoader-constructor-test.ts +3 -1
- package/src/__tests__/EntityLoader-test.ts +26 -1
- package/src/__tests__/EntityMutator-test.ts +99 -37
- package/src/__tests__/EntityPrivacyPolicy-test.ts +66 -7
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +1 -0
- package/src/__tests__/ViewerScopedEntityLoaderFactory-test.ts +4 -2
- package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +6 -2
- package/src/index.ts +4 -0
- package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +2 -0
- package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +2 -0
- package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +2 -0
- package/src/rules/PrivacyPolicyRule.ts +2 -0
- package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +2 -0
- package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +2 -0
- package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +2 -0
- package/src/utils/testing/PrivacyPolicyRuleTestUtils.ts +14 -6
|
@@ -20,8 +20,8 @@ class EntityLoaderFactory {
|
|
|
20
20
|
* @param viewerContext - viewer context of loading user
|
|
21
21
|
* @param queryContext - query context in which to perform the load
|
|
22
22
|
*/
|
|
23
|
-
forLoad(viewerContext, queryContext) {
|
|
24
|
-
return new EntityLoader_1.default(viewerContext, queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicyClass, this.dataManager, this.metricsAdapter);
|
|
23
|
+
forLoad(viewerContext, queryContext, privacyPolicyEvaluationContext) {
|
|
24
|
+
return new EntityLoader_1.default(viewerContext, queryContext, privacyPolicyEvaluationContext, this.entityConfiguration, this.entityClass, this.privacyPolicyClass, this.dataManager, this.metricsAdapter);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
exports.default = EntityLoaderFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityLoaderFactory.js","sourceRoot":"","sources":["../src/EntityLoaderFactory.ts"],"names":[],"mappings":";;;;;AAEA,kEAA0C;AAQ1C;;GAEG;AACH,MAAqB,mBAAmB;IActC,YACmB,mBAAiD,EACjD,WAOhB,EACgB,kBAAkC,EAClC,WAAuC,EACrC,cAAqC;QAXvC,wBAAmB,GAAnB,mBAAmB,CAA8B;QACjD,gBAAW,GAAX,WAAW,CAO3B;QACgB,uBAAkB,GAAlB,kBAAkB,CAAgB;QAClC,gBAAW,GAAX,WAAW,CAA4B;QACrC,mBAAc,GAAd,cAAc,CAAuB;IACvD,CAAC;IAEJ;;;;OAIG;IACH,OAAO,CACL,aAA6B,EAC7B,YAAgC;
|
|
1
|
+
{"version":3,"file":"EntityLoaderFactory.js","sourceRoot":"","sources":["../src/EntityLoaderFactory.ts"],"names":[],"mappings":";;;;;AAEA,kEAA0C;AAQ1C;;GAEG;AACH,MAAqB,mBAAmB;IActC,YACmB,mBAAiD,EACjD,WAOhB,EACgB,kBAAkC,EAClC,WAAuC,EACrC,cAAqC;QAXvC,wBAAmB,GAAnB,mBAAmB,CAA8B;QACjD,gBAAW,GAAX,WAAW,CAO3B;QACgB,uBAAkB,GAAlB,kBAAkB,CAAgB;QAClC,gBAAW,GAAX,WAAW,CAA4B;QACrC,mBAAc,GAAd,cAAc,CAAuB;IACvD,CAAC;IAEJ;;;;OAIG;IACH,OAAO,CACL,aAA6B,EAC7B,YAAgC,EAChC,8BAAoE;QAEpE,OAAO,IAAI,sBAAY,CACrB,aAAa,EACb,YAAY,EACZ,8BAA8B,EAC9B,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,cAAc,CACpB,CAAC;IACJ,CAAC;CACF;AAlDD,sCAkDC"}
|
|
@@ -11,9 +11,18 @@ export declare type EntityValidatorMutationInfo<TFields, TID extends NonNullable
|
|
|
11
11
|
type: EntityMutationType.UPDATE;
|
|
12
12
|
previousValue: TEntity;
|
|
13
13
|
};
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Information about a cascading deletion.
|
|
16
|
+
*/
|
|
17
|
+
export declare type EntityCascadingDeletionInfo = {
|
|
18
|
+
/**
|
|
19
|
+
* The entity that is being mutated at this step in the cascaded deletion.
|
|
20
|
+
*/
|
|
15
21
|
entity: Entity<any, any, any, any>;
|
|
16
|
-
|
|
22
|
+
/**
|
|
23
|
+
* The cascade deletion that caused this mutation.
|
|
24
|
+
*/
|
|
25
|
+
cascadingDeleteCause: EntityCascadingDeletionInfo | null;
|
|
17
26
|
};
|
|
18
27
|
export declare type EntityTriggerMutationInfo<TFields, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TID, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> = {
|
|
19
28
|
type: EntityMutationType.CREATE;
|
|
@@ -22,5 +31,5 @@ export declare type EntityTriggerMutationInfo<TFields, TID extends NonNullable<T
|
|
|
22
31
|
previousValue: TEntity;
|
|
23
32
|
} | {
|
|
24
33
|
type: EntityMutationType.DELETE;
|
|
25
|
-
cascadingDeleteCause:
|
|
34
|
+
cascadingDeleteCause: EntityCascadingDeletionInfo | null;
|
|
26
35
|
};
|
package/build/EntityMutator.d.ts
CHANGED
|
@@ -6,13 +6,14 @@ import EntityLoaderFactory from './EntityLoaderFactory';
|
|
|
6
6
|
import { EntityValidatorMutationInfo, EntityTriggerMutationInfo } from './EntityMutationInfo';
|
|
7
7
|
import EntityMutationTriggerConfiguration, { EntityMutationTrigger, EntityNonTransactionalMutationTrigger } from './EntityMutationTriggerConfiguration';
|
|
8
8
|
import EntityMutationValidator from './EntityMutationValidator';
|
|
9
|
-
import EntityPrivacyPolicy from './EntityPrivacyPolicy';
|
|
9
|
+
import EntityPrivacyPolicy, { EntityPrivacyPolicyEvaluationContext } from './EntityPrivacyPolicy';
|
|
10
10
|
import { EntityQueryContext, EntityTransactionalQueryContext } from './EntityQueryContext';
|
|
11
11
|
import ViewerContext from './ViewerContext';
|
|
12
12
|
import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
|
|
13
13
|
declare abstract class BaseMutator<TFields, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields> {
|
|
14
14
|
protected readonly viewerContext: TViewerContext;
|
|
15
15
|
protected readonly queryContext: EntityQueryContext;
|
|
16
|
+
protected readonly privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext;
|
|
16
17
|
protected readonly entityConfiguration: EntityConfiguration<TFields>;
|
|
17
18
|
protected readonly entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
18
19
|
protected readonly privacyPolicy: TPrivacyPolicy;
|
|
@@ -21,7 +22,7 @@ declare abstract class BaseMutator<TFields, TID extends NonNullable<TFields[TSel
|
|
|
21
22
|
protected readonly entityLoaderFactory: EntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
22
23
|
protected readonly databaseAdapter: EntityDatabaseAdapter<TFields>;
|
|
23
24
|
protected readonly metricsAdapter: IEntityMetricsAdapter;
|
|
24
|
-
constructor(viewerContext: TViewerContext, queryContext: EntityQueryContext, entityConfiguration: EntityConfiguration<TFields>, entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, privacyPolicy: TPrivacyPolicy, mutationValidators: EntityMutationValidator<TFields, TID, TViewerContext, TEntity, TSelectedFields>[], mutationTriggers: EntityMutationTriggerConfiguration<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entityLoaderFactory: EntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, databaseAdapter: EntityDatabaseAdapter<TFields>, metricsAdapter: IEntityMetricsAdapter);
|
|
25
|
+
constructor(viewerContext: TViewerContext, queryContext: EntityQueryContext, privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext, entityConfiguration: EntityConfiguration<TFields>, entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, privacyPolicy: TPrivacyPolicy, mutationValidators: EntityMutationValidator<TFields, TID, TViewerContext, TEntity, TSelectedFields>[], mutationTriggers: EntityMutationTriggerConfiguration<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entityLoaderFactory: EntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, databaseAdapter: EntityDatabaseAdapter<TFields>, metricsAdapter: IEntityMetricsAdapter);
|
|
25
26
|
protected validateFields(fields: Partial<TFields>): void;
|
|
26
27
|
protected executeMutationValidatorsAsync(validators: EntityMutationValidator<TFields, TID, TViewerContext, TEntity, TSelectedFields>[], queryContext: EntityTransactionalQueryContext, entity: TEntity, mutationInfo: EntityValidatorMutationInfo<TFields, TID, TViewerContext, TEntity, TSelectedFields>): Promise<void>;
|
|
27
28
|
protected executeMutationTriggersAsync(triggers: EntityMutationTrigger<TFields, TID, TViewerContext, TEntity, TSelectedFields>[] | undefined, queryContext: EntityTransactionalQueryContext, entity: TEntity, mutationInfo: EntityTriggerMutationInfo<TFields, TID, TViewerContext, TEntity, TSelectedFields>): Promise<void>;
|
|
@@ -58,7 +59,7 @@ export declare class UpdateMutator<TFields, TID extends NonNullable<TFields[TSel
|
|
|
58
59
|
private readonly originalEntity;
|
|
59
60
|
private readonly fieldsForEntity;
|
|
60
61
|
private readonly updatedFields;
|
|
61
|
-
constructor(viewerContext: TViewerContext, queryContext: EntityQueryContext, entityConfiguration: EntityConfiguration<TFields>, entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, privacyPolicy: TPrivacyPolicy, mutationValidators: EntityMutationValidator<TFields, TID, TViewerContext, TEntity, TSelectedFields>[], mutationTriggers: EntityMutationTriggerConfiguration<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entityLoaderFactory: EntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, databaseAdapter: EntityDatabaseAdapter<TFields>, metricsAdapter: IEntityMetricsAdapter, originalEntity: TEntity);
|
|
62
|
+
constructor(viewerContext: TViewerContext, queryContext: EntityQueryContext, privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext, entityConfiguration: EntityConfiguration<TFields>, entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, privacyPolicy: TPrivacyPolicy, mutationValidators: EntityMutationValidator<TFields, TID, TViewerContext, TEntity, TSelectedFields>[], mutationTriggers: EntityMutationTriggerConfiguration<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entityLoaderFactory: EntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, databaseAdapter: EntityDatabaseAdapter<TFields>, metricsAdapter: IEntityMetricsAdapter, originalEntity: TEntity);
|
|
62
63
|
/**
|
|
63
64
|
* Set the value for entity field.
|
|
64
65
|
* @param fieldName - entity field being updated
|
|
@@ -84,7 +85,7 @@ export declare class UpdateMutator<TFields, TID extends NonNullable<TFields[TSel
|
|
|
84
85
|
*/
|
|
85
86
|
export declare class DeleteMutator<TFields, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields> extends BaseMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields> {
|
|
86
87
|
private readonly entity;
|
|
87
|
-
constructor(viewerContext: TViewerContext, queryContext: EntityQueryContext, entityConfiguration: EntityConfiguration<TFields>, entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, privacyPolicy: TPrivacyPolicy, mutationValidators: EntityMutationValidator<TFields, TID, TViewerContext, TEntity, TSelectedFields>[], mutationTriggers: EntityMutationTriggerConfiguration<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entityLoaderFactory: EntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, databaseAdapter: EntityDatabaseAdapter<TFields>, metricsAdapter: IEntityMetricsAdapter, entity: TEntity);
|
|
88
|
+
constructor(viewerContext: TViewerContext, queryContext: EntityQueryContext, privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext, entityConfiguration: EntityConfiguration<TFields>, entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, privacyPolicy: TPrivacyPolicy, mutationValidators: EntityMutationValidator<TFields, TID, TViewerContext, TEntity, TSelectedFields>[], mutationTriggers: EntityMutationTriggerConfiguration<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entityLoaderFactory: EntityLoaderFactory<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, databaseAdapter: EntityDatabaseAdapter<TFields>, metricsAdapter: IEntityMetricsAdapter, entity: TEntity);
|
|
88
89
|
/**
|
|
89
90
|
* Delete the entity after authorizing against delete privacy rules. The entity is invalidated in all caches.
|
|
90
91
|
* @returns void result, where result error can be UnauthorizedError
|
package/build/EntityMutator.js
CHANGED
|
@@ -13,9 +13,10 @@ const EntityMetricsUtils_1 = require("./metrics/EntityMetricsUtils");
|
|
|
13
13
|
const IEntityMetricsAdapter_1 = require("./metrics/IEntityMetricsAdapter");
|
|
14
14
|
const maps_1 = require("./utils/collections/maps");
|
|
15
15
|
class BaseMutator {
|
|
16
|
-
constructor(viewerContext, queryContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter) {
|
|
16
|
+
constructor(viewerContext, queryContext, privacyPolicyEvaluationContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter) {
|
|
17
17
|
this.viewerContext = viewerContext;
|
|
18
18
|
this.queryContext = queryContext;
|
|
19
|
+
this.privacyPolicyEvaluationContext = privacyPolicyEvaluationContext;
|
|
19
20
|
this.entityConfiguration = entityConfiguration;
|
|
20
21
|
this.entityClass = entityClass;
|
|
21
22
|
this.privacyPolicy = privacyPolicy;
|
|
@@ -92,7 +93,7 @@ class CreateMutator extends BaseMutator {
|
|
|
92
93
|
[this.entityConfiguration.idField]: '00000000-0000-0000-0000-000000000000',
|
|
93
94
|
...this.fieldsForEntity,
|
|
94
95
|
});
|
|
95
|
-
const authorizeCreateResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeCreateAsync(this.viewerContext, queryContext, temporaryEntityForPrivacyCheck, this.metricsAdapter));
|
|
96
|
+
const authorizeCreateResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeCreateAsync(this.viewerContext, queryContext, this.privacyPolicyEvaluationContext, temporaryEntityForPrivacyCheck, this.metricsAdapter));
|
|
96
97
|
if (!authorizeCreateResult.ok) {
|
|
97
98
|
return authorizeCreateResult;
|
|
98
99
|
}
|
|
@@ -100,7 +101,7 @@ class CreateMutator extends BaseMutator {
|
|
|
100
101
|
await this.executeMutationTriggersAsync(this.mutationTriggers.beforeAll, queryContext, temporaryEntityForPrivacyCheck, { type: EntityMutationInfo_1.EntityMutationType.CREATE });
|
|
101
102
|
await this.executeMutationTriggersAsync(this.mutationTriggers.beforeCreate, queryContext, temporaryEntityForPrivacyCheck, { type: EntityMutationInfo_1.EntityMutationType.CREATE });
|
|
102
103
|
const insertResult = await this.databaseAdapter.insertAsync(queryContext, this.fieldsForEntity);
|
|
103
|
-
const entityLoader = this.entityLoaderFactory.forLoad(this.viewerContext, queryContext);
|
|
104
|
+
const entityLoader = this.entityLoaderFactory.forLoad(this.viewerContext, queryContext, this.privacyPolicyEvaluationContext);
|
|
104
105
|
queryContext.appendPostCommitInvalidationCallback(entityLoader.invalidateFieldsAsync.bind(entityLoader, insertResult));
|
|
105
106
|
const unauthorizedEntityAfterInsert = new this.entityClass(this.viewerContext, insertResult);
|
|
106
107
|
const newEntity = await entityLoader
|
|
@@ -117,8 +118,8 @@ exports.CreateMutator = CreateMutator;
|
|
|
117
118
|
* Mutator for updating an existing entity.
|
|
118
119
|
*/
|
|
119
120
|
class UpdateMutator extends BaseMutator {
|
|
120
|
-
constructor(viewerContext, queryContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter, originalEntity) {
|
|
121
|
-
super(viewerContext, queryContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter);
|
|
121
|
+
constructor(viewerContext, queryContext, privacyPolicyEvaluationContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter, originalEntity) {
|
|
122
|
+
super(viewerContext, queryContext, privacyPolicyEvaluationContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter);
|
|
122
123
|
this.updatedFields = {};
|
|
123
124
|
this.originalEntity = originalEntity;
|
|
124
125
|
this.fieldsForEntity = { ...originalEntity.getAllDatabaseFields() };
|
|
@@ -154,7 +155,7 @@ class UpdateMutator extends BaseMutator {
|
|
|
154
155
|
async updateInternalAsync(queryContext) {
|
|
155
156
|
this.validateFields(this.updatedFields);
|
|
156
157
|
const entityAboutToBeUpdated = new this.entityClass(this.viewerContext, this.fieldsForEntity);
|
|
157
|
-
const authorizeUpdateResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeUpdateAsync(this.viewerContext, queryContext, entityAboutToBeUpdated, this.metricsAdapter));
|
|
158
|
+
const authorizeUpdateResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeUpdateAsync(this.viewerContext, queryContext, this.privacyPolicyEvaluationContext, entityAboutToBeUpdated, this.metricsAdapter));
|
|
158
159
|
if (!authorizeUpdateResult.ok) {
|
|
159
160
|
return authorizeUpdateResult;
|
|
160
161
|
}
|
|
@@ -162,7 +163,7 @@ class UpdateMutator extends BaseMutator {
|
|
|
162
163
|
await this.executeMutationTriggersAsync(this.mutationTriggers.beforeAll, queryContext, entityAboutToBeUpdated, { type: EntityMutationInfo_1.EntityMutationType.UPDATE, previousValue: this.originalEntity });
|
|
163
164
|
await this.executeMutationTriggersAsync(this.mutationTriggers.beforeUpdate, queryContext, entityAboutToBeUpdated, { type: EntityMutationInfo_1.EntityMutationType.UPDATE, previousValue: this.originalEntity });
|
|
164
165
|
const updateResult = await this.databaseAdapter.updateAsync(queryContext, this.entityConfiguration.idField, entityAboutToBeUpdated.getID(), this.updatedFields);
|
|
165
|
-
const entityLoader = this.entityLoaderFactory.forLoad(this.viewerContext, queryContext);
|
|
166
|
+
const entityLoader = this.entityLoaderFactory.forLoad(this.viewerContext, queryContext, this.privacyPolicyEvaluationContext);
|
|
166
167
|
queryContext.appendPostCommitInvalidationCallback(entityLoader.invalidateFieldsAsync.bind(entityLoader, this.originalEntity.getAllDatabaseFields()));
|
|
167
168
|
queryContext.appendPostCommitInvalidationCallback(entityLoader.invalidateFieldsAsync.bind(entityLoader, this.fieldsForEntity));
|
|
168
169
|
const unauthorizedEntityAfterUpdate = new this.entityClass(this.viewerContext, updateResult);
|
|
@@ -180,8 +181,8 @@ exports.UpdateMutator = UpdateMutator;
|
|
|
180
181
|
* Mutator for deleting an existing entity.
|
|
181
182
|
*/
|
|
182
183
|
class DeleteMutator extends BaseMutator {
|
|
183
|
-
constructor(viewerContext, queryContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter, entity) {
|
|
184
|
-
super(viewerContext, queryContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter);
|
|
184
|
+
constructor(viewerContext, queryContext, privacyPolicyEvaluationContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter, entity) {
|
|
185
|
+
super(viewerContext, queryContext, privacyPolicyEvaluationContext, entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, entityLoaderFactory, databaseAdapter, metricsAdapter);
|
|
185
186
|
this.entity = entity;
|
|
186
187
|
}
|
|
187
188
|
/**
|
|
@@ -201,7 +202,7 @@ class DeleteMutator extends BaseMutator {
|
|
|
201
202
|
return await this.queryContext.runInTransactionIfNotInTransactionAsync((innerQueryContext) => this.deleteInternalAsync(innerQueryContext, processedEntityIdentifiersFromTransitiveDeletions, skipDatabaseDeletion, cascadingDeleteCause));
|
|
202
203
|
}
|
|
203
204
|
async deleteInternalAsync(queryContext, processedEntityIdentifiersFromTransitiveDeletions, skipDatabaseDeletion, cascadingDeleteCause) {
|
|
204
|
-
const authorizeDeleteResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeDeleteAsync(this.viewerContext, queryContext, this.entity, this.metricsAdapter));
|
|
205
|
+
const authorizeDeleteResult = await (0, results_1.asyncResult)(this.privacyPolicy.authorizeDeleteAsync(this.viewerContext, queryContext, { cascadingDeleteCause }, this.entity, this.metricsAdapter));
|
|
205
206
|
if (!authorizeDeleteResult.ok) {
|
|
206
207
|
return authorizeDeleteResult;
|
|
207
208
|
}
|
|
@@ -211,7 +212,9 @@ class DeleteMutator extends BaseMutator {
|
|
|
211
212
|
if (!skipDatabaseDeletion) {
|
|
212
213
|
await this.databaseAdapter.deleteAsync(queryContext, this.entityConfiguration.idField, this.entity.getID());
|
|
213
214
|
}
|
|
214
|
-
const entityLoader = this.entityLoaderFactory.forLoad(this.viewerContext, queryContext
|
|
215
|
+
const entityLoader = this.entityLoaderFactory.forLoad(this.viewerContext, queryContext, {
|
|
216
|
+
cascadingDeleteCause,
|
|
217
|
+
});
|
|
215
218
|
queryContext.appendPostCommitInvalidationCallback(entityLoader.invalidateFieldsAsync.bind(entityLoader, this.entity.getAllDatabaseFields()));
|
|
216
219
|
await this.executeMutationTriggersAsync(this.mutationTriggers.afterDelete, queryContext, this.entity, { type: EntityMutationInfo_1.EntityMutationType.DELETE, cascadingDeleteCause });
|
|
217
220
|
await this.executeMutationTriggersAsync(this.mutationTriggers.afterAll, queryContext, this.entity, { type: EntityMutationInfo_1.EntityMutationType.DELETE, cascadingDeleteCause });
|
|
@@ -262,16 +265,20 @@ class DeleteMutator extends BaseMutator {
|
|
|
262
265
|
.getViewerContext()
|
|
263
266
|
.getViewerScopedEntityCompanionForClass(entityClass)
|
|
264
267
|
.getMutatorFactory();
|
|
268
|
+
const newCascadingDeleteCause = {
|
|
269
|
+
entity,
|
|
270
|
+
cascadingDeleteCause,
|
|
271
|
+
};
|
|
265
272
|
let inboundReferenceEntities;
|
|
266
273
|
if (associatedEntityLookupByField) {
|
|
267
274
|
inboundReferenceEntities = await loaderFactory
|
|
268
|
-
.forLoad(queryContext)
|
|
275
|
+
.forLoad(queryContext, { cascadingDeleteCause: newCascadingDeleteCause })
|
|
269
276
|
.enforcing()
|
|
270
277
|
.loadManyByFieldEqualingAsync(fieldName, entity.getField(associatedEntityLookupByField));
|
|
271
278
|
}
|
|
272
279
|
else {
|
|
273
280
|
inboundReferenceEntities = await loaderFactory
|
|
274
|
-
.forLoad(queryContext)
|
|
281
|
+
.forLoad(queryContext, { cascadingDeleteCause: newCascadingDeleteCause })
|
|
275
282
|
.enforcing()
|
|
276
283
|
.loadManyByFieldEqualingAsync(fieldName, entity.getID());
|
|
277
284
|
}
|
|
@@ -279,30 +286,30 @@ class DeleteMutator extends BaseMutator {
|
|
|
279
286
|
case undefined:
|
|
280
287
|
case EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE: {
|
|
281
288
|
await Promise.all(inboundReferenceEntities.map((inboundReferenceEntity) => mutatorFactory
|
|
282
|
-
.forDelete(inboundReferenceEntity, queryContext
|
|
289
|
+
.forDelete(inboundReferenceEntity, queryContext, {
|
|
290
|
+
cascadingDeleteCause: newCascadingDeleteCause,
|
|
291
|
+
})
|
|
283
292
|
.deleteInTransactionAsync(processedEntityIdentifiers,
|
|
284
293
|
/* skipDatabaseDeletion */ true, // deletion is handled by DB
|
|
285
|
-
|
|
286
|
-
entity,
|
|
287
|
-
cascadingDeleteCause,
|
|
288
|
-
})));
|
|
294
|
+
newCascadingDeleteCause)));
|
|
289
295
|
break;
|
|
290
296
|
}
|
|
291
297
|
case EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL: {
|
|
292
298
|
await Promise.all(inboundReferenceEntities.map((inboundReferenceEntity) => mutatorFactory
|
|
293
|
-
.forUpdate(inboundReferenceEntity, queryContext
|
|
299
|
+
.forUpdate(inboundReferenceEntity, queryContext, {
|
|
300
|
+
cascadingDeleteCause: newCascadingDeleteCause,
|
|
301
|
+
})
|
|
294
302
|
.setField(fieldName, null)
|
|
295
303
|
.enforceUpdateAsync()));
|
|
296
304
|
break;
|
|
297
305
|
}
|
|
298
306
|
case EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE: {
|
|
299
307
|
await Promise.all(inboundReferenceEntities.map((inboundReferenceEntity) => mutatorFactory
|
|
300
|
-
.forDelete(inboundReferenceEntity, queryContext
|
|
308
|
+
.forDelete(inboundReferenceEntity, queryContext, {
|
|
309
|
+
cascadingDeleteCause: newCascadingDeleteCause,
|
|
310
|
+
})
|
|
301
311
|
.deleteInTransactionAsync(processedEntityIdentifiers,
|
|
302
|
-
/* skipDatabaseDeletion */ false,
|
|
303
|
-
entity,
|
|
304
|
-
cascadingDeleteCause,
|
|
305
|
-
})));
|
|
312
|
+
/* skipDatabaseDeletion */ false, newCascadingDeleteCause)));
|
|
306
313
|
}
|
|
307
314
|
}
|
|
308
315
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityMutator.js","sourceRoot":"","sources":["../src/EntityMutator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EntityMutator.js","sourceRoot":"","sources":["../src/EntityMutator.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import EntityLoaderFactory from './EntityLoaderFactory';
|
|
|
5
5
|
import EntityMutationTriggerConfiguration from './EntityMutationTriggerConfiguration';
|
|
6
6
|
import EntityMutationValidator from './EntityMutationValidator';
|
|
7
7
|
import { CreateMutator, UpdateMutator, DeleteMutator } from './EntityMutator';
|
|
8
|
-
import EntityPrivacyPolicy from './EntityPrivacyPolicy';
|
|
8
|
+
import EntityPrivacyPolicy, { EntityPrivacyPolicyEvaluationContext } from './EntityPrivacyPolicy';
|
|
9
9
|
import { EntityQueryContext } from './EntityQueryContext';
|
|
10
10
|
import ViewerContext from './ViewerContext';
|
|
11
11
|
import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
|
|
@@ -28,18 +28,18 @@ export default class EntityMutatorFactory<TFields, TID extends NonNullable<TFiel
|
|
|
28
28
|
* @param queryContext - query context in which to perform the create
|
|
29
29
|
* @returns mutator for creating an entity
|
|
30
30
|
*/
|
|
31
|
-
forCreate(viewerContext: TViewerContext, queryContext: EntityQueryContext): CreateMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
31
|
+
forCreate(viewerContext: TViewerContext, queryContext: EntityQueryContext, privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext): CreateMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
32
32
|
/**
|
|
33
33
|
* Vend mutator for updating an existing entity in given query context.
|
|
34
34
|
* @param existingEntity - entity to update
|
|
35
35
|
* @param queryContext - query context in which to perform the update
|
|
36
36
|
* @returns mutator for updating existingEntity
|
|
37
37
|
*/
|
|
38
|
-
forUpdate(existingEntity: TEntity, queryContext: EntityQueryContext): UpdateMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
38
|
+
forUpdate(existingEntity: TEntity, queryContext: EntityQueryContext, privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext): UpdateMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
39
39
|
/**
|
|
40
40
|
* Delete an existing entity in given query context.
|
|
41
41
|
* @param existingEntity - entity to delete
|
|
42
42
|
* @param queryContext - query context in which to perform the delete
|
|
43
43
|
*/
|
|
44
|
-
forDelete(existingEntity: TEntity, queryContext: EntityQueryContext): DeleteMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
44
|
+
forDelete(existingEntity: TEntity, queryContext: EntityQueryContext, privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext): DeleteMutator<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
45
45
|
}
|
|
@@ -21,8 +21,8 @@ class EntityMutatorFactory {
|
|
|
21
21
|
* @param queryContext - query context in which to perform the create
|
|
22
22
|
* @returns mutator for creating an entity
|
|
23
23
|
*/
|
|
24
|
-
forCreate(viewerContext, queryContext) {
|
|
25
|
-
return new EntityMutator_1.CreateMutator(viewerContext, queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter);
|
|
24
|
+
forCreate(viewerContext, queryContext, privacyPolicyEvaluationContext) {
|
|
25
|
+
return new EntityMutator_1.CreateMutator(viewerContext, queryContext, privacyPolicyEvaluationContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter);
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Vend mutator for updating an existing entity in given query context.
|
|
@@ -30,16 +30,16 @@ class EntityMutatorFactory {
|
|
|
30
30
|
* @param queryContext - query context in which to perform the update
|
|
31
31
|
* @returns mutator for updating existingEntity
|
|
32
32
|
*/
|
|
33
|
-
forUpdate(existingEntity, queryContext) {
|
|
34
|
-
return new EntityMutator_1.UpdateMutator(existingEntity.getViewerContext(), queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter, existingEntity);
|
|
33
|
+
forUpdate(existingEntity, queryContext, privacyPolicyEvaluationContext) {
|
|
34
|
+
return new EntityMutator_1.UpdateMutator(existingEntity.getViewerContext(), queryContext, privacyPolicyEvaluationContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter, existingEntity);
|
|
35
35
|
}
|
|
36
36
|
/**
|
|
37
37
|
* Delete an existing entity in given query context.
|
|
38
38
|
* @param existingEntity - entity to delete
|
|
39
39
|
* @param queryContext - query context in which to perform the delete
|
|
40
40
|
*/
|
|
41
|
-
forDelete(existingEntity, queryContext) {
|
|
42
|
-
return new EntityMutator_1.DeleteMutator(existingEntity.getViewerContext(), queryContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter, existingEntity);
|
|
41
|
+
forDelete(existingEntity, queryContext, privacyPolicyEvaluationContext) {
|
|
42
|
+
return new EntityMutator_1.DeleteMutator(existingEntity.getViewerContext(), queryContext, privacyPolicyEvaluationContext, this.entityConfiguration, this.entityClass, this.privacyPolicy, this.mutationValidators, this.mutationTriggers, this.entityLoaderFactory, this.databaseAdapter, this.metricsAdapter, existingEntity);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
exports.default = EntityMutatorFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityMutatorFactory.js","sourceRoot":"","sources":["../src/EntityMutatorFactory.ts"],"names":[],"mappings":";;AAMA,mDAA8E;AAM9E;;GAEG;AACH,MAAqB,oBAAoB;IAcvC,YACmB,mBAAiD,EACjD,WAOhB,EACgB,aAA6B,EAC7B,kBAMd,EACc,gBAMhB,EACgB,mBAOhB,EACgB,eAA+C,EAC/C,cAAqC;QAjCrC,wBAAmB,GAAnB,mBAAmB,CAA8B;QACjD,gBAAW,GAAX,WAAW,CAO3B;QACgB,kBAAa,GAAb,aAAa,CAAgB;QAC7B,uBAAkB,GAAlB,kBAAkB,CAMhC;QACc,qBAAgB,GAAhB,gBAAgB,CAMhC;QACgB,wBAAmB,GAAnB,mBAAmB,CAOnC;QACgB,oBAAe,GAAf,eAAe,CAAgC;QAC/C,mBAAc,GAAd,cAAc,CAAuB;IACrD,CAAC;IAEJ;;;;;OAKG;IACH,SAAS,CACP,aAA6B,EAC7B,YAAgC;
|
|
1
|
+
{"version":3,"file":"EntityMutatorFactory.js","sourceRoot":"","sources":["../src/EntityMutatorFactory.ts"],"names":[],"mappings":";;AAMA,mDAA8E;AAM9E;;GAEG;AACH,MAAqB,oBAAoB;IAcvC,YACmB,mBAAiD,EACjD,WAOhB,EACgB,aAA6B,EAC7B,kBAMd,EACc,gBAMhB,EACgB,mBAOhB,EACgB,eAA+C,EAC/C,cAAqC;QAjCrC,wBAAmB,GAAnB,mBAAmB,CAA8B;QACjD,gBAAW,GAAX,WAAW,CAO3B;QACgB,kBAAa,GAAb,aAAa,CAAgB;QAC7B,uBAAkB,GAAlB,kBAAkB,CAMhC;QACc,qBAAgB,GAAhB,gBAAgB,CAMhC;QACgB,wBAAmB,GAAnB,mBAAmB,CAOnC;QACgB,oBAAe,GAAf,eAAe,CAAgC;QAC/C,mBAAc,GAAd,cAAc,CAAuB;IACrD,CAAC;IAEJ;;;;;OAKG;IACH,SAAS,CACP,aAA6B,EAC7B,YAAgC,EAChC,8BAAoE;QAEpE,OAAO,IAAI,6BAAa,CACtB,aAAa,EACb,YAAY,EACZ,8BAA8B,EAC9B,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,EAChC,8BAAoE;QAEpE,OAAO,IAAI,6BAAa,CACtB,cAAc,CAAC,gBAAgB,EAAE,EACjC,YAAY,EACZ,8BAA8B,EAC9B,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,EAChC,8BAAoE;QAEpE,OAAO,IAAI,6BAAa,CACtB,cAAc,CAAC,gBAAgB,EAAE,EACjC,YAAY,EACZ,8BAA8B,EAC9B,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;AAjID,uCAiIC"}
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
import { EntityCascadingDeletionInfo } from './EntityMutationInfo';
|
|
1
2
|
import { EntityQueryContext } from './EntityQueryContext';
|
|
2
3
|
import ReadonlyEntity from './ReadonlyEntity';
|
|
3
4
|
import ViewerContext from './ViewerContext';
|
|
4
5
|
import EntityNotAuthorizedError from './errors/EntityNotAuthorizedError';
|
|
5
6
|
import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
|
|
6
7
|
import PrivacyPolicyRule from './rules/PrivacyPolicyRule';
|
|
8
|
+
/**
|
|
9
|
+
* Information about the reason this privacy policy is being evaluated.
|
|
10
|
+
*/
|
|
11
|
+
export declare type EntityPrivacyPolicyEvaluationContext = {
|
|
12
|
+
/**
|
|
13
|
+
* When this privacy policy is being evaluated as a result of a cascading deletion, this will be populated
|
|
14
|
+
* with information on the cascading delete.
|
|
15
|
+
*/
|
|
16
|
+
cascadingDeleteCause: EntityCascadingDeletionInfo | null;
|
|
17
|
+
};
|
|
7
18
|
export declare enum EntityPrivacyPolicyEvaluationMode {
|
|
8
19
|
ENFORCE = 0,
|
|
9
20
|
DRY_RUN = 1,
|
|
@@ -67,7 +78,7 @@ export default abstract class EntityPrivacyPolicy<TFields, TID extends NonNullab
|
|
|
67
78
|
* @returns entity if authorized
|
|
68
79
|
* @throws {@link EntityNotAuthorizedError} when not authorized
|
|
69
80
|
*/
|
|
70
|
-
authorizeCreateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
|
|
81
|
+
authorizeCreateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
|
|
71
82
|
/**
|
|
72
83
|
* Authorize an entity against read policy.
|
|
73
84
|
* @param viewerContext - viewer context of user reading the entity
|
|
@@ -76,7 +87,7 @@ export default abstract class EntityPrivacyPolicy<TFields, TID extends NonNullab
|
|
|
76
87
|
* @returns entity if authorized
|
|
77
88
|
* @throws {@link EntityNotAuthorizedError} when not authorized
|
|
78
89
|
*/
|
|
79
|
-
authorizeReadAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
|
|
90
|
+
authorizeReadAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
|
|
80
91
|
/**
|
|
81
92
|
* Authorize an entity against update policy.
|
|
82
93
|
* @param viewerContext - viewer context of user updating the entity
|
|
@@ -85,7 +96,7 @@ export default abstract class EntityPrivacyPolicy<TFields, TID extends NonNullab
|
|
|
85
96
|
* @returns entity if authorized
|
|
86
97
|
* @throws {@link EntityNotAuthorizedError} when not authorized
|
|
87
98
|
*/
|
|
88
|
-
authorizeUpdateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
|
|
99
|
+
authorizeUpdateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
|
|
89
100
|
/**
|
|
90
101
|
* Authorize an entity against deletion policy.
|
|
91
102
|
* @param viewerContext - viewer context of user deleting the entity
|
|
@@ -94,7 +105,7 @@ export default abstract class EntityPrivacyPolicy<TFields, TID extends NonNullab
|
|
|
94
105
|
* @returns entity if authorized
|
|
95
106
|
* @throws {@link EntityNotAuthorizedError} when not authorized
|
|
96
107
|
*/
|
|
97
|
-
authorizeDeleteAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
|
|
108
|
+
authorizeDeleteAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
|
|
98
109
|
private authorizeForRulesetAsync;
|
|
99
110
|
private authorizeForRulesetInnerAsync;
|
|
100
111
|
}
|
|
@@ -69,8 +69,8 @@ class EntityPrivacyPolicy {
|
|
|
69
69
|
* @returns entity if authorized
|
|
70
70
|
* @throws {@link EntityNotAuthorizedError} when not authorized
|
|
71
71
|
*/
|
|
72
|
-
async authorizeCreateAsync(viewerContext, queryContext, entity, metricsAdapter) {
|
|
73
|
-
return await this.authorizeForRulesetAsync(this.createRules, viewerContext, queryContext, entity, EntityAuthorizationAction.CREATE, metricsAdapter);
|
|
72
|
+
async authorizeCreateAsync(viewerContext, queryContext, evaluationContext, entity, metricsAdapter) {
|
|
73
|
+
return await this.authorizeForRulesetAsync(this.createRules, viewerContext, queryContext, evaluationContext, entity, EntityAuthorizationAction.CREATE, metricsAdapter);
|
|
74
74
|
}
|
|
75
75
|
/**
|
|
76
76
|
* Authorize an entity against read policy.
|
|
@@ -80,8 +80,8 @@ class EntityPrivacyPolicy {
|
|
|
80
80
|
* @returns entity if authorized
|
|
81
81
|
* @throws {@link EntityNotAuthorizedError} when not authorized
|
|
82
82
|
*/
|
|
83
|
-
async authorizeReadAsync(viewerContext, queryContext, entity, metricsAdapter) {
|
|
84
|
-
return await this.authorizeForRulesetAsync(this.readRules, viewerContext, queryContext, entity, EntityAuthorizationAction.READ, metricsAdapter);
|
|
83
|
+
async authorizeReadAsync(viewerContext, queryContext, evaluationContext, entity, metricsAdapter) {
|
|
84
|
+
return await this.authorizeForRulesetAsync(this.readRules, viewerContext, queryContext, evaluationContext, entity, EntityAuthorizationAction.READ, metricsAdapter);
|
|
85
85
|
}
|
|
86
86
|
/**
|
|
87
87
|
* Authorize an entity against update policy.
|
|
@@ -91,8 +91,8 @@ class EntityPrivacyPolicy {
|
|
|
91
91
|
* @returns entity if authorized
|
|
92
92
|
* @throws {@link EntityNotAuthorizedError} when not authorized
|
|
93
93
|
*/
|
|
94
|
-
async authorizeUpdateAsync(viewerContext, queryContext, entity, metricsAdapter) {
|
|
95
|
-
return await this.authorizeForRulesetAsync(this.updateRules, viewerContext, queryContext, entity, EntityAuthorizationAction.UPDATE, metricsAdapter);
|
|
94
|
+
async authorizeUpdateAsync(viewerContext, queryContext, evaluationContext, entity, metricsAdapter) {
|
|
95
|
+
return await this.authorizeForRulesetAsync(this.updateRules, viewerContext, queryContext, evaluationContext, entity, EntityAuthorizationAction.UPDATE, metricsAdapter);
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
98
|
* Authorize an entity against deletion policy.
|
|
@@ -102,15 +102,15 @@ class EntityPrivacyPolicy {
|
|
|
102
102
|
* @returns entity if authorized
|
|
103
103
|
* @throws {@link EntityNotAuthorizedError} when not authorized
|
|
104
104
|
*/
|
|
105
|
-
async authorizeDeleteAsync(viewerContext, queryContext, entity, metricsAdapter) {
|
|
106
|
-
return await this.authorizeForRulesetAsync(this.deleteRules, viewerContext, queryContext, entity, EntityAuthorizationAction.DELETE, metricsAdapter);
|
|
105
|
+
async authorizeDeleteAsync(viewerContext, queryContext, evaluationContext, entity, metricsAdapter) {
|
|
106
|
+
return await this.authorizeForRulesetAsync(this.deleteRules, viewerContext, queryContext, evaluationContext, entity, EntityAuthorizationAction.DELETE, metricsAdapter);
|
|
107
107
|
}
|
|
108
|
-
async authorizeForRulesetAsync(ruleset, viewerContext, queryContext, entity, action, metricsAdapter) {
|
|
108
|
+
async authorizeForRulesetAsync(ruleset, viewerContext, queryContext, evaluationContext, entity, action, metricsAdapter) {
|
|
109
109
|
const privacyPolicyEvaluator = this.getPrivacyPolicyEvaluator(viewerContext);
|
|
110
110
|
switch (privacyPolicyEvaluator.mode) {
|
|
111
111
|
case EntityPrivacyPolicyEvaluationMode.ENFORCE:
|
|
112
112
|
try {
|
|
113
|
-
const result = await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, entity, action);
|
|
113
|
+
const result = await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, evaluationContext, entity, action);
|
|
114
114
|
metricsAdapter.logAuthorizationEvent({
|
|
115
115
|
entityClassName: entity.constructor.name,
|
|
116
116
|
action,
|
|
@@ -133,7 +133,7 @@ class EntityPrivacyPolicy {
|
|
|
133
133
|
}
|
|
134
134
|
case EntityPrivacyPolicyEvaluationMode.ENFORCE_AND_LOG:
|
|
135
135
|
try {
|
|
136
|
-
const result = await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, entity, action);
|
|
136
|
+
const result = await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, evaluationContext, entity, action);
|
|
137
137
|
metricsAdapter.logAuthorizationEvent({
|
|
138
138
|
entityClassName: entity.constructor.name,
|
|
139
139
|
action,
|
|
@@ -157,7 +157,7 @@ class EntityPrivacyPolicy {
|
|
|
157
157
|
}
|
|
158
158
|
case EntityPrivacyPolicyEvaluationMode.DRY_RUN:
|
|
159
159
|
try {
|
|
160
|
-
const result = await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, entity, action);
|
|
160
|
+
const result = await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, evaluationContext, entity, action);
|
|
161
161
|
metricsAdapter.logAuthorizationEvent({
|
|
162
162
|
entityClassName: entity.constructor.name,
|
|
163
163
|
action,
|
|
@@ -181,10 +181,10 @@ class EntityPrivacyPolicy {
|
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
-
async authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, entity, action) {
|
|
184
|
+
async authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, evaluationContext, entity, action) {
|
|
185
185
|
for (let i = 0; i < ruleset.length; i++) {
|
|
186
186
|
const rule = ruleset[i];
|
|
187
|
-
const ruleEvaluationResult = await rule.evaluateAsync(viewerContext, queryContext, entity);
|
|
187
|
+
const ruleEvaluationResult = await rule.evaluateAsync(viewerContext, queryContext, evaluationContext, entity);
|
|
188
188
|
switch (ruleEvaluationResult) {
|
|
189
189
|
case PrivacyPolicyRule_1.RuleEvaluationResult.DENY:
|
|
190
190
|
throw new EntityNotAuthorizedError_1.default(entity, viewerContext, action, i);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPrivacyPolicy.js","sourceRoot":"","sources":["../src/EntityPrivacyPolicy.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"EntityPrivacyPolicy.js","sourceRoot":"","sources":["../src/EntityPrivacyPolicy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ISecondaryEntityCache } from './EntitySecondaryCacheLoader';
|
|
2
|
+
import IEntityGenericCacher from './IEntityGenericCacher';
|
|
3
|
+
/**
|
|
4
|
+
* A custom secondary read-through entity cache is a way to add a custom second layer of caching for a particular
|
|
5
|
+
* single entity load. One common way this may be used is to add a second layer of caching in a hot path that makes
|
|
6
|
+
* a call to {@link EntityLoader.loadManyByFieldEqualityConjunctionAsync} is guaranteed to return at most one entity.
|
|
7
|
+
*/
|
|
8
|
+
export default abstract class GenericSecondaryEntityCache<TFields, TLoadParams> implements ISecondaryEntityCache<TFields, TLoadParams> {
|
|
9
|
+
protected readonly cacher: IEntityGenericCacher<TFields>;
|
|
10
|
+
protected readonly constructCacheKey: (params: Readonly<TLoadParams>) => string;
|
|
11
|
+
constructor(cacher: IEntityGenericCacher<TFields>, constructCacheKey: (params: Readonly<TLoadParams>) => string);
|
|
12
|
+
loadManyThroughAsync(loadParamsArray: readonly Readonly<TLoadParams>[], fetcher: (fetcherLoadParamsArray: readonly Readonly<TLoadParams>[]) => Promise<ReadonlyMap<Readonly<TLoadParams>, Readonly<TFields> | null>>): Promise<ReadonlyMap<Readonly<TLoadParams>, Readonly<TFields> | null>>;
|
|
13
|
+
/**
|
|
14
|
+
* Invalidate the cache for objects cached by constructCacheKey(loadParams).
|
|
15
|
+
*
|
|
16
|
+
* @param loadParamsArray - load params to invalidate
|
|
17
|
+
*/
|
|
18
|
+
invalidateManyAsync(loadParamsArray: readonly Readonly<TLoadParams>[]): Promise<void>;
|
|
19
|
+
}
|