@expo/entity 0.40.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/AuthorizationResultBasedEntityAssociationLoader.d.ts +16 -16
- package/build/AuthorizationResultBasedEntityAssociationLoader.js +2 -4
- package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -1
- package/build/AuthorizationResultBasedEntityLoader.d.ts +39 -67
- package/build/AuthorizationResultBasedEntityLoader.js +85 -62
- package/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
- package/build/AuthorizationResultBasedEntityMutator.d.ts +16 -16
- package/build/AuthorizationResultBasedEntityMutator.js.map +1 -1
- package/build/ComposedEntityCacheAdapter.d.ts +7 -6
- package/build/ComposedEntityCacheAdapter.js +28 -28
- package/build/ComposedEntityCacheAdapter.js.map +1 -1
- package/build/ComposedSecondaryEntityCache.d.ts +1 -1
- package/build/ComposedSecondaryEntityCache.js.map +1 -1
- package/build/EnforcingEntityAssociationLoader.d.ts +15 -15
- package/build/EnforcingEntityAssociationLoader.js.map +1 -1
- package/build/EnforcingEntityCreator.d.ts +2 -2
- package/build/EnforcingEntityDeleter.d.ts +2 -2
- package/build/EnforcingEntityLoader.d.ts +104 -18
- package/build/EnforcingEntityLoader.js +113 -12
- package/build/EnforcingEntityLoader.js.map +1 -1
- package/build/EnforcingEntityUpdater.d.ts +2 -2
- package/build/Entity.d.ts +32 -10
- package/build/Entity.js +41 -3
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.d.ts +3 -3
- package/build/EntityCompanion.d.ts +5 -5
- package/build/EntityCompanion.js.map +1 -1
- package/build/EntityCompanionProvider.d.ts +6 -6
- package/build/EntityCompanionProvider.js.map +1 -1
- package/build/EntityConfiguration.d.ts +46 -5
- package/build/EntityConfiguration.js +39 -1
- package/build/EntityConfiguration.js.map +1 -1
- package/build/EntityCreator.d.ts +4 -4
- package/build/EntityDatabaseAdapter.d.ts +15 -14
- package/build/EntityDatabaseAdapter.js +20 -12
- package/build/EntityDatabaseAdapter.js.map +1 -1
- package/build/EntityDeleter.d.ts +4 -4
- package/build/EntityFieldDefinition.d.ts +20 -10
- package/build/EntityFieldDefinition.js +3 -1
- package/build/EntityFieldDefinition.js.map +1 -1
- package/build/EntityFields.d.ts +14 -12
- package/build/EntityFields.js.map +1 -1
- package/build/EntityLoader.d.ts +5 -5
- package/build/EntityLoaderFactory.d.ts +3 -3
- package/build/EntityLoaderFactory.js.map +1 -1
- package/build/EntityLoaderUtils.d.ts +2 -2
- package/build/EntityLoaderUtils.js +27 -1
- package/build/EntityLoaderUtils.js.map +1 -1
- package/build/EntityMutationInfo.d.ts +2 -2
- package/build/EntityMutationTriggerConfiguration.d.ts +14 -14
- package/build/EntityMutationTriggerConfiguration.js.map +1 -1
- package/build/EntityMutationValidator.d.ts +2 -2
- package/build/EntityMutatorFactory.d.ts +5 -5
- package/build/EntityMutatorFactory.js.map +1 -1
- package/build/EntityPrivacyPolicy.d.ts +14 -14
- package/build/EntityPrivacyPolicy.js.map +1 -1
- package/build/EntitySecondaryCacheLoader.d.ts +4 -4
- package/build/EntityUpdater.d.ts +4 -4
- package/build/GenericEntityCacheAdapter.d.ts +7 -6
- package/build/GenericEntityCacheAdapter.js +13 -14
- package/build/GenericEntityCacheAdapter.js.map +1 -1
- package/build/GenericSecondaryEntityCache.d.ts +3 -3
- package/build/GenericSecondaryEntityCache.js.map +1 -1
- package/build/IEntityCacheAdapter.d.ts +17 -16
- package/build/IEntityCacheAdapterProvider.d.ts +1 -1
- package/build/IEntityDatabaseAdapterProvider.d.ts +1 -1
- package/build/IEntityGenericCacher.d.ts +15 -5
- package/build/ReadonlyEntity.d.ts +27 -8
- package/build/ReadonlyEntity.js +31 -3
- package/build/ReadonlyEntity.js.map +1 -1
- package/build/ViewerContext.d.ts +1 -1
- package/build/ViewerScopedEntityCompanion.d.ts +5 -5
- package/build/ViewerScopedEntityCompanionProvider.d.ts +1 -1
- package/build/ViewerScopedEntityLoaderFactory.d.ts +3 -3
- package/build/ViewerScopedEntityMutatorFactory.d.ts +5 -5
- package/build/entityUtils.d.ts +1 -1
- package/build/entityUtils.js.map +1 -1
- package/build/errors/EntityInvalidFieldValueError.d.ts +2 -2
- package/build/errors/EntityNotAuthorizedError.d.ts +1 -1
- package/build/errors/EntityNotFoundError.d.ts +2 -2
- package/build/index.d.ts +7 -7
- package/build/index.js +8 -13
- package/build/index.js.map +1 -1
- package/build/internal/CompositeFieldHolder.d.ts +48 -0
- package/build/internal/CompositeFieldHolder.js +116 -0
- package/build/internal/CompositeFieldHolder.js.map +1 -0
- package/build/internal/CompositeFieldValueMap.d.ts +15 -0
- package/build/internal/CompositeFieldValueMap.js +51 -0
- package/build/internal/CompositeFieldValueMap.js.map +1 -0
- package/build/internal/EntityDataManager.d.ts +16 -16
- package/build/internal/EntityDataManager.js +42 -45
- package/build/internal/EntityDataManager.js.map +1 -1
- package/build/internal/EntityFieldTransformationUtils.d.ts +5 -5
- package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
- package/build/internal/EntityLoadInterfaces.d.ts +104 -0
- package/build/internal/EntityLoadInterfaces.js +25 -0
- package/build/internal/EntityLoadInterfaces.js.map +1 -0
- package/build/internal/EntityTableDataCoordinator.d.ts +6 -6
- package/build/internal/EntityTableDataCoordinator.js.map +1 -1
- package/build/internal/ReadThroughEntityCache.d.ts +17 -16
- package/build/internal/ReadThroughEntityCache.js +36 -36
- package/build/internal/ReadThroughEntityCache.js.map +1 -1
- package/build/internal/SingleFieldHolder.d.ts +34 -0
- package/build/internal/SingleFieldHolder.js +90 -0
- package/build/internal/SingleFieldHolder.js.map +1 -0
- package/build/metrics/EntityMetricsUtils.d.ts +2 -1
- package/build/metrics/EntityMetricsUtils.js.map +1 -1
- package/build/metrics/IEntityMetricsAdapter.d.ts +5 -0
- package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
- package/build/rules/PrivacyPolicyRule.d.ts +2 -2
- package/build/tsconfig.build.tsbuildinfo +1 -0
- package/build/utils/EntityPrivacyUtils.d.ts +4 -4
- package/build/utils/EntityPrivacyUtils.js.map +1 -1
- package/build/utils/collections/SerializableKeyMap.d.ts +27 -0
- package/build/utils/collections/SerializableKeyMap.js +60 -0
- package/build/utils/collections/SerializableKeyMap.js.map +1 -0
- package/build/utils/collections/maps.js +1 -2
- package/build/utils/collections/maps.js.map +1 -1
- package/build/utils/collections/sets.d.ts +1 -0
- package/build/utils/collections/sets.js +7 -0
- package/build/utils/collections/sets.js.map +1 -0
- package/build/utils/mergeEntityMutationTriggerConfigurations.d.ts +1 -1
- package/package.json +8 -5
- package/src/AuthorizationResultBasedEntityAssociationLoader.ts +58 -53
- package/src/AuthorizationResultBasedEntityLoader.ts +194 -81
- package/src/AuthorizationResultBasedEntityMutator.ts +71 -45
- package/src/ComposedEntityCacheAdapter.ts +55 -46
- package/src/ComposedSecondaryEntityCache.ts +5 -2
- package/src/EnforcingEntityAssociationLoader.ts +52 -44
- package/src/EnforcingEntityCreator.ts +5 -5
- package/src/EnforcingEntityDeleter.ts +5 -5
- package/src/EnforcingEntityLoader.ts +158 -21
- package/src/EnforcingEntityUpdater.ts +5 -5
- package/src/Entity.ts +185 -29
- package/src/EntityAssociationLoader.ts +6 -6
- package/src/EntityCompanion.ts +11 -11
- package/src/EntityCompanionProvider.ts +21 -18
- package/src/EntityConfiguration.ts +123 -9
- package/src/EntityCreator.ts +7 -7
- package/src/EntityDatabaseAdapter.ts +51 -28
- package/src/EntityDeleter.ts +7 -7
- package/src/EntityFieldDefinition.ts +32 -12
- package/src/EntityFields.ts +49 -12
- package/src/EntityLoader.ts +8 -8
- package/src/EntityLoaderFactory.ts +8 -8
- package/src/EntityLoaderUtils.ts +39 -10
- package/src/EntityMutationInfo.ts +6 -6
- package/src/EntityMutationTriggerConfiguration.ts +68 -20
- package/src/EntityMutationValidator.ts +4 -4
- package/src/EntityMutatorFactory.ts +13 -13
- package/src/EntityPrivacyPolicy.ts +50 -26
- package/src/EntitySecondaryCacheLoader.ts +6 -6
- package/src/EntityUpdater.ts +7 -7
- package/src/GenericEntityCacheAdapter.ts +39 -28
- package/src/GenericSecondaryEntityCache.ts +6 -3
- package/src/IEntityCacheAdapter.ts +45 -25
- package/src/IEntityCacheAdapterProvider.ts +3 -3
- package/src/IEntityDatabaseAdapterProvider.ts +3 -3
- package/src/IEntityGenericCacher.ts +33 -5
- package/src/ReadonlyEntity.ts +129 -16
- package/src/ViewerContext.ts +5 -5
- package/src/ViewerScopedEntityCompanion.ts +7 -7
- package/src/ViewerScopedEntityCompanionProvider.ts +6 -6
- package/src/ViewerScopedEntityLoaderFactory.ts +7 -7
- package/src/ViewerScopedEntityMutatorFactory.ts +8 -8
- package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +41 -72
- package/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.ts +14 -13
- package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +367 -69
- package/src/__tests__/ComposedCacheAdapter-test.ts +235 -117
- package/src/__tests__/EnforcingEntityLoader-test.ts +135 -1
- package/src/__tests__/Entity-test.ts +64 -11
- package/src/__tests__/EntityAssociationLoader-test.ts +6 -8
- package/src/__tests__/EntityCommonUseCases-test.ts +25 -28
- package/src/__tests__/EntityCompanion-test.ts +4 -4
- package/src/__tests__/EntityCompanionProvider-test.ts +9 -8
- package/src/__tests__/EntityConfiguration-test.ts +85 -6
- package/src/__tests__/EntityDatabaseAdapter-test.ts +113 -17
- package/src/__tests__/EntityEdges-test.ts +135 -138
- package/src/__tests__/EntityFields-test.ts +2 -2
- package/src/__tests__/EntityLoader-test.ts +5 -7
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +17 -19
- package/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.ts +73 -0
- package/src/__tests__/EntityMutator-test.ts +74 -46
- package/src/__tests__/EntityPrivacyPolicy-test.ts +51 -74
- package/src/__tests__/EntityQueryContext-test.ts +1 -1
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +9 -9
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +119 -122
- package/src/__tests__/GenericEntityCacheAdapter-test.ts +83 -28
- package/src/__tests__/ReadonlyEntity-test.ts +49 -9
- package/src/__tests__/ViewerContext-test.ts +1 -1
- package/src/__tests__/ViewerScopedEntityCompanion-test.ts +5 -2
- package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +1 -1
- package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +12 -3
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +25 -27
- package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +28 -34
- package/src/entityUtils.ts +4 -1
- package/src/errors/EntityInvalidFieldValueError.ts +5 -5
- package/src/errors/EntityNotAuthorizedError.ts +3 -3
- package/src/errors/EntityNotFoundError.ts +5 -5
- package/src/index.ts +7 -7
- package/src/internal/CompositeFieldHolder.ts +218 -0
- package/src/internal/CompositeFieldValueMap.ts +78 -0
- package/src/internal/EntityDataManager.ts +107 -96
- package/src/internal/EntityFieldTransformationUtils.ts +33 -14
- package/src/internal/EntityLoadInterfaces.ts +143 -0
- package/src/internal/EntityTableDataCoordinator.ts +8 -5
- package/src/internal/ReadThroughEntityCache.ts +63 -50
- package/src/internal/SingleFieldHolder.ts +131 -0
- package/src/internal/__tests__/CompositeFieldHolder-test.ts +25 -0
- package/src/internal/__tests__/CompositeFieldValueMap-test.ts +43 -0
- package/src/internal/__tests__/EntityDataManager-test.ts +308 -91
- package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +3 -2
- package/src/internal/__tests__/ReadThroughEntityCache-test.ts +315 -107
- package/src/metrics/EntityMetricsUtils.ts +7 -2
- package/src/metrics/IEntityMetricsAdapter.ts +6 -0
- package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +5 -5
- package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +5 -5
- package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +5 -5
- package/src/rules/PrivacyPolicyRule.ts +4 -4
- package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +1 -1
- package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +1 -1
- package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +1 -1
- package/src/utils/EntityPrivacyUtils.ts +72 -30
- package/src/utils/{testing → __testfixtures__}/PrivacyPolicyRuleTestUtils.ts +26 -26
- package/src/{testfixtures → utils/__testfixtures__}/SimpleTestEntity.ts +16 -15
- package/src/utils/__testfixtures__/StubCacheAdapter.ts +164 -0
- package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapter.ts +19 -12
- package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapterProvider.ts +4 -4
- package/src/utils/__testfixtures__/TSMockitoExtensions.ts +69 -0
- package/src/{testfixtures → utils/__testfixtures__}/TestEntity.ts +21 -15
- package/src/{testfixtures → utils/__testfixtures__}/TestEntity2.ts +16 -15
- package/src/{testfixtures → utils/__testfixtures__}/TestEntityWithMutationTriggers.ts +23 -22
- package/src/{testfixtures → utils/__testfixtures__}/TestViewerContext.ts +1 -1
- package/src/utils/{testing → __testfixtures__}/describeFieldTestCase.ts +1 -1
- package/src/utils/__tests__/EntityPrivacyUtils-test.ts +81 -113
- package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +31 -30
- package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +1 -1
- package/src/utils/collections/SerializableKeyMap.ts +84 -0
- package/src/utils/collections/__tests__/SerializableKeyMap-test.ts +119 -0
- package/src/utils/collections/__tests__/sets-test.ts +17 -0
- package/src/utils/collections/maps.ts +7 -8
- package/src/utils/collections/sets.ts +3 -0
- package/src/utils/mergeEntityMutationTriggerConfigurations.ts +5 -5
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +0 -273
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.d.ts +0 -26
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js +0 -110
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js +0 -401
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +0 -1
- package/build/__tests__/ComposedCacheAdapter-test.d.ts +0 -1
- package/build/__tests__/ComposedCacheAdapter-test.js +0 -229
- package/build/__tests__/ComposedCacheAdapter-test.js.map +0 -1
- package/build/__tests__/ComposedSecondaryEntityCache-test.d.ts +0 -1
- package/build/__tests__/ComposedSecondaryEntityCache-test.js +0 -66
- package/build/__tests__/ComposedSecondaryEntityCache-test.js.map +0 -1
- package/build/__tests__/EnforcingEntityAssociationLoader-test.d.ts +0 -1
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js +0 -115
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js.map +0 -1
- package/build/__tests__/EnforcingEntityLoader-test.d.ts +0 -1
- package/build/__tests__/EnforcingEntityLoader-test.js +0 -253
- package/build/__tests__/EnforcingEntityLoader-test.js.map +0 -1
- package/build/__tests__/Entity-test.d.ts +0 -1
- package/build/__tests__/Entity-test.js +0 -54
- package/build/__tests__/Entity-test.js.map +0 -1
- package/build/__tests__/EntityAssociationLoader-test.d.ts +0 -1
- package/build/__tests__/EntityAssociationLoader-test.js +0 -30
- package/build/__tests__/EntityAssociationLoader-test.js.map +0 -1
- package/build/__tests__/EntityCommonUseCases-test.d.ts +0 -1
- package/build/__tests__/EntityCommonUseCases-test.js +0 -154
- package/build/__tests__/EntityCommonUseCases-test.js.map +0 -1
- package/build/__tests__/EntityCompanion-test.d.ts +0 -1
- package/build/__tests__/EntityCompanion-test.js +0 -77
- package/build/__tests__/EntityCompanion-test.js.map +0 -1
- package/build/__tests__/EntityCompanionProvider-test.d.ts +0 -1
- package/build/__tests__/EntityCompanionProvider-test.js +0 -54
- package/build/__tests__/EntityCompanionProvider-test.js.map +0 -1
- package/build/__tests__/EntityConfiguration-test.d.ts +0 -1
- package/build/__tests__/EntityConfiguration-test.js +0 -103
- package/build/__tests__/EntityConfiguration-test.js.map +0 -1
- package/build/__tests__/EntityDatabaseAdapter-test.d.ts +0 -1
- package/build/__tests__/EntityDatabaseAdapter-test.js +0 -146
- package/build/__tests__/EntityDatabaseAdapter-test.js.map +0 -1
- package/build/__tests__/EntityEdges-test.d.ts +0 -1
- package/build/__tests__/EntityEdges-test.js +0 -755
- package/build/__tests__/EntityEdges-test.js.map +0 -1
- package/build/__tests__/EntityFields-test.d.ts +0 -1
- package/build/__tests__/EntityFields-test.js +0 -63
- package/build/__tests__/EntityFields-test.js.map +0 -1
- package/build/__tests__/EntityLoader-test.d.ts +0 -1
- package/build/__tests__/EntityLoader-test.js +0 -36
- package/build/__tests__/EntityLoader-test.js.map +0 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +0 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +0 -77
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +0 -1
- package/build/__tests__/EntityMutator-test.d.ts +0 -1
- package/build/__tests__/EntityMutator-test.js +0 -741
- package/build/__tests__/EntityMutator-test.js.map +0 -1
- package/build/__tests__/EntityPrivacyPolicy-test.d.ts +0 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +0 -463
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +0 -1
- package/build/__tests__/EntityQueryContext-test.d.ts +0 -1
- package/build/__tests__/EntityQueryContext-test.js +0 -116
- package/build/__tests__/EntityQueryContext-test.js.map +0 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.d.ts +0 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.js +0 -60
- package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +0 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.d.ts +0 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.js +0 -247
- package/build/__tests__/EntitySelfReferentialEdges-test.js.map +0 -1
- package/build/__tests__/GenericEntityCacheAdapter-test.d.ts +0 -1
- package/build/__tests__/GenericEntityCacheAdapter-test.js +0 -80
- package/build/__tests__/GenericEntityCacheAdapter-test.js.map +0 -1
- package/build/__tests__/ReadonlyEntity-test.d.ts +0 -1
- package/build/__tests__/ReadonlyEntity-test.js +0 -178
- package/build/__tests__/ReadonlyEntity-test.js.map +0 -1
- package/build/__tests__/ViewerContext-test.d.ts +0 -1
- package/build/__tests__/ViewerContext-test.js +0 -30
- package/build/__tests__/ViewerContext-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityCompanion-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityCompanion-test.js +0 -20
- package/build/__tests__/ViewerScopedEntityCompanion-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js +0 -20
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js +0 -23
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js +0 -22
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +0 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.d.ts +0 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +0 -129
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +0 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.d.ts +0 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +0 -136
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +0 -1
- package/build/__tests__/entityUtils-test.d.ts +0 -1
- package/build/__tests__/entityUtils-test.js +0 -87
- package/build/__tests__/entityUtils-test.js.map +0 -1
- package/build/internal/__tests__/EntityDataManager-test.d.ts +0 -1
- package/build/internal/__tests__/EntityDataManager-test.js +0 -373
- package/build/internal/__tests__/EntityDataManager-test.js.map +0 -1
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.d.ts +0 -1
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +0 -136
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +0 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.d.ts +0 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js +0 -206
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +0 -1
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.d.ts +0 -1
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +0 -21
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +0 -1
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.d.ts +0 -1
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +0 -21
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +0 -1
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.d.ts +0 -1
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +0 -21
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +0 -1
- package/build/testfixtures/DateIDTestEntity.d.ts +0 -19
- package/build/testfixtures/DateIDTestEntity.js +0 -48
- package/build/testfixtures/DateIDTestEntity.js.map +0 -1
- package/build/testfixtures/SimpleTestEntity.d.ts +0 -20
- package/build/testfixtures/SimpleTestEntity.js +0 -48
- package/build/testfixtures/SimpleTestEntity.js.map +0 -1
- package/build/testfixtures/TestEntity.d.ts +0 -30
- package/build/testfixtures/TestEntity.js +0 -93
- package/build/testfixtures/TestEntity.js.map +0 -1
- package/build/testfixtures/TestEntity2.d.ts +0 -20
- package/build/testfixtures/TestEntity2.js +0 -51
- package/build/testfixtures/TestEntity2.js.map +0 -1
- package/build/testfixtures/TestEntityNumberKey.d.ts +0 -19
- package/build/testfixtures/TestEntityNumberKey.js +0 -48
- package/build/testfixtures/TestEntityNumberKey.js.map +0 -1
- package/build/testfixtures/TestEntityWithMutationTriggers.d.ts +0 -36
- package/build/testfixtures/TestEntityWithMutationTriggers.js +0 -82
- package/build/testfixtures/TestEntityWithMutationTriggers.js.map +0 -1
- package/build/testfixtures/TestViewerContext.d.ts +0 -3
- package/build/testfixtures/TestViewerContext.js +0 -10
- package/build/testfixtures/TestViewerContext.js.map +0 -1
- package/build/utils/__tests__/EntityPrivacyUtils-test.d.ts +0 -1
- package/build/utils/__tests__/EntityPrivacyUtils-test.js +0 -520
- package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +0 -1
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +0 -1
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +0 -181
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +0 -1
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +0 -1
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +0 -26
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +0 -1
- package/build/utils/collections/__tests__/maps-test.d.ts +0 -1
- package/build/utils/collections/__tests__/maps-test.js +0 -120
- package/build/utils/collections/__tests__/maps-test.js.map +0 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +0 -28
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js +0 -52
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +0 -1
- package/build/utils/testing/StubCacheAdapter.d.ts +0 -27
- package/build/utils/testing/StubCacheAdapter.js +0 -86
- package/build/utils/testing/StubCacheAdapter.js.map +0 -1
- package/build/utils/testing/StubDatabaseAdapter.d.ts +0 -25
- package/build/utils/testing/StubDatabaseAdapter.js +0 -191
- package/build/utils/testing/StubDatabaseAdapter.js.map +0 -1
- package/build/utils/testing/StubDatabaseAdapterProvider.d.ts +0 -7
- package/build/utils/testing/StubDatabaseAdapterProvider.js +0 -14
- package/build/utils/testing/StubDatabaseAdapterProvider.js.map +0 -1
- package/build/utils/testing/StubQueryContextProvider.d.ts +0 -7
- package/build/utils/testing/StubQueryContextProvider.js +0 -19
- package/build/utils/testing/StubQueryContextProvider.js.map +0 -1
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.d.ts +0 -1
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js +0 -42
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js.map +0 -1
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.d.ts +0 -1
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +0 -402
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +0 -1
- package/build/utils/testing/createUnitTestEntityCompanionProvider.d.ts +0 -7
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js +0 -36
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +0 -1
- package/build/utils/testing/describeFieldTestCase.d.ts +0 -2
- package/build/utils/testing/describeFieldTestCase.js +0 -18
- package/build/utils/testing/describeFieldTestCase.js.map +0 -1
- package/src/testfixtures/DateIDTestEntity.ts +0 -59
- package/src/testfixtures/TestEntityNumberKey.ts +0 -59
- package/src/utils/testing/StubCacheAdapter.ts +0 -122
- package/src/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.ts +0 -42
- package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +0 -548
- /package/src/utils/{testing → __testfixtures__}/StubQueryContextProvider.ts +0 -0
- /package/src/utils/{testing → __testfixtures__}/createUnitTestEntityCompanionProvider.ts +0 -0
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
getCanViewerDeleteResultAsync,
|
|
24
24
|
getCanViewerUpdateResultAsync,
|
|
25
25
|
} from '../EntityPrivacyUtils';
|
|
26
|
-
import { createUnitTestEntityCompanionProvider } from '../
|
|
26
|
+
import { createUnitTestEntityCompanionProvider } from '../__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
27
27
|
|
|
28
28
|
function assertEntityPrivacyEvaluationResultFailure(
|
|
29
29
|
evaluationResult: EntityPrivacyEvaluationResult,
|
|
@@ -50,9 +50,7 @@ describe(canViewerUpdateAsync, () => {
|
|
|
50
50
|
it('appropriately executes update privacy policy', async () => {
|
|
51
51
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
52
52
|
const viewerContext = new ViewerContext(companionProvider);
|
|
53
|
-
const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext)
|
|
54
|
-
.enforcing()
|
|
55
|
-
.createAsync();
|
|
53
|
+
const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext).createAsync();
|
|
56
54
|
const canViewerUpdate = await canViewerUpdateAsync(SimpleTestDenyDeleteEntity, testEntity);
|
|
57
55
|
expect(canViewerUpdate).toBe(true);
|
|
58
56
|
const canViewerUpdateResult = await getCanViewerUpdateResultAsync(
|
|
@@ -65,9 +63,7 @@ describe(canViewerUpdateAsync, () => {
|
|
|
65
63
|
it('denies when policy denies', async () => {
|
|
66
64
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
67
65
|
const viewerContext = new ViewerContext(companionProvider);
|
|
68
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
69
|
-
.enforcing()
|
|
70
|
-
.createAsync();
|
|
66
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
|
|
71
67
|
const canViewerUpdate = await canViewerUpdateAsync(SimpleTestDenyUpdateEntity, testEntity);
|
|
72
68
|
expect(canViewerUpdate).toBe(false);
|
|
73
69
|
const canViewerUpdateResult = await getCanViewerUpdateResultAsync(
|
|
@@ -83,9 +79,7 @@ describe(canViewerUpdateAsync, () => {
|
|
|
83
79
|
it('rethrows non-authorization errors', async () => {
|
|
84
80
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
85
81
|
const viewerContext = new ViewerContext(companionProvider);
|
|
86
|
-
const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext)
|
|
87
|
-
.enforcing()
|
|
88
|
-
.createAsync();
|
|
82
|
+
const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext).createAsync();
|
|
89
83
|
await expect(canViewerUpdateAsync(SimpleTestThrowOtherErrorEntity, testEntity)).rejects.toThrow(
|
|
90
84
|
'update error',
|
|
91
85
|
);
|
|
@@ -99,9 +93,7 @@ describe(canViewerDeleteAsync, () => {
|
|
|
99
93
|
it('appropriately executes update privacy policy', async () => {
|
|
100
94
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
101
95
|
const viewerContext = new ViewerContext(companionProvider);
|
|
102
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
103
|
-
.enforcing()
|
|
104
|
-
.createAsync();
|
|
96
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
|
|
105
97
|
const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
|
|
106
98
|
expect(canViewerDelete).toBe(true);
|
|
107
99
|
const canViewerDeleteResult = await getCanViewerDeleteResultAsync(
|
|
@@ -114,9 +106,7 @@ describe(canViewerDeleteAsync, () => {
|
|
|
114
106
|
it('denies when policy denies', async () => {
|
|
115
107
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
116
108
|
const viewerContext = new ViewerContext(companionProvider);
|
|
117
|
-
const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext)
|
|
118
|
-
.enforcing()
|
|
119
|
-
.createAsync();
|
|
109
|
+
const testEntity = await SimpleTestDenyDeleteEntity.creator(viewerContext).createAsync();
|
|
120
110
|
const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyDeleteEntity, testEntity);
|
|
121
111
|
expect(canViewerDelete).toBe(false);
|
|
122
112
|
const canViewerDeleteResult = await getCanViewerDeleteResultAsync(
|
|
@@ -132,12 +122,9 @@ describe(canViewerDeleteAsync, () => {
|
|
|
132
122
|
it('denies when recursive policy denies for CASCADE_DELETE', async () => {
|
|
133
123
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
134
124
|
const viewerContext = new ViewerContext(companionProvider);
|
|
135
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
136
|
-
.enforcing()
|
|
137
|
-
.createAsync();
|
|
125
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
|
|
138
126
|
// add another entity referencing testEntity that would cascade deletion to itself when testEntity is deleted
|
|
139
127
|
const leafEntity = await LeafDenyDeleteEntity.creator(viewerContext)
|
|
140
|
-
.enforcing()
|
|
141
128
|
.setField('simple_test_deny_update_cascade_delete_id', testEntity.getID())
|
|
142
129
|
.createAsync();
|
|
143
130
|
const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
|
|
@@ -155,12 +142,9 @@ describe(canViewerDeleteAsync, () => {
|
|
|
155
142
|
it('denies when recursive policy denies for SET_NULL', async () => {
|
|
156
143
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
157
144
|
const viewerContext = new ViewerContext(companionProvider);
|
|
158
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
159
|
-
.enforcing()
|
|
160
|
-
.createAsync();
|
|
145
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
|
|
161
146
|
// add another entity referencing testEntity that would set null to its column when testEntity is deleted
|
|
162
147
|
const leafEntity = await LeafDenyUpdateEntity.creator(viewerContext)
|
|
163
|
-
.enforcing()
|
|
164
148
|
.setField('simple_test_deny_update_set_null_id', testEntity.getID())
|
|
165
149
|
.createAsync();
|
|
166
150
|
const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
|
|
@@ -178,17 +162,13 @@ describe(canViewerDeleteAsync, () => {
|
|
|
178
162
|
it('allows when recursive policy allows for CASCADE_DELETE and SET_NULL', async () => {
|
|
179
163
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
180
164
|
const viewerContext = new ViewerContext(companionProvider);
|
|
181
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
182
|
-
.enforcing()
|
|
183
|
-
.createAsync();
|
|
165
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
|
|
184
166
|
// add another entity referencing testEntity that would cascade deletion to itself when testEntity is deleted
|
|
185
167
|
await LeafDenyUpdateEntity.creator(viewerContext)
|
|
186
|
-
.enforcing()
|
|
187
168
|
.setField('simple_test_deny_update_cascade_delete_id', testEntity.getID())
|
|
188
169
|
.createAsync();
|
|
189
170
|
// add another entity referencing testEntity that would set null to its column when testEntity is deleted
|
|
190
171
|
await LeafDenyDeleteEntity.creator(viewerContext)
|
|
191
|
-
.enforcing()
|
|
192
172
|
.setField('simple_test_deny_update_set_null_id', testEntity.getID())
|
|
193
173
|
.createAsync();
|
|
194
174
|
|
|
@@ -204,9 +184,7 @@ describe(canViewerDeleteAsync, () => {
|
|
|
204
184
|
it('rethrows non-authorization errors', async () => {
|
|
205
185
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
206
186
|
const viewerContext = new ViewerContext(companionProvider);
|
|
207
|
-
const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext)
|
|
208
|
-
.enforcing()
|
|
209
|
-
.createAsync();
|
|
187
|
+
const testEntity = await SimpleTestThrowOtherErrorEntity.creator(viewerContext).createAsync();
|
|
210
188
|
await expect(
|
|
211
189
|
canViewerDeleteAsync(SimpleTestThrowOtherErrorEntity, testEntity),
|
|
212
190
|
).rejects.toThrowError('delete error');
|
|
@@ -218,11 +196,8 @@ describe(canViewerDeleteAsync, () => {
|
|
|
218
196
|
it('returns false when edge cannot be read', async () => {
|
|
219
197
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
220
198
|
const viewerContext = new ViewerContext(companionProvider);
|
|
221
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
222
|
-
.enforcing()
|
|
223
|
-
.createAsync();
|
|
199
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
|
|
224
200
|
const leafEntity = await LeafDenyReadEntity.creator(viewerContext)
|
|
225
|
-
.enforcing()
|
|
226
201
|
.setField('simple_test_id', testEntity.getID())
|
|
227
202
|
.createAsync();
|
|
228
203
|
const canViewerDelete = await canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity);
|
|
@@ -240,11 +215,8 @@ describe(canViewerDeleteAsync, () => {
|
|
|
240
215
|
it('rethrows non-authorization edge read errors', async () => {
|
|
241
216
|
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
242
217
|
const viewerContext = new ViewerContext(companionProvider);
|
|
243
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext)
|
|
244
|
-
.enforcing()
|
|
245
|
-
.createAsync();
|
|
218
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(viewerContext).createAsync();
|
|
246
219
|
await SimpleTestThrowOtherErrorEntity.creator(viewerContext)
|
|
247
|
-
.enforcing()
|
|
248
220
|
.setField('simple_test_id', testEntity.getID())
|
|
249
221
|
.createAsync();
|
|
250
222
|
await expect(canViewerDeleteAsync(SimpleTestDenyUpdateEntity, testEntity)).rejects.toThrowError(
|
|
@@ -261,11 +233,11 @@ describe(canViewerDeleteAsync, () => {
|
|
|
261
233
|
const canViewerDelete = await viewerContext.runInTransactionForDatabaseAdaptorFlavorAsync(
|
|
262
234
|
'postgres',
|
|
263
235
|
async (queryContext) => {
|
|
264
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(
|
|
265
|
-
|
|
266
|
-
|
|
236
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(
|
|
237
|
+
viewerContext,
|
|
238
|
+
queryContext,
|
|
239
|
+
).createAsync();
|
|
267
240
|
await LeafDenyReadEntity.creator(viewerContext, queryContext)
|
|
268
|
-
.enforcing()
|
|
269
241
|
.setField('simple_test_id', testEntity.getID())
|
|
270
242
|
.createAsync();
|
|
271
243
|
// this would fail if transactions weren't supported or correctly passed through
|
|
@@ -277,11 +249,11 @@ describe(canViewerDeleteAsync, () => {
|
|
|
277
249
|
const canViewerDeleteResult = await viewerContext.runInTransactionForDatabaseAdaptorFlavorAsync(
|
|
278
250
|
'postgres',
|
|
279
251
|
async (queryContext) => {
|
|
280
|
-
const testEntity = await SimpleTestDenyUpdateEntity.creator(
|
|
281
|
-
|
|
282
|
-
|
|
252
|
+
const testEntity = await SimpleTestDenyUpdateEntity.creator(
|
|
253
|
+
viewerContext,
|
|
254
|
+
queryContext,
|
|
255
|
+
).createAsync();
|
|
283
256
|
await LeafDenyReadEntity.creator(viewerContext, queryContext)
|
|
284
|
-
.enforcing()
|
|
285
257
|
.setField('simple_test_id', testEntity.getID())
|
|
286
258
|
.createAsync();
|
|
287
259
|
// this would fail if transactions weren't supported or correctly passed through
|
|
@@ -324,54 +296,54 @@ type TestEntityThrowOtherErrorFields = {
|
|
|
324
296
|
};
|
|
325
297
|
|
|
326
298
|
class DenyUpdateEntityPrivacyPolicy<
|
|
327
|
-
TFields extends
|
|
328
|
-
|
|
299
|
+
TFields extends Record<'id', any>,
|
|
300
|
+
TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
|
|
329
301
|
TViewerContext extends ViewerContext,
|
|
330
|
-
TEntity extends ReadonlyEntity<TFields,
|
|
302
|
+
TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
|
|
331
303
|
TSelectedFields extends keyof TFields = keyof TFields,
|
|
332
|
-
> extends EntityPrivacyPolicy<TFields,
|
|
304
|
+
> extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
|
|
333
305
|
protected override readonly readRules = [
|
|
334
|
-
new AlwaysAllowPrivacyPolicyRule<TFields,
|
|
306
|
+
new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
335
307
|
];
|
|
336
308
|
protected override readonly createRules = [
|
|
337
|
-
new AlwaysAllowPrivacyPolicyRule<TFields,
|
|
309
|
+
new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
338
310
|
];
|
|
339
311
|
protected override readonly updateRules = [
|
|
340
|
-
new AlwaysDenyPrivacyPolicyRule<TFields,
|
|
312
|
+
new AlwaysDenyPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
341
313
|
];
|
|
342
314
|
protected override readonly deleteRules = [
|
|
343
|
-
new AlwaysAllowPrivacyPolicyRule<TFields,
|
|
315
|
+
new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
344
316
|
];
|
|
345
317
|
}
|
|
346
318
|
|
|
347
319
|
class DenyDeleteEntityPrivacyPolicy<
|
|
348
|
-
TFields extends
|
|
349
|
-
|
|
320
|
+
TFields extends Record<'id', any>,
|
|
321
|
+
TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
|
|
350
322
|
TViewerContext extends ViewerContext,
|
|
351
|
-
TEntity extends ReadonlyEntity<TFields,
|
|
323
|
+
TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
|
|
352
324
|
TSelectedFields extends keyof TFields = keyof TFields,
|
|
353
|
-
> extends EntityPrivacyPolicy<TFields,
|
|
325
|
+
> extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
|
|
354
326
|
protected override readonly readRules = [
|
|
355
|
-
new AlwaysAllowPrivacyPolicyRule<TFields,
|
|
327
|
+
new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
356
328
|
];
|
|
357
329
|
protected override readonly createRules = [
|
|
358
|
-
new AlwaysAllowPrivacyPolicyRule<TFields,
|
|
330
|
+
new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
359
331
|
];
|
|
360
332
|
protected override readonly updateRules = [
|
|
361
|
-
new AlwaysAllowPrivacyPolicyRule<TFields,
|
|
333
|
+
new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
362
334
|
];
|
|
363
335
|
protected override readonly deleteRules = [
|
|
364
|
-
new AlwaysDenyPrivacyPolicyRule<TFields,
|
|
336
|
+
new AlwaysDenyPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
365
337
|
];
|
|
366
338
|
}
|
|
367
339
|
|
|
368
340
|
class ThrowOtherErrorEntityPrivacyPolicy<
|
|
369
|
-
TFields extends
|
|
370
|
-
|
|
341
|
+
TFields extends Record<'id', any>,
|
|
342
|
+
TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
|
|
371
343
|
TViewerContext extends ViewerContext,
|
|
372
|
-
TEntity extends ReadonlyEntity<TFields,
|
|
344
|
+
TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
|
|
373
345
|
TSelectedFields extends keyof TFields = keyof TFields,
|
|
374
|
-
> extends EntityPrivacyPolicy<TFields,
|
|
346
|
+
> extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
|
|
375
347
|
protected override readonly readRules = [
|
|
376
348
|
{
|
|
377
349
|
async evaluateAsync(
|
|
@@ -379,7 +351,7 @@ class ThrowOtherErrorEntityPrivacyPolicy<
|
|
|
379
351
|
_queryContext: EntityQueryContext,
|
|
380
352
|
evaluationContext: EntityPrivacyPolicyEvaluationContext<
|
|
381
353
|
TFields,
|
|
382
|
-
|
|
354
|
+
TIDField,
|
|
383
355
|
TViewerContext,
|
|
384
356
|
TEntity,
|
|
385
357
|
TSelectedFields
|
|
@@ -392,10 +364,10 @@ class ThrowOtherErrorEntityPrivacyPolicy<
|
|
|
392
364
|
return RuleEvaluationResult.SKIP;
|
|
393
365
|
},
|
|
394
366
|
},
|
|
395
|
-
new AlwaysAllowPrivacyPolicyRule<TFields,
|
|
367
|
+
new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
396
368
|
];
|
|
397
369
|
protected override readonly createRules = [
|
|
398
|
-
new AlwaysAllowPrivacyPolicyRule<TFields,
|
|
370
|
+
new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
399
371
|
];
|
|
400
372
|
protected override readonly updateRules = [
|
|
401
373
|
{
|
|
@@ -414,12 +386,12 @@ class ThrowOtherErrorEntityPrivacyPolicy<
|
|
|
414
386
|
}
|
|
415
387
|
|
|
416
388
|
class DenyReadEntityPrivacyPolicy<
|
|
417
|
-
TFields extends
|
|
418
|
-
|
|
389
|
+
TFields extends Record<'id', any>,
|
|
390
|
+
TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
|
|
419
391
|
TViewerContext extends ViewerContext,
|
|
420
|
-
TEntity extends ReadonlyEntity<TFields,
|
|
392
|
+
TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
|
|
421
393
|
TSelectedFields extends keyof TFields = keyof TFields,
|
|
422
|
-
> extends EntityPrivacyPolicy<TFields,
|
|
394
|
+
> extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
|
|
423
395
|
protected override readonly readRules = [
|
|
424
396
|
{
|
|
425
397
|
async evaluateAsync(
|
|
@@ -427,7 +399,7 @@ class DenyReadEntityPrivacyPolicy<
|
|
|
427
399
|
queryContext: EntityQueryContext,
|
|
428
400
|
evaluationContext: EntityPrivacyPolicyEvaluationContext<
|
|
429
401
|
TFields,
|
|
430
|
-
|
|
402
|
+
TIDField,
|
|
431
403
|
TViewerContext,
|
|
432
404
|
TEntity,
|
|
433
405
|
TSelectedFields
|
|
@@ -444,37 +416,38 @@ class DenyReadEntityPrivacyPolicy<
|
|
|
444
416
|
},
|
|
445
417
|
];
|
|
446
418
|
protected override readonly createRules = [
|
|
447
|
-
new AlwaysAllowPrivacyPolicyRule<TFields,
|
|
419
|
+
new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
448
420
|
];
|
|
449
421
|
protected override readonly updateRules = [
|
|
450
|
-
new AlwaysAllowPrivacyPolicyRule<TFields,
|
|
422
|
+
new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
451
423
|
];
|
|
452
424
|
protected override readonly deleteRules = [
|
|
453
|
-
new AlwaysAllowPrivacyPolicyRule<TFields,
|
|
425
|
+
new AlwaysAllowPrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>(),
|
|
454
426
|
];
|
|
455
427
|
}
|
|
456
428
|
|
|
457
|
-
class LeafDenyUpdateEntity extends Entity<TestLeafDenyUpdateFields,
|
|
429
|
+
class LeafDenyUpdateEntity extends Entity<TestLeafDenyUpdateFields, 'id', ViewerContext> {
|
|
458
430
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
459
431
|
TestLeafDenyUpdateFields,
|
|
460
|
-
|
|
432
|
+
'id',
|
|
461
433
|
ViewerContext,
|
|
462
434
|
LeafDenyUpdateEntity,
|
|
463
435
|
DenyUpdateEntityPrivacyPolicy<
|
|
464
436
|
TestLeafDenyUpdateFields,
|
|
465
|
-
|
|
437
|
+
'id',
|
|
466
438
|
ViewerContext,
|
|
467
439
|
LeafDenyUpdateEntity
|
|
468
440
|
>
|
|
469
441
|
> {
|
|
470
442
|
return {
|
|
471
443
|
entityClass: LeafDenyUpdateEntity,
|
|
472
|
-
entityConfiguration: new EntityConfiguration<TestLeafDenyUpdateFields>({
|
|
444
|
+
entityConfiguration: new EntityConfiguration<TestLeafDenyUpdateFields, 'id'>({
|
|
473
445
|
idField: 'id',
|
|
474
446
|
tableName: 'leaf_1',
|
|
475
447
|
schema: {
|
|
476
448
|
id: new UUIDField({
|
|
477
449
|
columnName: 'custom_id',
|
|
450
|
+
cache: false,
|
|
478
451
|
}),
|
|
479
452
|
// to ensure edge traversal doesn't process other edges
|
|
480
453
|
unused_other_association: new UUIDField({
|
|
@@ -509,27 +482,28 @@ class LeafDenyUpdateEntity extends Entity<TestLeafDenyUpdateFields, string, View
|
|
|
509
482
|
}
|
|
510
483
|
}
|
|
511
484
|
|
|
512
|
-
class LeafDenyDeleteEntity extends Entity<TestLeafDenyDeleteFields,
|
|
485
|
+
class LeafDenyDeleteEntity extends Entity<TestLeafDenyDeleteFields, 'id', ViewerContext> {
|
|
513
486
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
514
487
|
TestLeafDenyDeleteFields,
|
|
515
|
-
|
|
488
|
+
'id',
|
|
516
489
|
ViewerContext,
|
|
517
490
|
LeafDenyDeleteEntity,
|
|
518
491
|
DenyDeleteEntityPrivacyPolicy<
|
|
519
492
|
TestLeafDenyDeleteFields,
|
|
520
|
-
|
|
493
|
+
'id',
|
|
521
494
|
ViewerContext,
|
|
522
495
|
LeafDenyDeleteEntity
|
|
523
496
|
>
|
|
524
497
|
> {
|
|
525
498
|
return {
|
|
526
499
|
entityClass: LeafDenyDeleteEntity,
|
|
527
|
-
entityConfiguration: new EntityConfiguration<TestLeafDenyDeleteFields>({
|
|
500
|
+
entityConfiguration: new EntityConfiguration<TestLeafDenyDeleteFields, 'id'>({
|
|
528
501
|
idField: 'id',
|
|
529
502
|
tableName: 'leaf_2',
|
|
530
503
|
schema: {
|
|
531
504
|
id: new UUIDField({
|
|
532
505
|
columnName: 'custom_id',
|
|
506
|
+
cache: false,
|
|
533
507
|
}),
|
|
534
508
|
// deletion behavior should fail since this entity can't be deleted
|
|
535
509
|
simple_test_deny_update_cascade_delete_id: new UUIDField({
|
|
@@ -556,23 +530,24 @@ class LeafDenyDeleteEntity extends Entity<TestLeafDenyDeleteFields, string, View
|
|
|
556
530
|
}
|
|
557
531
|
}
|
|
558
532
|
|
|
559
|
-
class LeafDenyReadEntity extends Entity<TestLeafDenyReadFields,
|
|
533
|
+
class LeafDenyReadEntity extends Entity<TestLeafDenyReadFields, 'id', ViewerContext> {
|
|
560
534
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
561
535
|
TestLeafDenyReadFields,
|
|
562
|
-
|
|
536
|
+
'id',
|
|
563
537
|
ViewerContext,
|
|
564
538
|
LeafDenyReadEntity,
|
|
565
|
-
DenyReadEntityPrivacyPolicy<TestLeafDenyReadFields,
|
|
539
|
+
DenyReadEntityPrivacyPolicy<TestLeafDenyReadFields, 'id', ViewerContext, LeafDenyReadEntity>
|
|
566
540
|
> {
|
|
567
541
|
return {
|
|
568
542
|
entityClass: LeafDenyReadEntity,
|
|
569
|
-
entityConfiguration: new EntityConfiguration<TestLeafDenyReadFields>({
|
|
543
|
+
entityConfiguration: new EntityConfiguration<TestLeafDenyReadFields, 'id'>({
|
|
570
544
|
idField: 'id',
|
|
571
545
|
tableName: 'leaf_4',
|
|
572
546
|
inboundEdges: [],
|
|
573
547
|
schema: {
|
|
574
548
|
id: new UUIDField({
|
|
575
549
|
columnName: 'custom_id',
|
|
550
|
+
cache: false,
|
|
576
551
|
}),
|
|
577
552
|
simple_test_id: new UUIDField({
|
|
578
553
|
columnName: 'simple_test_id',
|
|
@@ -591,22 +566,17 @@ class LeafDenyReadEntity extends Entity<TestLeafDenyReadFields, string, ViewerCo
|
|
|
591
566
|
}
|
|
592
567
|
}
|
|
593
568
|
|
|
594
|
-
class SimpleTestDenyUpdateEntity extends Entity<TestEntityFields,
|
|
569
|
+
class SimpleTestDenyUpdateEntity extends Entity<TestEntityFields, 'id', ViewerContext> {
|
|
595
570
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
596
571
|
TestEntityFields,
|
|
597
|
-
|
|
572
|
+
'id',
|
|
598
573
|
ViewerContext,
|
|
599
574
|
SimpleTestDenyUpdateEntity,
|
|
600
|
-
DenyUpdateEntityPrivacyPolicy<
|
|
601
|
-
TestEntityFields,
|
|
602
|
-
string,
|
|
603
|
-
ViewerContext,
|
|
604
|
-
SimpleTestDenyUpdateEntity
|
|
605
|
-
>
|
|
575
|
+
DenyUpdateEntityPrivacyPolicy<TestEntityFields, 'id', ViewerContext, SimpleTestDenyUpdateEntity>
|
|
606
576
|
> {
|
|
607
577
|
return {
|
|
608
578
|
entityClass: SimpleTestDenyUpdateEntity,
|
|
609
|
-
entityConfiguration: new EntityConfiguration<TestEntityFields>({
|
|
579
|
+
entityConfiguration: new EntityConfiguration<TestEntityFields, 'id'>({
|
|
610
580
|
idField: 'id',
|
|
611
581
|
tableName: 'blah',
|
|
612
582
|
inboundEdges: [
|
|
@@ -618,6 +588,7 @@ class SimpleTestDenyUpdateEntity extends Entity<TestEntityFields, string, Viewer
|
|
|
618
588
|
schema: {
|
|
619
589
|
id: new UUIDField({
|
|
620
590
|
columnName: 'custom_id',
|
|
591
|
+
cache: false,
|
|
621
592
|
}),
|
|
622
593
|
},
|
|
623
594
|
databaseAdapterFlavor: 'postgres',
|
|
@@ -628,22 +599,17 @@ class SimpleTestDenyUpdateEntity extends Entity<TestEntityFields, string, Viewer
|
|
|
628
599
|
}
|
|
629
600
|
}
|
|
630
601
|
|
|
631
|
-
class SimpleTestDenyDeleteEntity extends Entity<TestEntityFields,
|
|
602
|
+
class SimpleTestDenyDeleteEntity extends Entity<TestEntityFields, 'id', ViewerContext> {
|
|
632
603
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
633
604
|
TestEntityFields,
|
|
634
|
-
|
|
605
|
+
'id',
|
|
635
606
|
ViewerContext,
|
|
636
607
|
SimpleTestDenyDeleteEntity,
|
|
637
|
-
DenyDeleteEntityPrivacyPolicy<
|
|
638
|
-
TestEntityFields,
|
|
639
|
-
string,
|
|
640
|
-
ViewerContext,
|
|
641
|
-
SimpleTestDenyDeleteEntity
|
|
642
|
-
>
|
|
608
|
+
DenyDeleteEntityPrivacyPolicy<TestEntityFields, 'id', ViewerContext, SimpleTestDenyDeleteEntity>
|
|
643
609
|
> {
|
|
644
610
|
return {
|
|
645
611
|
entityClass: SimpleTestDenyDeleteEntity,
|
|
646
|
-
entityConfiguration: new EntityConfiguration<TestEntityFields>({
|
|
612
|
+
entityConfiguration: new EntityConfiguration<TestEntityFields, 'id'>({
|
|
647
613
|
idField: 'id',
|
|
648
614
|
tableName: 'blah_2',
|
|
649
615
|
inboundEdges: [
|
|
@@ -655,6 +621,7 @@ class SimpleTestDenyDeleteEntity extends Entity<TestEntityFields, string, Viewer
|
|
|
655
621
|
schema: {
|
|
656
622
|
id: new UUIDField({
|
|
657
623
|
columnName: 'custom_id',
|
|
624
|
+
cache: false,
|
|
658
625
|
}),
|
|
659
626
|
},
|
|
660
627
|
databaseAdapterFlavor: 'postgres',
|
|
@@ -667,30 +634,31 @@ class SimpleTestDenyDeleteEntity extends Entity<TestEntityFields, string, Viewer
|
|
|
667
634
|
|
|
668
635
|
class SimpleTestThrowOtherErrorEntity extends Entity<
|
|
669
636
|
TestEntityThrowOtherErrorFields,
|
|
670
|
-
|
|
637
|
+
'id',
|
|
671
638
|
ViewerContext
|
|
672
639
|
> {
|
|
673
640
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
674
641
|
TestEntityThrowOtherErrorFields,
|
|
675
|
-
|
|
642
|
+
'id',
|
|
676
643
|
ViewerContext,
|
|
677
644
|
SimpleTestThrowOtherErrorEntity,
|
|
678
645
|
ThrowOtherErrorEntityPrivacyPolicy<
|
|
679
646
|
TestEntityThrowOtherErrorFields,
|
|
680
|
-
|
|
647
|
+
'id',
|
|
681
648
|
ViewerContext,
|
|
682
649
|
SimpleTestThrowOtherErrorEntity
|
|
683
650
|
>
|
|
684
651
|
> {
|
|
685
652
|
return {
|
|
686
653
|
entityClass: SimpleTestThrowOtherErrorEntity,
|
|
687
|
-
entityConfiguration: new EntityConfiguration<TestEntityThrowOtherErrorFields>({
|
|
654
|
+
entityConfiguration: new EntityConfiguration<TestEntityThrowOtherErrorFields, 'id'>({
|
|
688
655
|
idField: 'id',
|
|
689
656
|
tableName: 'blah_3',
|
|
690
657
|
inboundEdges: [],
|
|
691
658
|
schema: {
|
|
692
659
|
id: new UUIDField({
|
|
693
660
|
columnName: 'custom_id',
|
|
661
|
+
cache: false,
|
|
694
662
|
}),
|
|
695
663
|
simple_test_id: new UUIDField({
|
|
696
664
|
columnName: 'simple_test_id',
|