@expo/entity 0.41.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/AuthorizationResultBasedEntityAssociationLoader.d.ts +16 -16
- package/build/AuthorizationResultBasedEntityAssociationLoader.js.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
|
@@ -11,12 +11,12 @@ import IEntityMetricsAdapter from '../metrics/IEntityMetricsAdapter';
|
|
|
11
11
|
* table. Note that one instance is shared amongst all entities that read from
|
|
12
12
|
* the table to ensure cross-entity data consistency.
|
|
13
13
|
*/
|
|
14
|
-
export default class EntityTableDataCoordinator<TFields extends Record<string, any
|
|
15
|
-
readonly entityConfiguration: EntityConfiguration<TFields>;
|
|
14
|
+
export default class EntityTableDataCoordinator<TFields extends Record<string, any>, TIDField extends keyof TFields> {
|
|
15
|
+
readonly entityConfiguration: EntityConfiguration<TFields, TIDField>;
|
|
16
16
|
private readonly queryContextProvider;
|
|
17
|
-
readonly databaseAdapter: EntityDatabaseAdapter<TFields>;
|
|
18
|
-
readonly cacheAdapter: IEntityCacheAdapter<TFields>;
|
|
19
|
-
readonly dataManager: EntityDataManager<TFields>;
|
|
20
|
-
constructor(entityConfiguration: EntityConfiguration<TFields>, databaseAdapterProvider: IEntityDatabaseAdapterProvider, cacheAdapterProvider: IEntityCacheAdapterProvider, queryContextProvider: EntityQueryContextProvider, metricsAdapter: IEntityMetricsAdapter, entityClassName: string);
|
|
17
|
+
readonly databaseAdapter: EntityDatabaseAdapter<TFields, TIDField>;
|
|
18
|
+
readonly cacheAdapter: IEntityCacheAdapter<TFields, TIDField>;
|
|
19
|
+
readonly dataManager: EntityDataManager<TFields, TIDField>;
|
|
20
|
+
constructor(entityConfiguration: EntityConfiguration<TFields, TIDField>, databaseAdapterProvider: IEntityDatabaseAdapterProvider, cacheAdapterProvider: IEntityCacheAdapterProvider, queryContextProvider: EntityQueryContextProvider, metricsAdapter: IEntityMetricsAdapter, entityClassName: string);
|
|
21
21
|
getQueryContextProvider(): EntityQueryContextProvider;
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityTableDataCoordinator.js","sourceRoot":"","sources":["../../src/internal/EntityTableDataCoordinator.ts"],"names":[],"mappings":";;;;;AAAA,4EAAoD;AACpD,sFAA8D;AAS9D;;;;GAIG;AACH,MAAqB,0BAA0B;
|
|
1
|
+
{"version":3,"file":"EntityTableDataCoordinator.js","sourceRoot":"","sources":["../../src/internal/EntityTableDataCoordinator.ts"],"names":[],"mappings":";;;;;AAAA,4EAAoD;AACpD,sFAA8D;AAS9D;;;;GAIG;AACH,MAAqB,0BAA0B;IASlC;IAGQ;IARV,eAAe,CAA2C;IAC1D,YAAY,CAAyC;IACrD,WAAW,CAAuC;IAE3D,YACW,mBAA2D,EACpE,uBAAuD,EACvD,oBAAiD,EAChC,oBAAgD,EACjE,cAAqC,EACrC,eAAuB;QALd,wBAAmB,GAAnB,mBAAmB,CAAwC;QAGnD,yBAAoB,GAApB,oBAAoB,CAA4B;QAIjE,IAAI,CAAC,eAAe,GAAG,uBAAuB,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QACvF,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QAC9E,IAAI,CAAC,WAAW,GAAG,IAAI,2BAAiB,CACtC,IAAI,CAAC,eAAe,EACpB,IAAI,gCAAsB,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC,EAClE,oBAAoB,EACpB,cAAc,EACd,eAAe,CAChB,CAAC;IACJ,CAAC;IAED,uBAAuB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;CACF;AA9BD,6CA8BC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import EntityConfiguration from '../EntityConfiguration';
|
|
2
2
|
import IEntityCacheAdapter from '../IEntityCacheAdapter';
|
|
3
|
+
import { IEntityLoadKey, IEntityLoadValue } from './EntityLoadInterfaces';
|
|
3
4
|
export declare enum CacheStatus {
|
|
4
5
|
HIT = 0,
|
|
5
6
|
MISS = 1,
|
|
6
7
|
NEGATIVE = 2
|
|
7
8
|
}
|
|
8
|
-
export type CacheLoadResult<TFields
|
|
9
|
+
export type CacheLoadResult<TFields extends Record<string, any>> = {
|
|
9
10
|
status: CacheStatus.HIT;
|
|
10
11
|
item: Readonly<TFields>;
|
|
11
12
|
} | {
|
|
@@ -17,33 +18,33 @@ export type CacheLoadResult<TFields> = {
|
|
|
17
18
|
* A read-through entity cache is responsible for coordinating EntityDatabaseAdapter and
|
|
18
19
|
* EntityCacheAdapter within the EntityDataManager.
|
|
19
20
|
*/
|
|
20
|
-
export default class ReadThroughEntityCache<TFields extends Record<string, any
|
|
21
|
+
export default class ReadThroughEntityCache<TFields extends Record<string, any>, TIDField extends keyof TFields> {
|
|
21
22
|
private readonly entityConfiguration;
|
|
22
23
|
private readonly entityCacheAdapter;
|
|
23
|
-
constructor(entityConfiguration: EntityConfiguration<TFields>, entityCacheAdapter: IEntityCacheAdapter<TFields>);
|
|
24
|
-
private
|
|
24
|
+
constructor(entityConfiguration: EntityConfiguration<TFields, TIDField>, entityCacheAdapter: IEntityCacheAdapter<TFields, TIDField>);
|
|
25
|
+
private isLoadKeyCacheable;
|
|
25
26
|
/**
|
|
26
27
|
* Read-through cache function. Steps:
|
|
27
28
|
*
|
|
28
|
-
* 1. Check for cached (
|
|
29
|
-
* 2. Query the fetcher for
|
|
29
|
+
* 1. Check for cached (key, value) objects
|
|
30
|
+
* 2. Query the fetcher for values not in the cache
|
|
30
31
|
* 3. Cache the results from the fetcher
|
|
31
32
|
* 4. Negatively cache anything missing from the fetcher
|
|
32
33
|
* 5. Return the full set of data for the query.
|
|
33
34
|
*
|
|
34
|
-
* If cache is not applicable for
|
|
35
|
+
* If cache is not applicable for key, return results from fetcher.
|
|
35
36
|
*
|
|
36
|
-
* @param
|
|
37
|
-
* @param
|
|
38
|
-
* @param fetcher - closure used to provide underlying data source objects for
|
|
39
|
-
* @returns map from
|
|
37
|
+
* @param key - load key being queried
|
|
38
|
+
* @param values - load values being queried
|
|
39
|
+
* @param fetcher - closure used to provide underlying data source objects for key and fetcherValues
|
|
40
|
+
* @returns map from value to objects that match the query for that value
|
|
40
41
|
*/
|
|
41
|
-
readManyThroughAsync<
|
|
42
|
+
readManyThroughAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, values: readonly TLoadValue[], fetcher: (fetcherValues: readonly TLoadValue[]) => Promise<ReadonlyMap<TLoadValue, readonly Readonly<TFields>[]>>): Promise<ReadonlyMap<TLoadValue, readonly Readonly<TFields>[]>>;
|
|
42
43
|
/**
|
|
43
|
-
* Invalidate the cache for objects cached by (
|
|
44
|
+
* Invalidate the cache for objects cached by (key, value).
|
|
44
45
|
*
|
|
45
|
-
* @param
|
|
46
|
-
* @param
|
|
46
|
+
* @param key - load key to be invalidated
|
|
47
|
+
* @param values - load values to be invalidated for key
|
|
47
48
|
*/
|
|
48
|
-
invalidateManyAsync<
|
|
49
|
+
invalidateManyAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, values: readonly TLoadValue[]): Promise<void>;
|
|
49
50
|
}
|
|
@@ -23,81 +23,81 @@ class ReadThroughEntityCache {
|
|
|
23
23
|
this.entityConfiguration = entityConfiguration;
|
|
24
24
|
this.entityCacheAdapter = entityCacheAdapter;
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
return this.entityConfiguration
|
|
26
|
+
isLoadKeyCacheable(key) {
|
|
27
|
+
return key.isCacheable(this.entityConfiguration);
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
30
|
* Read-through cache function. Steps:
|
|
31
31
|
*
|
|
32
|
-
* 1. Check for cached (
|
|
33
|
-
* 2. Query the fetcher for
|
|
32
|
+
* 1. Check for cached (key, value) objects
|
|
33
|
+
* 2. Query the fetcher for values not in the cache
|
|
34
34
|
* 3. Cache the results from the fetcher
|
|
35
35
|
* 4. Negatively cache anything missing from the fetcher
|
|
36
36
|
* 5. Return the full set of data for the query.
|
|
37
37
|
*
|
|
38
|
-
* If cache is not applicable for
|
|
38
|
+
* If cache is not applicable for key, return results from fetcher.
|
|
39
39
|
*
|
|
40
|
-
* @param
|
|
41
|
-
* @param
|
|
42
|
-
* @param fetcher - closure used to provide underlying data source objects for
|
|
43
|
-
* @returns map from
|
|
40
|
+
* @param key - load key being queried
|
|
41
|
+
* @param values - load values being queried
|
|
42
|
+
* @param fetcher - closure used to provide underlying data source objects for key and fetcherValues
|
|
43
|
+
* @returns map from value to objects that match the query for that value
|
|
44
44
|
*/
|
|
45
|
-
async readManyThroughAsync(
|
|
46
|
-
// return normal fetch when cache by
|
|
47
|
-
if (!this.
|
|
48
|
-
return await fetcher(
|
|
45
|
+
async readManyThroughAsync(key, values, fetcher) {
|
|
46
|
+
// return normal fetch when cache by key not supported
|
|
47
|
+
if (!this.isLoadKeyCacheable(key)) {
|
|
48
|
+
return await fetcher(values);
|
|
49
49
|
}
|
|
50
|
-
const cacheLoadResults = await this.entityCacheAdapter.loadManyAsync(
|
|
51
|
-
(0, invariant_1.default)(cacheLoadResults.size ===
|
|
52
|
-
const
|
|
50
|
+
const cacheLoadResults = await this.entityCacheAdapter.loadManyAsync(key, values);
|
|
51
|
+
(0, invariant_1.default)(cacheLoadResults.size === values.length, `${this.constructor.name} loadMany should return a result for each value`);
|
|
52
|
+
const valuesToFetchFromDB = Array.from((0, maps_1.filterMap)(cacheLoadResults, (cacheLoadResult) => cacheLoadResult.status === CacheStatus.MISS).keys());
|
|
53
53
|
// put transformed cache hits in result map
|
|
54
|
-
const results =
|
|
55
|
-
cacheLoadResults.forEach((cacheLoadResult,
|
|
54
|
+
const results = key.vendNewLoadValueMap();
|
|
55
|
+
cacheLoadResults.forEach((cacheLoadResult, value) => {
|
|
56
56
|
if (cacheLoadResult.status === CacheStatus.HIT) {
|
|
57
|
-
results.set(
|
|
57
|
+
results.set(value, [cacheLoadResult.item]);
|
|
58
58
|
}
|
|
59
59
|
});
|
|
60
60
|
// fetch any misses from DB, add DB objects to results, cache DB results, inform cache of any missing DB results
|
|
61
|
-
if (
|
|
62
|
-
const dbFetchResults = await fetcher(
|
|
63
|
-
const
|
|
61
|
+
if (valuesToFetchFromDB.length > 0) {
|
|
62
|
+
const dbFetchResults = await fetcher(valuesToFetchFromDB);
|
|
63
|
+
const valueDBMisses = valuesToFetchFromDB.filter((fv) => {
|
|
64
64
|
const objectsFromFulfillerForFv = dbFetchResults.get(fv);
|
|
65
65
|
return !objectsFromFulfillerForFv || objectsFromFulfillerForFv.length === 0;
|
|
66
66
|
});
|
|
67
|
-
const objectsToCache =
|
|
68
|
-
for (const [
|
|
67
|
+
const objectsToCache = key.vendNewLoadValueMap();
|
|
68
|
+
for (const [value, objects] of dbFetchResults.entries()) {
|
|
69
69
|
if (objects.length > 1) {
|
|
70
70
|
// multiple objects received for what was supposed to be a unique query, don't add to return map nor cache
|
|
71
71
|
// TODO(wschurman): emit or throw here since console may not be available
|
|
72
72
|
// eslint-disable-next-line no-console
|
|
73
|
-
console.warn(`unique key ${
|
|
73
|
+
console.warn(`unique key ${key} in table ${this.entityConfiguration.tableName} returned multiple rows for ${value}`);
|
|
74
74
|
continue;
|
|
75
75
|
}
|
|
76
76
|
const uniqueObject = objects[0];
|
|
77
77
|
if (uniqueObject) {
|
|
78
|
-
objectsToCache.set(
|
|
79
|
-
results.set(
|
|
78
|
+
objectsToCache.set(value, uniqueObject);
|
|
79
|
+
results.set(value, [uniqueObject]);
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
await Promise.all([
|
|
83
|
-
this.entityCacheAdapter.cacheManyAsync(
|
|
84
|
-
this.entityCacheAdapter.cacheDBMissesAsync(
|
|
83
|
+
this.entityCacheAdapter.cacheManyAsync(key, objectsToCache),
|
|
84
|
+
this.entityCacheAdapter.cacheDBMissesAsync(key, valueDBMisses),
|
|
85
85
|
]);
|
|
86
86
|
}
|
|
87
87
|
return results;
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
|
-
* Invalidate the cache for objects cached by (
|
|
90
|
+
* Invalidate the cache for objects cached by (key, value).
|
|
91
91
|
*
|
|
92
|
-
* @param
|
|
93
|
-
* @param
|
|
92
|
+
* @param key - load key to be invalidated
|
|
93
|
+
* @param values - load values to be invalidated for key
|
|
94
94
|
*/
|
|
95
|
-
async invalidateManyAsync(
|
|
96
|
-
// no-op when cache by
|
|
97
|
-
if (!this.
|
|
95
|
+
async invalidateManyAsync(key, values) {
|
|
96
|
+
// no-op when cache by key not supported
|
|
97
|
+
if (!this.isLoadKeyCacheable(key)) {
|
|
98
98
|
return;
|
|
99
99
|
}
|
|
100
|
-
await this.entityCacheAdapter.invalidateManyAsync(
|
|
100
|
+
await this.entityCacheAdapter.invalidateManyAsync(key, values);
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
exports.default = ReadThroughEntityCache;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadThroughEntityCache.js","sourceRoot":"","sources":["../../src/internal/ReadThroughEntityCache.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAkC;
|
|
1
|
+
{"version":3,"file":"ReadThroughEntityCache.js","sourceRoot":"","sources":["../../src/internal/ReadThroughEntityCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import EntityConfiguration from '../EntityConfiguration';
|
|
2
|
+
import { EntityLoadMethodType, IEntityLoadKey, IEntityLoadValue, LoadValueMap } from './EntityLoadInterfaces';
|
|
3
|
+
/**
|
|
4
|
+
* A load key that represents a single field (fieldName) on an entity.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SingleFieldHolder<TFields extends Record<string, any>, TIDField extends keyof TFields, N extends keyof TFields> implements IEntityLoadKey<TFields, TIDField, NonNullable<TFields[N]>, SingleFieldValueHolder<TFields, N>> {
|
|
7
|
+
readonly fieldName: N;
|
|
8
|
+
constructor(fieldName: N);
|
|
9
|
+
toString(): string;
|
|
10
|
+
isCacheable(entityConfiguration: EntityConfiguration<TFields, TIDField>): boolean;
|
|
11
|
+
getDatabaseColumns(entityConfiguration: EntityConfiguration<TFields, TIDField>): string[];
|
|
12
|
+
getDatabaseValues(value: SingleFieldValueHolder<TFields, N>): readonly any[];
|
|
13
|
+
getLoadValueForObject(object: Readonly<TFields>): SingleFieldValueHolder<TFields, N> | null;
|
|
14
|
+
createCacheKeyPartsForLoadValue(entityConfiguration: EntityConfiguration<TFields, TIDField>, value: SingleFieldValueHolder<TFields, N>): readonly string[];
|
|
15
|
+
getLoadMethodType(): EntityLoadMethodType;
|
|
16
|
+
getDataManagerDataLoaderKey(): string;
|
|
17
|
+
serializeLoadValue(value: SingleFieldValueHolder<TFields, N>): NonNullable<TFields[N]>;
|
|
18
|
+
deserializeLoadValue(value: NonNullable<TFields[N]>): SingleFieldValueHolder<TFields, N>;
|
|
19
|
+
validateRuntimeLoadValuesForDataManagerDataLoader(values: readonly SingleFieldValueHolder<TFields, N>[], entityClassName: string): void;
|
|
20
|
+
vendNewLoadValueMap<V>(): LoadValueMap<NonNullable<TFields[N]>, SingleFieldValueHolder<TFields, N>, V>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A load value for a SingleFieldHolder.
|
|
24
|
+
*/
|
|
25
|
+
export declare class SingleFieldValueHolder<TFields extends Record<string, any>, N extends keyof TFields> implements IEntityLoadValue<NonNullable<TFields[N]>> {
|
|
26
|
+
readonly fieldValue: NonNullable<TFields[N]>;
|
|
27
|
+
constructor(fieldValue: NonNullable<TFields[N]>);
|
|
28
|
+
toString(): string;
|
|
29
|
+
serialize(): NonNullable<TFields[N]>;
|
|
30
|
+
static deserialize<TFields extends Record<string, any>, N extends keyof TFields>(fieldValue: NonNullable<TFields[N]>): SingleFieldValueHolder<TFields, N>;
|
|
31
|
+
}
|
|
32
|
+
export declare class SingleFieldValueHolderMap<TFields extends Record<string, any>, N extends keyof TFields, V> extends LoadValueMap<NonNullable<TFields[N]>, SingleFieldValueHolder<TFields, N>, V> {
|
|
33
|
+
protected deserializeKey(serializedKey: NonNullable<TFields[N]>): SingleFieldValueHolder<TFields, N>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SingleFieldValueHolderMap = exports.SingleFieldValueHolder = exports.SingleFieldHolder = void 0;
|
|
7
|
+
const invariant_1 = __importDefault(require("invariant"));
|
|
8
|
+
const EntityFieldTransformationUtils_1 = require("./EntityFieldTransformationUtils");
|
|
9
|
+
const EntityLoadInterfaces_1 = require("./EntityLoadInterfaces");
|
|
10
|
+
/**
|
|
11
|
+
* A load key that represents a single field (fieldName) on an entity.
|
|
12
|
+
*/
|
|
13
|
+
class SingleFieldHolder {
|
|
14
|
+
fieldName;
|
|
15
|
+
constructor(fieldName) {
|
|
16
|
+
this.fieldName = fieldName;
|
|
17
|
+
}
|
|
18
|
+
toString() {
|
|
19
|
+
return `SingleField(${String(this.fieldName)})`;
|
|
20
|
+
}
|
|
21
|
+
isCacheable(entityConfiguration) {
|
|
22
|
+
return entityConfiguration.cacheableKeys.has(this.fieldName);
|
|
23
|
+
}
|
|
24
|
+
getDatabaseColumns(entityConfiguration) {
|
|
25
|
+
return [(0, EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField)(entityConfiguration, this.fieldName)];
|
|
26
|
+
}
|
|
27
|
+
getDatabaseValues(value) {
|
|
28
|
+
return [value.fieldValue];
|
|
29
|
+
}
|
|
30
|
+
getLoadValueForObject(object) {
|
|
31
|
+
const value = object[this.fieldName];
|
|
32
|
+
if (value === null || value === undefined) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return new SingleFieldValueHolder(value);
|
|
36
|
+
}
|
|
37
|
+
createCacheKeyPartsForLoadValue(entityConfiguration, value) {
|
|
38
|
+
const columnName = entityConfiguration.entityToDBFieldsKeyMapping.get(this.fieldName);
|
|
39
|
+
(0, invariant_1.default)(columnName, `database field mapping missing for ${String(this.fieldName)}`);
|
|
40
|
+
return [columnName, String(value.fieldValue)];
|
|
41
|
+
}
|
|
42
|
+
getLoadMethodType() {
|
|
43
|
+
return EntityLoadInterfaces_1.EntityLoadMethodType.SINGLE;
|
|
44
|
+
}
|
|
45
|
+
getDataManagerDataLoaderKey() {
|
|
46
|
+
return this.fieldName;
|
|
47
|
+
}
|
|
48
|
+
serializeLoadValue(value) {
|
|
49
|
+
return value.serialize();
|
|
50
|
+
}
|
|
51
|
+
deserializeLoadValue(value) {
|
|
52
|
+
return SingleFieldValueHolder.deserialize(value);
|
|
53
|
+
}
|
|
54
|
+
validateRuntimeLoadValuesForDataManagerDataLoader(values, entityClassName) {
|
|
55
|
+
const nullOrUndefinedValueIndex = values.findIndex((value) => value.fieldValue === null || value.fieldValue === undefined);
|
|
56
|
+
if (nullOrUndefinedValueIndex >= 0) {
|
|
57
|
+
throw new Error(`Invalid load: ${entityClassName} (${String(this.fieldName)} = ${values[nullOrUndefinedValueIndex]?.fieldValue})`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
vendNewLoadValueMap() {
|
|
61
|
+
return new SingleFieldValueHolderMap();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.SingleFieldHolder = SingleFieldHolder;
|
|
65
|
+
/**
|
|
66
|
+
* A load value for a SingleFieldHolder.
|
|
67
|
+
*/
|
|
68
|
+
class SingleFieldValueHolder {
|
|
69
|
+
fieldValue;
|
|
70
|
+
constructor(fieldValue) {
|
|
71
|
+
this.fieldValue = fieldValue;
|
|
72
|
+
}
|
|
73
|
+
toString() {
|
|
74
|
+
return `SingleFieldValue(${String(this.fieldValue)})`;
|
|
75
|
+
}
|
|
76
|
+
serialize() {
|
|
77
|
+
return this.fieldValue;
|
|
78
|
+
}
|
|
79
|
+
static deserialize(fieldValue) {
|
|
80
|
+
return new SingleFieldValueHolder(fieldValue);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.SingleFieldValueHolder = SingleFieldValueHolder;
|
|
84
|
+
class SingleFieldValueHolderMap extends EntityLoadInterfaces_1.LoadValueMap {
|
|
85
|
+
deserializeKey(serializedKey) {
|
|
86
|
+
return SingleFieldValueHolder.deserialize(serializedKey);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.SingleFieldValueHolderMap = SingleFieldValueHolderMap;
|
|
90
|
+
//# sourceMappingURL=SingleFieldHolder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SingleFieldHolder.js","sourceRoot":"","sources":["../../src/internal/SingleFieldHolder.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAkC;AAGlC,qFAAkF;AAClF,iEAKgC;AAEhC;;GAEG;AACH,MAAa,iBAAiB;IAOA;IAA5B,YAA4B,SAAY;QAAZ,cAAS,GAAT,SAAS,CAAG;IAAG,CAAC;IAE5C,QAAQ;QACN,OAAO,eAAe,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;IAClD,CAAC;IAEM,WAAW,CAAC,mBAA2D;QAC5E,OAAO,mBAAmB,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAEM,kBAAkB,CAAC,mBAA2D;QACnF,OAAO,CAAC,IAAA,+DAA8B,EAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,iBAAiB,CAAC,KAAyC;QACzD,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAED,qBAAqB,CAAC,MAAyB;QAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,+BAA+B,CAC7B,mBAA2D,EAC3D,KAAyC;QAEzC,MAAM,UAAU,GAAG,mBAAmB,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtF,IAAA,mBAAS,EAAC,UAAU,EAAE,sCAAsC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACtF,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,iBAAiB;QACf,OAAO,2CAAoB,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,2BAA2B;QACzB,OAAO,IAAI,CAAC,SAAmB,CAAC;IAClC,CAAC;IAED,kBAAkB,CAAC,KAAyC;QAC1D,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC;IAC3B,CAAC;IAED,oBAAoB,CAAC,KAA8B;QACjD,OAAO,sBAAsB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,iDAAiD,CAC/C,MAAqD,EACrD,eAAuB;QAEvB,MAAM,yBAAyB,GAAG,MAAM,CAAC,SAAS,CAChD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CACvE,CAAC;QACF,IAAI,yBAAyB,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,iBAAiB,eAAe,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MACzD,MAAM,CAAC,yBAAyB,CAAC,EAAE,UACrC,GAAG,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mBAAmB;QAKjB,OAAO,IAAI,yBAAyB,EAAE,CAAC;IACzC,CAAC;CACF;AAjFD,8CAiFC;AAED;;GAEG;AACH,MAAa,sBAAsB;IAGL;IAA5B,YAA4B,UAAmC;QAAnC,eAAU,GAAV,UAAU,CAAyB;IAAG,CAAC;IAEnE,QAAQ;QACN,OAAO,oBAAoB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IACxD,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,UAAmC;QAEnC,OAAO,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;CACF;AAlBD,wDAkBC;AAED,MAAa,yBAIX,SAAQ,mCAA4E;IACjE,cAAc,CAC/B,aAAsC;QAEtC,OAAO,sBAAsB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC3D,CAAC;CACF;AAVD,8DAUC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import IEntityMetricsAdapter, { EntityMetricsLoadType, EntityMetricsMutationType } from './IEntityMetricsAdapter';
|
|
2
|
+
import { IEntityLoadValue } from '../internal/EntityLoadInterfaces';
|
|
2
3
|
export declare const timeAndLogLoadEventAsync: (metricsAdapter: IEntityMetricsAdapter, loadType: EntityMetricsLoadType, entityClassName: string) => <TFields>(promise: Promise<readonly Readonly<TFields>[]>) => Promise<readonly Readonly<TFields>[]>;
|
|
3
|
-
export declare const timeAndLogLoadMapEventAsync: (metricsAdapter: IEntityMetricsAdapter, loadType: EntityMetricsLoadType, entityClassName: string) => <TFields,
|
|
4
|
+
export declare const timeAndLogLoadMapEventAsync: (metricsAdapter: IEntityMetricsAdapter, loadType: EntityMetricsLoadType, entityClassName: string) => <TFields extends Record<string, any>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(promise: Promise<ReadonlyMap<TLoadValue, readonly Readonly<TFields>[]>>) => Promise<ReadonlyMap<TLoadValue, readonly Readonly<TFields>[]>>;
|
|
4
5
|
export declare const timeAndLogMutationEventAsync: (metricsAdapter: IEntityMetricsAdapter, mutationType: EntityMetricsMutationType, entityClassName: string) => <T>(promise: Promise<T>) => Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityMetricsUtils.js","sourceRoot":"","sources":["../../src/metrics/EntityMetricsUtils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"EntityMetricsUtils.js","sourceRoot":"","sources":["../../src/metrics/EntityMetricsUtils.ts"],"names":[],"mappings":";;;AAKA,oDAAsD;AAE/C,MAAM,wBAAwB,GACnC,CACE,cAAqC,EACrC,QAA+B,EAC/B,eAAuB,EACvB,EAAE,CACJ,KAAK,EAAW,OAA8C,EAAE,EAAE;IAChE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,cAAc,CAAC,uBAAuB,CAAC;QACrC,IAAI,EAAE,QAAQ;QACd,eAAe;QACf,QAAQ,EAAE,OAAO,GAAG,SAAS;QAC7B,KAAK,EAAE,MAAM,CAAC,MAAM;KACrB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAnBS,QAAA,wBAAwB,4BAmBjC;AAEG,MAAM,2BAA2B,GACtC,CACE,cAAqC,EACrC,QAA+B,EAC/B,eAAuB,EACvB,EAAE,CACJ,KAAK,EAKH,OAAuE,EACvE,EAAE;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,MAAM,KAAK,GAAG,IAAA,gBAAS,EAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE/D,cAAc,CAAC,uBAAuB,CAAC;QACrC,IAAI,EAAE,QAAQ;QACd,eAAe;QACf,QAAQ,EAAE,OAAO,GAAG,SAAS;QAC7B,KAAK;KACN,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA3BS,QAAA,2BAA2B,+BA2BpC;AAEG,MAAM,4BAA4B,GACvC,CACE,cAAqC,EACrC,YAAuC,EACvC,eAAuB,EACvB,EAAE,CACJ,KAAK,EAAK,OAAmB,EAAE,EAAE;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,cAAc,CAAC,uBAAuB,CAAC;QACrC,IAAI,EAAE,YAAY;QAClB,eAAe;QACf,QAAQ,EAAE,OAAO,GAAG,SAAS;KAC9B,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAlBS,QAAA,4BAA4B,gCAkBrC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EntityAuthorizationAction, EntityPrivacyPolicyEvaluationMode } from '../EntityPrivacyPolicy';
|
|
2
|
+
import { EntityLoadMethodType } from '../internal/EntityLoadInterfaces';
|
|
2
3
|
export declare enum EntityMetricsLoadType {
|
|
3
4
|
LOAD_MANY = 0,
|
|
4
5
|
LOAD_MANY_EQUALITY_CONJUNCTION = 1,
|
|
@@ -67,6 +68,10 @@ export interface IncrementLoadCountEvent {
|
|
|
67
68
|
* Type of this event.
|
|
68
69
|
*/
|
|
69
70
|
type: IncrementLoadCountEventType;
|
|
71
|
+
/**
|
|
72
|
+
* Load method type for this event.
|
|
73
|
+
*/
|
|
74
|
+
loadType: EntityLoadMethodType;
|
|
70
75
|
/**
|
|
71
76
|
* Number of field values being loaded for this call.
|
|
72
77
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IEntityMetricsAdapter.js","sourceRoot":"","sources":["../../src/metrics/IEntityMetricsAdapter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"IEntityMetricsAdapter.js","sourceRoot":"","sources":["../../src/metrics/IEntityMetricsAdapter.ts"],"names":[],"mappings":";;;AAMA,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC/B,2EAAS,CAAA;IACT,qHAA8B,CAAA;IAC9B,mFAAa,CAAA;AACf,CAAC,EAJW,qBAAqB,qCAArB,qBAAqB,QAIhC;AA2BD,IAAY,yBAIX;AAJD,WAAY,yBAAyB;IACnC,6EAAM,CAAA;IACN,6EAAM,CAAA;IACN,6EAAM,CAAA;AACR,CAAC,EAJW,yBAAyB,yCAAzB,yBAAyB,QAIpC;AAmBD,IAAY,2BAgBX;AAhBD,WAAY,2BAA2B;IACrC;;;OAGG;IACH,yFAAU,CAAA;IAEV;;OAEG;IACH,+EAAK,CAAA;IAEL;;OAEG;IACH,qFAAQ,CAAA;AACV,CAAC,EAhBW,2BAA2B,2CAA3B,2BAA2B,QAgBtC;AA2BD,IAAY,gCAGX;AAHD,WAAY,gCAAgC;IAC1C,uFAAI,CAAA;IACJ,yFAAK,CAAA;AACP,CAAC,EAHW,gCAAgC,gDAAhC,gCAAgC,QAG3C"}
|
|
@@ -6,6 +6,6 @@ import ViewerContext from '../ViewerContext';
|
|
|
6
6
|
/**
|
|
7
7
|
* Privacy policy rule that always allows.
|
|
8
8
|
*/
|
|
9
|
-
export default class AlwaysAllowPrivacyPolicyRule<TFields extends
|
|
10
|
-
evaluateAsync(_viewerContext: TViewerContext, _queryContext: EntityQueryContext, _evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields,
|
|
9
|
+
export default class AlwaysAllowPrivacyPolicyRule<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> extends PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
|
|
10
|
+
evaluateAsync(_viewerContext: TViewerContext, _queryContext: EntityQueryContext, _evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, _entity: TEntity): Promise<RuleEvaluationResult>;
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlwaysAllowPrivacyPolicyRule.js","sourceRoot":"","sources":["../../src/rules/AlwaysAllowPrivacyPolicyRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAA8E;AAM9E;;GAEG;AACH,MAAqB,4BAMnB,SAAQ,
|
|
1
|
+
{"version":3,"file":"AlwaysAllowPrivacyPolicyRule.js","sourceRoot":"","sources":["../../src/rules/AlwaysAllowPrivacyPolicyRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAA8E;AAM9E;;GAEG;AACH,MAAqB,4BAMnB,SAAQ,2BAA8E;IACtF,KAAK,CAAC,aAAa,CACjB,cAA8B,EAC9B,aAAiC,EACjC,kBAMC,EACD,OAAgB;QAEhB,OAAO,wCAAoB,CAAC,KAAK,CAAC;IACpC,CAAC;CACF;AArBD,+CAqBC"}
|
|
@@ -6,6 +6,6 @@ import ViewerContext from '../ViewerContext';
|
|
|
6
6
|
/**
|
|
7
7
|
* Privacy policy rule that always denies.
|
|
8
8
|
*/
|
|
9
|
-
export default class AlwaysDenyPrivacyPolicyRule<TFields extends
|
|
10
|
-
evaluateAsync(_viewerContext: TViewerContext, _queryContext: EntityQueryContext, _evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields,
|
|
9
|
+
export default class AlwaysDenyPrivacyPolicyRule<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> extends PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
|
|
10
|
+
evaluateAsync(_viewerContext: TViewerContext, _queryContext: EntityQueryContext, _evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, _entity: TEntity): Promise<RuleEvaluationResult>;
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlwaysDenyPrivacyPolicyRule.js","sourceRoot":"","sources":["../../src/rules/AlwaysDenyPrivacyPolicyRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAA8E;AAM9E;;GAEG;AACH,MAAqB,2BAMnB,SAAQ,
|
|
1
|
+
{"version":3,"file":"AlwaysDenyPrivacyPolicyRule.js","sourceRoot":"","sources":["../../src/rules/AlwaysDenyPrivacyPolicyRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAA8E;AAM9E;;GAEG;AACH,MAAqB,2BAMnB,SAAQ,2BAA8E;IACtF,KAAK,CAAC,aAAa,CACjB,cAA8B,EAC9B,aAAiC,EACjC,kBAMC,EACD,OAAgB;QAEhB,OAAO,wCAAoB,CAAC,IAAI,CAAC;IACnC,CAAC;CACF;AArBD,8CAqBC"}
|
|
@@ -6,6 +6,6 @@ import ViewerContext from '../ViewerContext';
|
|
|
6
6
|
/**
|
|
7
7
|
* A no-op policy rule that always skips.
|
|
8
8
|
*/
|
|
9
|
-
export default class AlwaysSkipPrivacyPolicyRule<TFields extends
|
|
10
|
-
evaluateAsync(_viewerContext: TViewerContext, _queryContext: EntityQueryContext, _evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields,
|
|
9
|
+
export default class AlwaysSkipPrivacyPolicyRule<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> extends PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
|
|
10
|
+
evaluateAsync(_viewerContext: TViewerContext, _queryContext: EntityQueryContext, _evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, _entity: TEntity): Promise<RuleEvaluationResult>;
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AlwaysSkipPrivacyPolicyRule.js","sourceRoot":"","sources":["../../src/rules/AlwaysSkipPrivacyPolicyRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAA8E;AAM9E;;GAEG;AACH,MAAqB,2BAMnB,SAAQ,
|
|
1
|
+
{"version":3,"file":"AlwaysSkipPrivacyPolicyRule.js","sourceRoot":"","sources":["../../src/rules/AlwaysSkipPrivacyPolicyRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yEAA8E;AAM9E;;GAEG;AACH,MAAqB,2BAMnB,SAAQ,2BAA8E;IACtF,KAAK,CAAC,aAAa,CACjB,cAA8B,EAC9B,aAAiC,EACjC,kBAMC,EACD,OAAgB;QAEhB,OAAO,wCAAoB,CAAC,IAAI,CAAC;IACnC,CAAC;CACF;AArBD,8CAqBC"}
|
|
@@ -32,6 +32,6 @@ export declare enum RuleEvaluationResult {
|
|
|
32
32
|
* - Blocking. For example, a user blocks another user from seeing their posts, and the rule
|
|
33
33
|
* would be named something like `DenyIfViewerHasBeenBlockedPrivacyPolicyRule`.
|
|
34
34
|
*/
|
|
35
|
-
export default abstract class PrivacyPolicyRule<TFields extends
|
|
36
|
-
abstract evaluateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields,
|
|
35
|
+
export default abstract class PrivacyPolicyRule<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> {
|
|
36
|
+
abstract evaluateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, entity: TEntity): Promise<RuleEvaluationResult>;
|
|
37
37
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/authorizationresultbasedentityassociationloader.ts","../src/authorizationresultbasedentityloader.ts","../src/authorizationresultbasedentitymutator.ts","../src/composedentitycacheadapter.ts","../src/composedsecondaryentitycache.ts","../src/enforcingentityassociationloader.ts","../src/enforcingentitycreator.ts","../src/enforcingentitydeleter.ts","../src/enforcingentityloader.ts","../src/enforcingentityupdater.ts","../src/entity.ts","../src/entityassociationloader.ts","../src/entitycompanion.ts","../src/entitycompanionprovider.ts","../src/entityconfiguration.ts","../src/entitycreator.ts","../src/entitydatabaseadapter.ts","../src/entitydeleter.ts","../src/entityfielddefinition.ts","../src/entityfields.ts","../src/entityloader.ts","../src/entityloaderfactory.ts","../src/entityloaderutils.ts","../src/entitymutationinfo.ts","../src/entitymutationtriggerconfiguration.ts","../src/entitymutationvalidator.ts","../src/entitymutatorfactory.ts","../src/entityprivacypolicy.ts","../src/entityquerycontext.ts","../src/entityquerycontextprovider.ts","../src/entitysecondarycacheloader.ts","../src/entityupdater.ts","../src/genericentitycacheadapter.ts","../src/genericsecondaryentitycache.ts","../src/ientitycacheadapter.ts","../src/ientitycacheadapterprovider.ts","../src/ientitydatabaseadapterprovider.ts","../src/ientitygenericcacher.ts","../src/readonlyentity.ts","../src/viewercontext.ts","../src/viewerscopedentitycompanion.ts","../src/viewerscopedentitycompanionprovider.ts","../src/viewerscopedentityloaderfactory.ts","../src/viewerscopedentitymutatorfactory.ts","../src/entityutils.ts","../src/index.ts","../src/errors/entitycacheadaptererror.ts","../src/errors/entitydatabaseadaptererror.ts","../src/errors/entityerror.ts","../src/errors/entityinvalidfieldvalueerror.ts","../src/errors/entitynotauthorizederror.ts","../src/errors/entitynotfounderror.ts","../src/internal/compositefieldholder.ts","../src/internal/compositefieldvaluemap.ts","../src/internal/entitydatamanager.ts","../src/internal/entityfieldtransformationutils.ts","../src/internal/entityloadinterfaces.ts","../src/internal/entitytabledatacoordinator.ts","../src/internal/readthroughentitycache.ts","../src/internal/singlefieldholder.ts","../src/metrics/entitymetricsutils.ts","../src/metrics/ientitymetricsadapter.ts","../src/metrics/noopentitymetricsadapter.ts","../src/rules/alwaysallowprivacypolicyrule.ts","../src/rules/alwaysdenyprivacypolicyrule.ts","../src/rules/alwaysskipprivacypolicyrule.ts","../src/rules/privacypolicyrule.ts","../src/utils/entityprivacyutils.ts","../src/utils/mergeentitymutationtriggerconfigurations.ts","../src/utils/collections/serializablekeymap.ts","../src/utils/collections/maps.ts","../src/utils/collections/sets.ts"],"version":"5.8.3"}
|
|
@@ -28,7 +28,7 @@ export type EntityPrivacyEvaluationResult = EntityPrivacyEvaluationResultSuccess
|
|
|
28
28
|
* @param sourceEntity - entity loaded by viewer
|
|
29
29
|
* @param queryContext - query context in which to perform the check
|
|
30
30
|
*/
|
|
31
|
-
export declare function canViewerUpdateAsync<TFields extends
|
|
31
|
+
export declare function canViewerUpdateAsync<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields>(entityClass: IEntityClass<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, sourceEntity: TEntity, queryContext?: EntityQueryContext): Promise<boolean>;
|
|
32
32
|
/**
|
|
33
33
|
* Check whether an entity loaded by a viewer can be updated by that same viewer and return the evaluation result.
|
|
34
34
|
*
|
|
@@ -38,7 +38,7 @@ export declare function canViewerUpdateAsync<TFields extends object, TID extends
|
|
|
38
38
|
* @param sourceEntity - entity loaded by viewer
|
|
39
39
|
* @param queryContext - query context in which to perform the check
|
|
40
40
|
*/
|
|
41
|
-
export declare function getCanViewerUpdateResultAsync<TFields extends
|
|
41
|
+
export declare function getCanViewerUpdateResultAsync<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields>(entityClass: IEntityClass<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, sourceEntity: TEntity, queryContext?: EntityQueryContext): Promise<EntityPrivacyEvaluationResult>;
|
|
42
42
|
/**
|
|
43
43
|
* Check whether a single entity loaded by a viewer can be deleted by that same viewer.
|
|
44
44
|
* This recursively checks edge cascade permissions (EntityEdgeDeletionBehavior) as well.
|
|
@@ -49,7 +49,7 @@ export declare function getCanViewerUpdateResultAsync<TFields extends object, TI
|
|
|
49
49
|
* @param sourceEntity - entity loaded by viewer
|
|
50
50
|
* @param queryContext - query context in which to perform the check
|
|
51
51
|
*/
|
|
52
|
-
export declare function canViewerDeleteAsync<TFields extends
|
|
52
|
+
export declare function canViewerDeleteAsync<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields>(entityClass: IEntityClass<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, sourceEntity: TEntity, queryContext?: EntityQueryContext): Promise<boolean>;
|
|
53
53
|
/**
|
|
54
54
|
* Check whether a single entity loaded by a viewer can be deleted by that same viewer and return the evaluation result.
|
|
55
55
|
*
|
|
@@ -59,4 +59,4 @@ export declare function canViewerDeleteAsync<TFields extends object, TID extends
|
|
|
59
59
|
* @param sourceEntity - entity loaded by viewer
|
|
60
60
|
* @param queryContext - query context in which to perform the check
|
|
61
61
|
*/
|
|
62
|
-
export declare function getCanViewerDeleteResultAsync<TFields extends
|
|
62
|
+
export declare function getCanViewerDeleteResultAsync<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends Entity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields>(entityClass: IEntityClass<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, sourceEntity: TEntity, queryContext?: EntityQueryContext): Promise<EntityPrivacyEvaluationResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPrivacyUtils.js","sourceRoot":"","sources":["../../src/utils/EntityPrivacyUtils.ts"],"names":[],"mappings":";;;;;AA4CA,
|
|
1
|
+
{"version":3,"file":"EntityPrivacyUtils.js","sourceRoot":"","sources":["../../src/utils/EntityPrivacyUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A serializable object. The serialized value is used to determine equality.
|
|
3
|
+
*/
|
|
4
|
+
export interface ISerializable<TSerialized> {
|
|
5
|
+
serialize(): TSerialized;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A map with keys that are serializable. Serialized keys are considered equal if their serialized values are equal.
|
|
9
|
+
* Otherwise, the map behaves like a regular Map.
|
|
10
|
+
*/
|
|
11
|
+
export declare abstract class SerializableKeyMap<TSerialized, K extends ISerializable<TSerialized>, V> implements ReadonlyMap<K, V>, Map<K, V> {
|
|
12
|
+
protected readonly underlyingMap: Map<TSerialized, V>;
|
|
13
|
+
constructor(iterable?: Iterable<readonly [K, V]> | null);
|
|
14
|
+
protected abstract deserializeKey(serializedKey: TSerialized): K;
|
|
15
|
+
forEach(callbackfn: (value: V, key: K, map: SerializableKeyMap<TSerialized, K, V>) => void, thisArg?: any): void;
|
|
16
|
+
get(key: K): V | undefined;
|
|
17
|
+
has(key: K): boolean;
|
|
18
|
+
clear(): void;
|
|
19
|
+
delete(key: K): boolean;
|
|
20
|
+
set(key: K, value: V): this;
|
|
21
|
+
get size(): number;
|
|
22
|
+
entries(): MapIterator<[K, V]>;
|
|
23
|
+
keys(): MapIterator<K>;
|
|
24
|
+
values(): MapIterator<V>;
|
|
25
|
+
[Symbol.iterator](): MapIterator<[K, V]>;
|
|
26
|
+
get [Symbol.toStringTag](): string;
|
|
27
|
+
}
|