@expo/entity 0.60.0 → 0.61.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/src/AuthorizationResultBasedEntityAssociationLoader.d.ts +6 -6
- package/build/src/AuthorizationResultBasedEntityAssociationLoader.js +5 -10
- package/build/src/AuthorizationResultBasedEntityLoader.d.ts +9 -9
- package/build/src/AuthorizationResultBasedEntityLoader.js +27 -35
- package/build/src/AuthorizationResultBasedEntityMutator.d.ts +13 -13
- package/build/src/AuthorizationResultBasedEntityMutator.js +54 -65
- package/build/src/ComposedEntityCacheAdapter.d.ts +3 -3
- package/build/src/ComposedEntityCacheAdapter.js +15 -23
- package/build/src/ComposedSecondaryEntityCache.d.ts +1 -1
- package/build/src/ComposedSecondaryEntityCache.js +4 -12
- package/build/src/EnforcingEntityAssociationLoader.d.ts +5 -5
- package/build/src/EnforcingEntityAssociationLoader.js +6 -11
- package/build/src/EnforcingEntityCreator.d.ts +4 -4
- package/build/src/EnforcingEntityCreator.js +3 -8
- package/build/src/EnforcingEntityDeleter.d.ts +4 -4
- package/build/src/EnforcingEntityDeleter.js +3 -8
- package/build/src/EnforcingEntityLoader.d.ts +5 -5
- package/build/src/EnforcingEntityLoader.js +9 -14
- package/build/src/EnforcingEntityUpdater.d.ts +4 -4
- package/build/src/EnforcingEntityUpdater.js +3 -8
- package/build/src/Entity.d.ts +9 -9
- package/build/src/Entity.js +11 -16
- package/build/src/EntityAssociationLoader.d.ts +5 -5
- package/build/src/EntityAssociationLoader.js +5 -10
- package/build/src/EntityCompanion.d.ts +9 -9
- package/build/src/EntityCompanion.js +6 -11
- package/build/src/EntityCompanionProvider.d.ts +13 -12
- package/build/src/EntityCompanionProvider.js +13 -21
- package/build/src/EntityConfiguration.d.ts +4 -4
- package/build/src/EntityConfiguration.js +14 -23
- package/build/src/EntityConstructionUtils.d.ts +8 -8
- package/build/src/EntityConstructionUtils.js +15 -23
- package/build/src/EntityCreator.d.ts +7 -7
- package/build/src/EntityCreator.js +3 -8
- package/build/src/EntityDatabaseAdapter.d.ts +4 -4
- package/build/src/EntityDatabaseAdapter.js +19 -27
- package/build/src/EntityDeleter.d.ts +7 -7
- package/build/src/EntityDeleter.js +3 -8
- package/build/src/EntityFieldDefinition.d.ts +4 -4
- package/build/src/EntityFieldDefinition.js +5 -10
- package/build/src/EntityFields.d.ts +2 -1
- package/build/src/EntityFields.js +12 -27
- package/build/src/EntityInvalidationUtils.d.ts +8 -8
- package/build/src/EntityInvalidationUtils.js +4 -9
- package/build/src/EntityLoader.d.ts +7 -7
- package/build/src/EntityLoader.js +3 -8
- package/build/src/EntityLoaderFactory.d.ts +10 -10
- package/build/src/EntityLoaderFactory.js +7 -12
- package/build/src/EntityMutationInfo.d.ts +2 -2
- package/build/src/EntityMutationInfo.js +2 -6
- package/build/src/EntityMutationTriggerConfiguration.d.ts +4 -4
- package/build/src/EntityMutationTriggerConfiguration.js +2 -8
- package/build/src/EntityMutationValidatorConfiguration.d.ts +4 -4
- package/build/src/EntityMutationValidatorConfiguration.js +1 -6
- package/build/src/EntityMutatorFactory.d.ts +13 -13
- package/build/src/EntityMutatorFactory.js +5 -10
- package/build/src/EntityPrivacyPolicy.d.ts +7 -7
- package/build/src/EntityPrivacyPolicy.js +22 -27
- package/build/src/EntityQueryContext.d.ts +1 -1
- package/build/src/EntityQueryContext.js +11 -22
- package/build/src/EntityQueryContextProvider.d.ts +2 -1
- package/build/src/EntityQueryContextProvider.js +7 -12
- package/build/src/EntitySecondaryCacheLoader.d.ts +7 -7
- package/build/src/EntitySecondaryCacheLoader.js +4 -9
- package/build/src/EntityUpdater.d.ts +7 -7
- package/build/src/EntityUpdater.js +3 -8
- package/build/src/GenericEntityCacheAdapter.d.ts +4 -4
- package/build/src/GenericEntityCacheAdapter.js +5 -13
- package/build/src/GenericSecondaryEntityCache.d.ts +2 -2
- package/build/src/GenericSecondaryEntityCache.js +10 -18
- package/build/src/IEntityCacheAdapter.d.ts +2 -2
- package/build/src/IEntityCacheAdapter.js +1 -3
- package/build/src/IEntityCacheAdapterProvider.d.ts +2 -2
- package/build/src/IEntityCacheAdapterProvider.js +1 -3
- package/build/src/IEntityDatabaseAdapterProvider.d.ts +2 -2
- package/build/src/IEntityDatabaseAdapterProvider.js +1 -3
- package/build/src/IEntityGenericCacher.d.ts +2 -2
- package/build/src/IEntityGenericCacher.js +1 -3
- package/build/src/ReadonlyEntity.d.ts +9 -9
- package/build/src/ReadonlyEntity.js +9 -17
- package/build/src/ViewerContext.d.ts +6 -6
- package/build/src/ViewerContext.js +3 -8
- package/build/src/ViewerScopedEntityCompanion.d.ts +8 -8
- package/build/src/ViewerScopedEntityCompanion.js +5 -10
- package/build/src/ViewerScopedEntityCompanionProvider.d.ts +6 -6
- package/build/src/ViewerScopedEntityCompanionProvider.js +3 -8
- package/build/src/ViewerScopedEntityLoaderFactory.d.ts +8 -8
- package/build/src/ViewerScopedEntityLoaderFactory.js +1 -6
- package/build/src/ViewerScopedEntityMutatorFactory.d.ts +7 -7
- package/build/src/ViewerScopedEntityMutatorFactory.js +1 -6
- package/build/src/entityUtils.d.ts +1 -1
- package/build/src/entityUtils.js +9 -21
- package/build/src/errors/EntityCacheAdapterError.d.ts +1 -1
- package/build/src/errors/EntityCacheAdapterError.js +5 -11
- package/build/src/errors/EntityDatabaseAdapterError.d.ts +1 -1
- package/build/src/errors/EntityDatabaseAdapterError.js +41 -59
- package/build/src/errors/EntityError.js +5 -10
- package/build/src/errors/EntityInvalidFieldValueError.d.ts +5 -5
- package/build/src/errors/EntityInvalidFieldValueError.js +4 -9
- package/build/src/errors/EntityNotAuthorizedError.d.ts +4 -4
- package/build/src/errors/EntityNotAuthorizedError.js +6 -11
- package/build/src/errors/EntityNotFoundError.d.ts +5 -5
- package/build/src/errors/EntityNotFoundError.js +4 -9
- package/build/src/index.d.ts +77 -77
- package/build/src/index.js +77 -94
- package/build/src/internal/CompositeFieldHolder.d.ts +3 -2
- package/build/src/internal/CompositeFieldHolder.js +11 -21
- package/build/src/internal/CompositeFieldValueMap.d.ts +2 -2
- package/build/src/internal/CompositeFieldValueMap.js +7 -12
- package/build/src/internal/EntityDataManager.d.ts +6 -6
- package/build/src/internal/EntityDataManager.js +25 -33
- package/build/src/internal/EntityFieldTransformationUtils.d.ts +1 -1
- package/build/src/internal/EntityFieldTransformationUtils.js +11 -23
- package/build/src/internal/EntityLoadInterfaces.d.ts +3 -2
- package/build/src/internal/EntityLoadInterfaces.js +4 -9
- package/build/src/internal/EntityTableDataCoordinator.d.ts +8 -8
- package/build/src/internal/EntityTableDataCoordinator.js +4 -9
- package/build/src/internal/ReadThroughEntityCache.d.ts +3 -3
- package/build/src/internal/ReadThroughEntityCache.js +7 -15
- package/build/src/internal/SingleFieldHolder.d.ts +3 -2
- package/build/src/internal/SingleFieldHolder.js +9 -19
- package/build/src/metrics/EntityMetricsUtils.d.ts +3 -3
- package/build/src/metrics/EntityMetricsUtils.js +6 -14
- package/build/src/metrics/IEntityMetricsAdapter.d.ts +2 -2
- package/build/src/metrics/IEntityMetricsAdapter.js +8 -12
- package/build/src/metrics/NoOpEntityMetricsAdapter.d.ts +1 -1
- package/build/src/metrics/NoOpEntityMetricsAdapter.js +1 -6
- package/build/src/rules/AllowIfAllSubRulesAllowPrivacyPolicyRule.d.ts +5 -5
- package/build/src/rules/AllowIfAllSubRulesAllowPrivacyPolicyRule.js +5 -10
- package/build/src/rules/AllowIfAnySubRuleAllowsPrivacyPolicyRule.d.ts +5 -5
- package/build/src/rules/AllowIfAnySubRuleAllowsPrivacyPolicyRule.js +5 -10
- package/build/src/rules/AllowIfInParentCascadeDeletionPrivacyPolicyRule.d.ts +6 -6
- package/build/src/rules/AllowIfInParentCascadeDeletionPrivacyPolicyRule.js +6 -11
- package/build/src/rules/AlwaysAllowPrivacyPolicyRule.d.ts +5 -5
- package/build/src/rules/AlwaysAllowPrivacyPolicyRule.js +3 -8
- package/build/src/rules/AlwaysDenyPrivacyPolicyRule.d.ts +5 -5
- package/build/src/rules/AlwaysDenyPrivacyPolicyRule.js +3 -8
- package/build/src/rules/AlwaysSkipPrivacyPolicyRule.d.ts +5 -5
- package/build/src/rules/AlwaysSkipPrivacyPolicyRule.js +3 -8
- package/build/src/rules/EvaluateIfEntityFieldPredicatePrivacyPolicyRule.d.ts +5 -5
- package/build/src/rules/EvaluateIfEntityFieldPredicatePrivacyPolicyRule.js +3 -8
- package/build/src/rules/PrivacyPolicyRule.d.ts +4 -4
- package/build/src/rules/PrivacyPolicyRule.js +3 -8
- package/build/src/utils/EntityCreationUtils.d.ts +5 -5
- package/build/src/utils/EntityCreationUtils.js +6 -11
- package/build/src/utils/EntityPrivacyUtils.d.ts +5 -5
- package/build/src/utils/EntityPrivacyUtils.js +20 -27
- package/build/src/utils/collections/SerializableKeyMap.js +1 -6
- package/build/src/utils/collections/maps.js +11 -27
- package/build/src/utils/collections/sets.js +1 -5
- package/build/src/utils/mergeEntityMutationTriggerConfigurations.d.ts +3 -3
- package/build/src/utils/mergeEntityMutationTriggerConfigurations.js +1 -5
- package/package.json +7 -6
- package/src/AuthorizationResultBasedEntityAssociationLoader.ts +7 -6
- package/src/AuthorizationResultBasedEntityLoader.ts +19 -17
- package/src/AuthorizationResultBasedEntityMutator.ts +24 -22
- package/src/ComposedEntityCacheAdapter.ts +5 -4
- package/src/ComposedSecondaryEntityCache.ts +2 -2
- package/src/EnforcingEntityAssociationLoader.ts +7 -7
- package/src/EnforcingEntityCreator.ts +4 -4
- package/src/EnforcingEntityDeleter.ts +4 -4
- package/src/EnforcingEntityLoader.ts +8 -8
- package/src/EnforcingEntityUpdater.ts +4 -4
- package/src/Entity.ts +13 -13
- package/src/EntityAssociationLoader.ts +6 -6
- package/src/EntityCompanion.ts +13 -10
- package/src/EntityCompanionProvider.ts +15 -14
- package/src/EntityConfiguration.ts +6 -8
- package/src/EntityConstructionUtils.ts +16 -12
- package/src/EntityCreator.ts +7 -7
- package/src/EntityDatabaseAdapter.ts +6 -6
- package/src/EntityDeleter.ts +7 -7
- package/src/EntityFieldDefinition.ts +4 -4
- package/src/EntityFields.ts +3 -3
- package/src/EntityInvalidationUtils.ts +10 -10
- package/src/EntityLoader.ts +7 -7
- package/src/EntityLoaderFactory.ts +13 -10
- package/src/EntityMutationInfo.ts +2 -2
- package/src/EntityMutationTriggerConfiguration.ts +4 -4
- package/src/EntityMutationValidatorConfiguration.ts +4 -4
- package/src/EntityMutatorFactory.ts +13 -13
- package/src/EntityPrivacyPolicy.ts +9 -10
- package/src/EntityQueryContext.ts +1 -1
- package/src/EntityQueryContextProvider.ts +2 -2
- package/src/EntitySecondaryCacheLoader.ts +8 -8
- package/src/EntityUpdater.ts +7 -7
- package/src/GenericEntityCacheAdapter.ts +5 -5
- package/src/GenericSecondaryEntityCache.ts +4 -4
- package/src/IEntityCacheAdapter.ts +2 -2
- package/src/IEntityCacheAdapterProvider.ts +2 -2
- package/src/IEntityDatabaseAdapterProvider.ts +2 -2
- package/src/IEntityGenericCacher.ts +2 -2
- package/src/ReadonlyEntity.ts +11 -11
- package/src/ViewerContext.ts +8 -8
- package/src/ViewerScopedEntityCompanion.ts +8 -8
- package/src/ViewerScopedEntityCompanionProvider.ts +6 -6
- package/src/ViewerScopedEntityLoaderFactory.ts +11 -8
- package/src/ViewerScopedEntityMutatorFactory.ts +8 -8
- package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +6 -6
- package/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.ts +16 -15
- package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +21 -18
- package/src/__tests__/ComposedCacheAdapter-test.ts +8 -7
- package/src/__tests__/ComposedSecondaryEntityCache-test.ts +3 -3
- package/src/__tests__/EnforcingEntityAssociationLoader-test.ts +2 -2
- package/src/__tests__/EnforcingEntityLoader-test.ts +4 -4
- package/src/__tests__/Entity-test.ts +8 -8
- package/src/__tests__/EntityAssociationLoader-test.ts +6 -6
- package/src/__tests__/EntityCommonUseCases-test.ts +17 -13
- package/src/__tests__/EntityCompanion-test.ts +11 -11
- package/src/__tests__/EntityCompanionProvider-test.ts +8 -7
- package/src/__tests__/EntityConfiguration-test.ts +3 -3
- package/src/__tests__/EntityDatabaseAdapter-test.ts +11 -7
- package/src/__tests__/EntityEdges-test.ts +17 -19
- package/src/__tests__/EntityFields-test.ts +3 -3
- package/src/__tests__/EntityLoader-test.ts +7 -7
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +12 -11
- package/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.ts +4 -4
- package/src/__tests__/EntityMutator-test.ts +32 -36
- package/src/__tests__/EntityPrivacyPolicy-test.ts +19 -19
- package/src/__tests__/EntityQueryContext-test.ts +9 -9
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +8 -7
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +12 -12
- package/src/__tests__/GenericEntityCacheAdapter-test.ts +6 -6
- package/src/__tests__/GenericSecondaryEntityCache-test.ts +16 -18
- package/src/__tests__/ReadonlyEntity-test.ts +10 -10
- package/src/__tests__/ViewerContext-test.ts +3 -3
- package/src/__tests__/ViewerScopedEntityCompanion-test.ts +7 -7
- package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +5 -5
- package/src/__tests__/ViewerScopedEntityLoaderFactory-test.ts +5 -5
- package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +6 -6
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +9 -9
- package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +8 -8
- package/src/__tests__/entityUtils-test.ts +4 -4
- package/src/entityUtils.ts +1 -1
- package/src/errors/EntityCacheAdapterError.ts +1 -1
- package/src/errors/EntityDatabaseAdapterError.ts +1 -1
- package/src/errors/EntityInvalidFieldValueError.ts +5 -5
- package/src/errors/EntityNotAuthorizedError.ts +4 -4
- package/src/errors/EntityNotFoundError.ts +5 -5
- package/src/errors/__tests__/EntityDatabaseAdapterError-test.ts +2 -2
- package/src/errors/__tests__/EntityError-test.ts +7 -7
- package/src/index.ts +77 -77
- package/src/internal/CompositeFieldHolder.ts +6 -10
- package/src/internal/CompositeFieldValueMap.ts +3 -5
- package/src/internal/EntityDataManager.ts +11 -14
- package/src/internal/EntityFieldTransformationUtils.ts +2 -2
- package/src/internal/EntityLoadInterfaces.ts +3 -2
- package/src/internal/EntityTableDataCoordinator.ts +9 -9
- package/src/internal/ReadThroughEntityCache.ts +4 -4
- package/src/internal/SingleFieldHolder.ts +4 -8
- package/src/internal/__tests__/CompositeFieldHolder-test.ts +1 -1
- package/src/internal/__tests__/CompositeFieldValueMap-test.ts +3 -3
- package/src/internal/__tests__/EntityDataManager-test.ts +15 -18
- package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +3 -3
- package/src/internal/__tests__/ReadThroughEntityCache-test.ts +6 -6
- package/src/metrics/EntityMetricsUtils.ts +5 -5
- package/src/metrics/IEntityMetricsAdapter.ts +3 -3
- package/src/metrics/NoOpEntityMetricsAdapter.ts +2 -2
- package/src/metrics/__tests__/EntityMetricsUtils-test.ts +4 -7
- package/src/rules/AllowIfAllSubRulesAllowPrivacyPolicyRule.ts +5 -5
- package/src/rules/AllowIfAnySubRuleAllowsPrivacyPolicyRule.ts +5 -5
- package/src/rules/AllowIfInParentCascadeDeletionPrivacyPolicyRule.ts +9 -6
- package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +5 -5
- package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +5 -5
- package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +5 -5
- package/src/rules/EvaluateIfEntityFieldPredicatePrivacyPolicyRule.ts +5 -5
- package/src/rules/PrivacyPolicyRule.ts +4 -4
- package/src/rules/__tests__/AllowIfAllSubRulesAllowPrivacyPolicyRule-test.ts +8 -8
- package/src/rules/__tests__/AllowIfAnySubRuleAllowsPrivacyPolicyRule-test.ts +8 -8
- package/src/rules/__tests__/AllowIfInParentCascadeDeletionPrivacyPolicyRule-test.ts +7 -7
- package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +5 -5
- package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +5 -5
- package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +5 -5
- package/src/rules/__tests__/EvaluateIfEntityFieldPredicatePrivacyPolicyRule-test.ts +9 -8
- package/src/utils/EntityCreationUtils.ts +7 -7
- package/src/utils/EntityPrivacyUtils.ts +13 -9
- package/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.ts +6 -5
- package/src/utils/__testfixtures__/SimpleTestEntity.ts +7 -7
- package/src/utils/__testfixtures__/StubCacheAdapter.ts +6 -5
- package/src/utils/__testfixtures__/StubDatabaseAdapter.ts +6 -6
- package/src/utils/__testfixtures__/StubDatabaseAdapterProvider.ts +4 -4
- package/src/utils/__testfixtures__/StubQueryContextProvider.ts +2 -2
- package/src/utils/__testfixtures__/TSMockitoExtensions.ts +5 -5
- package/src/utils/__testfixtures__/TestEntity.ts +9 -8
- package/src/utils/__testfixtures__/TestEntity2.ts +7 -7
- package/src/utils/__testfixtures__/TestEntityWithMutationTriggers.ts +10 -10
- package/src/utils/__testfixtures__/TestViewerContext.ts +1 -1
- package/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.ts +6 -6
- package/src/utils/__testfixtures__/describeFieldTestCase.ts +1 -1
- package/src/utils/__tests__/EntityCreationUtils-test.ts +7 -7
- package/src/utils/__tests__/EntityPrivacyUtils-test.ts +20 -21
- package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +12 -12
- package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +2 -2
- package/src/utils/collections/__tests__/SerializableKeyMap-test.ts +2 -1
- package/src/utils/collections/__tests__/maps-test.ts +5 -5
- package/src/utils/collections/__tests__/sets-test.ts +1 -1
- package/src/utils/mergeEntityMutationTriggerConfigurations.ts +3 -3
- package/build/src/AuthorizationResultBasedEntityAssociationLoader.js.map +0 -1
- package/build/src/AuthorizationResultBasedEntityLoader.js.map +0 -1
- package/build/src/AuthorizationResultBasedEntityMutator.js.map +0 -1
- package/build/src/ComposedEntityCacheAdapter.js.map +0 -1
- package/build/src/ComposedSecondaryEntityCache.js.map +0 -1
- package/build/src/EnforcingEntityAssociationLoader.js.map +0 -1
- package/build/src/EnforcingEntityCreator.js.map +0 -1
- package/build/src/EnforcingEntityDeleter.js.map +0 -1
- package/build/src/EnforcingEntityLoader.js.map +0 -1
- package/build/src/EnforcingEntityUpdater.js.map +0 -1
- package/build/src/Entity.js.map +0 -1
- package/build/src/EntityAssociationLoader.js.map +0 -1
- package/build/src/EntityCompanion.js.map +0 -1
- package/build/src/EntityCompanionProvider.js.map +0 -1
- package/build/src/EntityConfiguration.js.map +0 -1
- package/build/src/EntityConstructionUtils.js.map +0 -1
- package/build/src/EntityCreator.js.map +0 -1
- package/build/src/EntityDatabaseAdapter.js.map +0 -1
- package/build/src/EntityDeleter.js.map +0 -1
- package/build/src/EntityFieldDefinition.js.map +0 -1
- package/build/src/EntityFields.js.map +0 -1
- package/build/src/EntityInvalidationUtils.js.map +0 -1
- package/build/src/EntityLoader.js.map +0 -1
- package/build/src/EntityLoaderFactory.js.map +0 -1
- package/build/src/EntityMutationInfo.js.map +0 -1
- package/build/src/EntityMutationTriggerConfiguration.js.map +0 -1
- package/build/src/EntityMutationValidatorConfiguration.js.map +0 -1
- package/build/src/EntityMutatorFactory.js.map +0 -1
- package/build/src/EntityPrivacyPolicy.js.map +0 -1
- package/build/src/EntityQueryContext.js.map +0 -1
- package/build/src/EntityQueryContextProvider.js.map +0 -1
- package/build/src/EntitySecondaryCacheLoader.js.map +0 -1
- package/build/src/EntityUpdater.js.map +0 -1
- package/build/src/GenericEntityCacheAdapter.js.map +0 -1
- package/build/src/GenericSecondaryEntityCache.js.map +0 -1
- package/build/src/IEntityCacheAdapter.js.map +0 -1
- package/build/src/IEntityCacheAdapterProvider.js.map +0 -1
- package/build/src/IEntityDatabaseAdapterProvider.js.map +0 -1
- package/build/src/IEntityGenericCacher.js.map +0 -1
- package/build/src/ReadonlyEntity.js.map +0 -1
- package/build/src/ViewerContext.js.map +0 -1
- package/build/src/ViewerScopedEntityCompanion.js.map +0 -1
- package/build/src/ViewerScopedEntityCompanionProvider.js.map +0 -1
- package/build/src/ViewerScopedEntityLoaderFactory.js.map +0 -1
- package/build/src/ViewerScopedEntityMutatorFactory.js.map +0 -1
- package/build/src/entityUtils.js.map +0 -1
- package/build/src/errors/EntityCacheAdapterError.js.map +0 -1
- package/build/src/errors/EntityDatabaseAdapterError.js.map +0 -1
- package/build/src/errors/EntityError.js.map +0 -1
- package/build/src/errors/EntityInvalidFieldValueError.js.map +0 -1
- package/build/src/errors/EntityNotAuthorizedError.js.map +0 -1
- package/build/src/errors/EntityNotFoundError.js.map +0 -1
- package/build/src/index.js.map +0 -1
- package/build/src/internal/CompositeFieldHolder.js.map +0 -1
- package/build/src/internal/CompositeFieldValueMap.js.map +0 -1
- package/build/src/internal/EntityDataManager.js.map +0 -1
- package/build/src/internal/EntityFieldTransformationUtils.js.map +0 -1
- package/build/src/internal/EntityLoadInterfaces.js.map +0 -1
- package/build/src/internal/EntityTableDataCoordinator.js.map +0 -1
- package/build/src/internal/ReadThroughEntityCache.js.map +0 -1
- package/build/src/internal/SingleFieldHolder.js.map +0 -1
- package/build/src/metrics/EntityMetricsUtils.js.map +0 -1
- package/build/src/metrics/IEntityMetricsAdapter.js.map +0 -1
- package/build/src/metrics/NoOpEntityMetricsAdapter.js.map +0 -1
- package/build/src/rules/AllowIfAllSubRulesAllowPrivacyPolicyRule.js.map +0 -1
- package/build/src/rules/AllowIfAnySubRuleAllowsPrivacyPolicyRule.js.map +0 -1
- package/build/src/rules/AllowIfInParentCascadeDeletionPrivacyPolicyRule.js.map +0 -1
- package/build/src/rules/AlwaysAllowPrivacyPolicyRule.js.map +0 -1
- package/build/src/rules/AlwaysDenyPrivacyPolicyRule.js.map +0 -1
- package/build/src/rules/AlwaysSkipPrivacyPolicyRule.js.map +0 -1
- package/build/src/rules/EvaluateIfEntityFieldPredicatePrivacyPolicyRule.js.map +0 -1
- package/build/src/rules/PrivacyPolicyRule.js.map +0 -1
- package/build/src/utils/EntityCreationUtils.js.map +0 -1
- package/build/src/utils/EntityPrivacyUtils.js.map +0 -1
- package/build/src/utils/collections/SerializableKeyMap.js.map +0 -1
- package/build/src/utils/collections/maps.js.map +0 -1
- package/build/src/utils/collections/sets.js.map +0 -1
- package/build/src/utils/mergeEntityMutationTriggerConfigurations.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EntityMetricsAuthorizationEvent, EntityMetricsLoadEvent, EntityMetricsMutationEvent, IEntityMetricsAdapter, IncrementLoadCountEvent } from './IEntityMetricsAdapter';
|
|
1
|
+
import type { EntityMetricsAuthorizationEvent, EntityMetricsLoadEvent, EntityMetricsMutationEvent, IEntityMetricsAdapter, IncrementLoadCountEvent } from './IEntityMetricsAdapter.ts';
|
|
2
2
|
export declare class NoOpEntityMetricsAdapter implements IEntityMetricsAdapter {
|
|
3
3
|
logAuthorizationEvent(_authorizationEvent: EntityMetricsAuthorizationEvent): void;
|
|
4
4
|
logDataManagerLoadEvent(_loadEvent: EntityMetricsLoadEvent): void;
|
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NoOpEntityMetricsAdapter = void 0;
|
|
4
|
-
class NoOpEntityMetricsAdapter {
|
|
1
|
+
export class NoOpEntityMetricsAdapter {
|
|
5
2
|
logAuthorizationEvent(_authorizationEvent) { }
|
|
6
3
|
logDataManagerLoadEvent(_loadEvent) { }
|
|
7
4
|
logMutatorMutationEvent(_mutationEvent) { }
|
|
8
5
|
incrementDataManagerLoadCount(_incrementLoadCountEvent) { }
|
|
9
6
|
}
|
|
10
|
-
exports.NoOpEntityMetricsAdapter = NoOpEntityMetricsAdapter;
|
|
11
|
-
//# sourceMappingURL=NoOpEntityMetricsAdapter.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy';
|
|
2
|
-
import { EntityQueryContext } from '../EntityQueryContext';
|
|
3
|
-
import { ReadonlyEntity } from '../ReadonlyEntity';
|
|
4
|
-
import { ViewerContext } from '../ViewerContext';
|
|
5
|
-
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule';
|
|
1
|
+
import type { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy.ts';
|
|
2
|
+
import type { EntityQueryContext } from '../EntityQueryContext.ts';
|
|
3
|
+
import type { ReadonlyEntity } from '../ReadonlyEntity.ts';
|
|
4
|
+
import type { ViewerContext } from '../ViewerContext.ts';
|
|
5
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule.ts';
|
|
6
6
|
export declare class AllowIfAllSubRulesAllowPrivacyPolicyRule<TFields extends object, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> extends PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
|
|
7
7
|
private readonly subRules;
|
|
8
8
|
constructor(subRules: PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>[]);
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.AllowIfAllSubRulesAllowPrivacyPolicyRule = void 0;
|
|
4
|
-
const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
|
|
5
|
-
class AllowIfAllSubRulesAllowPrivacyPolicyRule extends PrivacyPolicyRule_1.PrivacyPolicyRule {
|
|
1
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from "./PrivacyPolicyRule.js";
|
|
2
|
+
export class AllowIfAllSubRulesAllowPrivacyPolicyRule extends PrivacyPolicyRule {
|
|
6
3
|
subRules;
|
|
7
4
|
constructor(subRules) {
|
|
8
5
|
super();
|
|
@@ -10,10 +7,8 @@ class AllowIfAllSubRulesAllowPrivacyPolicyRule extends PrivacyPolicyRule_1.Priva
|
|
|
10
7
|
}
|
|
11
8
|
async evaluateAsync(viewerContext, queryContext, evaluationContext, entity) {
|
|
12
9
|
const results = await Promise.all(this.subRules.map((subRule) => subRule.evaluateAsync(viewerContext, queryContext, evaluationContext, entity)));
|
|
13
|
-
return results.every((result) => result ===
|
|
14
|
-
?
|
|
15
|
-
:
|
|
10
|
+
return results.every((result) => result === RuleEvaluationResult.ALLOW)
|
|
11
|
+
? RuleEvaluationResult.ALLOW
|
|
12
|
+
: RuleEvaluationResult.SKIP;
|
|
16
13
|
}
|
|
17
14
|
}
|
|
18
|
-
exports.AllowIfAllSubRulesAllowPrivacyPolicyRule = AllowIfAllSubRulesAllowPrivacyPolicyRule;
|
|
19
|
-
//# sourceMappingURL=AllowIfAllSubRulesAllowPrivacyPolicyRule.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy';
|
|
2
|
-
import { EntityQueryContext } from '../EntityQueryContext';
|
|
3
|
-
import { ReadonlyEntity } from '../ReadonlyEntity';
|
|
4
|
-
import { ViewerContext } from '../ViewerContext';
|
|
5
|
-
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule';
|
|
1
|
+
import type { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy.ts';
|
|
2
|
+
import type { EntityQueryContext } from '../EntityQueryContext.ts';
|
|
3
|
+
import type { ReadonlyEntity } from '../ReadonlyEntity.ts';
|
|
4
|
+
import type { ViewerContext } from '../ViewerContext.ts';
|
|
5
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule.ts';
|
|
6
6
|
export declare class AllowIfAnySubRuleAllowsPrivacyPolicyRule<TFields extends object, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> extends PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
|
|
7
7
|
private readonly subRules;
|
|
8
8
|
constructor(subRules: PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>[]);
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.AllowIfAnySubRuleAllowsPrivacyPolicyRule = void 0;
|
|
4
|
-
const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
|
|
5
|
-
class AllowIfAnySubRuleAllowsPrivacyPolicyRule extends PrivacyPolicyRule_1.PrivacyPolicyRule {
|
|
1
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from "./PrivacyPolicyRule.js";
|
|
2
|
+
export class AllowIfAnySubRuleAllowsPrivacyPolicyRule extends PrivacyPolicyRule {
|
|
6
3
|
subRules;
|
|
7
4
|
constructor(subRules) {
|
|
8
5
|
super();
|
|
@@ -10,10 +7,8 @@ class AllowIfAnySubRuleAllowsPrivacyPolicyRule extends PrivacyPolicyRule_1.Priva
|
|
|
10
7
|
}
|
|
11
8
|
async evaluateAsync(viewerContext, queryContext, evaluationContext, entity) {
|
|
12
9
|
const results = await Promise.all(this.subRules.map((subRule) => subRule.evaluateAsync(viewerContext, queryContext, evaluationContext, entity)));
|
|
13
|
-
return results.includes(
|
|
14
|
-
?
|
|
15
|
-
:
|
|
10
|
+
return results.includes(RuleEvaluationResult.ALLOW)
|
|
11
|
+
? RuleEvaluationResult.ALLOW
|
|
12
|
+
: RuleEvaluationResult.SKIP;
|
|
16
13
|
}
|
|
17
14
|
}
|
|
18
|
-
exports.AllowIfAnySubRuleAllowsPrivacyPolicyRule = AllowIfAnySubRuleAllowsPrivacyPolicyRule;
|
|
19
|
-
//# sourceMappingURL=AllowIfAnySubRuleAllowsPrivacyPolicyRule.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { IEntityClass } from '../Entity';
|
|
2
|
-
import { EntityPrivacyPolicy, EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy';
|
|
3
|
-
import { EntityQueryContext } from '../EntityQueryContext';
|
|
4
|
-
import { ReadonlyEntity } from '../ReadonlyEntity';
|
|
5
|
-
import { ViewerContext } from '../ViewerContext';
|
|
6
|
-
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule';
|
|
1
|
+
import type { IEntityClass } from '../Entity.ts';
|
|
2
|
+
import type { EntityPrivacyPolicy, EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy.ts';
|
|
3
|
+
import type { EntityQueryContext } from '../EntityQueryContext.ts';
|
|
4
|
+
import type { ReadonlyEntity } from '../ReadonlyEntity.ts';
|
|
5
|
+
import type { ViewerContext } from '../ViewerContext.ts';
|
|
6
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule.ts';
|
|
7
7
|
/**
|
|
8
8
|
* Directive for specifying the parent relationship in AllowIfInParentCascadeDeletionPrivacyPolicyRule.
|
|
9
9
|
*/
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AllowIfInParentCascadeDeletionPrivacyPolicyRule = void 0;
|
|
4
|
-
const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
|
|
1
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from "./PrivacyPolicyRule.js";
|
|
5
2
|
/**
|
|
6
3
|
* A generic privacy policy rule that allows when an entity is being authorized
|
|
7
4
|
* as part of a cascading delete from a parent entity. Handles two cases:
|
|
@@ -38,7 +35,7 @@ const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
|
|
|
38
35
|
* }
|
|
39
36
|
* ```
|
|
40
37
|
*/
|
|
41
|
-
class AllowIfInParentCascadeDeletionPrivacyPolicyRule extends
|
|
38
|
+
export class AllowIfInParentCascadeDeletionPrivacyPolicyRule extends PrivacyPolicyRule {
|
|
42
39
|
directive;
|
|
43
40
|
constructor(directive) {
|
|
44
41
|
super();
|
|
@@ -48,7 +45,7 @@ class AllowIfInParentCascadeDeletionPrivacyPolicyRule extends PrivacyPolicyRule_
|
|
|
48
45
|
const parentEntityClass = this.directive.parentEntityClass;
|
|
49
46
|
const deleteCause = evaluationContext.cascadingDeleteCause;
|
|
50
47
|
if (!deleteCause || !(deleteCause.entity instanceof parentEntityClass)) {
|
|
51
|
-
return
|
|
48
|
+
return RuleEvaluationResult.SKIP;
|
|
52
49
|
}
|
|
53
50
|
const entityBeingDeleted = deleteCause.entity;
|
|
54
51
|
// allow if parent foreign key field matches specified field in the entity being authorized
|
|
@@ -58,7 +55,7 @@ class AllowIfInParentCascadeDeletionPrivacyPolicyRule extends PrivacyPolicyRule_
|
|
|
58
55
|
: entityBeingDeleted.getID();
|
|
59
56
|
if (valueInThisEntityReferencingParent &&
|
|
60
57
|
valueInThisEntityReferencingParent === valueInParent) {
|
|
61
|
-
return
|
|
58
|
+
return RuleEvaluationResult.ALLOW;
|
|
62
59
|
}
|
|
63
60
|
// allow if parent foreign key field matches specified field in the entity being authorized, and the
|
|
64
61
|
// field in the entity being authorized has been null'ed out due to cascading set null
|
|
@@ -66,10 +63,8 @@ class AllowIfInParentCascadeDeletionPrivacyPolicyRule extends PrivacyPolicyRule_
|
|
|
66
63
|
if (valueInPreviousValueOfThisEntityReferencingParent &&
|
|
67
64
|
valueInPreviousValueOfThisEntityReferencingParent === valueInParent &&
|
|
68
65
|
valueInThisEntityReferencingParent === null) {
|
|
69
|
-
return
|
|
66
|
+
return RuleEvaluationResult.ALLOW;
|
|
70
67
|
}
|
|
71
|
-
return
|
|
68
|
+
return RuleEvaluationResult.SKIP;
|
|
72
69
|
}
|
|
73
70
|
}
|
|
74
|
-
exports.AllowIfInParentCascadeDeletionPrivacyPolicyRule = AllowIfInParentCascadeDeletionPrivacyPolicyRule;
|
|
75
|
-
//# sourceMappingURL=AllowIfInParentCascadeDeletionPrivacyPolicyRule.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy';
|
|
2
|
-
import { EntityQueryContext } from '../EntityQueryContext';
|
|
3
|
-
import { ReadonlyEntity } from '../ReadonlyEntity';
|
|
4
|
-
import { ViewerContext } from '../ViewerContext';
|
|
5
|
-
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule';
|
|
1
|
+
import type { EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy.ts';
|
|
2
|
+
import type { EntityQueryContext } from '../EntityQueryContext.ts';
|
|
3
|
+
import type { ReadonlyEntity } from '../ReadonlyEntity.ts';
|
|
4
|
+
import type { ViewerContext } from '../ViewerContext.ts';
|
|
5
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule.ts';
|
|
6
6
|
/**
|
|
7
7
|
* Privacy policy rule that always allows.
|
|
8
8
|
*/
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AlwaysAllowPrivacyPolicyRule = void 0;
|
|
4
|
-
const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
|
|
1
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from "./PrivacyPolicyRule.js";
|
|
5
2
|
/**
|
|
6
3
|
* Privacy policy rule that always allows.
|
|
7
4
|
*/
|
|
8
|
-
class AlwaysAllowPrivacyPolicyRule extends
|
|
5
|
+
export class AlwaysAllowPrivacyPolicyRule extends PrivacyPolicyRule {
|
|
9
6
|
async evaluateAsync(_viewerContext, _queryContext, _evaluationContext, _entity) {
|
|
10
|
-
return
|
|
7
|
+
return RuleEvaluationResult.ALLOW;
|
|
11
8
|
}
|
|
12
9
|
}
|
|
13
|
-
exports.AlwaysAllowPrivacyPolicyRule = AlwaysAllowPrivacyPolicyRule;
|
|
14
|
-
//# sourceMappingURL=AlwaysAllowPrivacyPolicyRule.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy';
|
|
2
|
-
import { EntityQueryContext } from '../EntityQueryContext';
|
|
3
|
-
import { ReadonlyEntity } from '../ReadonlyEntity';
|
|
4
|
-
import { ViewerContext } from '../ViewerContext';
|
|
5
|
-
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule';
|
|
1
|
+
import type { EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy.ts';
|
|
2
|
+
import type { EntityQueryContext } from '../EntityQueryContext.ts';
|
|
3
|
+
import type { ReadonlyEntity } from '../ReadonlyEntity.ts';
|
|
4
|
+
import type { ViewerContext } from '../ViewerContext.ts';
|
|
5
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule.ts';
|
|
6
6
|
/**
|
|
7
7
|
* Privacy policy rule that always denies.
|
|
8
8
|
*/
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AlwaysDenyPrivacyPolicyRule = void 0;
|
|
4
|
-
const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
|
|
1
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from "./PrivacyPolicyRule.js";
|
|
5
2
|
/**
|
|
6
3
|
* Privacy policy rule that always denies.
|
|
7
4
|
*/
|
|
8
|
-
class AlwaysDenyPrivacyPolicyRule extends
|
|
5
|
+
export class AlwaysDenyPrivacyPolicyRule extends PrivacyPolicyRule {
|
|
9
6
|
async evaluateAsync(_viewerContext, _queryContext, _evaluationContext, _entity) {
|
|
10
|
-
return
|
|
7
|
+
return RuleEvaluationResult.DENY;
|
|
11
8
|
}
|
|
12
9
|
}
|
|
13
|
-
exports.AlwaysDenyPrivacyPolicyRule = AlwaysDenyPrivacyPolicyRule;
|
|
14
|
-
//# sourceMappingURL=AlwaysDenyPrivacyPolicyRule.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy';
|
|
2
|
-
import { EntityQueryContext } from '../EntityQueryContext';
|
|
3
|
-
import { ReadonlyEntity } from '../ReadonlyEntity';
|
|
4
|
-
import { ViewerContext } from '../ViewerContext';
|
|
5
|
-
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule';
|
|
1
|
+
import type { EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy.ts';
|
|
2
|
+
import type { EntityQueryContext } from '../EntityQueryContext.ts';
|
|
3
|
+
import type { ReadonlyEntity } from '../ReadonlyEntity.ts';
|
|
4
|
+
import type { ViewerContext } from '../ViewerContext.ts';
|
|
5
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule.ts';
|
|
6
6
|
/**
|
|
7
7
|
* A no-op policy rule that always skips.
|
|
8
8
|
*/
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AlwaysSkipPrivacyPolicyRule = void 0;
|
|
4
|
-
const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
|
|
1
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from "./PrivacyPolicyRule.js";
|
|
5
2
|
/**
|
|
6
3
|
* A no-op policy rule that always skips.
|
|
7
4
|
*/
|
|
8
|
-
class AlwaysSkipPrivacyPolicyRule extends
|
|
5
|
+
export class AlwaysSkipPrivacyPolicyRule extends PrivacyPolicyRule {
|
|
9
6
|
async evaluateAsync(_viewerContext, _queryContext, _evaluationContext, _entity) {
|
|
10
|
-
return
|
|
7
|
+
return RuleEvaluationResult.SKIP;
|
|
11
8
|
}
|
|
12
9
|
}
|
|
13
|
-
exports.AlwaysSkipPrivacyPolicyRule = AlwaysSkipPrivacyPolicyRule;
|
|
14
|
-
//# sourceMappingURL=AlwaysSkipPrivacyPolicyRule.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy';
|
|
2
|
-
import { EntityQueryContext } from '../EntityQueryContext';
|
|
3
|
-
import { ReadonlyEntity } from '../ReadonlyEntity';
|
|
4
|
-
import { ViewerContext } from '../ViewerContext';
|
|
5
|
-
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule';
|
|
1
|
+
import type { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy.ts';
|
|
2
|
+
import type { EntityQueryContext } from '../EntityQueryContext.ts';
|
|
3
|
+
import type { ReadonlyEntity } from '../ReadonlyEntity.ts';
|
|
4
|
+
import type { ViewerContext } from '../ViewerContext.ts';
|
|
5
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule.ts';
|
|
6
6
|
export declare class EvaluateIfEntityFieldPredicatePrivacyPolicyRule<TFields extends object, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, N extends TSelectedFields, TSelectedFields extends keyof TFields = keyof TFields> extends PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
|
|
7
7
|
private readonly fieldName;
|
|
8
8
|
private readonly shouldEvaluatePredicate;
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.EvaluateIfEntityFieldPredicatePrivacyPolicyRule = void 0;
|
|
4
|
-
const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
|
|
5
|
-
class EvaluateIfEntityFieldPredicatePrivacyPolicyRule extends PrivacyPolicyRule_1.PrivacyPolicyRule {
|
|
1
|
+
import { PrivacyPolicyRule, RuleEvaluationResult } from "./PrivacyPolicyRule.js";
|
|
2
|
+
export class EvaluateIfEntityFieldPredicatePrivacyPolicyRule extends PrivacyPolicyRule {
|
|
6
3
|
fieldName;
|
|
7
4
|
shouldEvaluatePredicate;
|
|
8
5
|
rule;
|
|
@@ -16,8 +13,6 @@ class EvaluateIfEntityFieldPredicatePrivacyPolicyRule extends PrivacyPolicyRule_
|
|
|
16
13
|
const fieldValue = entity.getField(this.fieldName);
|
|
17
14
|
return this.shouldEvaluatePredicate(fieldValue)
|
|
18
15
|
? await this.rule.evaluateAsync(viewerContext, queryContext, evaluationContext, entity)
|
|
19
|
-
:
|
|
16
|
+
: RuleEvaluationResult.SKIP;
|
|
20
17
|
}
|
|
21
18
|
}
|
|
22
|
-
exports.EvaluateIfEntityFieldPredicatePrivacyPolicyRule = EvaluateIfEntityFieldPredicatePrivacyPolicyRule;
|
|
23
|
-
//# sourceMappingURL=EvaluateIfEntityFieldPredicatePrivacyPolicyRule.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy';
|
|
2
|
-
import { EntityQueryContext } from '../EntityQueryContext';
|
|
3
|
-
import { ReadonlyEntity } from '../ReadonlyEntity';
|
|
4
|
-
import { ViewerContext } from '../ViewerContext';
|
|
1
|
+
import type { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy.ts';
|
|
2
|
+
import type { EntityQueryContext } from '../EntityQueryContext.ts';
|
|
3
|
+
import type { ReadonlyEntity } from '../ReadonlyEntity.ts';
|
|
4
|
+
import type { ViewerContext } from '../ViewerContext.ts';
|
|
5
5
|
export declare enum RuleEvaluationResult {
|
|
6
6
|
/**
|
|
7
7
|
* Deny viewer access to the entity.
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PrivacyPolicyRule = exports.RuleEvaluationResult = void 0;
|
|
4
|
-
var RuleEvaluationResult;
|
|
1
|
+
export var RuleEvaluationResult;
|
|
5
2
|
(function (RuleEvaluationResult) {
|
|
6
3
|
/**
|
|
7
4
|
* Deny viewer access to the entity.
|
|
@@ -15,7 +12,7 @@ var RuleEvaluationResult;
|
|
|
15
12
|
* Allow viewer access to the entity.
|
|
16
13
|
*/
|
|
17
14
|
RuleEvaluationResult[RuleEvaluationResult["ALLOW"] = 1] = "ALLOW";
|
|
18
|
-
})(RuleEvaluationResult || (
|
|
15
|
+
})(RuleEvaluationResult || (RuleEvaluationResult = {}));
|
|
19
16
|
/**
|
|
20
17
|
* A single unit of which declarative privacy policies are composed, allowing for simple
|
|
21
18
|
* expression and testing of authorization logic.
|
|
@@ -32,7 +29,5 @@ var RuleEvaluationResult;
|
|
|
32
29
|
* - Blocking. For example, a user blocks another user from seeing their posts, and the rule
|
|
33
30
|
* would be named something like `DenyIfViewerHasBeenBlockedPrivacyPolicyRule`.
|
|
34
31
|
*/
|
|
35
|
-
class PrivacyPolicyRule {
|
|
32
|
+
export class PrivacyPolicyRule {
|
|
36
33
|
}
|
|
37
|
-
exports.PrivacyPolicyRule = PrivacyPolicyRule;
|
|
38
|
-
//# sourceMappingURL=PrivacyPolicyRule.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { IEntityClass } from '../Entity';
|
|
2
|
-
import { EntityPrivacyPolicy } from '../EntityPrivacyPolicy';
|
|
3
|
-
import { EntityTransactionalQueryContext } from '../EntityQueryContext';
|
|
4
|
-
import { ReadonlyEntity } from '../ReadonlyEntity';
|
|
5
|
-
import { ViewerContext } from '../ViewerContext';
|
|
1
|
+
import type { IEntityClass } from '../Entity.ts';
|
|
2
|
+
import type { EntityPrivacyPolicy } from '../EntityPrivacyPolicy.ts';
|
|
3
|
+
import type { EntityTransactionalQueryContext } from '../EntityQueryContext.ts';
|
|
4
|
+
import type { ReadonlyEntity } from '../ReadonlyEntity.ts';
|
|
5
|
+
import type { ViewerContext } from '../ViewerContext.ts';
|
|
6
6
|
/**
|
|
7
7
|
* Create an entity if it doesn't exist, or get the existing entity if it does.
|
|
8
8
|
*/
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.createOrGetExistingAsync = createOrGetExistingAsync;
|
|
4
|
-
exports.createWithUniqueConstraintRecoveryAsync = createWithUniqueConstraintRecoveryAsync;
|
|
5
|
-
const EntityDatabaseAdapterError_1 = require("../errors/EntityDatabaseAdapterError");
|
|
6
|
-
const EntityNotFoundError_1 = require("../errors/EntityNotFoundError");
|
|
1
|
+
import { EntityDatabaseAdapterUniqueConstraintError } from "../errors/EntityDatabaseAdapterError.js";
|
|
2
|
+
import { EntityNotFoundError } from "../errors/EntityNotFoundError.js";
|
|
7
3
|
/**
|
|
8
4
|
* Create an entity if it doesn't exist, or get the existing entity if it does.
|
|
9
5
|
*/
|
|
10
|
-
async function createOrGetExistingAsync(viewerContext, entityClass, getAsync, getArgs, createAsync, createArgs, queryContext) {
|
|
6
|
+
export async function createOrGetExistingAsync(viewerContext, entityClass, getAsync, getArgs, createAsync, createArgs, queryContext) {
|
|
11
7
|
if (!queryContext) {
|
|
12
8
|
const maybeEntity = await getAsync(viewerContext, getArgs);
|
|
13
9
|
if (maybeEntity) {
|
|
@@ -31,7 +27,7 @@ async function createOrGetExistingAsync(viewerContext, entityClass, getAsync, ge
|
|
|
31
27
|
* Account for concurrent requests that may try to create the same entity.
|
|
32
28
|
* Return the existing entity if we get a Unique Constraint error.
|
|
33
29
|
*/
|
|
34
|
-
async function createWithUniqueConstraintRecoveryAsync(viewerContext, entityClass, getAsync, getArgs, createAsync, createArgs, queryContext) {
|
|
30
|
+
export async function createWithUniqueConstraintRecoveryAsync(viewerContext, entityClass, getAsync, getArgs, createAsync, createArgs, queryContext) {
|
|
35
31
|
try {
|
|
36
32
|
if (!queryContext) {
|
|
37
33
|
return await createAsync(viewerContext, createArgs);
|
|
@@ -39,10 +35,10 @@ async function createWithUniqueConstraintRecoveryAsync(viewerContext, entityClas
|
|
|
39
35
|
return await queryContext.runInNestedTransactionAsync((nestedQueryContext) => createAsync(viewerContext, createArgs, nestedQueryContext));
|
|
40
36
|
}
|
|
41
37
|
catch (e) {
|
|
42
|
-
if (e instanceof
|
|
38
|
+
if (e instanceof EntityDatabaseAdapterUniqueConstraintError) {
|
|
43
39
|
const entity = await getAsync(viewerContext, getArgs, queryContext);
|
|
44
40
|
if (!entity) {
|
|
45
|
-
throw new
|
|
41
|
+
throw new EntityNotFoundError(`Expected entity to exist after unique constraint error: ${entityClass.name}`);
|
|
46
42
|
}
|
|
47
43
|
return entity;
|
|
48
44
|
}
|
|
@@ -51,4 +47,3 @@ async function createWithUniqueConstraintRecoveryAsync(viewerContext, entityClas
|
|
|
51
47
|
}
|
|
52
48
|
}
|
|
53
49
|
}
|
|
54
|
-
//# sourceMappingURL=EntityCreationUtils.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Entity, IEntityClass } from '../Entity';
|
|
2
|
-
import { EntityPrivacyPolicy } from '../EntityPrivacyPolicy';
|
|
3
|
-
import { EntityQueryContext } from '../EntityQueryContext';
|
|
4
|
-
import { ViewerContext } from '../ViewerContext';
|
|
5
|
-
import { EntityNotAuthorizedError } from '../errors/EntityNotAuthorizedError';
|
|
1
|
+
import type { Entity, IEntityClass } from '../Entity.ts';
|
|
2
|
+
import type { EntityPrivacyPolicy } from '../EntityPrivacyPolicy.ts';
|
|
3
|
+
import type { EntityQueryContext } from '../EntityQueryContext.ts';
|
|
4
|
+
import type { ViewerContext } from '../ViewerContext.ts';
|
|
5
|
+
import { EntityNotAuthorizedError } from '../errors/EntityNotAuthorizedError.ts';
|
|
6
6
|
export type EntityPrivacyEvaluationResultSuccess = {
|
|
7
7
|
allowed: true;
|
|
8
8
|
};
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.canViewerDeleteAsync = canViewerDeleteAsync;
|
|
6
|
-
exports.getCanViewerDeleteResultAsync = getCanViewerDeleteResultAsync;
|
|
7
|
-
const results_1 = require("@expo/results");
|
|
8
|
-
const EntityFieldDefinition_1 = require("../EntityFieldDefinition");
|
|
9
|
-
const entityUtils_1 = require("../entityUtils");
|
|
10
|
-
const EntityNotAuthorizedError_1 = require("../errors/EntityNotAuthorizedError");
|
|
1
|
+
import { asyncResult } from '@expo/results';
|
|
2
|
+
import { EntityEdgeDeletionAuthorizationInferenceBehavior, EntityEdgeDeletionBehavior, } from "../EntityFieldDefinition.js";
|
|
3
|
+
import { failedResults, partitionArray } from "../entityUtils.js";
|
|
4
|
+
import { EntityNotAuthorizedError } from "../errors/EntityNotAuthorizedError.js";
|
|
11
5
|
/**
|
|
12
6
|
* Check whether an entity loaded by a viewer can be updated by that same viewer.
|
|
13
7
|
*
|
|
@@ -25,7 +19,7 @@ const EntityNotAuthorizedError_1 = require("../errors/EntityNotAuthorizedError")
|
|
|
25
19
|
* @param sourceEntity - entity loaded by viewer
|
|
26
20
|
* @param queryContext - query context in which to perform the check
|
|
27
21
|
*/
|
|
28
|
-
async function canViewerUpdateAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
22
|
+
export async function canViewerUpdateAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
29
23
|
.getViewerContext()
|
|
30
24
|
.getViewerScopedEntityCompanionForClass(entityClass)
|
|
31
25
|
.getQueryContextProvider()
|
|
@@ -42,7 +36,7 @@ async function canViewerUpdateAsync(entityClass, sourceEntity, queryContext = so
|
|
|
42
36
|
* @param sourceEntity - entity loaded by viewer
|
|
43
37
|
* @param queryContext - query context in which to perform the check
|
|
44
38
|
*/
|
|
45
|
-
async function getCanViewerUpdateResultAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
39
|
+
export async function getCanViewerUpdateResultAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
46
40
|
.getViewerContext()
|
|
47
41
|
.getViewerScopedEntityCompanionForClass(entityClass)
|
|
48
42
|
.getQueryContextProvider()
|
|
@@ -54,9 +48,9 @@ async function canViewerUpdateInternalAsync(entityClass, sourceEntity, evaluatio
|
|
|
54
48
|
.getViewerContext()
|
|
55
49
|
.getViewerScopedEntityCompanionForClass(entityClass);
|
|
56
50
|
const privacyPolicy = companion.entityCompanion.privacyPolicy;
|
|
57
|
-
const evaluationResult = await
|
|
51
|
+
const evaluationResult = await asyncResult(privacyPolicy.authorizeUpdateAsync(sourceEntity.getViewerContext(), queryContext, evaluationContext, sourceEntity, companion.getMetricsAdapter()));
|
|
58
52
|
if (!evaluationResult.ok) {
|
|
59
|
-
if (evaluationResult.reason instanceof
|
|
53
|
+
if (evaluationResult.reason instanceof EntityNotAuthorizedError) {
|
|
60
54
|
return { allowed: false, authorizationErrors: [evaluationResult.reason] };
|
|
61
55
|
}
|
|
62
56
|
else {
|
|
@@ -75,7 +69,7 @@ async function canViewerUpdateInternalAsync(entityClass, sourceEntity, evaluatio
|
|
|
75
69
|
* @param sourceEntity - entity loaded by viewer
|
|
76
70
|
* @param queryContext - query context in which to perform the check
|
|
77
71
|
*/
|
|
78
|
-
async function canViewerDeleteAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
72
|
+
export async function canViewerDeleteAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
79
73
|
.getViewerContext()
|
|
80
74
|
.getViewerScopedEntityCompanionForClass(entityClass)
|
|
81
75
|
.getQueryContextProvider()
|
|
@@ -92,7 +86,7 @@ async function canViewerDeleteAsync(entityClass, sourceEntity, queryContext = so
|
|
|
92
86
|
* @param sourceEntity - entity loaded by viewer
|
|
93
87
|
* @param queryContext - query context in which to perform the check
|
|
94
88
|
*/
|
|
95
|
-
async function getCanViewerDeleteResultAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
89
|
+
export async function getCanViewerDeleteResultAsync(entityClass, sourceEntity, queryContext = sourceEntity
|
|
96
90
|
.getViewerContext()
|
|
97
91
|
.getViewerScopedEntityCompanionForClass(entityClass)
|
|
98
92
|
.getQueryContextProvider()
|
|
@@ -106,9 +100,9 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, evaluatio
|
|
|
106
100
|
.getViewerContext()
|
|
107
101
|
.getViewerScopedEntityCompanionForClass(entityClass);
|
|
108
102
|
const privacyPolicy = viewerScopedCompanion.entityCompanion.privacyPolicy;
|
|
109
|
-
const evaluationResult = await
|
|
103
|
+
const evaluationResult = await asyncResult(privacyPolicy.authorizeDeleteAsync(sourceEntity.getViewerContext(), queryContext, evaluationContext, sourceEntity, viewerScopedCompanion.getMetricsAdapter()));
|
|
110
104
|
if (!evaluationResult.ok) {
|
|
111
|
-
if (evaluationResult.reason instanceof
|
|
105
|
+
if (evaluationResult.reason instanceof EntityNotAuthorizedError) {
|
|
112
106
|
return { allowed: false, authorizationErrors: [evaluationResult.reason] };
|
|
113
107
|
}
|
|
114
108
|
else {
|
|
@@ -154,7 +148,7 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, evaluatio
|
|
|
154
148
|
const edgeDeletionPermissionInferenceBehavior = association.edgeDeletionAuthorizationInferenceBehavior;
|
|
155
149
|
let entityResultsToCheckForInboundEdge;
|
|
156
150
|
if (edgeDeletionPermissionInferenceBehavior ===
|
|
157
|
-
|
|
151
|
+
EntityEdgeDeletionAuthorizationInferenceBehavior.ONE_IMPLIES_ALL) {
|
|
158
152
|
const singleEntityResultToTestForInboundEdge = await loader['loadOneByFieldEqualingAsync'](fieldName, association.associatedEntityLookupByField
|
|
159
153
|
? sourceEntity.getField(association.associatedEntityLookupByField)
|
|
160
154
|
: sourceEntity.getID());
|
|
@@ -168,9 +162,9 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, evaluatio
|
|
|
168
162
|
: sourceEntity.getID());
|
|
169
163
|
entityResultsToCheckForInboundEdge = entityResultsForInboundEdge;
|
|
170
164
|
}
|
|
171
|
-
const failedEntityLoadResults =
|
|
165
|
+
const failedEntityLoadResults = failedResults(entityResultsToCheckForInboundEdge);
|
|
172
166
|
for (const failedResult of failedEntityLoadResults) {
|
|
173
|
-
if (failedResult.reason instanceof
|
|
167
|
+
if (failedResult.reason instanceof EntityNotAuthorizedError) {
|
|
174
168
|
return { allowed: false, authorizationErrors: [failedResult.reason] };
|
|
175
169
|
}
|
|
176
170
|
else {
|
|
@@ -180,8 +174,8 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, evaluatio
|
|
|
180
174
|
// all results should be success at this point due to check above
|
|
181
175
|
const entitiesForInboundEdge = entityResultsToCheckForInboundEdge.map((r) => r.enforceValue());
|
|
182
176
|
switch (association.edgeDeletionBehavior) {
|
|
183
|
-
case
|
|
184
|
-
case
|
|
177
|
+
case EntityEdgeDeletionBehavior.CASCADE_DELETE:
|
|
178
|
+
case EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE_ONLY: {
|
|
185
179
|
const canDeleteEvaluationResults = await Promise.all(entitiesForInboundEdge.map((entity) => canViewerDeleteInternalAsync(inboundEdge, entity, { previousValue: null, cascadingDeleteCause: newCascadingDeleteCause }, queryContext)));
|
|
186
180
|
const reducedEvaluationResult = reduceEvaluationResults(canDeleteEvaluationResults);
|
|
187
181
|
if (!reducedEvaluationResult.allowed) {
|
|
@@ -189,8 +183,8 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, evaluatio
|
|
|
189
183
|
}
|
|
190
184
|
break;
|
|
191
185
|
}
|
|
192
|
-
case
|
|
193
|
-
case
|
|
186
|
+
case EntityEdgeDeletionBehavior.SET_NULL:
|
|
187
|
+
case EntityEdgeDeletionBehavior.SET_NULL_INVALIDATE_CACHE_ONLY: {
|
|
194
188
|
// create synthetic entities with the reference field set to null to properly evaluate
|
|
195
189
|
// privacy policy as it would be after the cascading SET NULL operation
|
|
196
190
|
const previousAndSyntheticEntitiesForInboundEdge = entitiesForInboundEdge.map((entity) => {
|
|
@@ -220,7 +214,7 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, evaluatio
|
|
|
220
214
|
return { allowed: true };
|
|
221
215
|
}
|
|
222
216
|
function reduceEvaluationResults(evaluationResults) {
|
|
223
|
-
const [successResults, failureResults] =
|
|
217
|
+
const [successResults, failureResults] = partitionArray(evaluationResults, (evaluationResult) => evaluationResult.allowed);
|
|
224
218
|
if (successResults.length === evaluationResults.length) {
|
|
225
219
|
return { allowed: true };
|
|
226
220
|
}
|
|
@@ -229,4 +223,3 @@ function reduceEvaluationResults(evaluationResults) {
|
|
|
229
223
|
authorizationErrors: failureResults.flatMap((failureResult) => failureResult.authorizationErrors),
|
|
230
224
|
};
|
|
231
225
|
}
|
|
232
|
-
//# sourceMappingURL=EntityPrivacyUtils.js.map
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SerializableKeyMap = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* A map with keys that are serializable. Serialized keys are considered equal if their serialized values are equal.
|
|
6
3
|
* Otherwise, the map behaves like a regular Map.
|
|
7
4
|
*/
|
|
8
|
-
class SerializableKeyMap {
|
|
5
|
+
export class SerializableKeyMap {
|
|
9
6
|
underlyingMap;
|
|
10
7
|
constructor(iterable) {
|
|
11
8
|
this.underlyingMap = new Map(Array.from(iterable ?? []).map(([key, value]) => [key.serialize(), value]));
|
|
@@ -56,5 +53,3 @@ class SerializableKeyMap {
|
|
|
56
53
|
return 'SerializableKeyMap';
|
|
57
54
|
}
|
|
58
55
|
}
|
|
59
|
-
exports.SerializableKeyMap = SerializableKeyMap;
|
|
60
|
-
//# sourceMappingURL=SerializableKeyMap.js.map
|