@expo/entity 0.41.0 → 0.43.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.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 +10 -10
- 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 +8 -8
- 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 +56 -49
- 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 +39 -39
- 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 +24 -24
- 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 +4 -4
- 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 +2 -2
- package/src/__tests__/EntityAssociationLoader-test.ts +2 -2
- package/src/__tests__/EntityCommonUseCases-test.ts +11 -11
- 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 +97 -72
- package/src/__tests__/EntityFields-test.ts +2 -2
- package/src/__tests__/EntityLoader-test.ts +2 -2
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +11 -11
- 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 +3 -3
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +64 -39
- package/src/__tests__/GenericEntityCacheAdapter-test.ts +83 -28
- package/src/__tests__/ReadonlyEntity-test.ts +3 -3
- 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 +12 -12
- package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +12 -12
- 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 +62 -66
- package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +29 -25
- 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 -242
- 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 -94
- 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 -146
- 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 -723
- 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 -73
- 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 -201
- 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 -211
- 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 -123
- 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 -121
- 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 -486
- 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 -178
- 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
|
@@ -25,22 +25,23 @@ type BlahFields = {
|
|
|
25
25
|
id: string;
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
class BlahEntity extends Entity<BlahFields,
|
|
28
|
+
class BlahEntity extends Entity<BlahFields, 'id', ViewerContext> {
|
|
29
29
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
30
30
|
BlahFields,
|
|
31
|
-
|
|
31
|
+
'id',
|
|
32
32
|
ViewerContext,
|
|
33
33
|
BlahEntity,
|
|
34
34
|
any
|
|
35
35
|
> {
|
|
36
36
|
return {
|
|
37
37
|
entityClass: BlahEntity,
|
|
38
|
-
entityConfiguration: new EntityConfiguration<BlahFields>({
|
|
38
|
+
entityConfiguration: new EntityConfiguration<BlahFields, 'id'>({
|
|
39
39
|
idField: 'id',
|
|
40
40
|
tableName: 'blah_table',
|
|
41
41
|
schema: {
|
|
42
42
|
id: new UUIDField({
|
|
43
43
|
columnName: 'id',
|
|
44
|
+
cache: false,
|
|
44
45
|
}),
|
|
45
46
|
},
|
|
46
47
|
databaseAdapterFlavor: 'postgres',
|
|
@@ -51,30 +52,30 @@ class BlahEntity extends Entity<BlahFields, string, ViewerContext> {
|
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
54
|
|
|
54
|
-
class AlwaysDenyPolicy extends EntityPrivacyPolicy<BlahFields,
|
|
55
|
+
class AlwaysDenyPolicy extends EntityPrivacyPolicy<BlahFields, 'id', ViewerContext, BlahEntity> {
|
|
55
56
|
protected override readonly createRules = [
|
|
56
|
-
new AlwaysDenyPrivacyPolicyRule<BlahFields,
|
|
57
|
+
new AlwaysDenyPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
57
58
|
];
|
|
58
59
|
protected override readonly readRules = [
|
|
59
|
-
new AlwaysDenyPrivacyPolicyRule<BlahFields,
|
|
60
|
+
new AlwaysDenyPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
60
61
|
];
|
|
61
62
|
protected override readonly updateRules = [
|
|
62
|
-
new AlwaysDenyPrivacyPolicyRule<BlahFields,
|
|
63
|
+
new AlwaysDenyPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
63
64
|
];
|
|
64
65
|
protected override readonly deleteRules = [
|
|
65
|
-
new AlwaysDenyPrivacyPolicyRule<BlahFields,
|
|
66
|
+
new AlwaysDenyPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
66
67
|
];
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
class DryRunAlwaysDenyPolicy extends AlwaysDenyPolicy {
|
|
70
71
|
// public method for test spying
|
|
71
72
|
public denyHandler(
|
|
72
|
-
_error: EntityNotAuthorizedError<BlahFields,
|
|
73
|
+
_error: EntityNotAuthorizedError<BlahFields, 'id', ViewerContext, BlahEntity>,
|
|
73
74
|
): void {}
|
|
74
75
|
|
|
75
76
|
protected override getPrivacyPolicyEvaluator(): EntityPrivacyPolicyEvaluator<
|
|
76
77
|
BlahFields,
|
|
77
|
-
|
|
78
|
+
'id',
|
|
78
79
|
ViewerContext,
|
|
79
80
|
BlahEntity
|
|
80
81
|
> {
|
|
@@ -88,12 +89,12 @@ class DryRunAlwaysDenyPolicy extends AlwaysDenyPolicy {
|
|
|
88
89
|
class LoggingEnforceAlwaysDenyPolicy extends AlwaysDenyPolicy {
|
|
89
90
|
// public method for test spying
|
|
90
91
|
public denyHandler(
|
|
91
|
-
_error: EntityNotAuthorizedError<BlahFields,
|
|
92
|
+
_error: EntityNotAuthorizedError<BlahFields, 'id', ViewerContext, BlahEntity>,
|
|
92
93
|
): void {}
|
|
93
94
|
|
|
94
95
|
protected override getPrivacyPolicyEvaluator(): EntityPrivacyPolicyEvaluator<
|
|
95
96
|
BlahFields,
|
|
96
|
-
|
|
97
|
+
'id',
|
|
97
98
|
ViewerContext,
|
|
98
99
|
BlahEntity
|
|
99
100
|
> {
|
|
@@ -104,30 +105,30 @@ class LoggingEnforceAlwaysDenyPolicy extends AlwaysDenyPolicy {
|
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
|
|
107
|
-
class AlwaysAllowPolicy extends EntityPrivacyPolicy<BlahFields,
|
|
108
|
+
class AlwaysAllowPolicy extends EntityPrivacyPolicy<BlahFields, 'id', ViewerContext, BlahEntity> {
|
|
108
109
|
protected override readonly createRules = [
|
|
109
|
-
new AlwaysAllowPrivacyPolicyRule<BlahFields,
|
|
110
|
+
new AlwaysAllowPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
110
111
|
];
|
|
111
112
|
protected override readonly readRules = [
|
|
112
|
-
new AlwaysAllowPrivacyPolicyRule<BlahFields,
|
|
113
|
+
new AlwaysAllowPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
113
114
|
];
|
|
114
115
|
protected override readonly updateRules = [
|
|
115
|
-
new AlwaysAllowPrivacyPolicyRule<BlahFields,
|
|
116
|
+
new AlwaysAllowPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
116
117
|
];
|
|
117
118
|
protected override readonly deleteRules = [
|
|
118
|
-
new AlwaysAllowPrivacyPolicyRule<BlahFields,
|
|
119
|
+
new AlwaysAllowPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
119
120
|
];
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
class DryRunAlwaysAllowPolicy extends AlwaysAllowPolicy {
|
|
123
124
|
// public method for test spying
|
|
124
125
|
public denyHandler(
|
|
125
|
-
_error: EntityNotAuthorizedError<BlahFields,
|
|
126
|
+
_error: EntityNotAuthorizedError<BlahFields, 'id', ViewerContext, BlahEntity>,
|
|
126
127
|
): void {}
|
|
127
128
|
|
|
128
129
|
protected override getPrivacyPolicyEvaluator(): EntityPrivacyPolicyEvaluator<
|
|
129
130
|
BlahFields,
|
|
130
|
-
|
|
131
|
+
'id',
|
|
131
132
|
ViewerContext,
|
|
132
133
|
BlahEntity
|
|
133
134
|
> {
|
|
@@ -141,12 +142,12 @@ class DryRunAlwaysAllowPolicy extends AlwaysAllowPolicy {
|
|
|
141
142
|
class LoggingEnforceAlwaysAllowPolicy extends AlwaysAllowPolicy {
|
|
142
143
|
// public method for test spying
|
|
143
144
|
public denyHandler(
|
|
144
|
-
_error: EntityNotAuthorizedError<BlahFields,
|
|
145
|
+
_error: EntityNotAuthorizedError<BlahFields, 'id', ViewerContext, BlahEntity>,
|
|
145
146
|
): void {}
|
|
146
147
|
|
|
147
148
|
protected override getPrivacyPolicyEvaluator(): EntityPrivacyPolicyEvaluator<
|
|
148
149
|
BlahFields,
|
|
149
|
-
|
|
150
|
+
'id',
|
|
150
151
|
ViewerContext,
|
|
151
152
|
BlahEntity
|
|
152
153
|
> {
|
|
@@ -157,24 +158,24 @@ class LoggingEnforceAlwaysAllowPolicy extends AlwaysAllowPolicy {
|
|
|
157
158
|
}
|
|
158
159
|
}
|
|
159
160
|
|
|
160
|
-
class SkipAllPolicy extends EntityPrivacyPolicy<BlahFields,
|
|
161
|
+
class SkipAllPolicy extends EntityPrivacyPolicy<BlahFields, 'id', ViewerContext, BlahEntity> {
|
|
161
162
|
protected override readonly createRules = [
|
|
162
|
-
new AlwaysSkipPrivacyPolicyRule<BlahFields,
|
|
163
|
+
new AlwaysSkipPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
163
164
|
];
|
|
164
165
|
protected override readonly readRules = [
|
|
165
|
-
new AlwaysSkipPrivacyPolicyRule<BlahFields,
|
|
166
|
+
new AlwaysSkipPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
166
167
|
];
|
|
167
168
|
protected override readonly updateRules = [
|
|
168
|
-
new AlwaysSkipPrivacyPolicyRule<BlahFields,
|
|
169
|
+
new AlwaysSkipPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
169
170
|
];
|
|
170
171
|
protected override readonly deleteRules = [
|
|
171
|
-
new AlwaysSkipPrivacyPolicyRule<BlahFields,
|
|
172
|
+
new AlwaysSkipPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
172
173
|
];
|
|
173
174
|
}
|
|
174
175
|
|
|
175
176
|
class InvalidCreateRuleResultPolicy extends EntityPrivacyPolicy<
|
|
176
177
|
BlahFields,
|
|
177
|
-
|
|
178
|
+
'id',
|
|
178
179
|
ViewerContext,
|
|
179
180
|
BlahEntity
|
|
180
181
|
> {
|
|
@@ -186,19 +187,19 @@ class InvalidCreateRuleResultPolicy extends EntityPrivacyPolicy<
|
|
|
186
187
|
},
|
|
187
188
|
];
|
|
188
189
|
protected override readonly readRules = [
|
|
189
|
-
new AlwaysSkipPrivacyPolicyRule<BlahFields,
|
|
190
|
+
new AlwaysSkipPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
190
191
|
];
|
|
191
192
|
protected override readonly updateRules = [
|
|
192
|
-
new AlwaysSkipPrivacyPolicyRule<BlahFields,
|
|
193
|
+
new AlwaysSkipPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
193
194
|
];
|
|
194
195
|
protected override readonly deleteRules = [
|
|
195
|
-
new AlwaysSkipPrivacyPolicyRule<BlahFields,
|
|
196
|
+
new AlwaysSkipPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
196
197
|
];
|
|
197
198
|
}
|
|
198
199
|
|
|
199
200
|
class AlwaysThrowPrivacyPolicyRule extends PrivacyPolicyRule<
|
|
200
201
|
BlahFields,
|
|
201
|
-
|
|
202
|
+
'id',
|
|
202
203
|
ViewerContext,
|
|
203
204
|
BlahEntity
|
|
204
205
|
> {
|
|
@@ -207,7 +208,7 @@ class AlwaysThrowPrivacyPolicyRule extends PrivacyPolicyRule<
|
|
|
207
208
|
_queryContext: EntityQueryContext,
|
|
208
209
|
_evaluationContext: EntityPrivacyPolicyEvaluationContext<
|
|
209
210
|
BlahFields,
|
|
210
|
-
|
|
211
|
+
'id',
|
|
211
212
|
ViewerContext,
|
|
212
213
|
BlahEntity
|
|
213
214
|
>,
|
|
@@ -217,7 +218,7 @@ class AlwaysThrowPrivacyPolicyRule extends PrivacyPolicyRule<
|
|
|
217
218
|
}
|
|
218
219
|
}
|
|
219
220
|
|
|
220
|
-
class ThrowAllPolicy extends EntityPrivacyPolicy<BlahFields,
|
|
221
|
+
class ThrowAllPolicy extends EntityPrivacyPolicy<BlahFields, 'id', ViewerContext, BlahEntity> {
|
|
221
222
|
protected override readonly createRules = [new AlwaysThrowPrivacyPolicyRule()];
|
|
222
223
|
protected override readonly readRules = [new AlwaysThrowPrivacyPolicyRule()];
|
|
223
224
|
protected override readonly updateRules = [new AlwaysThrowPrivacyPolicyRule()];
|
|
@@ -227,12 +228,12 @@ class ThrowAllPolicy extends EntityPrivacyPolicy<BlahFields, string, ViewerConte
|
|
|
227
228
|
class DryRunThrowAllPolicy extends ThrowAllPolicy {
|
|
228
229
|
// public method for test spying
|
|
229
230
|
public denyHandler(
|
|
230
|
-
_error: EntityNotAuthorizedError<BlahFields,
|
|
231
|
+
_error: EntityNotAuthorizedError<BlahFields, 'id', ViewerContext, BlahEntity>,
|
|
231
232
|
): void {}
|
|
232
233
|
|
|
233
234
|
protected override getPrivacyPolicyEvaluator(): EntityPrivacyPolicyEvaluator<
|
|
234
235
|
BlahFields,
|
|
235
|
-
|
|
236
|
+
'id',
|
|
236
237
|
ViewerContext,
|
|
237
238
|
BlahEntity
|
|
238
239
|
> {
|
|
@@ -246,12 +247,12 @@ class DryRunThrowAllPolicy extends ThrowAllPolicy {
|
|
|
246
247
|
class LoggingEnforceThrowAllPolicy extends ThrowAllPolicy {
|
|
247
248
|
// public method for test spying
|
|
248
249
|
public denyHandler(
|
|
249
|
-
_error: EntityNotAuthorizedError<BlahFields,
|
|
250
|
+
_error: EntityNotAuthorizedError<BlahFields, 'id', ViewerContext, BlahEntity>,
|
|
250
251
|
): void {}
|
|
251
252
|
|
|
252
253
|
protected override getPrivacyPolicyEvaluator(): EntityPrivacyPolicyEvaluator<
|
|
253
254
|
BlahFields,
|
|
254
|
-
|
|
255
|
+
'id',
|
|
255
256
|
ViewerContext,
|
|
256
257
|
BlahEntity
|
|
257
258
|
> {
|
|
@@ -262,7 +263,7 @@ class LoggingEnforceThrowAllPolicy extends ThrowAllPolicy {
|
|
|
262
263
|
}
|
|
263
264
|
}
|
|
264
265
|
|
|
265
|
-
class EmptyPolicy extends EntityPrivacyPolicy<BlahFields,
|
|
266
|
+
class EmptyPolicy extends EntityPrivacyPolicy<BlahFields, 'id', ViewerContext, BlahEntity> {
|
|
266
267
|
protected override readonly createRules = [];
|
|
267
268
|
protected override readonly readRules = [];
|
|
268
269
|
protected override readonly updateRules = [];
|
|
@@ -276,9 +277,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
276
277
|
const queryContext = instance(mock(EntityQueryContext));
|
|
277
278
|
const privacyPolicyEvaluationContext =
|
|
278
279
|
instance(
|
|
279
|
-
mock<
|
|
280
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
281
|
-
>(),
|
|
280
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
282
281
|
);
|
|
283
282
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
284
283
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -315,9 +314,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
315
314
|
const queryContext = instance(mock(EntityQueryContext));
|
|
316
315
|
const privacyPolicyEvaluationContext =
|
|
317
316
|
instance(
|
|
318
|
-
mock<
|
|
319
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
320
|
-
>(),
|
|
317
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
321
318
|
);
|
|
322
319
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
323
320
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -353,9 +350,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
353
350
|
const queryContext = instance(mock(EntityQueryContext));
|
|
354
351
|
const privacyPolicyEvaluationContext =
|
|
355
352
|
instance(
|
|
356
|
-
mock<
|
|
357
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
358
|
-
>(),
|
|
353
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
359
354
|
);
|
|
360
355
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
361
356
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -392,9 +387,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
392
387
|
const queryContext = instance(mock(EntityQueryContext));
|
|
393
388
|
const privacyPolicyEvaluationContext =
|
|
394
389
|
instance(
|
|
395
|
-
mock<
|
|
396
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
397
|
-
>(),
|
|
390
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
398
391
|
);
|
|
399
392
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
400
393
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -421,9 +414,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
421
414
|
const queryContext = instance(mock(EntityQueryContext));
|
|
422
415
|
const privacyPolicyEvaluationContext =
|
|
423
416
|
instance(
|
|
424
|
-
mock<
|
|
425
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
426
|
-
>(),
|
|
417
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
427
418
|
);
|
|
428
419
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
429
420
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -460,9 +451,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
460
451
|
const queryContext = instance(mock(EntityQueryContext));
|
|
461
452
|
const privacyPolicyEvaluationContext =
|
|
462
453
|
instance(
|
|
463
|
-
mock<
|
|
464
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
465
|
-
>(),
|
|
454
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
466
455
|
);
|
|
467
456
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
468
457
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -492,9 +481,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
492
481
|
const queryContext = instance(mock(EntityQueryContext));
|
|
493
482
|
const privacyPolicyEvaluationContext =
|
|
494
483
|
instance(
|
|
495
|
-
mock<
|
|
496
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
497
|
-
>(),
|
|
484
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
498
485
|
);
|
|
499
486
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
500
487
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -536,9 +523,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
536
523
|
const queryContext = instance(mock(EntityQueryContext));
|
|
537
524
|
const privacyPolicyEvaluationContext =
|
|
538
525
|
instance(
|
|
539
|
-
mock<
|
|
540
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
541
|
-
>(),
|
|
526
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
542
527
|
);
|
|
543
528
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
544
529
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -580,9 +565,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
580
565
|
const queryContext = instance(mock(EntityQueryContext));
|
|
581
566
|
const privacyPolicyEvaluationContext =
|
|
582
567
|
instance(
|
|
583
|
-
mock<
|
|
584
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
585
|
-
>(),
|
|
568
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
586
569
|
);
|
|
587
570
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
588
571
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -618,9 +601,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
618
601
|
const queryContext = instance(mock(EntityQueryContext));
|
|
619
602
|
const privacyPolicyEvaluationContext =
|
|
620
603
|
instance(
|
|
621
|
-
mock<
|
|
622
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
623
|
-
>(),
|
|
604
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
624
605
|
);
|
|
625
606
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
626
607
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -663,9 +644,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
663
644
|
const queryContext = instance(mock(EntityQueryContext));
|
|
664
645
|
const privacyPolicyEvaluationContext =
|
|
665
646
|
instance(
|
|
666
|
-
mock<
|
|
667
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
668
|
-
>(),
|
|
647
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
669
648
|
);
|
|
670
649
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
671
650
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -707,9 +686,7 @@ describe(EntityPrivacyPolicy, () => {
|
|
|
707
686
|
const queryContext = instance(mock(EntityQueryContext));
|
|
708
687
|
const privacyPolicyEvaluationContext =
|
|
709
688
|
instance(
|
|
710
|
-
mock<
|
|
711
|
-
EntityPrivacyPolicyEvaluationContext<BlahFields, string, ViewerContext, BlahEntity>
|
|
712
|
-
>(),
|
|
689
|
+
mock<EntityPrivacyPolicyEvaluationContext<BlahFields, 'id', ViewerContext, BlahEntity>>(),
|
|
713
690
|
);
|
|
714
691
|
const metricsAdapterMock = mock<IEntityMetricsAdapter>();
|
|
715
692
|
const metricsAdapter = instance(metricsAdapterMock);
|
|
@@ -2,7 +2,7 @@ import invariant from 'invariant';
|
|
|
2
2
|
|
|
3
3
|
import { EntityQueryContext, TransactionIsolationLevel } from '../EntityQueryContext';
|
|
4
4
|
import ViewerContext from '../ViewerContext';
|
|
5
|
-
import { createUnitTestEntityCompanionProvider } from '../utils/
|
|
5
|
+
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
6
6
|
|
|
7
7
|
describe(EntityQueryContext, () => {
|
|
8
8
|
describe('callbacks', () => {
|
|
@@ -6,15 +6,15 @@ import ViewerContext from '../ViewerContext';
|
|
|
6
6
|
import SimpleTestEntity, {
|
|
7
7
|
SimpleTestEntityPrivacyPolicy,
|
|
8
8
|
SimpleTestFields,
|
|
9
|
-
} from '../
|
|
10
|
-
import { createUnitTestEntityCompanionProvider } from '../utils/
|
|
9
|
+
} from '../utils/__testfixtures__/SimpleTestEntity';
|
|
10
|
+
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
11
11
|
|
|
12
12
|
type TestLoadParams = { id: string };
|
|
13
13
|
|
|
14
14
|
class TestSecondaryRedisCacheLoader extends EntitySecondaryCacheLoader<
|
|
15
15
|
TestLoadParams,
|
|
16
16
|
SimpleTestFields,
|
|
17
|
-
|
|
17
|
+
'id',
|
|
18
18
|
ViewerContext,
|
|
19
19
|
SimpleTestEntity,
|
|
20
20
|
SimpleTestEntityPrivacyPolicy
|
|
@@ -5,10 +5,11 @@ import { EntityEdgeDeletionBehavior } from '../EntityFieldDefinition';
|
|
|
5
5
|
import { UUIDField } from '../EntityFields';
|
|
6
6
|
import EntityPrivacyPolicy from '../EntityPrivacyPolicy';
|
|
7
7
|
import { CacheStatus } from '../internal/ReadThroughEntityCache';
|
|
8
|
+
import { SingleFieldHolder, SingleFieldValueHolder } from '../internal/SingleFieldHolder';
|
|
8
9
|
import AlwaysAllowPrivacyPolicyRule from '../rules/AlwaysAllowPrivacyPolicyRule';
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import { createUnitTestEntityCompanionProvider } from '../utils/
|
|
10
|
+
import { InMemoryFullCacheStubCacheAdapter } from '../utils/__testfixtures__/StubCacheAdapter';
|
|
11
|
+
import TestViewerContext from '../utils/__testfixtures__/TestViewerContext';
|
|
12
|
+
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
12
13
|
|
|
13
14
|
interface CategoryFields {
|
|
14
15
|
id: string;
|
|
@@ -17,31 +18,31 @@ interface CategoryFields {
|
|
|
17
18
|
|
|
18
19
|
class CategoryPrivacyPolicy extends EntityPrivacyPolicy<
|
|
19
20
|
CategoryFields,
|
|
20
|
-
|
|
21
|
+
'id',
|
|
21
22
|
TestViewerContext,
|
|
22
23
|
any,
|
|
23
24
|
any
|
|
24
25
|
> {
|
|
25
26
|
protected override readonly readRules = [
|
|
26
|
-
new AlwaysAllowPrivacyPolicyRule<CategoryFields,
|
|
27
|
+
new AlwaysAllowPrivacyPolicyRule<CategoryFields, 'id', TestViewerContext, any, any>(),
|
|
27
28
|
];
|
|
28
29
|
protected override readonly createRules = [
|
|
29
|
-
new AlwaysAllowPrivacyPolicyRule<CategoryFields,
|
|
30
|
+
new AlwaysAllowPrivacyPolicyRule<CategoryFields, 'id', TestViewerContext, any, any>(),
|
|
30
31
|
];
|
|
31
32
|
protected override readonly updateRules = [
|
|
32
|
-
new AlwaysAllowPrivacyPolicyRule<CategoryFields,
|
|
33
|
+
new AlwaysAllowPrivacyPolicyRule<CategoryFields, 'id', TestViewerContext, any, any>(),
|
|
33
34
|
];
|
|
34
35
|
protected override readonly deleteRules = [
|
|
35
|
-
new AlwaysAllowPrivacyPolicyRule<CategoryFields,
|
|
36
|
+
new AlwaysAllowPrivacyPolicyRule<CategoryFields, 'id', TestViewerContext, any, any>(),
|
|
36
37
|
];
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
40
41
|
const makeEntityClass = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) => {
|
|
41
|
-
class CategoryEntity extends Entity<CategoryFields,
|
|
42
|
+
class CategoryEntity extends Entity<CategoryFields, 'id', TestViewerContext> {
|
|
42
43
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
43
44
|
CategoryFields,
|
|
44
|
-
|
|
45
|
+
'id',
|
|
45
46
|
TestViewerContext,
|
|
46
47
|
CategoryEntity,
|
|
47
48
|
CategoryPrivacyPolicy
|
|
@@ -54,7 +55,7 @@ const makeEntityClass = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) => {
|
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
const categoryEntityConfiguration = new EntityConfiguration<CategoryFields>({
|
|
58
|
+
const categoryEntityConfiguration = new EntityConfiguration<CategoryFields, 'id'>({
|
|
58
59
|
idField: 'id',
|
|
59
60
|
tableName: 'categories',
|
|
60
61
|
inboundEdges: [CategoryEntity],
|
|
@@ -245,30 +246,40 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
|
|
|
245
246
|
CategoryEntity,
|
|
246
247
|
)['entityCompanion']['tableDataCoordinator'][
|
|
247
248
|
'cacheAdapter'
|
|
248
|
-
] as InMemoryFullCacheStubCacheAdapter<CategoryFields>;
|
|
249
|
-
const subCategoryCachedBefore = await categoryCacheAdapter.loadManyAsync(
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
249
|
+
] as InMemoryFullCacheStubCacheAdapter<CategoryFields, 'id'>;
|
|
250
|
+
const subCategoryCachedBefore = await categoryCacheAdapter.loadManyAsync(
|
|
251
|
+
new SingleFieldHolder('parent_category_id'),
|
|
252
|
+
[new SingleFieldValueHolder(parentCategory.getID())],
|
|
253
|
+
);
|
|
254
|
+
expect(
|
|
255
|
+
subCategoryCachedBefore.get(new SingleFieldValueHolder(parentCategory.getID()))?.status,
|
|
256
|
+
).toEqual(CacheStatus.HIT);
|
|
253
257
|
|
|
254
258
|
const subSubCategoryCachedBefore = await categoryCacheAdapter.loadManyAsync(
|
|
255
|
-
'parent_category_id',
|
|
256
|
-
[subCategory.getID()],
|
|
259
|
+
new SingleFieldHolder('parent_category_id'),
|
|
260
|
+
[new SingleFieldValueHolder(subCategory.getID())],
|
|
257
261
|
);
|
|
258
|
-
expect(
|
|
262
|
+
expect(
|
|
263
|
+
subSubCategoryCachedBefore.get(new SingleFieldValueHolder(subCategory.getID()))?.status,
|
|
264
|
+
).toEqual(CacheStatus.HIT);
|
|
259
265
|
|
|
260
266
|
await CategoryEntity.deleter(parentCategory).deleteAsync();
|
|
261
267
|
|
|
262
|
-
const subCategoryCachedAfter = await categoryCacheAdapter.loadManyAsync(
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
268
|
+
const subCategoryCachedAfter = await categoryCacheAdapter.loadManyAsync(
|
|
269
|
+
new SingleFieldHolder('parent_category_id'),
|
|
270
|
+
[new SingleFieldValueHolder(parentCategory.getID())],
|
|
271
|
+
);
|
|
272
|
+
expect(
|
|
273
|
+
subCategoryCachedAfter.get(new SingleFieldValueHolder(parentCategory.getID()))?.status,
|
|
274
|
+
).toEqual(CacheStatus.MISS);
|
|
266
275
|
|
|
267
276
|
const subSubCategoryCachedAfter = await categoryCacheAdapter.loadManyAsync(
|
|
268
|
-
'parent_category_id',
|
|
269
|
-
[subCategory.getID()],
|
|
277
|
+
new SingleFieldHolder('parent_category_id'),
|
|
278
|
+
[new SingleFieldValueHolder(subCategory.getID())],
|
|
270
279
|
);
|
|
271
|
-
expect(
|
|
280
|
+
expect(
|
|
281
|
+
subSubCategoryCachedAfter.get(new SingleFieldValueHolder(subCategory.getID()))?.status,
|
|
282
|
+
).toEqual(CacheStatus.MISS);
|
|
272
283
|
|
|
273
284
|
await expect(
|
|
274
285
|
CategoryEntity.loader(viewerContext).loadByIDNullableAsync(parentCategory.getID()),
|
|
@@ -314,21 +325,35 @@ describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
|
|
|
314
325
|
CategoryEntity,
|
|
315
326
|
)['entityCompanion']['tableDataCoordinator'][
|
|
316
327
|
'cacheAdapter'
|
|
317
|
-
] as InMemoryFullCacheStubCacheAdapter<CategoryFields>;
|
|
318
|
-
const categoriesCachedBefore = await categoryCacheAdapter.loadManyAsync(
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
328
|
+
] as InMemoryFullCacheStubCacheAdapter<CategoryFields, 'id'>;
|
|
329
|
+
const categoriesCachedBefore = await categoryCacheAdapter.loadManyAsync(
|
|
330
|
+
new SingleFieldHolder('parent_category_id'),
|
|
331
|
+
[
|
|
332
|
+
new SingleFieldValueHolder(categoryA.getID()),
|
|
333
|
+
new SingleFieldValueHolder(categoryB.getID()),
|
|
334
|
+
],
|
|
335
|
+
);
|
|
336
|
+
expect(
|
|
337
|
+
categoriesCachedBefore.get(new SingleFieldValueHolder(categoryA.getID()))?.status,
|
|
338
|
+
).toEqual(CacheStatus.HIT);
|
|
339
|
+
expect(
|
|
340
|
+
categoriesCachedBefore.get(new SingleFieldValueHolder(categoryB.getID()))?.status,
|
|
341
|
+
).toEqual(CacheStatus.HIT);
|
|
324
342
|
|
|
325
343
|
await CategoryEntity.deleter(categoryA).deleteAsync();
|
|
326
344
|
|
|
327
|
-
const categoriesCachedAfter = await categoryCacheAdapter.loadManyAsync(
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
345
|
+
const categoriesCachedAfter = await categoryCacheAdapter.loadManyAsync(
|
|
346
|
+
new SingleFieldHolder('parent_category_id'),
|
|
347
|
+
[
|
|
348
|
+
new SingleFieldValueHolder(categoryA.getID()),
|
|
349
|
+
new SingleFieldValueHolder(categoryB.getID()),
|
|
350
|
+
],
|
|
351
|
+
);
|
|
352
|
+
expect(
|
|
353
|
+
categoriesCachedAfter.get(new SingleFieldValueHolder(categoryA.getID()))?.status,
|
|
354
|
+
).toEqual(CacheStatus.MISS);
|
|
355
|
+
expect(
|
|
356
|
+
categoriesCachedAfter.get(new SingleFieldValueHolder(categoryB.getID()))?.status,
|
|
357
|
+
).toEqual(CacheStatus.MISS);
|
|
333
358
|
});
|
|
334
359
|
});
|