@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
|
@@ -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":"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"}
|
|
@@ -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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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import EntityConfiguration from '../EntityConfiguration';
|
|
2
|
+
import { ISerializable, SerializableKeyMap } from '../utils/collections/SerializableKeyMap';
|
|
3
|
+
/**
|
|
4
|
+
* Load method type identifier of a load key. Used for keying data loaders and identification in metrics.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum EntityLoadMethodType {
|
|
7
|
+
/**
|
|
8
|
+
* Load method type for loading entities by single fieldName and fieldValue(s).
|
|
9
|
+
*/
|
|
10
|
+
SINGLE = "single",
|
|
11
|
+
/**
|
|
12
|
+
* Load method type for loading entities by composite field.
|
|
13
|
+
*/
|
|
14
|
+
COMPOSITE = "composite"
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Interface responsible for defining how the key and corresponding load values behave in the data manager, cache adapter,
|
|
18
|
+
* and database adapter during entity field loading.
|
|
19
|
+
*/
|
|
20
|
+
export interface IEntityLoadKey<TFields extends Record<string, any>, TIDField extends keyof TFields, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>> {
|
|
21
|
+
toString(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Vends a new empty load value map with a key type corresponding to the load value type of this load key.
|
|
24
|
+
*
|
|
25
|
+
* @returns A new empty load value map.
|
|
26
|
+
*/
|
|
27
|
+
vendNewLoadValueMap<V>(): LoadValueMap<TSerializedLoadValue, TLoadValue, V>;
|
|
28
|
+
/**
|
|
29
|
+
* Determines if this key is cacheable in cache adapters according to the entity configuration.
|
|
30
|
+
*
|
|
31
|
+
* @param entityConfiguration - The entity configuration to check.
|
|
32
|
+
* @returns Boolean indicating whether this key is cacheable.
|
|
33
|
+
*/
|
|
34
|
+
isCacheable(entityConfiguration: EntityConfiguration<TFields, TIDField>): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Creates cache key parts for this key and a load value given an entity configuration.
|
|
37
|
+
* These parts will be included as part of the cache key.
|
|
38
|
+
*
|
|
39
|
+
* @param entityConfiguration - The entity configuration used to derive cache key parts.
|
|
40
|
+
* @param value - The load value for which to create cache key parts for.
|
|
41
|
+
* @returns An object containing the cache key type and parts.
|
|
42
|
+
*/
|
|
43
|
+
createCacheKeyPartsForLoadValue(entityConfiguration: EntityConfiguration<TFields, TIDField>, value: TLoadValue): readonly string[];
|
|
44
|
+
/**
|
|
45
|
+
* Gets the load method type of this key. Used as part of cache keys and data loader keys.
|
|
46
|
+
*/
|
|
47
|
+
getLoadMethodType(): EntityLoadMethodType;
|
|
48
|
+
/**
|
|
49
|
+
* Gets the data loader key for this key. For single field keys, this is the field name. For composite keys, this is a
|
|
50
|
+
* unique identifier for the composite key.
|
|
51
|
+
*/
|
|
52
|
+
getDataManagerDataLoaderKey(): string;
|
|
53
|
+
/**
|
|
54
|
+
* Serialize a load value for use in the data manager data loader as the dataloader value key.
|
|
55
|
+
*/
|
|
56
|
+
serializeLoadValue(value: TLoadValue): TSerializedLoadValue;
|
|
57
|
+
/**
|
|
58
|
+
* Deserialize a load value for use in the data manager data loader as the dataloader value key.
|
|
59
|
+
*/
|
|
60
|
+
deserializeLoadValue(value: TSerializedLoadValue): TLoadValue;
|
|
61
|
+
/**
|
|
62
|
+
* Validate that that the load values adhere to the typescript types at runtime in order to
|
|
63
|
+
* prevent inadvertently passing invalid values to the data loader, cache adapter, or database adapter.
|
|
64
|
+
* @param values - The load values to validate.
|
|
65
|
+
* @param entityClassName - The name of the entity class to which the load values belong (for error message only).
|
|
66
|
+
*/
|
|
67
|
+
validateRuntimeLoadValuesForDataManagerDataLoader(values: readonly TLoadValue[], entityClassName: string): void;
|
|
68
|
+
/**
|
|
69
|
+
* Get the database columns for this key given an entity configuration.
|
|
70
|
+
*
|
|
71
|
+
* @param entityConfiguration - The entity configuration.
|
|
72
|
+
* @returns An array of database column names.
|
|
73
|
+
*/
|
|
74
|
+
getDatabaseColumns(entityConfiguration: EntityConfiguration<TFields, TIDField>): readonly string[];
|
|
75
|
+
/**
|
|
76
|
+
* Get the database values corresponding to the database columns for this key for a load value.
|
|
77
|
+
*
|
|
78
|
+
* @param value - The load value.
|
|
79
|
+
* @returns An array of database values.
|
|
80
|
+
*/
|
|
81
|
+
getDatabaseValues(value: TLoadValue): readonly any[];
|
|
82
|
+
/**
|
|
83
|
+
* Get the load value for an entity fields object from the database.
|
|
84
|
+
*
|
|
85
|
+
* @param object - The entity fields object.
|
|
86
|
+
* @returns The load value for the object or null if the load value would be invalid for the object (for example, if the value is null).
|
|
87
|
+
*/
|
|
88
|
+
getLoadValueForObject(object: Readonly<TFields>): TLoadValue | null;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Interface for a load value corresponding to a load key.
|
|
92
|
+
*/
|
|
93
|
+
export interface IEntityLoadValue<TSerialized> extends ISerializable<TSerialized> {
|
|
94
|
+
toString(): string;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Map from load value interface to value.
|
|
98
|
+
*/
|
|
99
|
+
export declare abstract class LoadValueMap<TSerialized, TLoadValue extends IEntityLoadValue<TSerialized>, V> extends SerializableKeyMap<TSerialized, TLoadValue, V> {
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Load pair type for a load key and load value.
|
|
103
|
+
*/
|
|
104
|
+
export type LoadPair<TFields extends Record<string, any>, TIDField extends keyof TFields, TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>> = readonly [TLoadKey, TLoadValue];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoadValueMap = exports.EntityLoadMethodType = void 0;
|
|
4
|
+
const SerializableKeyMap_1 = require("../utils/collections/SerializableKeyMap");
|
|
5
|
+
/**
|
|
6
|
+
* Load method type identifier of a load key. Used for keying data loaders and identification in metrics.
|
|
7
|
+
*/
|
|
8
|
+
var EntityLoadMethodType;
|
|
9
|
+
(function (EntityLoadMethodType) {
|
|
10
|
+
/**
|
|
11
|
+
* Load method type for loading entities by single fieldName and fieldValue(s).
|
|
12
|
+
*/
|
|
13
|
+
EntityLoadMethodType["SINGLE"] = "single";
|
|
14
|
+
/**
|
|
15
|
+
* Load method type for loading entities by composite field.
|
|
16
|
+
*/
|
|
17
|
+
EntityLoadMethodType["COMPOSITE"] = "composite";
|
|
18
|
+
})(EntityLoadMethodType || (exports.EntityLoadMethodType = EntityLoadMethodType = {}));
|
|
19
|
+
/**
|
|
20
|
+
* Map from load value interface to value.
|
|
21
|
+
*/
|
|
22
|
+
class LoadValueMap extends SerializableKeyMap_1.SerializableKeyMap {
|
|
23
|
+
}
|
|
24
|
+
exports.LoadValueMap = LoadValueMap;
|
|
25
|
+
//# sourceMappingURL=EntityLoadInterfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityLoadInterfaces.js","sourceRoot":"","sources":["../../src/internal/EntityLoadInterfaces.ts"],"names":[],"mappings":";;;AACA,gFAA4F;AAE5F;;GAEG;AACH,IAAY,oBAUX;AAVD,WAAY,oBAAoB;IAC9B;;OAEG;IACH,yCAAiB,CAAA;IAEjB;;OAEG;IACH,+CAAuB,CAAA;AACzB,CAAC,EAVW,oBAAoB,oCAApB,oBAAoB,QAU/B;AA4GD;;GAEG;AACH,MAAsB,YAIpB,SAAQ,uCAA8C;CAAG;AAJ3D,oCAI2D"}
|