@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
|
@@ -13,10 +13,11 @@ import EntityPrivacyPolicy, {
|
|
|
13
13
|
} from '../EntityPrivacyPolicy';
|
|
14
14
|
import { EntityTransactionalQueryContext, EntityQueryContext } from '../EntityQueryContext';
|
|
15
15
|
import { CacheStatus } from '../internal/ReadThroughEntityCache';
|
|
16
|
+
import { SingleFieldHolder, SingleFieldValueHolder } from '../internal/SingleFieldHolder';
|
|
16
17
|
import PrivacyPolicyRule, { RuleEvaluationResult } from '../rules/PrivacyPolicyRule';
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import { createUnitTestEntityCompanionProvider } from '../utils/
|
|
18
|
+
import { InMemoryFullCacheStubCacheAdapter } from '../utils/__testfixtures__/StubCacheAdapter';
|
|
19
|
+
import TestViewerContext from '../utils/__testfixtures__/TestViewerContext';
|
|
20
|
+
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
20
21
|
|
|
21
22
|
interface OtherFields {
|
|
22
23
|
id: string;
|
|
@@ -73,7 +74,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
73
74
|
|
|
74
75
|
class AlwaysAllowPrivacyPolicyRuleThatRecords extends PrivacyPolicyRule<
|
|
75
76
|
any,
|
|
76
|
-
|
|
77
|
+
'id',
|
|
77
78
|
TestViewerContext,
|
|
78
79
|
any,
|
|
79
80
|
any
|
|
@@ -87,7 +88,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
87
88
|
_queryContext: EntityQueryContext,
|
|
88
89
|
evaluationContext: EntityPrivacyPolicyEvaluationContext<
|
|
89
90
|
any,
|
|
90
|
-
|
|
91
|
+
'id',
|
|
91
92
|
TestViewerContext,
|
|
92
93
|
any,
|
|
93
94
|
any
|
|
@@ -105,7 +106,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
105
106
|
|
|
106
107
|
class TestEntityPrivacyPolicy extends EntityPrivacyPolicy<
|
|
107
108
|
any,
|
|
108
|
-
|
|
109
|
+
'id',
|
|
109
110
|
TestViewerContext,
|
|
110
111
|
any,
|
|
111
112
|
any
|
|
@@ -126,7 +127,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
126
127
|
|
|
127
128
|
class ParentCheckInfoDeletionTrigger extends EntityMutationTrigger<
|
|
128
129
|
ParentFields,
|
|
129
|
-
|
|
130
|
+
'id',
|
|
130
131
|
TestViewerContext,
|
|
131
132
|
ParentEntity
|
|
132
133
|
> {
|
|
@@ -134,12 +135,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
134
135
|
_viewerContext: TestViewerContext,
|
|
135
136
|
_queryContext: EntityTransactionalQueryContext,
|
|
136
137
|
_entity: ParentEntity,
|
|
137
|
-
mutationInfo: EntityTriggerMutationInfo<
|
|
138
|
-
ParentFields,
|
|
139
|
-
string,
|
|
140
|
-
TestViewerContext,
|
|
141
|
-
ParentEntity
|
|
142
|
-
>,
|
|
138
|
+
mutationInfo: EntityTriggerMutationInfo<ParentFields, 'id', TestViewerContext, ParentEntity>,
|
|
143
139
|
): Promise<void> {
|
|
144
140
|
invariant(mutationInfo.type === EntityMutationType.DELETE, 'invalid EntityMutationType');
|
|
145
141
|
if (mutationInfo.cascadingDeleteCause !== null) {
|
|
@@ -152,7 +148,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
152
148
|
|
|
153
149
|
class ParentCheckInfoUpdateTrigger extends EntityMutationTrigger<
|
|
154
150
|
ParentFields,
|
|
155
|
-
|
|
151
|
+
'id',
|
|
156
152
|
TestViewerContext,
|
|
157
153
|
ParentEntity
|
|
158
154
|
> {
|
|
@@ -160,12 +156,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
160
156
|
_viewerContext: TestViewerContext,
|
|
161
157
|
_queryContext: EntityTransactionalQueryContext,
|
|
162
158
|
_entity: ParentEntity,
|
|
163
|
-
mutationInfo: EntityTriggerMutationInfo<
|
|
164
|
-
ParentFields,
|
|
165
|
-
string,
|
|
166
|
-
TestViewerContext,
|
|
167
|
-
ParentEntity
|
|
168
|
-
>,
|
|
159
|
+
mutationInfo: EntityTriggerMutationInfo<ParentFields, 'id', TestViewerContext, ParentEntity>,
|
|
169
160
|
): Promise<void> {
|
|
170
161
|
invariant(mutationInfo.type === EntityMutationType.UPDATE, 'invalid EntityMutationType');
|
|
171
162
|
if (mutationInfo.cascadingDeleteCause !== null) {
|
|
@@ -178,7 +169,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
178
169
|
|
|
179
170
|
class ChildCheckInfoDeletionTrigger extends EntityMutationTrigger<
|
|
180
171
|
ChildFields,
|
|
181
|
-
|
|
172
|
+
'id',
|
|
182
173
|
TestViewerContext,
|
|
183
174
|
ChildEntity
|
|
184
175
|
> {
|
|
@@ -186,7 +177,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
186
177
|
_viewerContext: TestViewerContext,
|
|
187
178
|
_queryContext: EntityTransactionalQueryContext,
|
|
188
179
|
_entity: ChildEntity,
|
|
189
|
-
mutationInfo: EntityTriggerMutationInfo<ChildFields,
|
|
180
|
+
mutationInfo: EntityTriggerMutationInfo<ChildFields, 'id', TestViewerContext, ChildEntity>,
|
|
190
181
|
): Promise<void> {
|
|
191
182
|
invariant(mutationInfo.type === EntityMutationType.DELETE, 'invalid EntityMutationType');
|
|
192
183
|
if (mutationInfo.cascadingDeleteCause === null) {
|
|
@@ -210,7 +201,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
210
201
|
|
|
211
202
|
class ChildCheckInfoUpdateTrigger extends EntityMutationTrigger<
|
|
212
203
|
ChildFields,
|
|
213
|
-
|
|
204
|
+
'id',
|
|
214
205
|
TestViewerContext,
|
|
215
206
|
ChildEntity
|
|
216
207
|
> {
|
|
@@ -218,7 +209,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
218
209
|
_viewerContext: TestViewerContext,
|
|
219
210
|
_queryContext: EntityTransactionalQueryContext,
|
|
220
211
|
_entity: ChildEntity,
|
|
221
|
-
mutationInfo: EntityTriggerMutationInfo<ChildFields,
|
|
212
|
+
mutationInfo: EntityTriggerMutationInfo<ChildFields, 'id', TestViewerContext, ChildEntity>,
|
|
222
213
|
): Promise<void> {
|
|
223
214
|
invariant(mutationInfo.type === EntityMutationType.UPDATE, 'invalid EntityMutationType');
|
|
224
215
|
if (mutationInfo.cascadingDeleteCause === null) {
|
|
@@ -242,7 +233,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
242
233
|
|
|
243
234
|
class GrandChildCheckInfoDeletionTrigger extends EntityMutationTrigger<
|
|
244
235
|
GrandChildFields,
|
|
245
|
-
|
|
236
|
+
'id',
|
|
246
237
|
TestViewerContext,
|
|
247
238
|
GrandChildEntity
|
|
248
239
|
> {
|
|
@@ -252,7 +243,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
252
243
|
_entity: GrandChildEntity,
|
|
253
244
|
mutationInfo: EntityTriggerMutationInfo<
|
|
254
245
|
GrandChildFields,
|
|
255
|
-
|
|
246
|
+
'id',
|
|
256
247
|
TestViewerContext,
|
|
257
248
|
GrandChildEntity
|
|
258
249
|
>,
|
|
@@ -293,7 +284,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
293
284
|
|
|
294
285
|
class GrandChildCheckInfoUpdateTrigger extends EntityMutationTrigger<
|
|
295
286
|
GrandChildFields,
|
|
296
|
-
|
|
287
|
+
'id',
|
|
297
288
|
TestViewerContext,
|
|
298
289
|
GrandChildEntity
|
|
299
290
|
> {
|
|
@@ -303,7 +294,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
303
294
|
_entity: GrandChildEntity,
|
|
304
295
|
mutationInfo: EntityTriggerMutationInfo<
|
|
305
296
|
GrandChildFields,
|
|
306
|
-
|
|
297
|
+
'id',
|
|
307
298
|
TestViewerContext,
|
|
308
299
|
GrandChildEntity
|
|
309
300
|
>,
|
|
@@ -342,10 +333,10 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
342
333
|
}
|
|
343
334
|
}
|
|
344
335
|
|
|
345
|
-
class OtherEntity extends Entity<OtherFields,
|
|
336
|
+
class OtherEntity extends Entity<OtherFields, 'id', TestViewerContext> {
|
|
346
337
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
347
338
|
OtherFields,
|
|
348
|
-
|
|
339
|
+
'id',
|
|
349
340
|
TestViewerContext,
|
|
350
341
|
OtherEntity,
|
|
351
342
|
TestEntityPrivacyPolicy
|
|
@@ -358,10 +349,10 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
358
349
|
}
|
|
359
350
|
}
|
|
360
351
|
|
|
361
|
-
class ParentEntity extends Entity<ParentFields,
|
|
352
|
+
class ParentEntity extends Entity<ParentFields, 'id', TestViewerContext> {
|
|
362
353
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
363
354
|
ParentFields,
|
|
364
|
-
|
|
355
|
+
'id',
|
|
365
356
|
TestViewerContext,
|
|
366
357
|
ParentEntity,
|
|
367
358
|
TestEntityPrivacyPolicy
|
|
@@ -381,10 +372,10 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
381
372
|
}
|
|
382
373
|
}
|
|
383
374
|
|
|
384
|
-
class ChildEntity extends Entity<ChildFields,
|
|
375
|
+
class ChildEntity extends Entity<ChildFields, 'id', TestViewerContext> {
|
|
385
376
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
386
377
|
ChildFields,
|
|
387
|
-
|
|
378
|
+
'id',
|
|
388
379
|
TestViewerContext,
|
|
389
380
|
ChildEntity,
|
|
390
381
|
TestEntityPrivacyPolicy
|
|
@@ -404,10 +395,10 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
404
395
|
}
|
|
405
396
|
}
|
|
406
397
|
|
|
407
|
-
class GrandChildEntity extends Entity<GrandChildFields,
|
|
398
|
+
class GrandChildEntity extends Entity<GrandChildFields, 'id', TestViewerContext> {
|
|
408
399
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
409
400
|
GrandChildFields,
|
|
410
|
-
|
|
401
|
+
'id',
|
|
411
402
|
TestViewerContext,
|
|
412
403
|
GrandChildEntity,
|
|
413
404
|
TestEntityPrivacyPolicy
|
|
@@ -427,7 +418,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
427
418
|
}
|
|
428
419
|
}
|
|
429
420
|
|
|
430
|
-
const otherEntityConfiguration = new EntityConfiguration<OtherFields>({
|
|
421
|
+
const otherEntityConfiguration = new EntityConfiguration<OtherFields, 'id'>({
|
|
431
422
|
idField: 'id',
|
|
432
423
|
tableName: 'others',
|
|
433
424
|
schema: {
|
|
@@ -440,7 +431,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
440
431
|
cacheAdapterFlavor: 'redis',
|
|
441
432
|
});
|
|
442
433
|
|
|
443
|
-
const parentEntityConfiguration = new EntityConfiguration<ParentFields>({
|
|
434
|
+
const parentEntityConfiguration = new EntityConfiguration<ParentFields, 'id'>({
|
|
444
435
|
idField: 'id',
|
|
445
436
|
tableName: 'parents',
|
|
446
437
|
inboundEdges: [ChildEntity],
|
|
@@ -454,7 +445,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
454
445
|
cacheAdapterFlavor: 'redis',
|
|
455
446
|
});
|
|
456
447
|
|
|
457
|
-
const childEntityConfiguration = new EntityConfiguration<ChildFields>({
|
|
448
|
+
const childEntityConfiguration = new EntityConfiguration<ChildFields, 'id'>({
|
|
458
449
|
idField: 'id',
|
|
459
450
|
tableName: 'children',
|
|
460
451
|
inboundEdges: [GrandChildEntity],
|
|
@@ -484,7 +475,7 @@ const makeEntityClasses = (edgeDeletionBehavior: EntityEdgeDeletionBehavior) =>
|
|
|
484
475
|
cacheAdapterFlavor: 'redis',
|
|
485
476
|
});
|
|
486
477
|
|
|
487
|
-
const grandChildEntityConfiguration = new EntityConfiguration<GrandChildFields>({
|
|
478
|
+
const grandChildEntityConfiguration = new EntityConfiguration<GrandChildFields, 'id'>({
|
|
488
479
|
idField: 'id',
|
|
489
480
|
tableName: 'grandchildren',
|
|
490
481
|
schema: {
|
|
@@ -774,33 +765,50 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
|
|
|
774
765
|
|
|
775
766
|
const childCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(ChildEntity)[
|
|
776
767
|
'entityCompanion'
|
|
777
|
-
]['tableDataCoordinator']['cacheAdapter'] as InMemoryFullCacheStubCacheAdapter<
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
768
|
+
]['tableDataCoordinator']['cacheAdapter'] as InMemoryFullCacheStubCacheAdapter<
|
|
769
|
+
ChildFields,
|
|
770
|
+
'id'
|
|
771
|
+
>;
|
|
772
|
+
const childCachedBefore = await childCacheAdapter.loadManyAsync(
|
|
773
|
+
new SingleFieldHolder('parent_id'),
|
|
774
|
+
[new SingleFieldValueHolder(parent.getID())],
|
|
775
|
+
);
|
|
776
|
+
expect(childCachedBefore.get(new SingleFieldValueHolder(parent.getID()))?.status).toEqual(
|
|
777
|
+
CacheStatus.HIT,
|
|
778
|
+
);
|
|
782
779
|
|
|
783
780
|
const grandChildCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(
|
|
784
781
|
GrandChildEntity,
|
|
785
782
|
)['entityCompanion']['tableDataCoordinator'][
|
|
786
783
|
'cacheAdapter'
|
|
787
|
-
] as InMemoryFullCacheStubCacheAdapter<ChildFields>;
|
|
788
|
-
const grandChildCachedBefore = await grandChildCacheAdapter.loadManyAsync(
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
784
|
+
] as InMemoryFullCacheStubCacheAdapter<ChildFields, 'id'>;
|
|
785
|
+
const grandChildCachedBefore = await grandChildCacheAdapter.loadManyAsync(
|
|
786
|
+
new SingleFieldHolder('parent_id'),
|
|
787
|
+
[new SingleFieldValueHolder(child.getID())],
|
|
788
|
+
);
|
|
789
|
+
expect(grandChildCachedBefore.get(new SingleFieldValueHolder(child.getID()))?.status).toEqual(
|
|
790
|
+
CacheStatus.HIT,
|
|
791
|
+
);
|
|
792
792
|
|
|
793
793
|
privacyPolicyEvaluationRecords.shouldRecord = true;
|
|
794
794
|
await ParentEntity.deleter(parent).deleteAsync();
|
|
795
795
|
privacyPolicyEvaluationRecords.shouldRecord = false;
|
|
796
796
|
|
|
797
|
-
const childCachedAfter = await childCacheAdapter.loadManyAsync(
|
|
798
|
-
|
|
797
|
+
const childCachedAfter = await childCacheAdapter.loadManyAsync(
|
|
798
|
+
new SingleFieldHolder('parent_id'),
|
|
799
|
+
[new SingleFieldValueHolder(parent.getID())],
|
|
800
|
+
);
|
|
801
|
+
expect(childCachedAfter.get(new SingleFieldValueHolder(parent.getID()))?.status).toEqual(
|
|
802
|
+
CacheStatus.MISS,
|
|
803
|
+
);
|
|
799
804
|
|
|
800
|
-
const grandChildCachedAfter = await grandChildCacheAdapter.loadManyAsync(
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
805
|
+
const grandChildCachedAfter = await grandChildCacheAdapter.loadManyAsync(
|
|
806
|
+
new SingleFieldHolder('parent_id'),
|
|
807
|
+
[new SingleFieldValueHolder(child.getID())],
|
|
808
|
+
);
|
|
809
|
+
expect(grandChildCachedAfter.get(new SingleFieldValueHolder(child.getID()))?.status).toEqual(
|
|
810
|
+
CacheStatus.HIT,
|
|
811
|
+
);
|
|
804
812
|
|
|
805
813
|
await expect(
|
|
806
814
|
ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID()),
|
|
@@ -907,33 +915,50 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
|
|
|
907
915
|
|
|
908
916
|
const childCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(ChildEntity)[
|
|
909
917
|
'entityCompanion'
|
|
910
|
-
]['tableDataCoordinator']['cacheAdapter'] as InMemoryFullCacheStubCacheAdapter<
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
918
|
+
]['tableDataCoordinator']['cacheAdapter'] as InMemoryFullCacheStubCacheAdapter<
|
|
919
|
+
ChildFields,
|
|
920
|
+
'id'
|
|
921
|
+
>;
|
|
922
|
+
const childCachedBefore = await childCacheAdapter.loadManyAsync(
|
|
923
|
+
new SingleFieldHolder('parent_id'),
|
|
924
|
+
[new SingleFieldValueHolder(parent.getID())],
|
|
925
|
+
);
|
|
926
|
+
expect(childCachedBefore.get(new SingleFieldValueHolder(parent.getID()))?.status).toEqual(
|
|
927
|
+
CacheStatus.HIT,
|
|
928
|
+
);
|
|
915
929
|
|
|
916
930
|
const grandChildCacheAdapter = viewerContext.getViewerScopedEntityCompanionForClass(
|
|
917
931
|
GrandChildEntity,
|
|
918
932
|
)['entityCompanion']['tableDataCoordinator'][
|
|
919
933
|
'cacheAdapter'
|
|
920
|
-
] as InMemoryFullCacheStubCacheAdapter<ChildFields>;
|
|
921
|
-
const grandChildCachedBefore = await grandChildCacheAdapter.loadManyAsync(
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
934
|
+
] as InMemoryFullCacheStubCacheAdapter<ChildFields, 'id'>;
|
|
935
|
+
const grandChildCachedBefore = await grandChildCacheAdapter.loadManyAsync(
|
|
936
|
+
new SingleFieldHolder('parent_id'),
|
|
937
|
+
[new SingleFieldValueHolder(child.getID())],
|
|
938
|
+
);
|
|
939
|
+
expect(grandChildCachedBefore.get(new SingleFieldValueHolder(child.getID()))?.status).toEqual(
|
|
940
|
+
CacheStatus.HIT,
|
|
941
|
+
);
|
|
925
942
|
|
|
926
943
|
privacyPolicyEvaluationRecords.shouldRecord = true;
|
|
927
944
|
await ParentEntity.deleter(parent).deleteAsync();
|
|
928
945
|
privacyPolicyEvaluationRecords.shouldRecord = false;
|
|
929
946
|
|
|
930
|
-
const childCachedAfter = await childCacheAdapter.loadManyAsync(
|
|
931
|
-
|
|
947
|
+
const childCachedAfter = await childCacheAdapter.loadManyAsync(
|
|
948
|
+
new SingleFieldHolder('parent_id'),
|
|
949
|
+
[new SingleFieldValueHolder(parent.getID())],
|
|
950
|
+
);
|
|
951
|
+
expect(childCachedAfter.get(new SingleFieldValueHolder(parent.getID()))?.status).toEqual(
|
|
952
|
+
CacheStatus.MISS,
|
|
953
|
+
);
|
|
932
954
|
|
|
933
|
-
const grandChildCachedAfter = await grandChildCacheAdapter.loadManyAsync(
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
955
|
+
const grandChildCachedAfter = await grandChildCacheAdapter.loadManyAsync(
|
|
956
|
+
new SingleFieldHolder('parent_id'),
|
|
957
|
+
[new SingleFieldValueHolder(child.getID())],
|
|
958
|
+
);
|
|
959
|
+
expect(grandChildCachedAfter.get(new SingleFieldValueHolder(child.getID()))?.status).toEqual(
|
|
960
|
+
CacheStatus.MISS,
|
|
961
|
+
);
|
|
937
962
|
|
|
938
963
|
await expect(
|
|
939
964
|
ParentEntity.loader(viewerContext).loadByIDNullableAsync(parent.getID()),
|
|
@@ -13,9 +13,9 @@ import {
|
|
|
13
13
|
EnumField,
|
|
14
14
|
StrictEnumField,
|
|
15
15
|
} from '../EntityFields';
|
|
16
|
-
import describeFieldTestCase from '../utils/
|
|
16
|
+
import describeFieldTestCase from '../utils/__testfixtures__/describeFieldTestCase';
|
|
17
17
|
|
|
18
|
-
class TestFieldDefinition extends EntityFieldDefinition<string> {
|
|
18
|
+
class TestFieldDefinition extends EntityFieldDefinition<string, false> {
|
|
19
19
|
protected validateInputValueInternal(value: string): boolean {
|
|
20
20
|
return value === 'helloworld';
|
|
21
21
|
}
|
|
@@ -3,8 +3,8 @@ import EnforcingEntityLoader from '../EnforcingEntityLoader';
|
|
|
3
3
|
import EntityLoader from '../EntityLoader';
|
|
4
4
|
import EntityLoaderUtils from '../EntityLoaderUtils';
|
|
5
5
|
import ViewerContext from '../ViewerContext';
|
|
6
|
-
import SimpleTestEntity from '../
|
|
7
|
-
import { createUnitTestEntityCompanionProvider } from '../utils/
|
|
6
|
+
import SimpleTestEntity from '../utils/__testfixtures__/SimpleTestEntity';
|
|
7
|
+
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
8
8
|
|
|
9
9
|
describe(EntityLoader, () => {
|
|
10
10
|
describe('enforcing', () => {
|
|
@@ -8,7 +8,7 @@ import EntityMutatorFactory from '../EntityMutatorFactory';
|
|
|
8
8
|
import EntityPrivacyPolicy from '../EntityPrivacyPolicy';
|
|
9
9
|
import ViewerContext from '../ViewerContext';
|
|
10
10
|
import AlwaysAllowPrivacyPolicyRule from '../rules/AlwaysAllowPrivacyPolicyRule';
|
|
11
|
-
import { createUnitTestEntityCompanionProvider } from '../utils/
|
|
11
|
+
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
12
12
|
|
|
13
13
|
type BlahFields = {
|
|
14
14
|
id: string;
|
|
@@ -16,35 +16,35 @@ type BlahFields = {
|
|
|
16
16
|
|
|
17
17
|
class BlahEntityPrivacyPolicy extends EntityPrivacyPolicy<
|
|
18
18
|
BlahFields,
|
|
19
|
-
|
|
19
|
+
'id',
|
|
20
20
|
ViewerContext,
|
|
21
21
|
BlahEntity
|
|
22
22
|
> {
|
|
23
23
|
protected override readonly createRules = [
|
|
24
|
-
new AlwaysAllowPrivacyPolicyRule<BlahFields,
|
|
24
|
+
new AlwaysAllowPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
25
25
|
];
|
|
26
26
|
protected override readonly readRules = [
|
|
27
|
-
new AlwaysAllowPrivacyPolicyRule<BlahFields,
|
|
27
|
+
new AlwaysAllowPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
28
28
|
];
|
|
29
29
|
protected override readonly updateRules = [
|
|
30
|
-
new AlwaysAllowPrivacyPolicyRule<BlahFields,
|
|
30
|
+
new AlwaysAllowPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
31
31
|
];
|
|
32
32
|
protected override readonly deleteRules = [
|
|
33
|
-
new AlwaysAllowPrivacyPolicyRule<BlahFields,
|
|
33
|
+
new AlwaysAllowPrivacyPolicyRule<BlahFields, 'id', ViewerContext, BlahEntity>(),
|
|
34
34
|
];
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
class BlahEntity extends Entity<BlahFields,
|
|
37
|
+
class BlahEntity extends Entity<BlahFields, 'id', ViewerContext> {
|
|
38
38
|
static defineCompanionDefinition(): EntityCompanionDefinition<
|
|
39
39
|
BlahFields,
|
|
40
|
-
|
|
40
|
+
'id',
|
|
41
41
|
ViewerContext,
|
|
42
42
|
BlahEntity,
|
|
43
43
|
BlahEntityPrivacyPolicy
|
|
44
44
|
> {
|
|
45
45
|
return {
|
|
46
46
|
entityClass: BlahEntity,
|
|
47
|
-
entityConfiguration: new EntityConfiguration<BlahFields>({
|
|
47
|
+
entityConfiguration: new EntityConfiguration<BlahFields, 'id'>({
|
|
48
48
|
idField: 'id',
|
|
49
49
|
tableName: 'blah_table',
|
|
50
50
|
schema: {
|
|
@@ -66,14 +66,14 @@ class BlahEntity extends Entity<BlahFields, string, ViewerContext> {
|
|
|
66
66
|
|
|
67
67
|
class TestNonTransactionalMutationTrigger extends EntityNonTransactionalMutationTrigger<
|
|
68
68
|
BlahFields,
|
|
69
|
-
|
|
69
|
+
'id',
|
|
70
70
|
ViewerContext,
|
|
71
71
|
BlahEntity
|
|
72
72
|
> {
|
|
73
73
|
async executeAsync(
|
|
74
74
|
viewerContext: ViewerContext,
|
|
75
75
|
entity: BlahEntity,
|
|
76
|
-
mutationInfo: EntityTriggerMutationInfo<BlahFields,
|
|
76
|
+
mutationInfo: EntityTriggerMutationInfo<BlahFields, 'id', ViewerContext, BlahEntity>,
|
|
77
77
|
): Promise<void> {
|
|
78
78
|
if (mutationInfo.type === EntityMutationType.DELETE) {
|
|
79
79
|
const entityLoaded = await BlahEntity.loader(viewerContext).loadByIDNullableAsync(
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import EntityMutatorFactory from '../EntityMutatorFactory';
|
|
2
|
+
import ViewerContext from '../ViewerContext';
|
|
3
|
+
import TestEntity from '../utils/__testfixtures__/TestEntity';
|
|
4
|
+
import { createUnitTestEntityCompanionProvider } from '../utils/__testfixtures__/createUnitTestEntityCompanionProvider';
|
|
5
|
+
|
|
6
|
+
describe(EntityMutatorFactory, () => {
|
|
7
|
+
test('cache consistency across single and composite field mutations', async () => {
|
|
8
|
+
const companionProvider = createUnitTestEntityCompanionProvider();
|
|
9
|
+
const viewerContext = new ViewerContext(companionProvider);
|
|
10
|
+
|
|
11
|
+
// put the entity in cache
|
|
12
|
+
let entity = await TestEntity.creator(viewerContext)
|
|
13
|
+
.setField('stringField', 'test')
|
|
14
|
+
.setField('intField', 4)
|
|
15
|
+
.createAsync();
|
|
16
|
+
const entitiesLoadedSingle = await TestEntity.loader(
|
|
17
|
+
viewerContext,
|
|
18
|
+
).loadManyByFieldEqualingAsync('stringField', 'test');
|
|
19
|
+
expect(entitiesLoadedSingle.length).toBe(1);
|
|
20
|
+
const entitiesLoadedComposite = await TestEntity.loader(
|
|
21
|
+
viewerContext,
|
|
22
|
+
).loadManyByCompositeFieldEqualingAsync(['stringField', 'intField'], {
|
|
23
|
+
stringField: 'test',
|
|
24
|
+
intField: 4,
|
|
25
|
+
});
|
|
26
|
+
expect(entitiesLoadedComposite.length).toBe(1);
|
|
27
|
+
|
|
28
|
+
// update the string field
|
|
29
|
+
entity = await TestEntity.updater(entity).setField('stringField', 'wat').updateAsync();
|
|
30
|
+
|
|
31
|
+
// check that old cache entries are gone
|
|
32
|
+
const entitiesLoadedSingle2 = await TestEntity.loader(
|
|
33
|
+
viewerContext,
|
|
34
|
+
).loadManyByFieldEqualingAsync('stringField', 'test');
|
|
35
|
+
expect(entitiesLoadedSingle2.length).toBe(0);
|
|
36
|
+
const entitiesLoadedComposite2 = await TestEntity.loader(
|
|
37
|
+
viewerContext,
|
|
38
|
+
).loadManyByCompositeFieldEqualingAsync(['stringField', 'intField'], {
|
|
39
|
+
stringField: 'test',
|
|
40
|
+
intField: 4,
|
|
41
|
+
});
|
|
42
|
+
expect(entitiesLoadedComposite2.length).toBe(0);
|
|
43
|
+
|
|
44
|
+
// check that new cache entries are there
|
|
45
|
+
const entitiesLoadedSingle3 = await TestEntity.loader(
|
|
46
|
+
viewerContext,
|
|
47
|
+
).loadManyByFieldEqualingAsync('stringField', 'wat');
|
|
48
|
+
expect(entitiesLoadedSingle3.length).toBe(1);
|
|
49
|
+
const entitiesLoadedComposite3 = await TestEntity.loader(
|
|
50
|
+
viewerContext,
|
|
51
|
+
).loadManyByCompositeFieldEqualingAsync(['stringField', 'intField'], {
|
|
52
|
+
stringField: 'wat',
|
|
53
|
+
intField: 4,
|
|
54
|
+
});
|
|
55
|
+
expect(entitiesLoadedComposite3.length).toBe(1);
|
|
56
|
+
|
|
57
|
+
// delete the entity
|
|
58
|
+
await TestEntity.deleter(entity).deleteAsync();
|
|
59
|
+
|
|
60
|
+
// check that cache entries are gone
|
|
61
|
+
const entitiesLoadedSingle4 = await TestEntity.loader(
|
|
62
|
+
viewerContext,
|
|
63
|
+
).loadManyByFieldEqualingAsync('stringField', 'wat');
|
|
64
|
+
expect(entitiesLoadedSingle4.length).toBe(0);
|
|
65
|
+
const entitiesLoadedComposite4 = await TestEntity.loader(
|
|
66
|
+
viewerContext,
|
|
67
|
+
).loadManyByCompositeFieldEqualingAsync(['stringField', 'intField'], {
|
|
68
|
+
stringField: 'wat',
|
|
69
|
+
intField: 4,
|
|
70
|
+
});
|
|
71
|
+
expect(entitiesLoadedComposite4.length).toBe(0);
|
|
72
|
+
});
|
|
73
|
+
});
|