@expo/entity 0.41.0 → 0.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/AuthorizationResultBasedEntityAssociationLoader.d.ts +16 -16
- package/build/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -1
- package/build/AuthorizationResultBasedEntityLoader.d.ts +39 -67
- package/build/AuthorizationResultBasedEntityLoader.js +85 -62
- package/build/AuthorizationResultBasedEntityLoader.js.map +1 -1
- package/build/AuthorizationResultBasedEntityMutator.d.ts +16 -16
- package/build/AuthorizationResultBasedEntityMutator.js.map +1 -1
- package/build/ComposedEntityCacheAdapter.d.ts +7 -6
- package/build/ComposedEntityCacheAdapter.js +28 -28
- package/build/ComposedEntityCacheAdapter.js.map +1 -1
- package/build/ComposedSecondaryEntityCache.d.ts +1 -1
- package/build/ComposedSecondaryEntityCache.js.map +1 -1
- package/build/EnforcingEntityAssociationLoader.d.ts +15 -15
- package/build/EnforcingEntityAssociationLoader.js.map +1 -1
- package/build/EnforcingEntityCreator.d.ts +2 -2
- package/build/EnforcingEntityDeleter.d.ts +2 -2
- package/build/EnforcingEntityLoader.d.ts +104 -18
- package/build/EnforcingEntityLoader.js +113 -12
- package/build/EnforcingEntityLoader.js.map +1 -1
- package/build/EnforcingEntityUpdater.d.ts +2 -2
- package/build/Entity.d.ts +10 -10
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.d.ts +3 -3
- package/build/EntityCompanion.d.ts +5 -5
- package/build/EntityCompanion.js.map +1 -1
- package/build/EntityCompanionProvider.d.ts +6 -6
- package/build/EntityCompanionProvider.js.map +1 -1
- package/build/EntityConfiguration.d.ts +46 -5
- package/build/EntityConfiguration.js +39 -1
- package/build/EntityConfiguration.js.map +1 -1
- package/build/EntityCreator.d.ts +4 -4
- package/build/EntityDatabaseAdapter.d.ts +15 -14
- package/build/EntityDatabaseAdapter.js +20 -12
- package/build/EntityDatabaseAdapter.js.map +1 -1
- package/build/EntityDeleter.d.ts +4 -4
- package/build/EntityFieldDefinition.d.ts +20 -10
- package/build/EntityFieldDefinition.js +3 -1
- package/build/EntityFieldDefinition.js.map +1 -1
- package/build/EntityFields.d.ts +14 -12
- package/build/EntityFields.js.map +1 -1
- package/build/EntityLoader.d.ts +5 -5
- package/build/EntityLoaderFactory.d.ts +3 -3
- package/build/EntityLoaderFactory.js.map +1 -1
- package/build/EntityLoaderUtils.d.ts +2 -2
- package/build/EntityLoaderUtils.js +27 -1
- package/build/EntityLoaderUtils.js.map +1 -1
- package/build/EntityMutationInfo.d.ts +2 -2
- package/build/EntityMutationTriggerConfiguration.d.ts +14 -14
- package/build/EntityMutationTriggerConfiguration.js.map +1 -1
- package/build/EntityMutationValidator.d.ts +2 -2
- package/build/EntityMutatorFactory.d.ts +5 -5
- package/build/EntityMutatorFactory.js.map +1 -1
- package/build/EntityPrivacyPolicy.d.ts +14 -14
- package/build/EntityPrivacyPolicy.js.map +1 -1
- package/build/EntitySecondaryCacheLoader.d.ts +4 -4
- package/build/EntityUpdater.d.ts +4 -4
- package/build/GenericEntityCacheAdapter.d.ts +7 -6
- package/build/GenericEntityCacheAdapter.js +13 -14
- package/build/GenericEntityCacheAdapter.js.map +1 -1
- package/build/GenericSecondaryEntityCache.d.ts +3 -3
- package/build/GenericSecondaryEntityCache.js.map +1 -1
- package/build/IEntityCacheAdapter.d.ts +17 -16
- package/build/IEntityCacheAdapterProvider.d.ts +1 -1
- package/build/IEntityDatabaseAdapterProvider.d.ts +1 -1
- package/build/IEntityGenericCacher.d.ts +15 -5
- package/build/ReadonlyEntity.d.ts +8 -8
- package/build/ReadonlyEntity.js.map +1 -1
- package/build/ViewerContext.d.ts +1 -1
- package/build/ViewerScopedEntityCompanion.d.ts +5 -5
- package/build/ViewerScopedEntityCompanionProvider.d.ts +1 -1
- package/build/ViewerScopedEntityLoaderFactory.d.ts +3 -3
- package/build/ViewerScopedEntityMutatorFactory.d.ts +5 -5
- package/build/entityUtils.d.ts +1 -1
- package/build/entityUtils.js.map +1 -1
- package/build/errors/EntityInvalidFieldValueError.d.ts +2 -2
- package/build/errors/EntityNotAuthorizedError.d.ts +1 -1
- package/build/errors/EntityNotFoundError.d.ts +2 -2
- package/build/index.d.ts +7 -7
- package/build/index.js +8 -13
- package/build/index.js.map +1 -1
- package/build/internal/CompositeFieldHolder.d.ts +48 -0
- package/build/internal/CompositeFieldHolder.js +116 -0
- package/build/internal/CompositeFieldHolder.js.map +1 -0
- package/build/internal/CompositeFieldValueMap.d.ts +15 -0
- package/build/internal/CompositeFieldValueMap.js +51 -0
- package/build/internal/CompositeFieldValueMap.js.map +1 -0
- package/build/internal/EntityDataManager.d.ts +16 -16
- package/build/internal/EntityDataManager.js +42 -45
- package/build/internal/EntityDataManager.js.map +1 -1
- package/build/internal/EntityFieldTransformationUtils.d.ts +5 -5
- package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
- package/build/internal/EntityLoadInterfaces.d.ts +104 -0
- package/build/internal/EntityLoadInterfaces.js +25 -0
- package/build/internal/EntityLoadInterfaces.js.map +1 -0
- package/build/internal/EntityTableDataCoordinator.d.ts +6 -6
- package/build/internal/EntityTableDataCoordinator.js.map +1 -1
- package/build/internal/ReadThroughEntityCache.d.ts +17 -16
- package/build/internal/ReadThroughEntityCache.js +36 -36
- package/build/internal/ReadThroughEntityCache.js.map +1 -1
- package/build/internal/SingleFieldHolder.d.ts +34 -0
- package/build/internal/SingleFieldHolder.js +90 -0
- package/build/internal/SingleFieldHolder.js.map +1 -0
- package/build/metrics/EntityMetricsUtils.d.ts +2 -1
- package/build/metrics/EntityMetricsUtils.js.map +1 -1
- package/build/metrics/IEntityMetricsAdapter.d.ts +5 -0
- package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +2 -2
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
- package/build/rules/PrivacyPolicyRule.d.ts +2 -2
- package/build/tsconfig.build.tsbuildinfo +1 -0
- package/build/utils/EntityPrivacyUtils.d.ts +4 -4
- package/build/utils/EntityPrivacyUtils.js.map +1 -1
- package/build/utils/collections/SerializableKeyMap.d.ts +27 -0
- package/build/utils/collections/SerializableKeyMap.js +60 -0
- package/build/utils/collections/SerializableKeyMap.js.map +1 -0
- package/build/utils/collections/maps.js +1 -2
- package/build/utils/collections/maps.js.map +1 -1
- package/build/utils/collections/sets.d.ts +1 -0
- package/build/utils/collections/sets.js +7 -0
- package/build/utils/collections/sets.js.map +1 -0
- package/build/utils/mergeEntityMutationTriggerConfigurations.d.ts +1 -1
- package/package.json +8 -5
- package/src/AuthorizationResultBasedEntityAssociationLoader.ts +56 -49
- package/src/AuthorizationResultBasedEntityLoader.ts +194 -81
- package/src/AuthorizationResultBasedEntityMutator.ts +71 -45
- package/src/ComposedEntityCacheAdapter.ts +55 -46
- package/src/ComposedSecondaryEntityCache.ts +5 -2
- package/src/EnforcingEntityAssociationLoader.ts +52 -44
- package/src/EnforcingEntityCreator.ts +5 -5
- package/src/EnforcingEntityDeleter.ts +5 -5
- package/src/EnforcingEntityLoader.ts +158 -21
- package/src/EnforcingEntityUpdater.ts +5 -5
- package/src/Entity.ts +39 -39
- package/src/EntityAssociationLoader.ts +6 -6
- package/src/EntityCompanion.ts +11 -11
- package/src/EntityCompanionProvider.ts +21 -18
- package/src/EntityConfiguration.ts +123 -9
- package/src/EntityCreator.ts +7 -7
- package/src/EntityDatabaseAdapter.ts +51 -28
- package/src/EntityDeleter.ts +7 -7
- package/src/EntityFieldDefinition.ts +32 -12
- package/src/EntityFields.ts +49 -12
- package/src/EntityLoader.ts +8 -8
- package/src/EntityLoaderFactory.ts +8 -8
- package/src/EntityLoaderUtils.ts +39 -10
- package/src/EntityMutationInfo.ts +6 -6
- package/src/EntityMutationTriggerConfiguration.ts +68 -20
- package/src/EntityMutationValidator.ts +4 -4
- package/src/EntityMutatorFactory.ts +13 -13
- package/src/EntityPrivacyPolicy.ts +50 -26
- package/src/EntitySecondaryCacheLoader.ts +6 -6
- package/src/EntityUpdater.ts +7 -7
- package/src/GenericEntityCacheAdapter.ts +39 -28
- package/src/GenericSecondaryEntityCache.ts +6 -3
- package/src/IEntityCacheAdapter.ts +45 -25
- package/src/IEntityCacheAdapterProvider.ts +3 -3
- package/src/IEntityDatabaseAdapterProvider.ts +3 -3
- package/src/IEntityGenericCacher.ts +33 -5
- package/src/ReadonlyEntity.ts +24 -24
- package/src/ViewerContext.ts +5 -5
- package/src/ViewerScopedEntityCompanion.ts +7 -7
- package/src/ViewerScopedEntityCompanionProvider.ts +6 -6
- package/src/ViewerScopedEntityLoaderFactory.ts +7 -7
- package/src/ViewerScopedEntityMutatorFactory.ts +8 -8
- package/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.ts +4 -4
- package/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.ts +14 -13
- package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +367 -69
- package/src/__tests__/ComposedCacheAdapter-test.ts +235 -117
- package/src/__tests__/EnforcingEntityLoader-test.ts +135 -1
- package/src/__tests__/Entity-test.ts +2 -2
- package/src/__tests__/EntityAssociationLoader-test.ts +2 -2
- package/src/__tests__/EntityCommonUseCases-test.ts +11 -11
- package/src/__tests__/EntityCompanion-test.ts +4 -4
- package/src/__tests__/EntityCompanionProvider-test.ts +9 -8
- package/src/__tests__/EntityConfiguration-test.ts +85 -6
- package/src/__tests__/EntityDatabaseAdapter-test.ts +113 -17
- package/src/__tests__/EntityEdges-test.ts +97 -72
- package/src/__tests__/EntityFields-test.ts +2 -2
- package/src/__tests__/EntityLoader-test.ts +2 -2
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +11 -11
- package/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.ts +73 -0
- package/src/__tests__/EntityMutator-test.ts +74 -46
- package/src/__tests__/EntityPrivacyPolicy-test.ts +51 -74
- package/src/__tests__/EntityQueryContext-test.ts +1 -1
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +3 -3
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +64 -39
- package/src/__tests__/GenericEntityCacheAdapter-test.ts +83 -28
- package/src/__tests__/ReadonlyEntity-test.ts +3 -3
- package/src/__tests__/ViewerContext-test.ts +1 -1
- package/src/__tests__/ViewerScopedEntityCompanion-test.ts +5 -2
- package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +1 -1
- package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +12 -3
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +12 -12
- package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +12 -12
- package/src/entityUtils.ts +4 -1
- package/src/errors/EntityInvalidFieldValueError.ts +5 -5
- package/src/errors/EntityNotAuthorizedError.ts +3 -3
- package/src/errors/EntityNotFoundError.ts +5 -5
- package/src/index.ts +7 -7
- package/src/internal/CompositeFieldHolder.ts +218 -0
- package/src/internal/CompositeFieldValueMap.ts +78 -0
- package/src/internal/EntityDataManager.ts +107 -96
- package/src/internal/EntityFieldTransformationUtils.ts +33 -14
- package/src/internal/EntityLoadInterfaces.ts +143 -0
- package/src/internal/EntityTableDataCoordinator.ts +8 -5
- package/src/internal/ReadThroughEntityCache.ts +63 -50
- package/src/internal/SingleFieldHolder.ts +131 -0
- package/src/internal/__tests__/CompositeFieldHolder-test.ts +25 -0
- package/src/internal/__tests__/CompositeFieldValueMap-test.ts +43 -0
- package/src/internal/__tests__/EntityDataManager-test.ts +308 -91
- package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +3 -2
- package/src/internal/__tests__/ReadThroughEntityCache-test.ts +315 -107
- package/src/metrics/EntityMetricsUtils.ts +7 -2
- package/src/metrics/IEntityMetricsAdapter.ts +6 -0
- package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +5 -5
- package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +5 -5
- package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +5 -5
- package/src/rules/PrivacyPolicyRule.ts +4 -4
- package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +1 -1
- package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +1 -1
- package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +1 -1
- package/src/utils/EntityPrivacyUtils.ts +72 -30
- package/src/utils/{testing → __testfixtures__}/PrivacyPolicyRuleTestUtils.ts +26 -26
- package/src/{testfixtures → utils/__testfixtures__}/SimpleTestEntity.ts +16 -15
- package/src/utils/__testfixtures__/StubCacheAdapter.ts +164 -0
- package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapter.ts +19 -12
- package/src/utils/{testing → __testfixtures__}/StubDatabaseAdapterProvider.ts +4 -4
- package/src/utils/__testfixtures__/TSMockitoExtensions.ts +69 -0
- package/src/{testfixtures → utils/__testfixtures__}/TestEntity.ts +21 -15
- package/src/{testfixtures → utils/__testfixtures__}/TestEntity2.ts +16 -15
- package/src/{testfixtures → utils/__testfixtures__}/TestEntityWithMutationTriggers.ts +23 -22
- package/src/{testfixtures → utils/__testfixtures__}/TestViewerContext.ts +1 -1
- package/src/utils/{testing → __testfixtures__}/describeFieldTestCase.ts +1 -1
- package/src/utils/__tests__/EntityPrivacyUtils-test.ts +62 -66
- package/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.ts +29 -25
- package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +1 -1
- package/src/utils/collections/SerializableKeyMap.ts +84 -0
- package/src/utils/collections/__tests__/SerializableKeyMap-test.ts +119 -0
- package/src/utils/collections/__tests__/sets-test.ts +17 -0
- package/src/utils/collections/maps.ts +7 -8
- package/src/utils/collections/sets.ts +3 -0
- package/src/utils/mergeEntityMutationTriggerConfigurations.ts +5 -5
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +0 -242
- package/build/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.d.ts +0 -26
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js +0 -110
- package/build/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +0 -1
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js +0 -401
- package/build/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +0 -1
- package/build/__tests__/ComposedCacheAdapter-test.d.ts +0 -1
- package/build/__tests__/ComposedCacheAdapter-test.js +0 -229
- package/build/__tests__/ComposedCacheAdapter-test.js.map +0 -1
- package/build/__tests__/ComposedSecondaryEntityCache-test.d.ts +0 -1
- package/build/__tests__/ComposedSecondaryEntityCache-test.js +0 -66
- package/build/__tests__/ComposedSecondaryEntityCache-test.js.map +0 -1
- package/build/__tests__/EnforcingEntityAssociationLoader-test.d.ts +0 -1
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js +0 -115
- package/build/__tests__/EnforcingEntityAssociationLoader-test.js.map +0 -1
- package/build/__tests__/EnforcingEntityLoader-test.d.ts +0 -1
- package/build/__tests__/EnforcingEntityLoader-test.js +0 -253
- package/build/__tests__/EnforcingEntityLoader-test.js.map +0 -1
- package/build/__tests__/Entity-test.d.ts +0 -1
- package/build/__tests__/Entity-test.js +0 -94
- package/build/__tests__/Entity-test.js.map +0 -1
- package/build/__tests__/EntityAssociationLoader-test.d.ts +0 -1
- package/build/__tests__/EntityAssociationLoader-test.js +0 -30
- package/build/__tests__/EntityAssociationLoader-test.js.map +0 -1
- package/build/__tests__/EntityCommonUseCases-test.d.ts +0 -1
- package/build/__tests__/EntityCommonUseCases-test.js +0 -146
- package/build/__tests__/EntityCommonUseCases-test.js.map +0 -1
- package/build/__tests__/EntityCompanion-test.d.ts +0 -1
- package/build/__tests__/EntityCompanion-test.js +0 -77
- package/build/__tests__/EntityCompanion-test.js.map +0 -1
- package/build/__tests__/EntityCompanionProvider-test.d.ts +0 -1
- package/build/__tests__/EntityCompanionProvider-test.js +0 -54
- package/build/__tests__/EntityCompanionProvider-test.js.map +0 -1
- package/build/__tests__/EntityConfiguration-test.d.ts +0 -1
- package/build/__tests__/EntityConfiguration-test.js +0 -103
- package/build/__tests__/EntityConfiguration-test.js.map +0 -1
- package/build/__tests__/EntityDatabaseAdapter-test.d.ts +0 -1
- package/build/__tests__/EntityDatabaseAdapter-test.js +0 -146
- package/build/__tests__/EntityDatabaseAdapter-test.js.map +0 -1
- package/build/__tests__/EntityEdges-test.d.ts +0 -1
- package/build/__tests__/EntityEdges-test.js +0 -723
- package/build/__tests__/EntityEdges-test.js.map +0 -1
- package/build/__tests__/EntityFields-test.d.ts +0 -1
- package/build/__tests__/EntityFields-test.js +0 -63
- package/build/__tests__/EntityFields-test.js.map +0 -1
- package/build/__tests__/EntityLoader-test.d.ts +0 -1
- package/build/__tests__/EntityLoader-test.js +0 -36
- package/build/__tests__/EntityLoader-test.js.map +0 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +0 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +0 -73
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +0 -1
- package/build/__tests__/EntityMutator-test.d.ts +0 -1
- package/build/__tests__/EntityMutator-test.js +0 -741
- package/build/__tests__/EntityMutator-test.js.map +0 -1
- package/build/__tests__/EntityPrivacyPolicy-test.d.ts +0 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +0 -463
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +0 -1
- package/build/__tests__/EntityQueryContext-test.d.ts +0 -1
- package/build/__tests__/EntityQueryContext-test.js +0 -116
- package/build/__tests__/EntityQueryContext-test.js.map +0 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.d.ts +0 -1
- package/build/__tests__/EntitySecondaryCacheLoader-test.js +0 -60
- package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +0 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.d.ts +0 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.js +0 -201
- package/build/__tests__/EntitySelfReferentialEdges-test.js.map +0 -1
- package/build/__tests__/GenericEntityCacheAdapter-test.d.ts +0 -1
- package/build/__tests__/GenericEntityCacheAdapter-test.js +0 -80
- package/build/__tests__/GenericEntityCacheAdapter-test.js.map +0 -1
- package/build/__tests__/ReadonlyEntity-test.d.ts +0 -1
- package/build/__tests__/ReadonlyEntity-test.js +0 -211
- package/build/__tests__/ReadonlyEntity-test.js.map +0 -1
- package/build/__tests__/ViewerContext-test.d.ts +0 -1
- package/build/__tests__/ViewerContext-test.js +0 -30
- package/build/__tests__/ViewerContext-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityCompanion-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityCompanion-test.js +0 -20
- package/build/__tests__/ViewerScopedEntityCompanion-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js +0 -20
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js +0 -23
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +0 -1
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.d.ts +0 -1
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js +0 -22
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +0 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.d.ts +0 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +0 -123
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +0 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.d.ts +0 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +0 -121
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +0 -1
- package/build/__tests__/entityUtils-test.d.ts +0 -1
- package/build/__tests__/entityUtils-test.js +0 -87
- package/build/__tests__/entityUtils-test.js.map +0 -1
- package/build/internal/__tests__/EntityDataManager-test.d.ts +0 -1
- package/build/internal/__tests__/EntityDataManager-test.js +0 -373
- package/build/internal/__tests__/EntityDataManager-test.js.map +0 -1
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.d.ts +0 -1
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +0 -136
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +0 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.d.ts +0 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js +0 -206
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +0 -1
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.d.ts +0 -1
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +0 -21
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +0 -1
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.d.ts +0 -1
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +0 -21
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +0 -1
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.d.ts +0 -1
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +0 -21
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +0 -1
- package/build/testfixtures/DateIDTestEntity.d.ts +0 -19
- package/build/testfixtures/DateIDTestEntity.js +0 -48
- package/build/testfixtures/DateIDTestEntity.js.map +0 -1
- package/build/testfixtures/SimpleTestEntity.d.ts +0 -20
- package/build/testfixtures/SimpleTestEntity.js +0 -48
- package/build/testfixtures/SimpleTestEntity.js.map +0 -1
- package/build/testfixtures/TestEntity.d.ts +0 -30
- package/build/testfixtures/TestEntity.js +0 -93
- package/build/testfixtures/TestEntity.js.map +0 -1
- package/build/testfixtures/TestEntity2.d.ts +0 -20
- package/build/testfixtures/TestEntity2.js +0 -51
- package/build/testfixtures/TestEntity2.js.map +0 -1
- package/build/testfixtures/TestEntityNumberKey.d.ts +0 -19
- package/build/testfixtures/TestEntityNumberKey.js +0 -48
- package/build/testfixtures/TestEntityNumberKey.js.map +0 -1
- package/build/testfixtures/TestEntityWithMutationTriggers.d.ts +0 -36
- package/build/testfixtures/TestEntityWithMutationTriggers.js +0 -82
- package/build/testfixtures/TestEntityWithMutationTriggers.js.map +0 -1
- package/build/testfixtures/TestViewerContext.d.ts +0 -3
- package/build/testfixtures/TestViewerContext.js +0 -10
- package/build/testfixtures/TestViewerContext.js.map +0 -1
- package/build/utils/__tests__/EntityPrivacyUtils-test.d.ts +0 -1
- package/build/utils/__tests__/EntityPrivacyUtils-test.js +0 -486
- package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +0 -1
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +0 -1
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +0 -178
- package/build/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +0 -1
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +0 -1
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +0 -26
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +0 -1
- package/build/utils/collections/__tests__/maps-test.d.ts +0 -1
- package/build/utils/collections/__tests__/maps-test.js +0 -120
- package/build/utils/collections/__tests__/maps-test.js.map +0 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +0 -28
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js +0 -52
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +0 -1
- package/build/utils/testing/StubCacheAdapter.d.ts +0 -27
- package/build/utils/testing/StubCacheAdapter.js +0 -86
- package/build/utils/testing/StubCacheAdapter.js.map +0 -1
- package/build/utils/testing/StubDatabaseAdapter.d.ts +0 -25
- package/build/utils/testing/StubDatabaseAdapter.js +0 -191
- package/build/utils/testing/StubDatabaseAdapter.js.map +0 -1
- package/build/utils/testing/StubDatabaseAdapterProvider.d.ts +0 -7
- package/build/utils/testing/StubDatabaseAdapterProvider.js +0 -14
- package/build/utils/testing/StubDatabaseAdapterProvider.js.map +0 -1
- package/build/utils/testing/StubQueryContextProvider.d.ts +0 -7
- package/build/utils/testing/StubQueryContextProvider.js +0 -19
- package/build/utils/testing/StubQueryContextProvider.js.map +0 -1
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.d.ts +0 -1
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js +0 -42
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js.map +0 -1
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.d.ts +0 -1
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +0 -402
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +0 -1
- package/build/utils/testing/createUnitTestEntityCompanionProvider.d.ts +0 -7
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js +0 -36
- package/build/utils/testing/createUnitTestEntityCompanionProvider.js.map +0 -1
- package/build/utils/testing/describeFieldTestCase.d.ts +0 -2
- package/build/utils/testing/describeFieldTestCase.js +0 -18
- package/build/utils/testing/describeFieldTestCase.js.map +0 -1
- package/src/testfixtures/DateIDTestEntity.ts +0 -59
- package/src/testfixtures/TestEntityNumberKey.ts +0 -59
- package/src/utils/testing/StubCacheAdapter.ts +0 -122
- package/src/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.ts +0 -42
- package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +0 -548
- /package/src/utils/{testing → __testfixtures__}/StubQueryContextProvider.ts +0 -0
- /package/src/utils/{testing → __testfixtures__}/createUnitTestEntityCompanionProvider.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCompanionProvider.js","sourceRoot":"","sources":["../src/EntityCompanionProvider.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAGlC,wEAAyE;AAUzE,uGAA+E;AAE/E,mDAA2D;AAsG3D;;;;;;;;GAQG;AACH,MAAqB,uBAAuB;IAkBxB;IACC;IAIA;IAIR;IA1BM,sBAAsB,GAGnC,IAAI,GAAG,EAAE,CAAC;IACG,YAAY,GAC3B,IAAI,GAAG,EAAE,CAAC;IACK,uBAAuB,GACtC,IAAI,GAAG,EAAE,CAAC;IAEZ;;;;;;OAMG;IACH,YACkB,cAAqC,EACpC,sBAGhB,EACgB,mBAGhB,EACQ,yBAML,EAAE;QAfU,mBAAc,GAAd,cAAc,CAAuB;QACpC,2BAAsB,GAAtB,sBAAsB,CAGtC;QACgB,wBAAmB,GAAnB,mBAAmB,CAGnC;QACQ,2BAAsB,GAAtB,sBAAsB,CAMzB;IACL,CAAC;IAEJ;;;;;OAKG;IACH,qBAAqB,CAcnB,WAOC;QAED,MAAM,yBAAyB,GAAG,IAAA,sBAAe,EAC/C,IAAI,CAAC,sBAAsB,EAC3B,WAAW,CAAC,IAAI,EAChB,GAAG,EAAE,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAC9C,CAAC;QACF,MAAM,oBAAoB,GAAG,IAAI,CAAC,gCAAgC,CAChE,yBAAyB,CAAC,mBAAmB,EAC7C,WAAW,CAAC,IAAI,CACjB,CAAC;QACF,OAAO,IAAA,sBAAe,EAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;YAC/D,OAAO,IAAI,yBAAe,CACxB,IAAI,EACJ,yBAAyB,EACzB,oBAAoB,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+CAA+C,CAC7C,qBAA4C;QAE5C,MAAM,2BAA2B,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC3F,IAAA,mBAAS,EACP,2BAA2B,EAC3B,uDAAuD,qBAAqB,EAAE,CAC/E,CAAC;QAEF,OAAO,2BAA2B,CAAC,oBAAoB,CAAC;IAC1D,CAAC;IAEO,gCAAgC,
|
|
1
|
+
{"version":3,"file":"EntityCompanionProvider.js","sourceRoot":"","sources":["../src/EntityCompanionProvider.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAGlC,wEAAyE;AAUzE,uGAA+E;AAE/E,mDAA2D;AAsG3D;;;;;;;;GAQG;AACH,MAAqB,uBAAuB;IAkBxB;IACC;IAIA;IAIR;IA1BM,sBAAsB,GAGnC,IAAI,GAAG,EAAE,CAAC;IACG,YAAY,GAC3B,IAAI,GAAG,EAAE,CAAC;IACK,uBAAuB,GACtC,IAAI,GAAG,EAAE,CAAC;IAEZ;;;;;;OAMG;IACH,YACkB,cAAqC,EACpC,sBAGhB,EACgB,mBAGhB,EACQ,yBAML,EAAE;QAfU,mBAAc,GAAd,cAAc,CAAuB;QACpC,2BAAsB,GAAtB,sBAAsB,CAGtC;QACgB,wBAAmB,GAAnB,mBAAmB,CAGnC;QACQ,2BAAsB,GAAtB,sBAAsB,CAMzB;IACL,CAAC;IAEJ;;;;;OAKG;IACH,qBAAqB,CAcnB,WAOC;QAED,MAAM,yBAAyB,GAAG,IAAA,sBAAe,EAC/C,IAAI,CAAC,sBAAsB,EAC3B,WAAW,CAAC,IAAI,EAChB,GAAG,EAAE,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAC9C,CAAC;QACF,MAAM,oBAAoB,GAAG,IAAI,CAAC,gCAAgC,CAChE,yBAAyB,CAAC,mBAAmB,EAC7C,WAAW,CAAC,IAAI,CACjB,CAAC;QACF,OAAO,IAAA,sBAAe,EAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;YAC/D,OAAO,IAAI,yBAAe,CACxB,IAAI,EACJ,yBAAyB,EACzB,oBAAoB,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+CAA+C,CAC7C,qBAA4C;QAE5C,MAAM,2BAA2B,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC3F,IAAA,mBAAS,EACP,2BAA2B,EAC3B,uDAAuD,qBAAqB,EAAE,CAC/E,CAAC;QAEF,OAAO,2BAA2B,CAAC,oBAAoB,CAAC;IAC1D,CAAC;IAEO,gCAAgC,CAItC,mBAA2D,EAC3D,eAAuB;QAEvB,OAAO,IAAA,sBAAe,EAAC,IAAI,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,SAAS,EAAE,GAAG,EAAE;YACvF,MAAM,2BAA2B,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CACjE,mBAAmB,CAAC,qBAAqB,CAC1C,CAAC;YACF,IAAA,mBAAS,EACP,2BAA2B,EAC3B,uDAAuD,mBAAmB,CAAC,qBAAqB,EAAE,CACnG,CAAC;YAEF,MAAM,wBAAwB,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAC3D,mBAAmB,CAAC,kBAAkB,CACvC,CAAC;YACF,IAAA,mBAAS,EACP,wBAAwB,EACxB,oDAAoD,mBAAmB,CAAC,kBAAkB,EAAE,CAC7F,CAAC;YAEF,OAAO,IAAI,oCAA0B,CACnC,mBAAmB,EACnB,2BAA2B,CAAC,eAAe,EAC3C,wBAAwB,CAAC,oBAAoB,EAC7C,2BAA2B,CAAC,oBAAoB,EAChD,IAAI,CAAC,cAAc,EACnB,eAAe,CAChB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAlID,0CAkIC"}
|
|
@@ -1,26 +1,63 @@
|
|
|
1
1
|
import { IEntityClass } from './Entity';
|
|
2
2
|
import { DatabaseAdapterFlavor, CacheAdapterFlavor } from './EntityCompanionProvider';
|
|
3
3
|
import { EntityFieldDefinition } from './EntityFieldDefinition';
|
|
4
|
+
import { CompositeFieldHolder } from './internal/CompositeFieldHolder';
|
|
5
|
+
/**
|
|
6
|
+
* A composite field is an unordered set of fields by which entities can be loaded in a batched
|
|
7
|
+
* and (optionally) cached manner akin to how normal fieldName loads are batched and (optionally) cached.
|
|
8
|
+
*/
|
|
9
|
+
export type EntityCompositeField<TFields extends Record<string, any>> = readonly (keyof TFields)[];
|
|
10
|
+
/**
|
|
11
|
+
* Specification of composite field for an entity and whether it can be cached.
|
|
12
|
+
*/
|
|
13
|
+
export type EntityCompositeFieldDefinition<TFields extends Record<string, any>> = {
|
|
14
|
+
/**
|
|
15
|
+
* The composite field.
|
|
16
|
+
*/
|
|
17
|
+
compositeField: EntityCompositeField<TFields>;
|
|
18
|
+
/**
|
|
19
|
+
* Whether or not to cache loaded instances of the entity by this composite field. The column names in
|
|
20
|
+
* the composite field are used to derive a cache key for the cache entry. If true, the set of columns
|
|
21
|
+
* must be able uniquely identify the entity and the database must have a unique constraint on the
|
|
22
|
+
* set of columns.
|
|
23
|
+
*/
|
|
24
|
+
cache: boolean;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* A composite field value is a mapping of fields to values for a composite field.
|
|
28
|
+
*/
|
|
29
|
+
export type EntityCompositeFieldValue<TFields extends Record<string, any>, TCompositeField extends EntityCompositeField<TFields>> = Record<TCompositeField[number], NonNullable<TFields[TCompositeField[number]]>>;
|
|
30
|
+
/**
|
|
31
|
+
* Helper class to validate and store composite field information.
|
|
32
|
+
*/
|
|
33
|
+
export declare class CompositeFieldInfo<TFields extends Record<string, any>, TIDField extends keyof TFields> {
|
|
34
|
+
private readonly compositeFieldInfoMap;
|
|
35
|
+
constructor(compositeFieldsDefinitions: EntityCompositeFieldDefinition<TFields>[]);
|
|
36
|
+
getCompositeFieldHolderForCompositeField(compositeField: EntityCompositeField<TFields>): CompositeFieldHolder<TFields, TIDField> | undefined;
|
|
37
|
+
getAllCompositeFieldHolders(): readonly CompositeFieldHolder<TFields, TIDField>[];
|
|
38
|
+
canCacheCompositeField(compositeField: EntityCompositeField<TFields>): boolean;
|
|
39
|
+
}
|
|
4
40
|
/**
|
|
5
41
|
* The data storage configuration for a type of Entity. Contains information relating to IDs,
|
|
6
42
|
* cachable fields, field mappings, and types of cache and database adapter.
|
|
7
43
|
*/
|
|
8
|
-
export default class EntityConfiguration<TFields extends Record<string, any
|
|
44
|
+
export default class EntityConfiguration<TFields extends Record<string, any>, TIDField extends keyof TFields> {
|
|
9
45
|
readonly idField: keyof TFields;
|
|
10
46
|
readonly tableName: string;
|
|
11
47
|
readonly cacheableKeys: ReadonlySet<keyof TFields>;
|
|
48
|
+
readonly compositeFieldInfo: CompositeFieldInfo<TFields, TIDField>;
|
|
12
49
|
readonly cacheKeyVersion: number;
|
|
13
50
|
readonly inboundEdges: IEntityClass<any, any, any, any, any, any>[];
|
|
14
|
-
readonly schema: ReadonlyMap<keyof TFields, EntityFieldDefinition<any>>;
|
|
51
|
+
readonly schema: ReadonlyMap<keyof TFields, EntityFieldDefinition<any, any>>;
|
|
15
52
|
readonly entityToDBFieldsKeyMapping: ReadonlyMap<keyof TFields, string>;
|
|
16
53
|
readonly dbToEntityFieldsKeyMapping: ReadonlyMap<string, keyof TFields>;
|
|
17
54
|
readonly databaseAdapterFlavor: DatabaseAdapterFlavor;
|
|
18
55
|
readonly cacheAdapterFlavor: CacheAdapterFlavor;
|
|
19
|
-
constructor({ idField, tableName, schema, inboundEdges, cacheKeyVersion, databaseAdapterFlavor, cacheAdapterFlavor, }: {
|
|
56
|
+
constructor({ idField, tableName, schema, inboundEdges, cacheKeyVersion, compositeFieldDefinitions, databaseAdapterFlavor, cacheAdapterFlavor, }: {
|
|
20
57
|
/**
|
|
21
58
|
* The field used to identify this entity. Must be a unique field in the table.
|
|
22
59
|
*/
|
|
23
|
-
idField:
|
|
60
|
+
idField: TIDField;
|
|
24
61
|
/**
|
|
25
62
|
* The name of the table where entities of this type are stored.
|
|
26
63
|
*/
|
|
@@ -28,7 +65,7 @@ export default class EntityConfiguration<TFields extends Record<string, any>> {
|
|
|
28
65
|
/**
|
|
29
66
|
* Map from each entity field to an EntityFieldDefinition specifying information about the field.
|
|
30
67
|
*/
|
|
31
|
-
schema: Record<keyof TFields, EntityFieldDefinition<any>>;
|
|
68
|
+
schema: Omit<Record<keyof TFields, EntityFieldDefinition<any, false>>, TIDField> & Record<TIDField, EntityFieldDefinition<any, true>>;
|
|
32
69
|
/**
|
|
33
70
|
* List of other entity types that reference this type in EntityFieldDefinition associations.
|
|
34
71
|
*/
|
|
@@ -38,6 +75,10 @@ export default class EntityConfiguration<TFields extends Record<string, any>> {
|
|
|
38
75
|
* in this entity and the underlying database table.
|
|
39
76
|
*/
|
|
40
77
|
cacheKeyVersion?: number;
|
|
78
|
+
/**
|
|
79
|
+
* Composite field definitions for this entity.
|
|
80
|
+
*/
|
|
81
|
+
compositeFieldDefinitions?: EntityCompositeFieldDefinition<TFields>[];
|
|
41
82
|
/**
|
|
42
83
|
* Backing database and transaction type for this entity.
|
|
43
84
|
*/
|
|
@@ -1,6 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CompositeFieldInfo = void 0;
|
|
7
|
+
const invariant_1 = __importDefault(require("invariant"));
|
|
8
|
+
const CompositeFieldHolder_1 = require("./internal/CompositeFieldHolder");
|
|
3
9
|
const maps_1 = require("./utils/collections/maps");
|
|
10
|
+
/**
|
|
11
|
+
* Helper class to validate and store composite field information.
|
|
12
|
+
*/
|
|
13
|
+
class CompositeFieldInfo {
|
|
14
|
+
compositeFieldInfoMap;
|
|
15
|
+
constructor(compositeFieldsDefinitions) {
|
|
16
|
+
this.compositeFieldInfoMap = new Map(compositeFieldsDefinitions.map((keyDefinition) => {
|
|
17
|
+
(0, invariant_1.default)(keyDefinition.compositeField.length >= 2, 'Composite field must have at least two sub-fields');
|
|
18
|
+
(0, invariant_1.default)(keyDefinition.compositeField.length === new Set(keyDefinition.compositeField).size, 'Composite field must have unique sub-fields');
|
|
19
|
+
const compositeFieldHolder = new CompositeFieldHolder_1.CompositeFieldHolder(keyDefinition.compositeField);
|
|
20
|
+
return [
|
|
21
|
+
compositeFieldHolder.serialize(),
|
|
22
|
+
{ compositeFieldHolder, cache: keyDefinition.cache ?? false },
|
|
23
|
+
];
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
getCompositeFieldHolderForCompositeField(compositeField) {
|
|
27
|
+
return this.compositeFieldInfoMap.get(new CompositeFieldHolder_1.CompositeFieldHolder(compositeField).serialize())
|
|
28
|
+
?.compositeFieldHolder;
|
|
29
|
+
}
|
|
30
|
+
getAllCompositeFieldHolders() {
|
|
31
|
+
return Array.from(this.compositeFieldInfoMap.values()).map((v) => v.compositeFieldHolder);
|
|
32
|
+
}
|
|
33
|
+
canCacheCompositeField(compositeField) {
|
|
34
|
+
const compositeFieldInfo = this.compositeFieldInfoMap.get(new CompositeFieldHolder_1.CompositeFieldHolder(compositeField).serialize());
|
|
35
|
+
(0, invariant_1.default)(compositeFieldInfo, `Composite field (${compositeField.join(',')}) not found in entity configuration`);
|
|
36
|
+
return compositeFieldInfo.cache;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.CompositeFieldInfo = CompositeFieldInfo;
|
|
4
40
|
/**
|
|
5
41
|
* The data storage configuration for a type of Entity. Contains information relating to IDs,
|
|
6
42
|
* cachable fields, field mappings, and types of cache and database adapter.
|
|
@@ -9,6 +45,7 @@ class EntityConfiguration {
|
|
|
9
45
|
idField;
|
|
10
46
|
tableName;
|
|
11
47
|
cacheableKeys;
|
|
48
|
+
compositeFieldInfo;
|
|
12
49
|
cacheKeyVersion;
|
|
13
50
|
inboundEdges;
|
|
14
51
|
schema;
|
|
@@ -16,7 +53,7 @@ class EntityConfiguration {
|
|
|
16
53
|
dbToEntityFieldsKeyMapping;
|
|
17
54
|
databaseAdapterFlavor;
|
|
18
55
|
cacheAdapterFlavor;
|
|
19
|
-
constructor({ idField, tableName, schema, inboundEdges = [], cacheKeyVersion = 0, databaseAdapterFlavor, cacheAdapterFlavor, }) {
|
|
56
|
+
constructor({ idField, tableName, schema, inboundEdges = [], cacheKeyVersion = 0, compositeFieldDefinitions, databaseAdapterFlavor, cacheAdapterFlavor, }) {
|
|
20
57
|
this.idField = idField;
|
|
21
58
|
this.tableName = tableName;
|
|
22
59
|
this.cacheKeyVersion = cacheKeyVersion;
|
|
@@ -28,6 +65,7 @@ class EntityConfiguration {
|
|
|
28
65
|
EntityConfiguration.validateSchema(schema);
|
|
29
66
|
this.schema = new Map(Object.entries(schema));
|
|
30
67
|
this.cacheableKeys = EntityConfiguration.computeCacheableKeys(this.schema);
|
|
68
|
+
this.compositeFieldInfo = new CompositeFieldInfo(compositeFieldDefinitions ?? []);
|
|
31
69
|
this.entityToDBFieldsKeyMapping = EntityConfiguration.computeEntityToDBFieldsKeyMapping(this.schema);
|
|
32
70
|
this.dbToEntityFieldsKeyMapping = (0, maps_1.invertMap)(this.entityToDBFieldsKeyMapping);
|
|
33
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityConfiguration.js","sourceRoot":"","sources":["../src/EntityConfiguration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EntityConfiguration.js","sourceRoot":"","sources":["../src/EntityConfiguration.ts"],"names":[],"mappings":"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"}
|
package/build/EntityCreator.d.ts
CHANGED
|
@@ -8,20 +8,20 @@ import ViewerContext from './ViewerContext';
|
|
|
8
8
|
/**
|
|
9
9
|
* The primary interface for creating entities.
|
|
10
10
|
*/
|
|
11
|
-
export default class EntityCreator<TFields extends
|
|
11
|
+
export default class EntityCreator<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TViewerContext2 extends TViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields> {
|
|
12
12
|
private readonly viewerContext;
|
|
13
13
|
private readonly queryContext;
|
|
14
14
|
private readonly entityClass;
|
|
15
|
-
constructor(viewerContext: TViewerContext2, queryContext: EntityQueryContext, entityClass: IEntityClass<TFields,
|
|
15
|
+
constructor(viewerContext: TViewerContext2, queryContext: EntityQueryContext, entityClass: IEntityClass<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>);
|
|
16
16
|
/**
|
|
17
17
|
* Enforcing entity creator. All creates through this creator are
|
|
18
18
|
* guaranteed to be successful and will throw otherwise.
|
|
19
19
|
*/
|
|
20
|
-
enforcing(): EnforcingEntityCreator<TFields,
|
|
20
|
+
enforcing(): EnforcingEntityCreator<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
21
21
|
/**
|
|
22
22
|
* Authorization-result-based entity creator. All creates through this
|
|
23
23
|
* creator are results, where an unsuccessful result means an authorization
|
|
24
24
|
* error or entity construction error occurred. Other errors are thrown.
|
|
25
25
|
*/
|
|
26
|
-
withAuthorizationResults(): AuthorizationResultBasedCreateMutator<TFields,
|
|
26
|
+
withAuthorizationResults(): AuthorizationResultBasedCreateMutator<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
27
27
|
}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import EntityConfiguration from './EntityConfiguration';
|
|
2
2
|
import { EntityQueryContext } from './EntityQueryContext';
|
|
3
3
|
import { FieldTransformerMap } from './internal/EntityFieldTransformationUtils';
|
|
4
|
+
import { IEntityLoadKey, IEntityLoadValue } from './internal/EntityLoadInterfaces';
|
|
4
5
|
/**
|
|
5
6
|
* Equality operand that is used for selecting entities with a field with a single value.
|
|
6
7
|
*/
|
|
7
|
-
export interface SingleValueFieldEqualityCondition<TFields, N extends keyof TFields = keyof TFields> {
|
|
8
|
+
export interface SingleValueFieldEqualityCondition<TFields extends Record<string, any>, N extends keyof TFields = keyof TFields> {
|
|
8
9
|
fieldName: N;
|
|
9
10
|
fieldValue: TFields[N];
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
12
13
|
* Equality operand that is used for selecting entities with a field matching one of multiple values.
|
|
13
14
|
*/
|
|
14
|
-
export interface MultiValueFieldEqualityCondition<TFields, N extends keyof TFields = keyof TFields> {
|
|
15
|
+
export interface MultiValueFieldEqualityCondition<TFields extends Record<string, any>, N extends keyof TFields = keyof TFields> {
|
|
15
16
|
fieldName: N;
|
|
16
17
|
fieldValues: readonly TFields[N][];
|
|
17
18
|
}
|
|
@@ -19,8 +20,8 @@ export interface MultiValueFieldEqualityCondition<TFields, N extends keyof TFiel
|
|
|
19
20
|
* A single equality operand for use in a selection clause.
|
|
20
21
|
* See EntityLoader.loadManyByFieldEqualityConjunctionAsync documentation for examples.
|
|
21
22
|
*/
|
|
22
|
-
export type FieldEqualityCondition<TFields, N extends keyof TFields = keyof TFields> = SingleValueFieldEqualityCondition<TFields, N> | MultiValueFieldEqualityCondition<TFields, N>;
|
|
23
|
-
export declare function isSingleValueFieldEqualityCondition<TFields, N extends keyof TFields = keyof TFields>(condition: FieldEqualityCondition<TFields, N>): condition is SingleValueFieldEqualityCondition<TFields, N>;
|
|
23
|
+
export type FieldEqualityCondition<TFields extends Record<string, any>, N extends keyof TFields = keyof TFields> = SingleValueFieldEqualityCondition<TFields, N> | MultiValueFieldEqualityCondition<TFields, N>;
|
|
24
|
+
export declare function isSingleValueFieldEqualityCondition<TFields extends Record<string, any>, N extends keyof TFields = keyof TFields>(condition: FieldEqualityCondition<TFields, N>): condition is SingleValueFieldEqualityCondition<TFields, N>;
|
|
24
25
|
export interface TableFieldSingleValueEqualityCondition {
|
|
25
26
|
tableField: string;
|
|
26
27
|
tableValue: any;
|
|
@@ -36,7 +37,7 @@ export declare enum OrderByOrdering {
|
|
|
36
37
|
/**
|
|
37
38
|
* SQL modifiers that only affect the selection but not the projection.
|
|
38
39
|
*/
|
|
39
|
-
export interface QuerySelectionModifiers<TFields
|
|
40
|
+
export interface QuerySelectionModifiers<TFields extends Record<string, any>> {
|
|
40
41
|
/**
|
|
41
42
|
* Order the entities by specified columns and orders.
|
|
42
43
|
*/
|
|
@@ -53,7 +54,7 @@ export interface QuerySelectionModifiers<TFields> {
|
|
|
53
54
|
*/
|
|
54
55
|
limit?: number;
|
|
55
56
|
}
|
|
56
|
-
export interface QuerySelectionModifiersWithOrderByRaw<TFields
|
|
57
|
+
export interface QuerySelectionModifiersWithOrderByRaw<TFields extends Record<string, any>> extends QuerySelectionModifiers<TFields> {
|
|
57
58
|
/**
|
|
58
59
|
* Order the entities by a raw SQL `ORDER BY` clause.
|
|
59
60
|
*/
|
|
@@ -76,10 +77,10 @@ export interface TableQuerySelectionModifiersWithOrderByRaw extends TableQuerySe
|
|
|
76
77
|
* handles all entity field transformation. Subclasses are responsible for
|
|
77
78
|
* implementing database-specific logic for a type of database.
|
|
78
79
|
*/
|
|
79
|
-
export default abstract class EntityDatabaseAdapter<TFields extends Record<string, any
|
|
80
|
+
export default abstract class EntityDatabaseAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields> {
|
|
80
81
|
private readonly entityConfiguration;
|
|
81
82
|
private readonly fieldTransformerMap;
|
|
82
|
-
constructor(entityConfiguration: EntityConfiguration<TFields>);
|
|
83
|
+
constructor(entityConfiguration: EntityConfiguration<TFields, TIDField>);
|
|
83
84
|
/**
|
|
84
85
|
* Transformer definitions for field types. Used to modify values as they are read from or written to
|
|
85
86
|
* the database. Override in concrete subclasses to change transformation behavior.
|
|
@@ -87,15 +88,15 @@ export default abstract class EntityDatabaseAdapter<TFields extends Record<strin
|
|
|
87
88
|
*/
|
|
88
89
|
protected abstract getFieldTransformerMap(): FieldTransformerMap;
|
|
89
90
|
/**
|
|
90
|
-
* Fetch many objects where
|
|
91
|
+
* Fetch many objects where key is one of values.
|
|
91
92
|
*
|
|
92
93
|
* @param queryContext - query context with which to perform the fetch
|
|
93
|
-
* @param
|
|
94
|
-
* @param
|
|
95
|
-
* @returns map from
|
|
94
|
+
* @param key - load key being queried
|
|
95
|
+
* @param values - load values being queried
|
|
96
|
+
* @returns map from value to objects that match the query for that value
|
|
96
97
|
*/
|
|
97
|
-
fetchManyWhereAsync<
|
|
98
|
-
protected abstract fetchManyWhereInternalAsync(queryInterface: any, tableName: string,
|
|
98
|
+
fetchManyWhereAsync<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>[]>>;
|
|
99
|
+
protected abstract fetchManyWhereInternalAsync(queryInterface: any, tableName: string, tableColumns: readonly string[], tableTuples: (readonly any[])[]): Promise<object[]>;
|
|
99
100
|
/**
|
|
100
101
|
* Fetch many objects matching the conjunction of where clauses constructed from
|
|
101
102
|
* specified field equality operands.
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.OrderByOrdering = void 0;
|
|
4
7
|
exports.isSingleValueFieldEqualityCondition = isSingleValueFieldEqualityCondition;
|
|
8
|
+
const invariant_1 = __importDefault(require("invariant"));
|
|
5
9
|
const EntityFieldTransformationUtils_1 = require("./internal/EntityFieldTransformationUtils");
|
|
6
10
|
function isSingleValueFieldEqualityCondition(condition) {
|
|
7
11
|
return condition.fieldValue !== undefined;
|
|
@@ -25,24 +29,28 @@ class EntityDatabaseAdapter {
|
|
|
25
29
|
this.fieldTransformerMap = this.getFieldTransformerMap();
|
|
26
30
|
}
|
|
27
31
|
/**
|
|
28
|
-
* Fetch many objects where
|
|
32
|
+
* Fetch many objects where key is one of values.
|
|
29
33
|
*
|
|
30
34
|
* @param queryContext - query context with which to perform the fetch
|
|
31
|
-
* @param
|
|
32
|
-
* @param
|
|
33
|
-
* @returns map from
|
|
35
|
+
* @param key - load key being queried
|
|
36
|
+
* @param values - load values being queried
|
|
37
|
+
* @returns map from value to objects that match the query for that value
|
|
34
38
|
*/
|
|
35
|
-
async fetchManyWhereAsync(queryContext,
|
|
36
|
-
const
|
|
37
|
-
const
|
|
39
|
+
async fetchManyWhereAsync(queryContext, key, values) {
|
|
40
|
+
const keyDatabaseColumns = key.getDatabaseColumns(this.entityConfiguration);
|
|
41
|
+
const valueDatabaseValues = values.map((value) => key.getDatabaseValues(value));
|
|
42
|
+
const results = await this.fetchManyWhereInternalAsync(queryContext.getQueryInterface(), this.entityConfiguration.tableName, keyDatabaseColumns, valueDatabaseValues);
|
|
38
43
|
const objects = results.map((result) => (0, EntityFieldTransformationUtils_1.transformDatabaseObjectToFields)(this.entityConfiguration, this.fieldTransformerMap, result));
|
|
39
|
-
const objectMap =
|
|
40
|
-
for (const
|
|
41
|
-
objectMap.set(
|
|
44
|
+
const objectMap = key.vendNewLoadValueMap();
|
|
45
|
+
for (const value of values) {
|
|
46
|
+
objectMap.set(value, []);
|
|
42
47
|
}
|
|
43
48
|
objects.forEach((object) => {
|
|
44
|
-
const
|
|
45
|
-
|
|
49
|
+
const objectMapKeyForObject = key.getLoadValueForObject(object);
|
|
50
|
+
(0, invariant_1.default)(objectMapKeyForObject !== null, `One or more fields from the object is invalid for key ${key}; ${JSON.stringify(object)}. This may indicate a faulty database adapter implementation.`);
|
|
51
|
+
const objectList = objectMap.get(objectMapKeyForObject);
|
|
52
|
+
(0, invariant_1.default)(objectList !== undefined, `Unexpected object field value during database result transformation: ${objectMapKeyForObject}. This should never happen.`);
|
|
53
|
+
objectList.push(object);
|
|
46
54
|
});
|
|
47
55
|
return objectMap;
|
|
48
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityDatabaseAdapter.js","sourceRoot":"","sources":["../src/EntityDatabaseAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EntityDatabaseAdapter.js","sourceRoot":"","sources":["../src/EntityDatabaseAdapter.ts"],"names":[],"mappings":"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"}
|
package/build/EntityDeleter.d.ts
CHANGED
|
@@ -8,20 +8,20 @@ import ViewerContext from './ViewerContext';
|
|
|
8
8
|
/**
|
|
9
9
|
* The primary interface for deleting entities.
|
|
10
10
|
*/
|
|
11
|
-
export default class EntityDeleter<TFields extends
|
|
11
|
+
export default class EntityDeleter<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields> {
|
|
12
12
|
private readonly existingEntity;
|
|
13
13
|
private readonly queryContext;
|
|
14
14
|
private readonly entityClass;
|
|
15
|
-
constructor(existingEntity: TEntity, queryContext: EntityQueryContext, entityClass: IEntityClass<TFields,
|
|
15
|
+
constructor(existingEntity: TEntity, queryContext: EntityQueryContext, entityClass: IEntityClass<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>);
|
|
16
16
|
/**
|
|
17
17
|
* Enforcing entity deleter. All deletes through this deleter are
|
|
18
18
|
* guaranteed to be successful and will throw otherwise.
|
|
19
19
|
*/
|
|
20
|
-
enforcing(): EnforcingEntityDeleter<TFields,
|
|
20
|
+
enforcing(): EnforcingEntityDeleter<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
21
21
|
/**
|
|
22
22
|
* Authorization-result-based entity deleter. All deletes through this
|
|
23
23
|
* deleter are results, where an unsuccessful result means an authorization
|
|
24
24
|
* error or entity construction error occurred. Other errors are thrown.
|
|
25
25
|
*/
|
|
26
|
-
withAuthorizationResults(): AuthorizationResultBasedDeleteMutator<TFields,
|
|
26
|
+
withAuthorizationResults(): AuthorizationResultBasedDeleteMutator<TFields, TIDField, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
27
27
|
}
|
|
@@ -61,11 +61,11 @@ export declare enum EntityEdgeDeletionAuthorizationInferenceBehavior {
|
|
|
61
61
|
/**
|
|
62
62
|
* Defines an association between entities. An association is primarily used to define cascading deletion behavior.
|
|
63
63
|
*/
|
|
64
|
-
export interface EntityAssociationDefinition<TViewerContext extends ViewerContext, TAssociatedFields extends object,
|
|
64
|
+
export interface EntityAssociationDefinition<TViewerContext extends ViewerContext, TAssociatedFields extends object, TAssociatedIDField extends keyof NonNullable<Pick<TAssociatedFields, TAssociatedSelectedFields>>, TAssociatedEntity extends ReadonlyEntity<TAssociatedFields, TAssociatedIDField, TViewerContext, TAssociatedSelectedFields>, TAssociatedPrivacyPolicy extends EntityPrivacyPolicy<TAssociatedFields, TAssociatedIDField, TViewerContext, TAssociatedEntity, TAssociatedSelectedFields>, TAssociatedSelectedFields extends keyof TAssociatedFields = keyof TAssociatedFields> {
|
|
65
65
|
/**
|
|
66
66
|
* Class of entity on the other end of this edge.
|
|
67
67
|
*/
|
|
68
|
-
associatedEntityClass: IEntityClass<TAssociatedFields,
|
|
68
|
+
associatedEntityClass: IEntityClass<TAssociatedFields, TAssociatedIDField, TViewerContext, TAssociatedEntity, TAssociatedPrivacyPolicy, TAssociatedSelectedFields>;
|
|
69
69
|
/**
|
|
70
70
|
* Field by which to load the instance of associatedEntityClass. If not provided, the
|
|
71
71
|
* associatedEntityClass instance is fetched by its ID.
|
|
@@ -99,35 +99,45 @@ export interface EntityAssociationDefinition<TViewerContext extends ViewerContex
|
|
|
99
99
|
/**
|
|
100
100
|
* Options for EntityFieldDefinition
|
|
101
101
|
*/
|
|
102
|
-
export interface
|
|
102
|
+
export interface EntityFieldDefinitionOptionsBase {
|
|
103
103
|
/**
|
|
104
104
|
* Column name in the database.
|
|
105
105
|
*/
|
|
106
106
|
columnName: string;
|
|
107
|
+
/**
|
|
108
|
+
* Defines the association behavior for an entity that this column references.
|
|
109
|
+
*/
|
|
110
|
+
association?: EntityAssociationDefinition<any, any, any, any, any, any>;
|
|
111
|
+
}
|
|
112
|
+
export interface EntityFieldDefinitionOptionsExplicitCache extends EntityFieldDefinitionOptionsBase {
|
|
107
113
|
/**
|
|
108
114
|
* Whether or not to cache loaded instances of the entity by this field. The column name is
|
|
109
115
|
* used to derive a cache key for the cache entry. If true, this column must be able uniquely
|
|
110
|
-
* identify the entity.
|
|
116
|
+
* identify the entity and the database must have a unique constraint on the column.
|
|
111
117
|
*/
|
|
112
|
-
cache
|
|
118
|
+
cache: boolean;
|
|
119
|
+
}
|
|
120
|
+
export interface EntityFieldDefinitionOptions extends EntityFieldDefinitionOptionsBase {
|
|
113
121
|
/**
|
|
114
|
-
*
|
|
122
|
+
* Whether or not to cache loaded instances of the entity by this field. The column name is
|
|
123
|
+
* used to derive a cache key for the cache entry. If true, this column must be able uniquely
|
|
124
|
+
* identify the entity and the database must have a unique constraint on the column.
|
|
115
125
|
*/
|
|
116
|
-
|
|
126
|
+
cache?: boolean;
|
|
117
127
|
}
|
|
118
128
|
/**
|
|
119
129
|
* Definition for a field referencing a column in the underlying database. Specifies things like
|
|
120
130
|
* cache behavior and associations, and handles input validation.
|
|
121
131
|
*/
|
|
122
|
-
export declare abstract class EntityFieldDefinition<T> {
|
|
132
|
+
export declare abstract class EntityFieldDefinition<T, TRequireExplicitCache extends boolean> {
|
|
123
133
|
readonly columnName: string;
|
|
124
134
|
readonly cache: boolean;
|
|
125
135
|
readonly association: EntityAssociationDefinition<any, any, any, any, any, any> | undefined;
|
|
136
|
+
protected readonly _cacheRawSentinel: TRequireExplicitCache;
|
|
126
137
|
/**
|
|
127
|
-
*
|
|
128
138
|
* @param options - options for this field definition
|
|
129
139
|
*/
|
|
130
|
-
constructor(options: EntityFieldDefinitionOptions);
|
|
140
|
+
constructor(options: TRequireExplicitCache extends true ? EntityFieldDefinitionOptionsExplicitCache : EntityFieldDefinitionOptions);
|
|
131
141
|
/**
|
|
132
142
|
* Validates input value for a field of this type. Null and undefined are considered valid by default. This is used for things like:
|
|
133
143
|
* - EntityLoader.loadByFieldValue - to ensure the value being loaded by is a valid value
|
|
@@ -67,8 +67,10 @@ class EntityFieldDefinition {
|
|
|
67
67
|
columnName;
|
|
68
68
|
cache;
|
|
69
69
|
association;
|
|
70
|
+
// @ts-expect-error this is to ensure that different constructor requirements produce incompatible
|
|
71
|
+
// objects in the eyes of the type system
|
|
72
|
+
_cacheRawSentinel;
|
|
70
73
|
/**
|
|
71
|
-
*
|
|
72
74
|
* @param options - options for this field definition
|
|
73
75
|
*/
|
|
74
76
|
constructor(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityFieldDefinition.js","sourceRoot":"","sources":["../src/EntityFieldDefinition.ts"],"names":[],"mappings":";;;AAKA,IAAY,0BA+BX;AA/BD,WAAY,0BAA0B;IACpC;;;;;;OAMG;IACH,2IAAoC,CAAA;IAEpC;;;;;OAKG;IACH,+HAA8B,CAAA;IAE9B;;;;OAIG;IACH,+FAAc,CAAA;IAEd;;;;OAIG;IACH,mFAAQ,CAAA;AACV,CAAC,EA/BW,0BAA0B,0CAA1B,0BAA0B,QA+BrC;AAED,IAAY,gDA2BX;AA3BD,WAAY,gDAAgD;IAC1D;;;;;;;OAOG;IACH,uHAAI,CAAA;IAEJ;;;;;;;;;;;;;;OAcG;IACH,6IAAe,CAAA;AACjB,CAAC,EA3BW,gDAAgD,gEAAhD,gDAAgD,QA2B3D;
|
|
1
|
+
{"version":3,"file":"EntityFieldDefinition.js","sourceRoot":"","sources":["../src/EntityFieldDefinition.ts"],"names":[],"mappings":";;;AAKA,IAAY,0BA+BX;AA/BD,WAAY,0BAA0B;IACpC;;;;;;OAMG;IACH,2IAAoC,CAAA;IAEpC;;;;;OAKG;IACH,+HAA8B,CAAA;IAE9B;;;;OAIG;IACH,+FAAc,CAAA;IAEd;;;;OAIG;IACH,mFAAQ,CAAA;AACV,CAAC,EA/BW,0BAA0B,0CAA1B,0BAA0B,QA+BrC;AAED,IAAY,gDA2BX;AA3BD,WAAY,gDAAgD;IAC1D;;;;;;;OAOG;IACH,uHAAI,CAAA;IAEJ;;;;;;;;;;;;;;OAcG;IACH,6IAAe,CAAA;AACjB,CAAC,EA3BW,gDAAgD,gEAAhD,gDAAgD,QA2B3D;AAuGD;;;GAGG;AACH,MAAsB,qBAAqB;IAChC,UAAU,CAAS;IACnB,KAAK,CAAU;IACf,WAAW,CAAwE;IAE5F,kGAAkG;IAClG,yCAAyC;IACtB,iBAAiB,CAAwB;IAE5D;;OAEG;IACH,YACE,OAEgC;QAEhC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACI,kBAAkB,CAAC,KAA2B;QACnD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;CAEF;AAnCD,sDAmCC"}
|
package/build/EntityFields.d.ts
CHANGED
|
@@ -1,68 +1,70 @@
|
|
|
1
|
-
import { EntityFieldDefinition } from './EntityFieldDefinition';
|
|
1
|
+
import { EntityFieldDefinition, EntityFieldDefinitionOptions, EntityFieldDefinitionOptionsExplicitCache } from './EntityFieldDefinition';
|
|
2
2
|
/**
|
|
3
3
|
* EntityFieldDefinition for a column with a JS string type.
|
|
4
4
|
*/
|
|
5
|
-
export declare class StringField extends EntityFieldDefinition<string> {
|
|
5
|
+
export declare class StringField<TRequireExplicitCache extends boolean> extends EntityFieldDefinition<string, TRequireExplicitCache> {
|
|
6
6
|
protected validateInputValueInternal(value: string): boolean;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
9
|
* EntityFieldDefinition for a column with a JS string type.
|
|
10
10
|
* Enforces that the string is a valid UUID.
|
|
11
11
|
*/
|
|
12
|
-
export declare class UUIDField extends StringField {
|
|
12
|
+
export declare class UUIDField<TRequireExplicitCache extends boolean> extends StringField<TRequireExplicitCache> {
|
|
13
13
|
protected validateInputValueInternal(value: string): boolean;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* EntityFieldDefinition for a column with a JS Date type.
|
|
17
17
|
*/
|
|
18
|
-
export declare class DateField extends EntityFieldDefinition<Date> {
|
|
18
|
+
export declare class DateField<TRequireExplicitCache extends boolean> extends EntityFieldDefinition<Date, TRequireExplicitCache> {
|
|
19
19
|
protected validateInputValueInternal(value: Date): boolean;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* EntityFieldDefinition for a column with a JS boolean type.
|
|
23
23
|
*/
|
|
24
|
-
export declare class BooleanField extends EntityFieldDefinition<boolean> {
|
|
24
|
+
export declare class BooleanField<TRequireExplicitCache extends boolean> extends EntityFieldDefinition<boolean, TRequireExplicitCache> {
|
|
25
25
|
protected validateInputValueInternal(value: boolean): boolean;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* EntityFieldDefinition for a column with a JS number type.
|
|
29
29
|
* Enforces that the number is an integer.
|
|
30
30
|
*/
|
|
31
|
-
export declare class IntField extends EntityFieldDefinition<number> {
|
|
31
|
+
export declare class IntField<TRequireExplicitCache extends boolean> extends EntityFieldDefinition<number, TRequireExplicitCache> {
|
|
32
32
|
protected validateInputValueInternal(value: number): boolean;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* EntityFieldDefinition for a column with a JS number type.
|
|
36
36
|
* Enforces that the number is a float (which includes integers in JS).
|
|
37
37
|
*/
|
|
38
|
-
export declare class FloatField extends EntityFieldDefinition<number> {
|
|
38
|
+
export declare class FloatField<TRequireExplicitCache extends boolean> extends EntityFieldDefinition<number, TRequireExplicitCache> {
|
|
39
39
|
protected validateInputValueInternal(value: number): boolean;
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
42
|
* EntityFieldDefinition for a column with a JS string array type.
|
|
43
43
|
* Enforces that every member of the string array is a string.
|
|
44
44
|
*/
|
|
45
|
-
export declare class StringArrayField extends EntityFieldDefinition<string[]> {
|
|
45
|
+
export declare class StringArrayField<TRequireExplicitCache extends boolean> extends EntityFieldDefinition<string[], TRequireExplicitCache> {
|
|
46
46
|
protected validateInputValueInternal(value: string[]): boolean;
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* EntityFieldDefinition for a column with a JS JSON object type.
|
|
50
50
|
*/
|
|
51
|
-
export declare class JSONObjectField extends EntityFieldDefinition<object> {
|
|
51
|
+
export declare class JSONObjectField<TRequireExplicitCache extends boolean> extends EntityFieldDefinition<object, TRequireExplicitCache> {
|
|
52
52
|
protected validateInputValueInternal(value: object): boolean;
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
55
|
* EntityFieldDefinition for a enum column with a JS string or number type.
|
|
56
56
|
*/
|
|
57
|
-
export declare class EnumField extends EntityFieldDefinition<string | number> {
|
|
57
|
+
export declare class EnumField<TRequireExplicitCache extends boolean> extends EntityFieldDefinition<string | number, TRequireExplicitCache> {
|
|
58
58
|
protected validateInputValueInternal(value: string | number): boolean;
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
61
|
* EntityFieldDefinition for a enum column with a strict typescript enum type.
|
|
62
62
|
*/
|
|
63
|
-
export declare class StrictEnumField<T extends object> extends EnumField {
|
|
63
|
+
export declare class StrictEnumField<T extends object, TRequireExplicitCache extends boolean> extends EnumField<TRequireExplicitCache> {
|
|
64
64
|
private readonly enum;
|
|
65
|
-
constructor(options:
|
|
65
|
+
constructor(options: TRequireExplicitCache extends true ? EntityFieldDefinitionOptionsExplicitCache & {
|
|
66
|
+
enum: T;
|
|
67
|
+
} : EntityFieldDefinitionOptions & {
|
|
66
68
|
enum: T;
|
|
67
69
|
});
|
|
68
70
|
protected validateInputValueInternal(value: string | number): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityFields.js","sourceRoot":"","sources":["../src/EntityFields.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"EntityFields.js","sourceRoot":"","sources":["../src/EntityFields.ts"],"names":[],"mappings":";;;AAAA,mEAIiC;AAEjC,uFAAuF;AACvF,MAAM,UAAU,GACd,0JAA0J,CAAC;AAE7J;;GAEG;AACH,MAAa,WAAmD,SAAQ,6CAGvE;IACW,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;CACF;AAPD,kCAOC;AAED;;;GAGG;AACH,MAAa,SAEX,SAAQ,WAAkC;IACvB,0BAA0B,CAAC,KAAa;QACzD,OAAO,KAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF;AAND,8BAMC;AAED;;GAEG;AACH,MAAa,SAAiD,SAAQ,6CAGrE;IACW,0BAA0B,CAAC,KAAW;QAC9C,OAAO,KAAK,YAAY,IAAI,CAAC;IAC/B,CAAC;CACF;AAPD,8BAOC;AAED;;GAEG;AACH,MAAa,YAAoD,SAAQ,6CAGxE;IACW,0BAA0B,CAAC,KAAc;QACjD,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;IACpC,CAAC;CACF;AAPD,oCAOC;AAED;;;GAGG;AACH,MAAa,QAAgD,SAAQ,6CAGpE;IACW,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;CACF;AAPD,4BAOC;AAED;;;GAGG;AACH,MAAa,UAAkD,SAAQ,6CAGtE;IACW,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;CACF;AAPD,gCAOC;AAED;;;GAGG;AACH,MAAa,gBAAwD,SAAQ,6CAG5E;IACW,0BAA0B,CAAC,KAAe;QAClD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC;IACzF,CAAC;CACF;AAPD,4CAOC;AAED;;GAEG;AACH,MAAa,eAAuD,SAAQ,6CAG3E;IACW,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;CACF;AAPD,0CAOC;AAED;;GAEG;AACH,MAAa,SAAiD,SAAQ,6CAGrE;IACW,0BAA0B,CAAC,KAAsB;QACzD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;IAChE,CAAC;CACF;AAPD,8BAOC;AAED;;GAEG;AACH,MAAa,eAGX,SAAQ,SAAgC;IACvB,IAAI,CAAI;IACzB,YACE,OAE8C;QAE9C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAEkB,0BAA0B,CAAC,KAAsB;QAClE,OAAO,KAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7F,CAAC;CACF;AAjBD,0CAiBC"}
|