@expo/entity 0.40.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/AuthorizationResultBasedEntityAssociationLoader.d.ts +16 -16
- package/build/AuthorizationResultBasedEntityAssociationLoader.js +2 -4
- package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -1
- package/build/AuthorizationResultBasedEntityLoader.d.ts +39 -67
- package/build/AuthorizationResultBasedEntityLoader.js +85 -62
- package/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
- package/build/AuthorizationResultBasedEntityMutator.d.ts +16 -16
- package/build/AuthorizationResultBasedEntityMutator.js.map +1 -1
- package/build/ComposedEntityCacheAdapter.d.ts +7 -6
- package/build/ComposedEntityCacheAdapter.js +28 -28
- package/build/ComposedEntityCacheAdapter.js.map +1 -1
- package/build/ComposedSecondaryEntityCache.d.ts +1 -1
- package/build/ComposedSecondaryEntityCache.js.map +1 -1
- package/build/EnforcingEntityAssociationLoader.d.ts +15 -15
- package/build/EnforcingEntityAssociationLoader.js.map +1 -1
- package/build/EnforcingEntityCreator.d.ts +2 -2
- package/build/EnforcingEntityDeleter.d.ts +2 -2
- package/build/EnforcingEntityLoader.d.ts +104 -18
- package/build/EnforcingEntityLoader.js +113 -12
- package/build/EnforcingEntityLoader.js.map +1 -1
- package/build/EnforcingEntityUpdater.d.ts +2 -2
- package/build/Entity.d.ts +32 -10
- package/build/Entity.js +41 -3
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.d.ts +3 -3
- package/build/EntityCompanion.d.ts +5 -5
- package/build/EntityCompanion.js.map +1 -1
- package/build/EntityCompanionProvider.d.ts +6 -6
- package/build/EntityCompanionProvider.js.map +1 -1
- package/build/EntityConfiguration.d.ts +46 -5
- package/build/EntityConfiguration.js +39 -1
- package/build/EntityConfiguration.js.map +1 -1
- package/build/EntityCreator.d.ts +4 -4
- package/build/EntityDatabaseAdapter.d.ts +15 -14
- package/build/EntityDatabaseAdapter.js +20 -12
- package/build/EntityDatabaseAdapter.js.map +1 -1
- package/build/EntityDeleter.d.ts +4 -4
- package/build/EntityFieldDefinition.d.ts +20 -10
- package/build/EntityFieldDefinition.js +3 -1
- package/build/EntityFieldDefinition.js.map +1 -1
- package/build/EntityFields.d.ts +14 -12
- package/build/EntityFields.js.map +1 -1
- package/build/EntityLoader.d.ts +5 -5
- package/build/EntityLoaderFactory.d.ts +3 -3
- package/build/EntityLoaderFactory.js.map +1 -1
- package/build/EntityLoaderUtils.d.ts +2 -2
- package/build/EntityLoaderUtils.js +27 -1
- package/build/EntityLoaderUtils.js.map +1 -1
- package/build/EntityMutationInfo.d.ts +2 -2
- package/build/EntityMutationTriggerConfiguration.d.ts +14 -14
- package/build/EntityMutationTriggerConfiguration.js.map +1 -1
- package/build/EntityMutationValidator.d.ts +2 -2
- package/build/EntityMutatorFactory.d.ts +5 -5
- package/build/EntityMutatorFactory.js.map +1 -1
- package/build/EntityPrivacyPolicy.d.ts +14 -14
- package/build/EntityPrivacyPolicy.js.map +1 -1
- package/build/EntitySecondaryCacheLoader.d.ts +4 -4
- package/build/EntityUpdater.d.ts +4 -4
- package/build/GenericEntityCacheAdapter.d.ts +7 -6
- package/build/GenericEntityCacheAdapter.js +13 -14
- package/build/GenericEntityCacheAdapter.js.map +1 -1
- package/build/GenericSecondaryEntityCache.d.ts +3 -3
- package/build/GenericSecondaryEntityCache.js.map +1 -1
- package/build/IEntityCacheAdapter.d.ts +17 -16
- package/build/IEntityCacheAdapterProvider.d.ts +1 -1
- package/build/IEntityDatabaseAdapterProvider.d.ts +1 -1
- package/build/IEntityGenericCacher.d.ts +15 -5
- package/build/ReadonlyEntity.d.ts +27 -8
- package/build/ReadonlyEntity.js +31 -3
- package/build/ReadonlyEntity.js.map +1 -1
- package/build/ViewerContext.d.ts +1 -1
- package/build/ViewerScopedEntityCompanion.d.ts +5 -5
- package/build/ViewerScopedEntityCompanionProvider.d.ts +1 -1
- package/build/ViewerScopedEntityLoaderFactory.d.ts +3 -3
- package/build/ViewerScopedEntityMutatorFactory.d.ts +5 -5
- package/build/entityUtils.d.ts +1 -1
- package/build/entityUtils.js.map +1 -1
- package/build/errors/EntityInvalidFieldValueError.d.ts +2 -2
- package/build/errors/EntityNotAuthorizedError.d.ts +1 -1
- package/build/errors/EntityNotFoundError.d.ts +2 -2
- package/build/index.d.ts +7 -7
- package/build/index.js +8 -13
- package/build/index.js.map +1 -1
- package/build/internal/CompositeFieldHolder.d.ts +48 -0
- package/build/internal/CompositeFieldHolder.js +116 -0
- package/build/internal/CompositeFieldHolder.js.map +1 -0
- package/build/internal/CompositeFieldValueMap.d.ts +15 -0
- package/build/internal/CompositeFieldValueMap.js +51 -0
- package/build/internal/CompositeFieldValueMap.js.map +1 -0
- package/build/internal/EntityDataManager.d.ts +16 -16
- package/build/internal/EntityDataManager.js +42 -45
- package/build/internal/EntityDataManager.js.map +1 -1
- package/build/internal/EntityFieldTransformationUtils.d.ts +5 -5
- package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
- package/build/internal/EntityLoadInterfaces.d.ts +104 -0
- package/build/internal/EntityLoadInterfaces.js +25 -0
- package/build/internal/EntityLoadInterfaces.js.map +1 -0
- package/build/internal/EntityTableDataCoordinator.d.ts +6 -6
- package/build/internal/EntityTableDataCoordinator.js.map +1 -1
- package/build/internal/ReadThroughEntityCache.d.ts +17 -16
- package/build/internal/ReadThroughEntityCache.js +36 -36
- package/build/internal/ReadThroughEntityCache.js.map +1 -1
- package/build/internal/SingleFieldHolder.d.ts +34 -0
- package/build/internal/SingleFieldHolder.js +90 -0
- package/build/internal/SingleFieldHolder.js.map +1 -0
- package/build/metrics/EntityMetricsUtils.d.ts +2 -1
- package/build/metrics/EntityMetricsUtils.js.map +1 -1
- package/build/metrics/IEntityMetricsAdapter.d.ts +5 -0
- package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
- package/build/rules/PrivacyPolicyRule.d.ts +2 -2
- package/build/tsconfig.build.tsbuildinfo +1 -0
- package/build/utils/EntityPrivacyUtils.d.ts +4 -4
- package/build/utils/EntityPrivacyUtils.js.map +1 -1
- package/build/utils/collections/SerializableKeyMap.d.ts +27 -0
- package/build/utils/collections/SerializableKeyMap.js +60 -0
- package/build/utils/collections/SerializableKeyMap.js.map +1 -0
- package/build/utils/collections/maps.js +1 -2
- package/build/utils/collections/maps.js.map +1 -1
- package/build/utils/collections/sets.d.ts +1 -0
- package/build/utils/collections/sets.js +7 -0
- package/build/utils/collections/sets.js.map +1 -0
- package/build/utils/mergeEntityMutationTriggerConfigurations.d.ts +1 -1
- package/package.json +8 -5
- package/src/AuthorizationResultBasedEntityAssociationLoader.ts +58 -53
- package/src/AuthorizationResultBasedEntityLoader.ts +194 -81
- package/src/AuthorizationResultBasedEntityMutator.ts +71 -45
- package/src/ComposedEntityCacheAdapter.ts +55 -46
- package/src/ComposedSecondaryEntityCache.ts +5 -2
- package/src/EnforcingEntityAssociationLoader.ts +52 -44
- package/src/EnforcingEntityCreator.ts +5 -5
- package/src/EnforcingEntityDeleter.ts +5 -5
- package/src/EnforcingEntityLoader.ts +158 -21
- package/src/EnforcingEntityUpdater.ts +5 -5
- package/src/Entity.ts +185 -29
- package/src/EntityAssociationLoader.ts +6 -6
- package/src/EntityCompanion.ts +11 -11
- package/src/EntityCompanionProvider.ts +21 -18
- package/src/EntityConfiguration.ts +123 -9
- package/src/EntityCreator.ts +7 -7
- package/src/EntityDatabaseAdapter.ts +51 -28
- package/src/EntityDeleter.ts +7 -7
- package/src/EntityFieldDefinition.ts +32 -12
- package/src/EntityFields.ts +49 -12
- package/src/EntityLoader.ts +8 -8
- package/src/EntityLoaderFactory.ts +8 -8
- package/src/EntityLoaderUtils.ts +39 -10
- package/src/EntityMutationInfo.ts +6 -6
- package/src/EntityMutationTriggerConfiguration.ts +68 -20
- package/src/EntityMutationValidator.ts +4 -4
- package/src/EntityMutatorFactory.ts +13 -13
- package/src/EntityPrivacyPolicy.ts +50 -26
- package/src/EntitySecondaryCacheLoader.ts +6 -6
- package/src/EntityUpdater.ts +7 -7
- package/src/GenericEntityCacheAdapter.ts +39 -28
- package/src/GenericSecondaryEntityCache.ts +6 -3
- package/src/IEntityCacheAdapter.ts +45 -25
- package/src/IEntityCacheAdapterProvider.ts +3 -3
- package/src/IEntityDatabaseAdapterProvider.ts +3 -3
- package/src/IEntityGenericCacher.ts +33 -5
- package/src/ReadonlyEntity.ts +129 -16
- package/src/ViewerContext.ts +5 -5
- package/src/ViewerScopedEntityCompanion.ts +7 -7
- package/src/ViewerScopedEntityCompanionProvider.ts +6 -6
- package/src/ViewerScopedEntityLoaderFactory.ts +7 -7
- package/src/ViewerScopedEntityMutatorFactory.ts +8 -8
- package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +41 -72
- package/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.ts +14 -13
- package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +367 -69
- package/src/__tests__/ComposedCacheAdapter-test.ts +235 -117
- package/src/__tests__/EnforcingEntityLoader-test.ts +135 -1
- package/src/__tests__/Entity-test.ts +64 -11
- package/src/__tests__/EntityAssociationLoader-test.ts +6 -8
- package/src/__tests__/EntityCommonUseCases-test.ts +25 -28
- package/src/__tests__/EntityCompanion-test.ts +4 -4
- package/src/__tests__/EntityCompanionProvider-test.ts +9 -8
- package/src/__tests__/EntityConfiguration-test.ts +85 -6
- package/src/__tests__/EntityDatabaseAdapter-test.ts +113 -17
- package/src/__tests__/EntityEdges-test.ts +135 -138
- package/src/__tests__/EntityFields-test.ts +2 -2
- package/src/__tests__/EntityLoader-test.ts +5 -7
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +17 -19
- package/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.ts +73 -0
- package/src/__tests__/EntityMutator-test.ts +74 -46
- package/src/__tests__/EntityPrivacyPolicy-test.ts +51 -74
- package/src/__tests__/EntityQueryContext-test.ts +1 -1
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +9 -9
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +119 -122
- package/src/__tests__/GenericEntityCacheAdapter-test.ts +83 -28
- package/src/__tests__/ReadonlyEntity-test.ts +49 -9
- package/src/__tests__/ViewerContext-test.ts +1 -1
- package/src/__tests__/ViewerScopedEntityCompanion-test.ts +5 -2
- package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +1 -1
- package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +12 -3
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +25 -27
- package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +28 -34
- package/src/entityUtils.ts +4 -1
- package/src/errors/EntityInvalidFieldValueError.ts +5 -5
- package/src/errors/EntityNotAuthorizedError.ts +3 -3
- package/src/errors/EntityNotFoundError.ts +5 -5
- package/src/index.ts +7 -7
- package/src/internal/CompositeFieldHolder.ts +218 -0
- package/src/internal/CompositeFieldValueMap.ts +78 -0
- package/src/internal/EntityDataManager.ts +107 -96
- package/src/internal/EntityFieldTransformationUtils.ts +33 -14
- package/src/internal/EntityLoadInterfaces.ts +143 -0
- package/src/internal/EntityTableDataCoordinator.ts +8 -5
- package/src/internal/ReadThroughEntityCache.ts +63 -50
- package/src/internal/SingleFieldHolder.ts +131 -0
- package/src/internal/__tests__/CompositeFieldHolder-test.ts +25 -0
- package/src/internal/__tests__/CompositeFieldValueMap-test.ts +43 -0
- package/src/internal/__tests__/EntityDataManager-test.ts +308 -91
- package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +3 -2
- package/src/internal/__tests__/ReadThroughEntityCache-test.ts +315 -107
- package/src/metrics/EntityMetricsUtils.ts +7 -2
- package/src/metrics/IEntityMetricsAdapter.ts +6 -0
- package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +5 -5
- package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +5 -5
- package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +5 -5
- package/src/rules/PrivacyPolicyRule.ts +4 -4
- package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +1 -1
- package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +1 -1
- package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +1 -1
- package/src/utils/EntityPrivacyUtils.ts +72 -30
- package/src/utils/{testing → __testfixtures__}/PrivacyPolicyRuleTestUtils.ts +26 -26
- package/src/{testfixtures → utils/__testfixtures__}/SimpleTestEntity.ts +16 -15
- package/src/utils/__testfixtures__/StubCacheAdapter.ts +164 -0
- package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapter.ts +19 -12
- package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapterProvider.ts +4 -4
- package/src/utils/__testfixtures__/TSMockitoExtensions.ts +69 -0
- package/src/{testfixtures → utils/__testfixtures__}/TestEntity.ts +21 -15
- package/src/{testfixtures → utils/__testfixtures__}/TestEntity2.ts +16 -15
- package/src/{testfixtures → utils/__testfixtures__}/TestEntityWithMutationTriggers.ts +23 -22
- package/src/{testfixtures → utils/__testfixtures__}/TestViewerContext.ts +1 -1
- package/src/utils/{testing → __testfixtures__}/describeFieldTestCase.ts +1 -1
- package/src/utils/__tests__/EntityPrivacyUtils-test.ts +81 -113
- package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +31 -30
- package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +1 -1
- package/src/utils/collections/SerializableKeyMap.ts +84 -0
- package/src/utils/collections/__tests__/SerializableKeyMap-test.ts +119 -0
- package/src/utils/collections/__tests__/sets-test.ts +17 -0
- package/src/utils/collections/maps.ts +7 -8
- package/src/utils/collections/sets.ts +3 -0
- package/src/utils/mergeEntityMutationTriggerConfigurations.ts +5 -5
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +0 -273
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.d.ts +0 -26
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js +0 -110
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js +0 -401
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +0 -1
- package/build/__tests__/ComposedCacheAdapter-test.d.ts +0 -1
- package/build/__tests__/ComposedCacheAdapter-test.js +0 -229
- package/build/__tests__/ComposedCacheAdapter-test.js.map +0 -1
- package/build/__tests__/ComposedSecondaryEntityCache-test.d.ts +0 -1
- package/build/__tests__/ComposedSecondaryEntityCache-test.js +0 -66
- package/build/__tests__/ComposedSecondaryEntityCache-test.js.map +0 -1
- package/build/__tests__/EnforcingEntityAssociationLoader-test.d.ts +0 -1
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js +0 -115
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js.map +0 -1
- package/build/__tests__/EnforcingEntityLoader-test.d.ts +0 -1
- package/build/__tests__/EnforcingEntityLoader-test.js +0 -253
- package/build/__tests__/EnforcingEntityLoader-test.js.map +0 -1
- package/build/__tests__/Entity-test.d.ts +0 -1
- package/build/__tests__/Entity-test.js +0 -54
- package/build/__tests__/Entity-test.js.map +0 -1
- package/build/__tests__/EntityAssociationLoader-test.d.ts +0 -1
- package/build/__tests__/EntityAssociationLoader-test.js +0 -30
- package/build/__tests__/EntityAssociationLoader-test.js.map +0 -1
- package/build/__tests__/EntityCommonUseCases-test.d.ts +0 -1
- package/build/__tests__/EntityCommonUseCases-test.js +0 -154
- package/build/__tests__/EntityCommonUseCases-test.js.map +0 -1
- package/build/__tests__/EntityCompanion-test.d.ts +0 -1
- package/build/__tests__/EntityCompanion-test.js +0 -77
- package/build/__tests__/EntityCompanion-test.js.map +0 -1
- package/build/__tests__/EntityCompanionProvider-test.d.ts +0 -1
- package/build/__tests__/EntityCompanionProvider-test.js +0 -54
- package/build/__tests__/EntityCompanionProvider-test.js.map +0 -1
- package/build/__tests__/EntityConfiguration-test.d.ts +0 -1
- package/build/__tests__/EntityConfiguration-test.js +0 -103
- package/build/__tests__/EntityConfiguration-test.js.map +0 -1
- package/build/__tests__/EntityDatabaseAdapter-test.d.ts +0 -1
- package/build/__tests__/EntityDatabaseAdapter-test.js +0 -146
- package/build/__tests__/EntityDatabaseAdapter-test.js.map +0 -1
- package/build/__tests__/EntityEdges-test.d.ts +0 -1
- package/build/__tests__/EntityEdges-test.js +0 -755
- package/build/__tests__/EntityEdges-test.js.map +0 -1
- package/build/__tests__/EntityFields-test.d.ts +0 -1
- package/build/__tests__/EntityFields-test.js +0 -63
- package/build/__tests__/EntityFields-test.js.map +0 -1
- package/build/__tests__/EntityLoader-test.d.ts +0 -1
- package/build/__tests__/EntityLoader-test.js +0 -36
- package/build/__tests__/EntityLoader-test.js.map +0 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +0 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +0 -77
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +0 -1
- package/build/__tests__/EntityMutator-test.d.ts +0 -1
- package/build/__tests__/EntityMutator-test.js +0 -741
- package/build/__tests__/EntityMutator-test.js.map +0 -1
- package/build/__tests__/EntityPrivacyPolicy-test.d.ts +0 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +0 -463
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +0 -1
- package/build/__tests__/EntityQueryContext-test.d.ts +0 -1
- package/build/__tests__/EntityQueryContext-test.js +0 -116
- package/build/__tests__/EntityQueryContext-test.js.map +0 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.d.ts +0 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.js +0 -60
- package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +0 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.d.ts +0 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.js +0 -247
- package/build/__tests__/EntitySelfReferentialEdges-test.js.map +0 -1
- package/build/__tests__/GenericEntityCacheAdapter-test.d.ts +0 -1
- package/build/__tests__/GenericEntityCacheAdapter-test.js +0 -80
- package/build/__tests__/GenericEntityCacheAdapter-test.js.map +0 -1
- package/build/__tests__/ReadonlyEntity-test.d.ts +0 -1
- package/build/__tests__/ReadonlyEntity-test.js +0 -178
- package/build/__tests__/ReadonlyEntity-test.js.map +0 -1
- package/build/__tests__/ViewerContext-test.d.ts +0 -1
- package/build/__tests__/ViewerContext-test.js +0 -30
- package/build/__tests__/ViewerContext-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityCompanion-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityCompanion-test.js +0 -20
- package/build/__tests__/ViewerScopedEntityCompanion-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js +0 -20
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js +0 -23
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js +0 -22
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +0 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.d.ts +0 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +0 -129
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +0 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.d.ts +0 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +0 -136
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +0 -1
- package/build/__tests__/entityUtils-test.d.ts +0 -1
- package/build/__tests__/entityUtils-test.js +0 -87
- package/build/__tests__/entityUtils-test.js.map +0 -1
- package/build/internal/__tests__/EntityDataManager-test.d.ts +0 -1
- package/build/internal/__tests__/EntityDataManager-test.js +0 -373
- package/build/internal/__tests__/EntityDataManager-test.js.map +0 -1
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.d.ts +0 -1
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +0 -136
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +0 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.d.ts +0 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js +0 -206
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +0 -1
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.d.ts +0 -1
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +0 -21
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +0 -1
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.d.ts +0 -1
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +0 -21
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +0 -1
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.d.ts +0 -1
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +0 -21
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +0 -1
- package/build/testfixtures/DateIDTestEntity.d.ts +0 -19
- package/build/testfixtures/DateIDTestEntity.js +0 -48
- package/build/testfixtures/DateIDTestEntity.js.map +0 -1
- package/build/testfixtures/SimpleTestEntity.d.ts +0 -20
- package/build/testfixtures/SimpleTestEntity.js +0 -48
- package/build/testfixtures/SimpleTestEntity.js.map +0 -1
- package/build/testfixtures/TestEntity.d.ts +0 -30
- package/build/testfixtures/TestEntity.js +0 -93
- package/build/testfixtures/TestEntity.js.map +0 -1
- package/build/testfixtures/TestEntity2.d.ts +0 -20
- package/build/testfixtures/TestEntity2.js +0 -51
- package/build/testfixtures/TestEntity2.js.map +0 -1
- package/build/testfixtures/TestEntityNumberKey.d.ts +0 -19
- package/build/testfixtures/TestEntityNumberKey.js +0 -48
- package/build/testfixtures/TestEntityNumberKey.js.map +0 -1
- package/build/testfixtures/TestEntityWithMutationTriggers.d.ts +0 -36
- package/build/testfixtures/TestEntityWithMutationTriggers.js +0 -82
- package/build/testfixtures/TestEntityWithMutationTriggers.js.map +0 -1
- package/build/testfixtures/TestViewerContext.d.ts +0 -3
- package/build/testfixtures/TestViewerContext.js +0 -10
- package/build/testfixtures/TestViewerContext.js.map +0 -1
- package/build/utils/__tests__/EntityPrivacyUtils-test.d.ts +0 -1
- package/build/utils/__tests__/EntityPrivacyUtils-test.js +0 -520
- package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +0 -1
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +0 -1
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +0 -181
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +0 -1
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +0 -1
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +0 -26
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +0 -1
- package/build/utils/collections/__tests__/maps-test.d.ts +0 -1
- package/build/utils/collections/__tests__/maps-test.js +0 -120
- package/build/utils/collections/__tests__/maps-test.js.map +0 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +0 -28
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js +0 -52
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +0 -1
- package/build/utils/testing/StubCacheAdapter.d.ts +0 -27
- package/build/utils/testing/StubCacheAdapter.js +0 -86
- package/build/utils/testing/StubCacheAdapter.js.map +0 -1
- package/build/utils/testing/StubDatabaseAdapter.d.ts +0 -25
- package/build/utils/testing/StubDatabaseAdapter.js +0 -191
- package/build/utils/testing/StubDatabaseAdapter.js.map +0 -1
- package/build/utils/testing/StubDatabaseAdapterProvider.d.ts +0 -7
- package/build/utils/testing/StubDatabaseAdapterProvider.js +0 -14
- package/build/utils/testing/StubDatabaseAdapterProvider.js.map +0 -1
- package/build/utils/testing/StubQueryContextProvider.d.ts +0 -7
- package/build/utils/testing/StubQueryContextProvider.js +0 -19
- package/build/utils/testing/StubQueryContextProvider.js.map +0 -1
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.d.ts +0 -1
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js +0 -42
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js.map +0 -1
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.d.ts +0 -1
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +0 -402
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +0 -1
- package/build/utils/testing/createUnitTestEntityCompanionProvider.d.ts +0 -7
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js +0 -36
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +0 -1
- package/build/utils/testing/describeFieldTestCase.d.ts +0 -2
- package/build/utils/testing/describeFieldTestCase.js +0 -18
- package/build/utils/testing/describeFieldTestCase.js.map +0 -1
- package/src/testfixtures/DateIDTestEntity.ts +0 -59
- package/src/testfixtures/TestEntityNumberKey.ts +0 -59
- package/src/utils/testing/StubCacheAdapter.ts +0 -122
- package/src/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.ts +0 -42
- package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +0 -548
- /package/src/utils/{testing → __testfixtures__}/StubQueryContextProvider.ts +0 -0
- /package/src/utils/{testing → __testfixtures__}/createUnitTestEntityCompanionProvider.ts +0 -0
package/build/index.js
CHANGED
|
@@ -22,8 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
22
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.
|
|
26
|
-
exports.StubQueryContextProvider = exports.StubDatabaseAdapterProvider = void 0;
|
|
25
|
+
exports.PrivacyPolicyRule = exports.AlwaysSkipPrivacyPolicyRule = exports.AlwaysDenyPrivacyPolicyRule = exports.AlwaysAllowPrivacyPolicyRule = exports.NoOpEntityMetricsAdapter = exports.ReadThroughEntityCache = exports.EntityTableDataCoordinator = exports.EntityDataManager = exports.EntityNotFoundError = exports.EntityNotAuthorizedError = exports.EntityInvalidFieldValueError = exports.EntityError = exports.EntityDatabaseAdapterError = exports.EntityCacheAdapterError = exports.ViewerScopedEntityMutatorFactory = exports.ViewerScopedEntityLoaderFactory = exports.ViewerScopedEntityCompanionProvider = exports.ViewerScopedEntityCompanion = exports.ViewerContext = exports.ReadonlyEntity = exports.GenericSecondaryEntityCache = exports.GenericEntityCacheAdapter = exports.EntityUpdater = exports.EntitySecondaryCacheLoader = exports.EntityQueryContextProvider = exports.EntityPrivacyPolicy = exports.EntityMutatorFactory = exports.EntityMutationValidator = exports.EntityLoaderUtils = exports.EntityLoaderFactory = exports.EntityLoader = exports.EntityDeleter = exports.EntityDatabaseAdapter = exports.EntityCreator = exports.EntityConfiguration = exports.EntityCompanionProvider = exports.EntityCompanion = exports.EntityAssociationLoader = exports.Entity = exports.EnforcingEntityUpdater = exports.EnforcingEntityLoader = exports.EnforcingEntityDeleter = exports.EnforcingEntityCreator = exports.EnforcingEntityAssociationLoader = exports.ComposedSecondaryEntityCache = exports.ComposedEntityCacheAdapter = exports.AuthorizationResultBasedEntityLoader = exports.AuthorizationResultBasedEntityAssociationLoader = void 0;
|
|
27
26
|
var AuthorizationResultBasedEntityAssociationLoader_1 = require("./AuthorizationResultBasedEntityAssociationLoader");
|
|
28
27
|
Object.defineProperty(exports, "AuthorizationResultBasedEntityAssociationLoader", { enumerable: true, get: function () { return __importDefault(AuthorizationResultBasedEntityAssociationLoader_1).default; } });
|
|
29
28
|
__exportStar(require("./AuthorizationResultBasedEntityAssociationLoader"), exports);
|
|
@@ -57,6 +56,7 @@ Object.defineProperty(exports, "EntityCompanionProvider", { enumerable: true, ge
|
|
|
57
56
|
__exportStar(require("./EntityCompanionProvider"), exports);
|
|
58
57
|
var EntityConfiguration_1 = require("./EntityConfiguration");
|
|
59
58
|
Object.defineProperty(exports, "EntityConfiguration", { enumerable: true, get: function () { return __importDefault(EntityConfiguration_1).default; } });
|
|
59
|
+
__exportStar(require("./EntityConfiguration"), exports);
|
|
60
60
|
var EntityCreator_1 = require("./EntityCreator");
|
|
61
61
|
Object.defineProperty(exports, "EntityCreator", { enumerable: true, get: function () { return __importDefault(EntityCreator_1).default; } });
|
|
62
62
|
var EntityDatabaseAdapter_1 = require("./EntityDatabaseAdapter");
|
|
@@ -121,14 +121,18 @@ var EntityNotAuthorizedError_1 = require("./errors/EntityNotAuthorizedError");
|
|
|
121
121
|
Object.defineProperty(exports, "EntityNotAuthorizedError", { enumerable: true, get: function () { return __importDefault(EntityNotAuthorizedError_1).default; } });
|
|
122
122
|
var EntityNotFoundError_1 = require("./errors/EntityNotFoundError");
|
|
123
123
|
Object.defineProperty(exports, "EntityNotFoundError", { enumerable: true, get: function () { return __importDefault(EntityNotFoundError_1).default; } });
|
|
124
|
+
__exportStar(require("./internal/CompositeFieldHolder"), exports);
|
|
125
|
+
__exportStar(require("./internal/CompositeFieldValueMap"), exports);
|
|
124
126
|
var EntityDataManager_1 = require("./internal/EntityDataManager");
|
|
125
127
|
Object.defineProperty(exports, "EntityDataManager", { enumerable: true, get: function () { return __importDefault(EntityDataManager_1).default; } });
|
|
126
128
|
__exportStar(require("./internal/EntityFieldTransformationUtils"), exports);
|
|
129
|
+
__exportStar(require("./internal/EntityLoadInterfaces"), exports);
|
|
127
130
|
var EntityTableDataCoordinator_1 = require("./internal/EntityTableDataCoordinator");
|
|
128
131
|
Object.defineProperty(exports, "EntityTableDataCoordinator", { enumerable: true, get: function () { return __importDefault(EntityTableDataCoordinator_1).default; } });
|
|
129
132
|
var ReadThroughEntityCache_1 = require("./internal/ReadThroughEntityCache");
|
|
130
133
|
Object.defineProperty(exports, "ReadThroughEntityCache", { enumerable: true, get: function () { return __importDefault(ReadThroughEntityCache_1).default; } });
|
|
131
134
|
__exportStar(require("./internal/ReadThroughEntityCache"), exports);
|
|
135
|
+
__exportStar(require("./internal/SingleFieldHolder"), exports);
|
|
132
136
|
__exportStar(require("./metrics/EntityMetricsUtils"), exports);
|
|
133
137
|
__exportStar(require("./metrics/IEntityMetricsAdapter"), exports);
|
|
134
138
|
var NoOpEntityMetricsAdapter_1 = require("./metrics/NoOpEntityMetricsAdapter");
|
|
@@ -145,15 +149,6 @@ __exportStar(require("./rules/PrivacyPolicyRule"), exports);
|
|
|
145
149
|
__exportStar(require("./utils/EntityPrivacyUtils"), exports);
|
|
146
150
|
__exportStar(require("./utils/mergeEntityMutationTriggerConfigurations"), exports);
|
|
147
151
|
__exportStar(require("./utils/collections/maps"), exports);
|
|
148
|
-
__exportStar(require("./utils/
|
|
149
|
-
|
|
150
|
-
Object.defineProperty(exports, "describeFieldTestCase", { enumerable: true, get: function () { return __importDefault(describeFieldTestCase_1).default; } });
|
|
151
|
-
__exportStar(require("./utils/testing/PrivacyPolicyRuleTestUtils"), exports);
|
|
152
|
-
__exportStar(require("./utils/testing/StubCacheAdapter"), exports);
|
|
153
|
-
var StubDatabaseAdapter_1 = require("./utils/testing/StubDatabaseAdapter");
|
|
154
|
-
Object.defineProperty(exports, "StubDatabaseAdapter", { enumerable: true, get: function () { return __importDefault(StubDatabaseAdapter_1).default; } });
|
|
155
|
-
var StubDatabaseAdapterProvider_1 = require("./utils/testing/StubDatabaseAdapterProvider");
|
|
156
|
-
Object.defineProperty(exports, "StubDatabaseAdapterProvider", { enumerable: true, get: function () { return __importDefault(StubDatabaseAdapterProvider_1).default; } });
|
|
157
|
-
var StubQueryContextProvider_1 = require("./utils/testing/StubQueryContextProvider");
|
|
158
|
-
Object.defineProperty(exports, "StubQueryContextProvider", { enumerable: true, get: function () { return __importDefault(StubQueryContextProvider_1).default; } });
|
|
152
|
+
__exportStar(require("./utils/collections/SerializableKeyMap"), exports);
|
|
153
|
+
__exportStar(require("./utils/collections/sets"), exports);
|
|
159
154
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,iCAAiC;AACjC;;;GAGG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import EntityConfiguration, { EntityCompositeField, EntityCompositeFieldValue } from '../EntityConfiguration';
|
|
2
|
+
import { EntityLoadMethodType, IEntityLoadKey, IEntityLoadValue, LoadValueMap } from '../internal/EntityLoadInterfaces';
|
|
3
|
+
declare const CompositeFieldHolderSerializedBrand: unique symbol;
|
|
4
|
+
export type SerializedCompositeFieldHolder = string & {
|
|
5
|
+
readonly [CompositeFieldHolderSerializedBrand]: true;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* A load key that represents a composite field (set of fieldName) on an entity.
|
|
9
|
+
* Must be defined in the entity configuration composite field definition.
|
|
10
|
+
*/
|
|
11
|
+
export declare class CompositeFieldHolder<TFields extends Record<string, any>, TIDField extends keyof TFields> implements IEntityLoadKey<TFields, TIDField, SerializedCompositeFieldValueHolder, CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>> {
|
|
12
|
+
readonly compositeField: EntityCompositeField<TFields>;
|
|
13
|
+
constructor(compositeFieldInput: EntityCompositeField<TFields>);
|
|
14
|
+
toString(): string;
|
|
15
|
+
getFieldSet(): ReadonlySet<keyof TFields>;
|
|
16
|
+
extractCompositeFieldValueHolderFromObjectFields(objectFields: TFields): CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>> | null;
|
|
17
|
+
serialize(): SerializedCompositeFieldHolder;
|
|
18
|
+
isCacheable(entityConfiguration: EntityConfiguration<TFields, TIDField>): boolean;
|
|
19
|
+
getDatabaseColumns(entityConfiguration: EntityConfiguration<TFields, TIDField>): readonly string[];
|
|
20
|
+
getDatabaseValues(value: CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>): readonly any[];
|
|
21
|
+
getLoadValueForObject(object: Readonly<TFields>): CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>> | null;
|
|
22
|
+
createCacheKeyPartsForLoadValue(entityConfiguration: EntityConfiguration<TFields, TIDField>, value: CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>): readonly string[];
|
|
23
|
+
getLoadMethodType(): EntityLoadMethodType;
|
|
24
|
+
getDataManagerDataLoaderKey(): string;
|
|
25
|
+
serializeLoadValue(value: CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>): SerializedCompositeFieldValueHolder;
|
|
26
|
+
deserializeLoadValue(value: SerializedCompositeFieldValueHolder): CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>;
|
|
27
|
+
validateRuntimeLoadValuesForDataManagerDataLoader(values: readonly CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>[], entityClassName: string): void;
|
|
28
|
+
vendNewLoadValueMap<V>(): LoadValueMap<SerializedCompositeFieldValueHolder, CompositeFieldValueHolder<TFields, EntityCompositeField<TFields>>, V>;
|
|
29
|
+
}
|
|
30
|
+
declare const CompositeFieldValueHolderSerializedBrand: unique symbol;
|
|
31
|
+
export type SerializedCompositeFieldValueHolder = string & {
|
|
32
|
+
readonly [CompositeFieldValueHolderSerializedBrand]: true;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* A load value for a CompositeFieldHolder.
|
|
36
|
+
*/
|
|
37
|
+
export declare class CompositeFieldValueHolder<TFields extends Record<string, any>, TCompositeField extends EntityCompositeField<TFields>> implements IEntityLoadValue<SerializedCompositeFieldValueHolder> {
|
|
38
|
+
readonly compositeFieldValue: EntityCompositeFieldValue<TFields, TCompositeField>;
|
|
39
|
+
constructor(compositeFieldValue: EntityCompositeFieldValue<TFields, TCompositeField>);
|
|
40
|
+
toString(): string;
|
|
41
|
+
getFieldSet(): ReadonlySet<keyof TFields>;
|
|
42
|
+
static deserialize<TFields extends Record<string, any>, TCompositeField extends EntityCompositeField<TFields>>(serialized: SerializedCompositeFieldValueHolder): CompositeFieldValueHolder<TFields, TCompositeField>;
|
|
43
|
+
serialize(): SerializedCompositeFieldValueHolder;
|
|
44
|
+
}
|
|
45
|
+
export declare class CompositeFieldValueHolderMap<TFields extends Record<string, any>, N extends EntityCompositeField<TFields>, V> extends LoadValueMap<SerializedCompositeFieldValueHolder, CompositeFieldValueHolder<TFields, N>, V> {
|
|
46
|
+
protected deserializeKey(serializedKey: SerializedCompositeFieldValueHolder): CompositeFieldValueHolder<TFields, N>;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
@@ -0,0 +1,116 @@
|
|
|
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.CompositeFieldValueHolderMap = exports.CompositeFieldValueHolder = exports.CompositeFieldHolder = void 0;
|
|
7
|
+
const invariant_1 = __importDefault(require("invariant"));
|
|
8
|
+
const entityUtils_1 = require("../entityUtils");
|
|
9
|
+
const EntityFieldTransformationUtils_1 = require("./EntityFieldTransformationUtils");
|
|
10
|
+
const EntityLoadInterfaces_1 = require("../internal/EntityLoadInterfaces");
|
|
11
|
+
/**
|
|
12
|
+
* A load key that represents a composite field (set of fieldName) on an entity.
|
|
13
|
+
* Must be defined in the entity configuration composite field definition.
|
|
14
|
+
*/
|
|
15
|
+
class CompositeFieldHolder {
|
|
16
|
+
compositeField;
|
|
17
|
+
constructor(compositeFieldInput) {
|
|
18
|
+
this.compositeField = [...compositeFieldInput].sort();
|
|
19
|
+
}
|
|
20
|
+
toString() {
|
|
21
|
+
return `CompositeField(${this.compositeField.join(',')})`;
|
|
22
|
+
}
|
|
23
|
+
getFieldSet() {
|
|
24
|
+
return new Set(this.compositeField);
|
|
25
|
+
}
|
|
26
|
+
extractCompositeFieldValueHolderFromObjectFields(objectFields) {
|
|
27
|
+
const selection = (0, entityUtils_1.pick)(objectFields, this.compositeField);
|
|
28
|
+
if (Object.values(selection).some((value) => value === undefined || value === null)) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return new CompositeFieldValueHolder(selection);
|
|
32
|
+
}
|
|
33
|
+
serialize() {
|
|
34
|
+
return JSON.stringify(this.compositeField);
|
|
35
|
+
}
|
|
36
|
+
isCacheable(entityConfiguration) {
|
|
37
|
+
return entityConfiguration.compositeFieldInfo.canCacheCompositeField(this.compositeField);
|
|
38
|
+
}
|
|
39
|
+
getDatabaseColumns(entityConfiguration) {
|
|
40
|
+
return this.compositeField.map((fieldName) => (0, EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField)(entityConfiguration, fieldName));
|
|
41
|
+
}
|
|
42
|
+
getDatabaseValues(value) {
|
|
43
|
+
return this.compositeField.map((fieldName) => value.compositeFieldValue[fieldName]);
|
|
44
|
+
}
|
|
45
|
+
getLoadValueForObject(object) {
|
|
46
|
+
return this.extractCompositeFieldValueHolderFromObjectFields(object);
|
|
47
|
+
}
|
|
48
|
+
createCacheKeyPartsForLoadValue(entityConfiguration, value) {
|
|
49
|
+
const columnNames = this.compositeField.map((fieldName) => {
|
|
50
|
+
const columnName = entityConfiguration.entityToDBFieldsKeyMapping.get(fieldName);
|
|
51
|
+
(0, invariant_1.default)(columnName, `database field mapping missing for ${String(fieldName)}`);
|
|
52
|
+
return columnName;
|
|
53
|
+
});
|
|
54
|
+
const compositeFieldValues = this.compositeField.map((fieldName) => value.compositeFieldValue[fieldName]);
|
|
55
|
+
return [...columnNames, ...compositeFieldValues.map((value) => String(value))];
|
|
56
|
+
}
|
|
57
|
+
getLoadMethodType() {
|
|
58
|
+
return EntityLoadInterfaces_1.EntityLoadMethodType.COMPOSITE;
|
|
59
|
+
}
|
|
60
|
+
getDataManagerDataLoaderKey() {
|
|
61
|
+
return this.serialize();
|
|
62
|
+
}
|
|
63
|
+
serializeLoadValue(value) {
|
|
64
|
+
return value.serialize();
|
|
65
|
+
}
|
|
66
|
+
deserializeLoadValue(value) {
|
|
67
|
+
return CompositeFieldValueHolder.deserialize(value);
|
|
68
|
+
}
|
|
69
|
+
validateRuntimeLoadValuesForDataManagerDataLoader(values, entityClassName) {
|
|
70
|
+
const isInvalidRuntimeCompositeFieldValue = (value) => Object.values(value.compositeFieldValue).some((fieldValue) => fieldValue === undefined || fieldValue === null);
|
|
71
|
+
const invalidValueIndex = values.findIndex(isInvalidRuntimeCompositeFieldValue);
|
|
72
|
+
if (invalidValueIndex >= 0) {
|
|
73
|
+
throw new Error(`Invalid load: ${entityClassName} (${String(this.compositeField)} = ${values[invalidValueIndex]})`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
vendNewLoadValueMap() {
|
|
77
|
+
return new CompositeFieldValueHolderMap();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.CompositeFieldHolder = CompositeFieldHolder;
|
|
81
|
+
/**
|
|
82
|
+
* A load value for a CompositeFieldHolder.
|
|
83
|
+
*/
|
|
84
|
+
class CompositeFieldValueHolder {
|
|
85
|
+
compositeFieldValue;
|
|
86
|
+
constructor(compositeFieldValue) {
|
|
87
|
+
this.compositeFieldValue = compositeFieldValue;
|
|
88
|
+
}
|
|
89
|
+
toString() {
|
|
90
|
+
return `CompositeFieldValue(${Object.entries(this.compositeFieldValue)
|
|
91
|
+
.map(([fieldName, fieldValue]) => `${fieldName}=${fieldValue}`)
|
|
92
|
+
.join(',')})`;
|
|
93
|
+
}
|
|
94
|
+
getFieldSet() {
|
|
95
|
+
return new Set(Object.keys(this.compositeFieldValue));
|
|
96
|
+
}
|
|
97
|
+
static deserialize(serialized) {
|
|
98
|
+
return new CompositeFieldValueHolder(JSON.parse(serialized));
|
|
99
|
+
}
|
|
100
|
+
serialize() {
|
|
101
|
+
// Specify the ordered keys to serialize in a sorted manner to ensure consistent serialization
|
|
102
|
+
// between two objects of the same keys/values but different order.
|
|
103
|
+
// The replacer argument is "An array of strings and numbers that acts as an approved list
|
|
104
|
+
// for selecting the object properties that will be stringified."
|
|
105
|
+
// but it is a secondary effect of specifying the order of keys in the stringified object.
|
|
106
|
+
return JSON.stringify(this.compositeFieldValue, Object.keys(this.compositeFieldValue).sort());
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.CompositeFieldValueHolder = CompositeFieldValueHolder;
|
|
110
|
+
class CompositeFieldValueHolderMap extends EntityLoadInterfaces_1.LoadValueMap {
|
|
111
|
+
deserializeKey(serializedKey) {
|
|
112
|
+
return CompositeFieldValueHolder.deserialize(serializedKey);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.CompositeFieldValueHolderMap = CompositeFieldValueHolderMap;
|
|
116
|
+
//# sourceMappingURL=CompositeFieldHolder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompositeFieldHolder.js","sourceRoot":"","sources":["../../src/internal/CompositeFieldHolder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { EntityCompositeField, EntityCompositeFieldValue } from '../EntityConfiguration';
|
|
2
|
+
import { CompositeFieldValueHolder } from './CompositeFieldHolder';
|
|
3
|
+
export declare class CompositeFieldValueMap<TFields extends Record<string, any>, N extends EntityCompositeField<TFields>, TOutput> implements ReadonlyMap<EntityCompositeFieldValue<TFields, N>, TOutput> {
|
|
4
|
+
private readonly map;
|
|
5
|
+
constructor(entries: [CompositeFieldValueHolder<TFields, N>, TOutput][]);
|
|
6
|
+
get(compositeFieldValue: EntityCompositeFieldValue<TFields, N>): TOutput | undefined;
|
|
7
|
+
has(compositeFieldValue: EntityCompositeFieldValue<TFields, N>): boolean;
|
|
8
|
+
forEach(callbackfn: (value: TOutput, key: EntityCompositeFieldValue<TFields, N>, map: CompositeFieldValueMap<TFields, N, TOutput>) => void, thisArg?: any): void;
|
|
9
|
+
get size(): number;
|
|
10
|
+
entries(): MapIterator<[EntityCompositeFieldValue<TFields, N>, TOutput]>;
|
|
11
|
+
keys(): MapIterator<EntityCompositeFieldValue<TFields, N>>;
|
|
12
|
+
values(): MapIterator<TOutput>;
|
|
13
|
+
[Symbol.iterator](): MapIterator<[EntityCompositeFieldValue<TFields, N>, TOutput]>;
|
|
14
|
+
get [Symbol.toStringTag](): string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CompositeFieldValueMap = void 0;
|
|
4
|
+
const CompositeFieldHolder_1 = require("./CompositeFieldHolder");
|
|
5
|
+
class CompositeFieldValueMap {
|
|
6
|
+
map;
|
|
7
|
+
constructor(entries) {
|
|
8
|
+
const map = new Map();
|
|
9
|
+
for (const [key, value] of entries) {
|
|
10
|
+
map.set(key.serialize(), value);
|
|
11
|
+
}
|
|
12
|
+
this.map = map;
|
|
13
|
+
}
|
|
14
|
+
get(compositeFieldValue) {
|
|
15
|
+
return this.map.get(new CompositeFieldHolder_1.CompositeFieldValueHolder(compositeFieldValue).serialize());
|
|
16
|
+
}
|
|
17
|
+
has(compositeFieldValue) {
|
|
18
|
+
return this.map.has(new CompositeFieldHolder_1.CompositeFieldValueHolder(compositeFieldValue).serialize());
|
|
19
|
+
}
|
|
20
|
+
forEach(callbackfn, thisArg) {
|
|
21
|
+
this.map.forEach((value, key) => {
|
|
22
|
+
callbackfn.call(thisArg, value, CompositeFieldHolder_1.CompositeFieldValueHolder.deserialize(key).compositeFieldValue, this);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
get size() {
|
|
26
|
+
return this.map.size;
|
|
27
|
+
}
|
|
28
|
+
*entries() {
|
|
29
|
+
for (const [key, value] of this.map.entries()) {
|
|
30
|
+
yield [CompositeFieldHolder_1.CompositeFieldValueHolder.deserialize(key).compositeFieldValue, value];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
*keys() {
|
|
34
|
+
for (const key of this.map.keys()) {
|
|
35
|
+
yield CompositeFieldHolder_1.CompositeFieldValueHolder.deserialize(key).compositeFieldValue;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
*values() {
|
|
39
|
+
for (const value of this.map.values()) {
|
|
40
|
+
yield value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
[Symbol.iterator]() {
|
|
44
|
+
return this.entries();
|
|
45
|
+
}
|
|
46
|
+
get [Symbol.toStringTag]() {
|
|
47
|
+
return 'CompositeFieldValueMap';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.CompositeFieldValueMap = CompositeFieldValueMap;
|
|
51
|
+
//# sourceMappingURL=CompositeFieldValueMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompositeFieldValueMap.js","sourceRoot":"","sources":["../../src/internal/CompositeFieldValueMap.ts"],"names":[],"mappings":";;;AACA,iEAGgC;AAEhC,MAAa,sBAAsB;IAMhB,GAAG,CAAoD;IAExE,YAAY,OAA2D;QACrE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAgD,CAAC;QACpE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,mBAA0D;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,gDAAyB,CAAC,mBAAmB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,GAAG,CAAC,mBAA0D;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,gDAAyB,CAAC,mBAAmB,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,CACL,UAIS,EACT,OAAa;QAEb,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,UAAU,CAAC,IAAI,CACb,OAAO,EACP,KAAK,EACL,gDAAyB,CAAC,WAAW,CAAa,GAAG,CAAC,CAAC,mBAAmB,EAC1E,IAAI,CACL,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,CAAC,OAAO;QACN,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,MAAM,CAAC,gDAAyB,CAAC,WAAW,CAAa,GAAG,CAAC,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,CAAC,IAAI;QACH,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YAClC,MAAM,gDAAyB,CAAC,WAAW,CAAa,GAAG,CAAC,CAAC,mBAAmB,CAAC;QACnF,CAAC;IACH,CAAC;IAED,CAAC,MAAM;QACL,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,CAAC,MAAM,CAAC,QAAQ,CAAC;QACf,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtB,OAAO,wBAAwB,CAAC;IAClC,CAAC;CACF;AAvED,wDAuEC"}
|
|
@@ -2,6 +2,7 @@ import ReadThroughEntityCache from './ReadThroughEntityCache';
|
|
|
2
2
|
import EntityDatabaseAdapter, { FieldEqualityCondition, QuerySelectionModifiers, QuerySelectionModifiersWithOrderByRaw } from '../EntityDatabaseAdapter';
|
|
3
3
|
import { EntityQueryContext } from '../EntityQueryContext';
|
|
4
4
|
import EntityQueryContextProvider from '../EntityQueryContextProvider';
|
|
5
|
+
import { IEntityLoadKey, IEntityLoadValue, LoadPair } from './EntityLoadInterfaces';
|
|
5
6
|
import IEntityMetricsAdapter from '../metrics/IEntityMetricsAdapter';
|
|
6
7
|
/**
|
|
7
8
|
* A data manager is responsible for orchestrating multiple sources of entity
|
|
@@ -9,26 +10,26 @@ import IEntityMetricsAdapter from '../metrics/IEntityMetricsAdapter';
|
|
|
9
10
|
*
|
|
10
11
|
* It is also responsible for invalidating all sources of data when mutated using EntityMutator.
|
|
11
12
|
*/
|
|
12
|
-
export default class EntityDataManager<TFields extends Record<string, any
|
|
13
|
+
export default class EntityDataManager<TFields extends Record<string, any>, TIDField extends keyof TFields> {
|
|
13
14
|
private readonly databaseAdapter;
|
|
14
15
|
private readonly entityCache;
|
|
15
16
|
private readonly queryContextProvider;
|
|
16
17
|
private readonly metricsAdapter;
|
|
17
18
|
private readonly entityClassName;
|
|
18
|
-
private readonly
|
|
19
|
-
constructor(databaseAdapter: EntityDatabaseAdapter<TFields>, entityCache: ReadThroughEntityCache<TFields>, queryContextProvider: EntityQueryContextProvider, metricsAdapter: IEntityMetricsAdapter, entityClassName: string);
|
|
20
|
-
private
|
|
21
|
-
private
|
|
19
|
+
private readonly dataloaders;
|
|
20
|
+
constructor(databaseAdapter: EntityDatabaseAdapter<TFields, TIDField>, entityCache: ReadThroughEntityCache<TFields, TIDField>, queryContextProvider: EntityQueryContextProvider, metricsAdapter: IEntityMetricsAdapter, entityClassName: string);
|
|
21
|
+
private getDataLoaderForLoadKey;
|
|
22
|
+
private loadManyForDataLoaderAsync;
|
|
22
23
|
/**
|
|
23
|
-
* Load many objects
|
|
24
|
+
* Load many objects through read-through dataloader (batcher) and cache (optional).
|
|
24
25
|
*
|
|
25
26
|
* @param queryContext - query context in which to perform the load
|
|
26
|
-
* @param
|
|
27
|
-
* @param
|
|
28
|
-
* @returns map from
|
|
27
|
+
* @param key - load key being queried
|
|
28
|
+
* @param values - load values being queried for the key
|
|
29
|
+
* @returns map from load value to objects that match the query for that load value
|
|
29
30
|
*/
|
|
30
|
-
|
|
31
|
-
private
|
|
31
|
+
loadManyEqualingAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(queryContext: EntityQueryContext, key: TLoadKey, values: readonly TLoadValue[]): Promise<ReadonlyMap<TLoadValue, readonly Readonly<TFields>[]>>;
|
|
32
|
+
private loadManyEqualingInternalAsync;
|
|
32
33
|
/**
|
|
33
34
|
* Loads many objects matching the conjunction of where clauses constructed from
|
|
34
35
|
* specified field equality operands.
|
|
@@ -49,11 +50,10 @@ export default class EntityDataManager<TFields extends Record<string, any>> {
|
|
|
49
50
|
* @returns array of objects matching the query
|
|
50
51
|
*/
|
|
51
52
|
loadManyByRawWhereClauseAsync(queryContext: EntityQueryContext, rawWhereClause: string, bindings: any[] | object, querySelectionModifiers: QuerySelectionModifiersWithOrderByRaw<TFields>): Promise<readonly Readonly<TFields>[]>;
|
|
52
|
-
private
|
|
53
|
+
private invalidateOneAsync;
|
|
53
54
|
/**
|
|
54
|
-
* Invalidate all caches, in-memory or otherwise, for
|
|
55
|
-
*
|
|
56
|
-
* @param objectFields - object to invalidate from all applicable caches
|
|
55
|
+
* Invalidate all caches, in-memory or otherwise, for sets of key-value pairs.
|
|
56
|
+
* @param pairs - key-value pairs to invalidate
|
|
57
57
|
*/
|
|
58
|
-
|
|
58
|
+
invalidateKeyValuePairsAsync(pairs: readonly LoadPair<TFields, TIDField, any, any, any>[]): Promise<void>;
|
|
59
59
|
}
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const dataloader_1 = __importDefault(require("dataloader"));
|
|
7
|
+
const invariant_1 = __importDefault(require("invariant"));
|
|
7
8
|
const entityUtils_1 = require("../entityUtils");
|
|
8
9
|
const EntityMetricsUtils_1 = require("../metrics/EntityMetricsUtils");
|
|
9
10
|
const IEntityMetricsAdapter_1 = require("../metrics/IEntityMetricsAdapter");
|
|
@@ -20,7 +21,7 @@ class EntityDataManager {
|
|
|
20
21
|
queryContextProvider;
|
|
21
22
|
metricsAdapter;
|
|
22
23
|
entityClassName;
|
|
23
|
-
|
|
24
|
+
dataloaders = new Map();
|
|
24
25
|
constructor(databaseAdapter, entityCache, queryContextProvider, metricsAdapter, entityClassName) {
|
|
25
26
|
this.databaseAdapter = databaseAdapter;
|
|
26
27
|
this.entityCache = entityCache;
|
|
@@ -28,62 +29,68 @@ class EntityDataManager {
|
|
|
28
29
|
this.metricsAdapter = metricsAdapter;
|
|
29
30
|
this.entityClassName = entityClassName;
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
return (0, maps_1.computeIfAbsent)(this.
|
|
33
|
-
return new dataloader_1.default(async (
|
|
34
|
-
const
|
|
35
|
-
|
|
32
|
+
getDataLoaderForLoadKey(key) {
|
|
33
|
+
return (0, maps_1.computeIfAbsent)(this.dataloaders, key.getLoadMethodType() + key.getDataManagerDataLoaderKey(), () => {
|
|
34
|
+
return new dataloader_1.default(async (serializedLoadValues) => {
|
|
35
|
+
const values = serializedLoadValues.map((serializedLoadValue) => key.deserializeLoadValue(serializedLoadValue));
|
|
36
|
+
const objectMap = await this.loadManyForDataLoaderAsync(key, values);
|
|
37
|
+
return values.map((value) => objectMap.get(value) ?? []);
|
|
36
38
|
});
|
|
37
39
|
});
|
|
38
40
|
}
|
|
39
|
-
async
|
|
41
|
+
async loadManyForDataLoaderAsync(key, values) {
|
|
40
42
|
this.metricsAdapter.incrementDataManagerLoadCount({
|
|
41
43
|
type: IEntityMetricsAdapter_1.IncrementLoadCountEventType.CACHE,
|
|
42
|
-
fieldValueCount:
|
|
44
|
+
fieldValueCount: values.length,
|
|
43
45
|
entityClassName: this.entityClassName,
|
|
46
|
+
loadType: key.getLoadMethodType(),
|
|
44
47
|
});
|
|
45
|
-
return await this.entityCache.readManyThroughAsync(
|
|
48
|
+
return await this.entityCache.readManyThroughAsync(key, values, async (fetcherValues) => {
|
|
46
49
|
this.metricsAdapter.incrementDataManagerLoadCount({
|
|
47
50
|
type: IEntityMetricsAdapter_1.IncrementLoadCountEventType.DATABASE,
|
|
48
|
-
fieldValueCount:
|
|
51
|
+
fieldValueCount: fetcherValues.length,
|
|
49
52
|
entityClassName: this.entityClassName,
|
|
53
|
+
loadType: key.getLoadMethodType(),
|
|
50
54
|
});
|
|
51
|
-
return await this.databaseAdapter.fetchManyWhereAsync(this.queryContextProvider.getQueryContext(),
|
|
55
|
+
return await this.databaseAdapter.fetchManyWhereAsync(this.queryContextProvider.getQueryContext(), key, fetcherValues);
|
|
52
56
|
});
|
|
53
57
|
}
|
|
54
58
|
/**
|
|
55
|
-
* Load many objects
|
|
59
|
+
* Load many objects through read-through dataloader (batcher) and cache (optional).
|
|
56
60
|
*
|
|
57
61
|
* @param queryContext - query context in which to perform the load
|
|
58
|
-
* @param
|
|
59
|
-
* @param
|
|
60
|
-
* @returns map from
|
|
62
|
+
* @param key - load key being queried
|
|
63
|
+
* @param values - load values being queried for the key
|
|
64
|
+
* @returns map from load value to objects that match the query for that load value
|
|
61
65
|
*/
|
|
62
|
-
async
|
|
63
|
-
return await (0, EntityMetricsUtils_1.timeAndLogLoadMapEventAsync)(this.metricsAdapter, IEntityMetricsAdapter_1.EntityMetricsLoadType.LOAD_MANY, this.entityClassName)(this.
|
|
66
|
+
async loadManyEqualingAsync(queryContext, key, values) {
|
|
67
|
+
return await (0, EntityMetricsUtils_1.timeAndLogLoadMapEventAsync)(this.metricsAdapter, IEntityMetricsAdapter_1.EntityMetricsLoadType.LOAD_MANY, this.entityClassName)(this.loadManyEqualingInternalAsync(queryContext, key, values));
|
|
64
68
|
}
|
|
65
|
-
async
|
|
66
|
-
|
|
67
|
-
if (nullOrUndefinedValueIndex >= 0) {
|
|
68
|
-
throw new Error(`Invalid load: ${this.entityClassName} (${String(fieldName)} = ${fieldValues[nullOrUndefinedValueIndex]})`);
|
|
69
|
-
}
|
|
69
|
+
async loadManyEqualingInternalAsync(queryContext, key, values) {
|
|
70
|
+
key.validateRuntimeLoadValuesForDataManagerDataLoader(values, this.entityClassName);
|
|
70
71
|
// don't cache when in transaction, as rollbacks complicate things significantly
|
|
71
72
|
if (queryContext.isInTransaction()) {
|
|
72
|
-
return await this.databaseAdapter.fetchManyWhereAsync(queryContext,
|
|
73
|
+
return await this.databaseAdapter.fetchManyWhereAsync(queryContext, key, values);
|
|
73
74
|
}
|
|
74
75
|
this.metricsAdapter.incrementDataManagerLoadCount({
|
|
75
76
|
type: IEntityMetricsAdapter_1.IncrementLoadCountEventType.DATALOADER,
|
|
76
|
-
fieldValueCount:
|
|
77
|
+
fieldValueCount: values.length,
|
|
77
78
|
entityClassName: this.entityClassName,
|
|
79
|
+
loadType: key.getLoadMethodType(),
|
|
78
80
|
});
|
|
79
|
-
const dataLoader = this.
|
|
80
|
-
const results = await dataLoader.loadMany(
|
|
81
|
-
const [
|
|
81
|
+
const dataLoader = this.getDataLoaderForLoadKey(key);
|
|
82
|
+
const results = await dataLoader.loadMany(values.map((v) => key.serializeLoadValue(v)));
|
|
83
|
+
const [successfulValues, errors] = (0, entityUtils_1.partitionErrors)(results);
|
|
82
84
|
if (errors.length > 0) {
|
|
83
85
|
const error = errors[0];
|
|
84
86
|
throw error;
|
|
85
87
|
}
|
|
86
|
-
|
|
88
|
+
(0, invariant_1.default)(values.length === successfulValues.length, `length mismatch between values (${values.length}) and successful values (${successfulValues.length})`);
|
|
89
|
+
const mapToReturn = key.vendNewLoadValueMap();
|
|
90
|
+
for (let i = 0; i < successfulValues.length; i++) {
|
|
91
|
+
mapToReturn.set(values[i], successfulValues[i]);
|
|
92
|
+
}
|
|
93
|
+
return mapToReturn;
|
|
87
94
|
}
|
|
88
95
|
/**
|
|
89
96
|
* Loads many objects matching the conjunction of where clauses constructed from
|
|
@@ -109,27 +116,17 @@ class EntityDataManager {
|
|
|
109
116
|
async loadManyByRawWhereClauseAsync(queryContext, rawWhereClause, bindings, querySelectionModifiers) {
|
|
110
117
|
return await (0, EntityMetricsUtils_1.timeAndLogLoadEventAsync)(this.metricsAdapter, IEntityMetricsAdapter_1.EntityMetricsLoadType.LOAD_MANY_RAW, this.entityClassName)(this.databaseAdapter.fetchManyByRawWhereClauseAsync(queryContext, rawWhereClause, bindings, querySelectionModifiers));
|
|
111
118
|
}
|
|
112
|
-
async
|
|
113
|
-
await this.entityCache.invalidateManyAsync(
|
|
114
|
-
|
|
115
|
-
fieldValues.forEach((fieldValue) => dataLoader.clear(fieldValue));
|
|
119
|
+
async invalidateOneAsync(key, value) {
|
|
120
|
+
await this.entityCache.invalidateManyAsync(key, [value]);
|
|
121
|
+
this.getDataLoaderForLoadKey(key).clear(key.serializeLoadValue(value));
|
|
116
122
|
}
|
|
117
123
|
/**
|
|
118
|
-
* Invalidate all caches, in-memory or otherwise, for
|
|
119
|
-
*
|
|
120
|
-
* @param objectFields - object to invalidate from all applicable caches
|
|
124
|
+
* Invalidate all caches, in-memory or otherwise, for sets of key-value pairs.
|
|
125
|
+
* @param pairs - key-value pairs to invalidate
|
|
121
126
|
*/
|
|
122
|
-
async
|
|
127
|
+
async invalidateKeyValuePairsAsync(pairs) {
|
|
123
128
|
// TODO(wschurman): check for races with load
|
|
124
|
-
|
|
125
|
-
await Promise.all(keys.map(async (fieldName) => {
|
|
126
|
-
const value = objectFields[fieldName];
|
|
127
|
-
if (value !== undefined) {
|
|
128
|
-
await this.invalidateManyByFieldEqualingAsync(fieldName, [
|
|
129
|
-
value,
|
|
130
|
-
]);
|
|
131
|
-
}
|
|
132
|
-
}));
|
|
129
|
+
await Promise.all(pairs.map(([key, value]) => this.invalidateOneAsync(key, value)));
|
|
133
130
|
}
|
|
134
131
|
}
|
|
135
132
|
exports.default = EntityDataManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityDataManager.js","sourceRoot":"","sources":["../../src/internal/EntityDataManager.ts"],"names":[],"mappings":";;;;;AAAA,4DAAoC;
|
|
1
|
+
{"version":3,"file":"EntityDataManager.js","sourceRoot":"","sources":["../../src/internal/EntityDataManager.ts"],"names":[],"mappings":";;;;;AAAA,4DAAoC;AACpC,0DAAkC;AAUlC,gDAAiD;AAEjD,sEAGuC;AACvC,4EAG0C;AAC1C,oDAA4D;AAE5D;;;;;GAKG;AACH,MAAqB,iBAAiB;IAQjB;IACA;IACA;IACA;IACA;IARF,WAAW,GAC1B,IAAI,GAAG,EAAE,CAAC;IAEZ,YACmB,eAAyD,EACzD,WAAsD,EACtD,oBAAgD,EAChD,cAAqC,EACrC,eAAuB;QAJvB,oBAAe,GAAf,eAAe,CAA0C;QACzD,gBAAW,GAAX,WAAW,CAA2C;QACtD,yBAAoB,GAApB,oBAAoB,CAA4B;QAChD,mBAAc,GAAd,cAAc,CAAuB;QACrC,oBAAe,GAAf,eAAe,CAAQ;IACvC,CAAC;IAEI,uBAAuB,CAI7B,GAAa;QACb,OAAO,IAAA,sBAAe,EACpB,IAAI,CAAC,WAAW,EAChB,GAAG,CAAC,iBAAiB,EAAE,GAAG,GAAG,CAAC,2BAA2B,EAAE,EAC3D,GAAG,EAAE;YACH,OAAO,IAAI,oBAAU,CACnB,KAAK,EACH,oBAAqD,EACX,EAAE;gBAC5C,MAAM,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,mBAAmB,EAAE,EAAE,CAC9D,GAAG,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAC9C,CAAC;gBACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACrE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC,CACF,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,0BAA0B,CAKtC,GAAa,EACb,MAA6B;QAE7B,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC;YAChD,IAAI,EAAE,mDAA2B,CAAC,KAAK;YACvC,eAAe,EAAE,MAAM,CAAC,MAAM;YAC9B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,QAAQ,EAAE,GAAG,CAAC,iBAAiB,EAAE;SAClC,CAAC,CAAC;QAEH,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;YACtF,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC;gBAChD,IAAI,EAAE,mDAA2B,CAAC,QAAQ;gBAC1C,eAAe,EAAE,aAAa,CAAC,MAAM;gBACrC,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,QAAQ,EAAE,GAAG,CAAC,iBAAiB,EAAE;aAClC,CAAC,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CACnD,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,EAC3C,GAAG,EACH,aAAa,CACd,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,qBAAqB,CAKzB,YAAgC,EAChC,GAAa,EACb,MAA6B;QAE7B,OAAO,MAAM,IAAA,gDAA2B,EACtC,IAAI,CAAC,cAAc,EACnB,6CAAqB,CAAC,SAAS,EAC/B,IAAI,CAAC,eAAe,CACrB,CAAC,IAAI,CAAC,6BAA6B,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,6BAA6B,CAKzC,YAAgC,EAChC,GAAa,EACb,MAA6B;QAE7B,GAAG,CAAC,iDAAiD,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAEpF,gFAAgF;QAChF,IAAI,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC;YACnC,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,6BAA6B,CAAC;YAChD,IAAI,EAAE,mDAA2B,CAAC,UAAU;YAC5C,eAAe,EAAE,MAAM,CAAC,MAAM;YAC9B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,QAAQ,EAAE,GAAG,CAAC,iBAAiB,EAAE;SAClC,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG,IAAA,6BAAe,EAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;YACzB,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAA,mBAAS,EACP,MAAM,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM,EACzC,mCAAmC,MAAM,CAAC,MAAM,4BAA4B,gBAAgB,CAAC,MAAM,GAAG,CACvG,CAAC;QACF,MAAM,WAAW,GAAG,GAAG,CAAC,mBAAmB,EAAgC,CAAC;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,gBAAgB,CAAC,CAAC,CAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,uCAAuC,CAC3C,YAAgC,EAChC,qBAA2D,EAC3D,uBAAyD;QAEzD,OAAO,MAAM,IAAA,6CAAwB,EACnC,IAAI,CAAC,cAAc,EACnB,6CAAqB,CAAC,8BAA8B,EACpD,IAAI,CAAC,eAAe,CACrB,CACC,IAAI,CAAC,eAAe,CAAC,wCAAwC,CAC3D,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,CACxB,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,6BAA6B,CACjC,YAAgC,EAChC,cAAsB,EACtB,QAAwB,EACxB,uBAAuE;QAEvE,OAAO,MAAM,IAAA,6CAAwB,EACnC,IAAI,CAAC,cAAc,EACnB,6CAAqB,CAAC,aAAa,EACnC,IAAI,CAAC,eAAe,CACrB,CACC,IAAI,CAAC,eAAe,CAAC,8BAA8B,CACjD,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,uBAAuB,CACxB,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAI9B,GAAa,EAAE,KAAiB;QAChC,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,4BAA4B,CACvC,KAA4D;QAE5D,6CAA6C;QAC7C,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;CACF;AAjND,oCAiNC"}
|
|
@@ -13,12 +13,12 @@ export interface FieldTransformer<T> {
|
|
|
13
13
|
* Map from concrete EntityFieldDefinition implementation class name to field transformer.
|
|
14
14
|
*/
|
|
15
15
|
export type FieldTransformerMap = Map<string, FieldTransformer<any>>;
|
|
16
|
-
export declare const getDatabaseFieldForEntityField: <TFields extends Record<string, any
|
|
17
|
-
export declare const transformDatabaseObjectToFields: <TFields extends Record<string, any
|
|
16
|
+
export declare const getDatabaseFieldForEntityField: <TFields extends Record<string, any>, TIDField extends keyof TFields>(entityConfiguration: EntityConfiguration<TFields, TIDField>, entityField: keyof TFields) => string;
|
|
17
|
+
export declare const transformDatabaseObjectToFields: <TFields extends Record<string, any>, TIDField extends keyof TFields>(entityConfiguration: EntityConfiguration<TFields, TIDField>, fieldTransformerMap: FieldTransformerMap, databaseObject: {
|
|
18
18
|
[key: string]: any;
|
|
19
19
|
}) => Readonly<TFields>;
|
|
20
|
-
export declare const transformFieldsToDatabaseObject: <TFields extends Record<string, any
|
|
21
|
-
export declare const transformCacheObjectToFields: <TFields extends Record<string, any
|
|
20
|
+
export declare const transformFieldsToDatabaseObject: <TFields extends Record<string, any>, TIDField extends keyof TFields>(entityConfiguration: EntityConfiguration<TFields, TIDField>, fieldTransformerMap: FieldTransformerMap, fields: Readonly<Partial<TFields>>) => object;
|
|
21
|
+
export declare const transformCacheObjectToFields: <TFields extends Record<string, any>, TIDField extends keyof TFields>(entityConfiguration: EntityConfiguration<TFields, TIDField>, fieldTransformerMap: FieldTransformerMap, cacheObject: {
|
|
22
22
|
[key: string]: any;
|
|
23
23
|
}) => Readonly<TFields>;
|
|
24
|
-
export declare const transformFieldsToCacheObject: <TFields extends Record<string, any
|
|
24
|
+
export declare const transformFieldsToCacheObject: <TFields extends Record<string, any>, TIDField extends keyof TFields>(entityConfiguration: EntityConfiguration<TFields, TIDField>, fieldTransformerMap: FieldTransformerMap, fields: Readonly<Partial<TFields>>) => object;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityFieldTransformationUtils.js","sourceRoot":"","sources":["../../src/internal/EntityFieldTransformationUtils.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAkC;AAClC,4DAAoC;AAqB7B,MAAM,8BAA8B,GAAG,
|
|
1
|
+
{"version":3,"file":"EntityFieldTransformationUtils.js","sourceRoot":"","sources":["../../src/internal/EntityFieldTransformationUtils.ts"],"names":[],"mappings":"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"}
|