@expo/entity 0.35.0 → 0.37.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/AuthorizationResultBasedEntityLoader.d.ts +128 -0
- package/build/AuthorizationResultBasedEntityLoader.js +196 -0
- package/build/AuthorizationResultBasedEntityLoader.js.map +1 -0
- package/build/ComposedEntityCacheAdapter.js +1 -0
- package/build/ComposedEntityCacheAdapter.js.map +1 -1
- package/build/ComposedSecondaryEntityCache.js +1 -0
- package/build/ComposedSecondaryEntityCache.js.map +1 -1
- package/build/EnforcingEntityLoader.d.ts +5 -4
- package/build/EnforcingEntityLoader.js +4 -2
- package/build/EnforcingEntityLoader.js.map +1 -1
- package/build/Entity.d.ts +0 -27
- package/build/Entity.js +0 -50
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.d.ts +1 -1
- package/build/EntityAssociationLoader.js +17 -8
- package/build/EntityAssociationLoader.js.map +1 -1
- package/build/EntityCompanion.js +9 -1
- package/build/EntityCompanion.js.map +1 -1
- package/build/EntityCompanionProvider.d.ts +3 -1
- package/build/EntityCompanionProvider.js +10 -4
- package/build/EntityCompanionProvider.js.map +1 -1
- package/build/EntityConfiguration.d.ts +2 -1
- package/build/EntityConfiguration.js +19 -1
- package/build/EntityConfiguration.js.map +1 -1
- package/build/EntityDatabaseAdapter.d.ts +2 -2
- package/build/EntityDatabaseAdapter.js +5 -3
- package/build/EntityDatabaseAdapter.js.map +1 -1
- package/build/EntityFieldDefinition.d.ts +21 -10
- package/build/EntityFieldDefinition.js +8 -9
- package/build/EntityFieldDefinition.js.map +1 -1
- package/build/EntityFields.d.ts +10 -0
- package/build/EntityFields.js +15 -1
- package/build/EntityFields.js.map +1 -1
- package/build/EntityLoader.d.ts +12 -125
- package/build/EntityLoader.js +24 -239
- package/build/EntityLoader.js.map +1 -1
- package/build/EntityLoaderFactory.d.ts +1 -1
- package/build/EntityLoaderFactory.js +3 -0
- package/build/EntityLoaderFactory.js.map +1 -1
- package/build/EntityLoaderUtils.d.ts +58 -0
- package/build/EntityLoaderUtils.js +109 -0
- package/build/EntityLoaderUtils.js.map +1 -0
- package/build/EntityMutator.d.ts +1 -0
- package/build/EntityMutator.js +71 -56
- package/build/EntityMutator.js.map +1 -1
- package/build/EntityMutatorFactory.js +9 -0
- package/build/EntityMutatorFactory.js.map +1 -1
- package/build/EntityPrivacyPolicy.d.ts +11 -5
- package/build/EntityPrivacyPolicy.js +5 -7
- package/build/EntityPrivacyPolicy.js.map +1 -1
- package/build/EntityQueryContext.d.ts +2 -1
- package/build/EntityQueryContext.js +11 -6
- package/build/EntityQueryContext.js.map +1 -1
- package/build/EntitySecondaryCacheLoader.js +5 -1
- package/build/EntitySecondaryCacheLoader.js.map +1 -1
- package/build/GenericEntityCacheAdapter.js +1 -0
- package/build/GenericEntityCacheAdapter.js.map +1 -1
- package/build/GenericSecondaryEntityCache.js +2 -0
- package/build/GenericSecondaryEntityCache.js.map +1 -1
- package/build/IEntityCacheAdapterProvider.d.ts +1 -1
- package/build/IEntityDatabaseAdapterProvider.d.ts +1 -1
- package/build/ReadonlyEntity.js +5 -1
- package/build/ReadonlyEntity.js.map +1 -1
- package/build/ViewerContext.js +2 -0
- package/build/ViewerContext.js.map +1 -1
- package/build/ViewerScopedEntityCompanion.js +2 -0
- package/build/ViewerScopedEntityCompanion.js.map +1 -1
- package/build/ViewerScopedEntityCompanionProvider.d.ts +0 -1
- package/build/ViewerScopedEntityCompanionProvider.js +2 -1
- package/build/ViewerScopedEntityCompanionProvider.js.map +1 -1
- package/build/ViewerScopedEntityLoaderFactory.d.ts +1 -1
- package/build/ViewerScopedEntityLoaderFactory.js +2 -0
- package/build/ViewerScopedEntityLoaderFactory.js.map +1 -1
- package/build/ViewerScopedEntityMutatorFactory.js +2 -0
- package/build/ViewerScopedEntityMutatorFactory.js.map +1 -1
- package/build/__tests__/ComposedCacheAdapter-test.js +2 -0
- package/build/__tests__/ComposedCacheAdapter-test.js.map +1 -1
- package/build/__tests__/ComposedSecondaryEntityCache-test.js +1 -0
- package/build/__tests__/ComposedSecondaryEntityCache-test.js.map +1 -1
- package/build/__tests__/EnforcingEntityLoader-test.js +101 -113
- package/build/__tests__/EnforcingEntityLoader-test.js.map +1 -1
- package/build/__tests__/Entity-test.js +0 -132
- package/build/__tests__/Entity-test.js.map +1 -1
- package/build/__tests__/EntityAssociationLoader-test.js +6 -2
- package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
- package/build/__tests__/EntityCommonUseCases-test.js +24 -22
- package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
- package/build/__tests__/EntityCompanion-test.js +26 -3
- package/build/__tests__/EntityCompanion-test.js.map +1 -1
- package/build/__tests__/EntityConfiguration-test.js +103 -0
- package/build/__tests__/EntityConfiguration-test.js.map +1 -0
- package/build/__tests__/EntityDatabaseAdapter-test.js +6 -0
- package/build/__tests__/EntityDatabaseAdapter-test.js.map +1 -1
- package/build/__tests__/EntityEdges-test.js +61 -20
- package/build/__tests__/EntityEdges-test.js.map +1 -1
- package/build/__tests__/EntityFields-test.js +6 -0
- package/build/__tests__/EntityFields-test.js.map +1 -1
- package/build/__tests__/EntityLoader-constructor-test.js +16 -17
- package/build/__tests__/EntityLoader-constructor-test.js.map +1 -1
- package/build/__tests__/EntityLoader-test.js +74 -22
- package/build/__tests__/EntityLoader-test.js.map +1 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +12 -15
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
- package/build/__tests__/EntityMutator-test.js +54 -9
- package/build/__tests__/EntityMutator-test.js.map +1 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +77 -59
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
- package/build/__tests__/EntityQueryContext-test.js +9 -0
- package/build/__tests__/EntityQueryContext-test.js.map +1 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.js +42 -25
- package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +20 -18
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +12 -15
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
- package/build/entityUtils.d.ts +1 -1
- package/build/entityUtils.js.map +1 -1
- package/build/errors/EntityCacheAdapterError.js +2 -5
- package/build/errors/EntityCacheAdapterError.js.map +1 -1
- package/build/errors/EntityDatabaseAdapterError.js +14 -35
- package/build/errors/EntityDatabaseAdapterError.js.map +1 -1
- package/build/errors/EntityError.js +1 -0
- package/build/errors/EntityError.js.map +1 -1
- package/build/errors/EntityInvalidFieldValueError.js +2 -2
- package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
- package/build/errors/EntityNotAuthorizedError.js +3 -2
- package/build/errors/EntityNotAuthorizedError.js.map +1 -1
- package/build/errors/EntityNotFoundError.js +2 -2
- package/build/errors/EntityNotFoundError.js.map +1 -1
- package/build/index.d.ts +26 -20
- package/build/index.js +38 -28
- package/build/index.js.map +1 -1
- package/build/internal/EntityDataManager.d.ts +1 -1
- package/build/internal/EntityDataManager.js +6 -1
- package/build/internal/EntityDataManager.js.map +1 -1
- package/build/internal/EntityFieldTransformationUtils.d.ts +5 -5
- package/build/internal/EntityFieldTransformationUtils.js +5 -8
- package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
- package/build/internal/EntityTableDataCoordinator.d.ts +1 -1
- package/build/internal/EntityTableDataCoordinator.js +5 -0
- package/build/internal/EntityTableDataCoordinator.js.map +1 -1
- package/build/internal/ReadThroughEntityCache.d.ts +1 -1
- package/build/internal/ReadThroughEntityCache.js +2 -0
- package/build/internal/ReadThroughEntityCache.js.map +1 -1
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +6 -2
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +1 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js +33 -0
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
- package/build/metrics/IEntityMetricsAdapter.d.ts +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
- package/build/rules/PrivacyPolicyRule.d.ts +1 -1
- package/build/rules/PrivacyPolicyRule.js.map +1 -1
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +1 -1
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +1 -1
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +1 -1
- package/build/testfixtures/DateIDTestEntity.js +12 -15
- package/build/testfixtures/DateIDTestEntity.js.map +1 -1
- package/build/testfixtures/SimpleTestEntity.js +12 -15
- package/build/testfixtures/SimpleTestEntity.js.map +1 -1
- package/build/testfixtures/TestEntity.js +12 -15
- package/build/testfixtures/TestEntity.js.map +1 -1
- package/build/testfixtures/TestEntity2.js +12 -15
- package/build/testfixtures/TestEntity2.js.map +1 -1
- package/build/testfixtures/TestEntityNumberKey.js +12 -15
- package/build/testfixtures/TestEntityNumberKey.js.map +1 -1
- package/build/testfixtures/TestEntityWithMutationTriggers.d.ts +36 -0
- package/build/testfixtures/TestEntityWithMutationTriggers.js +82 -0
- package/build/testfixtures/TestEntityWithMutationTriggers.js.map +1 -0
- package/build/utils/EntityPrivacyUtils.d.ts +34 -0
- package/build/utils/EntityPrivacyUtils.js +160 -0
- package/build/utils/EntityPrivacyUtils.js.map +1 -0
- package/build/utils/__tests__/EntityPrivacyUtils-test.d.ts +1 -0
- package/build/utils/__tests__/EntityPrivacyUtils-test.js +395 -0
- package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +1 -0
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +1 -0
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +26 -0
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +1 -0
- package/build/utils/collections/maps.js.map +1 -1
- package/build/utils/mergeEntityMutationTriggerConfigurations.d.ts +4 -0
- package/build/utils/mergeEntityMutationTriggerConfigurations.js +28 -0
- package/build/utils/mergeEntityMutationTriggerConfigurations.js.map +1 -0
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +1 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +1 -1
- package/build/utils/testing/StubCacheAdapter.d.ts +3 -3
- package/build/utils/testing/StubCacheAdapter.js +3 -3
- package/build/utils/testing/StubCacheAdapter.js.map +1 -1
- package/build/utils/testing/StubDatabaseAdapter.d.ts +2 -2
- package/build/utils/testing/StubDatabaseAdapter.js +4 -2
- package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
- package/build/utils/testing/StubDatabaseAdapterProvider.d.ts +1 -1
- package/build/utils/testing/StubDatabaseAdapterProvider.js +1 -3
- package/build/utils/testing/StubDatabaseAdapterProvider.js.map +1 -1
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.d.ts +1 -0
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js +42 -0
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js.map +1 -0
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +53 -0
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +1 -1
- package/build/utils/testing/describeFieldTestCase.js.map +1 -1
- package/package.json +5 -4
- package/src/AuthorizationResultBasedEntityLoader.ts +297 -0
- package/src/ComposedEntityCacheAdapter.ts +6 -6
- package/src/ComposedSecondaryEntityCache.ts +8 -8
- package/src/EnforcingEntityLoader.ts +20 -19
- package/src/Entity.ts +11 -126
- package/src/EntityAssociationLoader.ts +40 -41
- package/src/EntityCompanion.ts +8 -4
- package/src/EntityCompanionProvider.ts +24 -16
- package/src/EntityConfiguration.ts +18 -7
- package/src/EntityDatabaseAdapter.ts +41 -41
- package/src/EntityFieldDefinition.ts +28 -18
- package/src/EntityFields.ts +15 -0
- package/src/EntityLoader.ts +63 -357
- package/src/EntityLoaderFactory.ts +10 -4
- package/src/EntityLoaderUtils.ts +149 -0
- package/src/EntityMutationInfo.ts +2 -2
- package/src/EntityMutationTriggerConfiguration.ts +5 -5
- package/src/EntityMutationValidator.ts +2 -2
- package/src/EntityMutator.ts +146 -144
- package/src/EntityMutatorFactory.ts +8 -8
- package/src/EntityPrivacyPolicy.ts +78 -28
- package/src/EntityQueryContext.ts +14 -13
- package/src/EntityQueryContextProvider.ts +5 -5
- package/src/EntitySecondaryCacheLoader.ts +13 -11
- package/src/GenericEntityCacheAdapter.ts +10 -10
- package/src/GenericSecondaryEntityCache.ts +6 -6
- package/src/IEntityCacheAdapter.ts +4 -4
- package/src/IEntityCacheAdapterProvider.ts +2 -2
- package/src/IEntityDatabaseAdapterProvider.ts +2 -2
- package/src/ReadonlyEntity.ts +5 -5
- package/src/ViewerContext.ts +5 -5
- package/src/ViewerScopedEntityCompanion.ts +4 -4
- package/src/ViewerScopedEntityCompanionProvider.ts +4 -5
- package/src/ViewerScopedEntityLoaderFactory.ts +10 -4
- package/src/ViewerScopedEntityMutatorFactory.ts +5 -5
- package/src/__tests__/ComposedCacheAdapter-test.ts +12 -10
- package/src/__tests__/ComposedSecondaryEntityCache-test.ts +8 -8
- package/src/__tests__/EnforcingEntityLoader-test.ts +236 -159
- package/src/__tests__/Entity-test.ts +0 -202
- package/src/__tests__/EntityAssociationLoader-test.ts +29 -25
- package/src/__tests__/EntityCommonUseCases-test.ts +29 -13
- package/src/__tests__/EntityCompanion-test.ts +57 -5
- package/src/__tests__/EntityConfiguration-test.ts +118 -0
- package/src/__tests__/EntityDatabaseAdapter-test.ts +11 -11
- package/src/__tests__/EntityEdges-test.ts +108 -36
- package/src/__tests__/EntityFields-test.ts +14 -2
- package/src/__tests__/EntityLoader-constructor-test.ts +20 -7
- package/src/__tests__/EntityLoader-test.ts +214 -86
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +2 -2
- package/src/__tests__/EntityMutator-test.ts +281 -96
- package/src/__tests__/EntityPrivacyPolicy-test.ts +166 -53
- package/src/__tests__/EntityQueryContext-test.ts +30 -12
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +7 -7
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +46 -26
- package/src/__tests__/GenericEntityCacheAdapter-test.ts +2 -2
- package/src/__tests__/ViewerContext-test.ts +1 -1
- package/src/__tests__/ViewerScopedEntityCompanion-test.ts +2 -2
- package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +2 -2
- package/src/__tests__/ViewerScopedEntityLoaderFactory-test.ts +2 -1
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +19 -19
- package/src/__tests__/entityUtils-test.ts +2 -2
- package/src/entityUtils.ts +4 -4
- package/src/errors/EntityError.ts +4 -1
- package/src/errors/EntityInvalidFieldValueError.ts +2 -2
- package/src/errors/EntityNotAuthorizedError.ts +3 -3
- package/src/errors/EntityNotFoundError.ts +2 -2
- package/src/index.ts +26 -20
- package/src/internal/EntityDataManager.ts +24 -24
- package/src/internal/EntityFieldTransformationUtils.ts +39 -32
- package/src/internal/EntityTableDataCoordinator.ts +3 -3
- package/src/internal/ReadThroughEntityCache.ts +9 -9
- package/src/internal/__tests__/EntityDataManager-test.ts +51 -51
- package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +14 -10
- package/src/internal/__tests__/ReadThroughEntityCache-test.ts +74 -18
- package/src/metrics/EntityMetricsUtils.ts +4 -4
- package/src/metrics/IEntityMetricsAdapter.ts +1 -1
- package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +9 -3
- package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +9 -3
- package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +9 -3
- package/src/rules/PrivacyPolicyRule.ts +9 -3
- package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +2 -1
- package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +2 -1
- package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +2 -1
- package/src/testfixtures/TestEntity.ts +1 -1
- package/src/testfixtures/TestEntityWithMutationTriggers.ts +156 -0
- package/src/utils/EntityPrivacyUtils.ts +325 -0
- package/src/utils/__tests__/EntityPrivacyUtils-test.ts +570 -0
- package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +29 -0
- package/src/utils/collections/__tests__/maps-test.ts +2 -2
- package/src/utils/collections/maps.ts +11 -11
- package/src/utils/mergeEntityMutationTriggerConfigurations.ts +44 -0
- package/src/utils/testing/PrivacyPolicyRuleTestUtils.ts +25 -22
- package/src/utils/testing/StubCacheAdapter.ts +17 -15
- package/src/utils/testing/StubDatabaseAdapter.ts +35 -30
- package/src/utils/testing/StubDatabaseAdapterProvider.ts +2 -2
- package/src/utils/testing/StubQueryContextProvider.ts +2 -2
- package/src/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.ts +42 -0
- package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +111 -29
- package/src/utils/testing/createUnitTestEntityCompanionProvider.ts +2 -2
- package/src/utils/testing/describeFieldTestCase.ts +1 -1
- package/build/__tests__/EntityDataConfiguration-test.js +0 -68
- package/build/__tests__/EntityDataConfiguration-test.js.map +0 -1
- package/src/__tests__/EntityDataConfiguration-test.ts +0 -77
- /package/build/__tests__/{EntityDataConfiguration-test.d.ts → EntityConfiguration-test.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityAssociationLoader.js","sourceRoot":"","sources":["../src/EntityAssociationLoader.ts"],"names":[],"mappings":";;AAAA,2CAA+C;AAQ/C;;;;GAIG;AACH,MAAqB,uBAAuB;
|
|
1
|
+
{"version":3,"file":"EntityAssociationLoader.js","sourceRoot":"","sources":["../src/EntityAssociationLoader.ts"],"names":[],"mappings":"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"}
|
package/build/EntityCompanion.js
CHANGED
|
@@ -5,10 +5,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const EntityLoaderFactory_1 = __importDefault(require("./EntityLoaderFactory"));
|
|
7
7
|
const EntityMutatorFactory_1 = __importDefault(require("./EntityMutatorFactory"));
|
|
8
|
+
const mergeEntityMutationTriggerConfigurations_1 = require("./utils/mergeEntityMutationTriggerConfigurations");
|
|
8
9
|
/**
|
|
9
10
|
* Composition root responsible for orchestrating setup of Entity mutators and loaders.
|
|
10
11
|
*/
|
|
11
12
|
class EntityCompanion {
|
|
13
|
+
entityCompanionProvider;
|
|
14
|
+
entityCompanionDefinition;
|
|
15
|
+
tableDataCoordinator;
|
|
16
|
+
metricsAdapter;
|
|
17
|
+
privacyPolicy;
|
|
18
|
+
entityLoaderFactory;
|
|
19
|
+
entityMutatorFactory;
|
|
12
20
|
constructor(entityCompanionProvider, entityCompanionDefinition, tableDataCoordinator, metricsAdapter) {
|
|
13
21
|
this.entityCompanionProvider = entityCompanionProvider;
|
|
14
22
|
this.entityCompanionDefinition = entityCompanionDefinition;
|
|
@@ -16,7 +24,7 @@ class EntityCompanion {
|
|
|
16
24
|
this.metricsAdapter = metricsAdapter;
|
|
17
25
|
this.privacyPolicy = new entityCompanionDefinition.privacyPolicyClass();
|
|
18
26
|
this.entityLoaderFactory = new EntityLoaderFactory_1.default(this, tableDataCoordinator.dataManager, metricsAdapter);
|
|
19
|
-
this.entityMutatorFactory = new EntityMutatorFactory_1.default(entityCompanionProvider, tableDataCoordinator.entityConfiguration, entityCompanionDefinition.entityClass, this.privacyPolicy, entityCompanionDefinition.mutationValidators ?? [], entityCompanionDefinition.mutationTriggers ?? {}, this.entityLoaderFactory, tableDataCoordinator.databaseAdapter, metricsAdapter);
|
|
27
|
+
this.entityMutatorFactory = new EntityMutatorFactory_1.default(entityCompanionProvider, tableDataCoordinator.entityConfiguration, entityCompanionDefinition.entityClass, this.privacyPolicy, entityCompanionDefinition.mutationValidators ?? [], (0, mergeEntityMutationTriggerConfigurations_1.mergeEntityMutationTriggerConfigurations)(entityCompanionDefinition.mutationTriggers ?? {}, entityCompanionProvider.globalMutationTriggers ?? {}), this.entityLoaderFactory, tableDataCoordinator.databaseAdapter, metricsAdapter);
|
|
20
28
|
}
|
|
21
29
|
getLoaderFactory() {
|
|
22
30
|
return this.entityLoaderFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCompanion.js","sourceRoot":"","sources":["../src/EntityCompanion.ts"],"names":[],"mappings":";;;;;AACA,gFAAwD;AACxD,kFAA0D;
|
|
1
|
+
{"version":3,"file":"EntityCompanion.js","sourceRoot":"","sources":["../src/EntityCompanion.ts"],"names":[],"mappings":";;;;;AACA,gFAAwD;AACxD,kFAA0D;AAO1D,+GAA4G;AAM5G;;GAEG;AACH,MAAqB,eAAe;IAkChB;IACA;IAQC;IACA;IA9BH,aAAa,CAAiB;IAE7B,mBAAmB,CAOlC;IACe,oBAAoB,CAOnC;IAEF,YACkB,uBAAgD,EAChD,yBAOf,EACgB,oBAAyD,EACzD,cAAqC;QAVtC,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,8BAAyB,GAAzB,yBAAyB,CAOxC;QACgB,yBAAoB,GAApB,oBAAoB,CAAqC;QACzD,mBAAc,GAAd,cAAc,CAAuB;QAEtD,IAAI,CAAC,aAAa,GAAG,IAAI,yBAAyB,CAAC,kBAAkB,EAAE,CAAC;QACxE,IAAI,CAAC,mBAAmB,GAAG,IAAI,6BAAmB,CAOhD,IAAI,EAAE,oBAAoB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC,oBAAoB,GAAG,IAAI,8BAAoB,CAClD,uBAAuB,EACvB,oBAAoB,CAAC,mBAAmB,EACxC,yBAAyB,CAAC,WAAW,EACrC,IAAI,CAAC,aAAa,EAClB,yBAAyB,CAAC,kBAAkB,IAAI,EAAE,EAClD,IAAA,mFAAwC,EACtC,yBAAyB,CAAC,gBAAgB,IAAI,EAAE,EAChD,uBAAuB,CAAC,sBAAsB,IAAI,EAAE,CACrD,EACD,IAAI,CAAC,mBAAmB,EACxB,oBAAoB,CAAC,eAAe,EACpC,cAAc,CACf,CAAC;IACJ,CAAC;IAED,gBAAgB;QAQd,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,iBAAiB;QAQf,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF;AA1GD,kCA0GC"}
|
|
@@ -81,6 +81,7 @@ export default class EntityCompanionProvider {
|
|
|
81
81
|
readonly metricsAdapter: IEntityMetricsAdapter;
|
|
82
82
|
private databaseAdapterFlavors;
|
|
83
83
|
private cacheAdapterFlavors;
|
|
84
|
+
readonly globalMutationTriggers: EntityMutationTriggerConfiguration<any, any, any, any, any>;
|
|
84
85
|
private readonly companionDefinitionMap;
|
|
85
86
|
private readonly companionMap;
|
|
86
87
|
private readonly tableDataCoordinatorMap;
|
|
@@ -89,8 +90,9 @@ export default class EntityCompanionProvider {
|
|
|
89
90
|
* @param metricsAdapter - An IEntityMetricsAdapter for collecting metrics on this instance
|
|
90
91
|
* @param databaseAdapterFlavors - Database adapter configurations for this instance
|
|
91
92
|
* @param cacheAdapterFlavors - Cache adapter configurations for this instance
|
|
93
|
+
* @param globalMutationTriggers - Optional set of EntityMutationTrigger to run for all entity mutations systemwide.
|
|
92
94
|
*/
|
|
93
|
-
constructor(metricsAdapter: IEntityMetricsAdapter, databaseAdapterFlavors: ReadonlyMap<DatabaseAdapterFlavor, DatabaseAdapterFlavorDefinition>, cacheAdapterFlavors: ReadonlyMap<CacheAdapterFlavor, CacheAdapterFlavorDefinition>);
|
|
95
|
+
constructor(metricsAdapter: IEntityMetricsAdapter, databaseAdapterFlavors: ReadonlyMap<DatabaseAdapterFlavor, DatabaseAdapterFlavorDefinition>, cacheAdapterFlavors: ReadonlyMap<CacheAdapterFlavor, CacheAdapterFlavorDefinition>, globalMutationTriggers?: EntityMutationTriggerConfiguration<any, any, any, any, any>);
|
|
94
96
|
/**
|
|
95
97
|
* Get the entity companion for specified entity. If not already computed and cached, the entity
|
|
96
98
|
* companion is constructed using the configuration provided by the factory.
|
|
@@ -17,19 +17,25 @@ const maps_1 = require("./utils/collections/maps");
|
|
|
17
17
|
* EntityCompanion for each type of Entity.
|
|
18
18
|
*/
|
|
19
19
|
class EntityCompanionProvider {
|
|
20
|
+
metricsAdapter;
|
|
21
|
+
databaseAdapterFlavors;
|
|
22
|
+
cacheAdapterFlavors;
|
|
23
|
+
globalMutationTriggers;
|
|
24
|
+
companionDefinitionMap = new Map();
|
|
25
|
+
companionMap = new Map();
|
|
26
|
+
tableDataCoordinatorMap = new Map();
|
|
20
27
|
/**
|
|
21
28
|
* Instantiate an Entity framework.
|
|
22
29
|
* @param metricsAdapter - An IEntityMetricsAdapter for collecting metrics on this instance
|
|
23
30
|
* @param databaseAdapterFlavors - Database adapter configurations for this instance
|
|
24
31
|
* @param cacheAdapterFlavors - Cache adapter configurations for this instance
|
|
32
|
+
* @param globalMutationTriggers - Optional set of EntityMutationTrigger to run for all entity mutations systemwide.
|
|
25
33
|
*/
|
|
26
|
-
constructor(metricsAdapter, databaseAdapterFlavors, cacheAdapterFlavors) {
|
|
34
|
+
constructor(metricsAdapter, databaseAdapterFlavors, cacheAdapterFlavors, globalMutationTriggers = {}) {
|
|
27
35
|
this.metricsAdapter = metricsAdapter;
|
|
28
36
|
this.databaseAdapterFlavors = databaseAdapterFlavors;
|
|
29
37
|
this.cacheAdapterFlavors = cacheAdapterFlavors;
|
|
30
|
-
this.
|
|
31
|
-
this.companionMap = new Map();
|
|
32
|
-
this.tableDataCoordinatorMap = new Map();
|
|
38
|
+
this.globalMutationTriggers = globalMutationTriggers;
|
|
33
39
|
}
|
|
34
40
|
/**
|
|
35
41
|
* Get the entity companion for specified entity. If not already computed and cached, the entity
|
|
@@ -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;
|
|
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;IACR;IAIA;IACC;IAvBM,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,EAC7C,sBAGP,EACO,mBAAkF,EACjF,yBAML,EAAE;QAZU,mBAAc,GAAd,cAAc,CAAuB;QAC7C,2BAAsB,GAAtB,sBAAsB,CAG7B;QACO,wBAAmB,GAAnB,mBAAmB,CAA+D;QACjF,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,CACtC,mBAAiD,EACjD,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;AA5HD,0CA4HC"}
|
|
@@ -5,7 +5,7 @@ import { EntityFieldDefinition } from './EntityFieldDefinition';
|
|
|
5
5
|
* The data storage configuration for a type of Entity. Contains information relating to IDs,
|
|
6
6
|
* cachable fields, field mappings, and types of cache and database adapter.
|
|
7
7
|
*/
|
|
8
|
-
export default class EntityConfiguration<TFields
|
|
8
|
+
export default class EntityConfiguration<TFields extends Record<string, any>> {
|
|
9
9
|
readonly idField: keyof TFields;
|
|
10
10
|
readonly tableName: string;
|
|
11
11
|
readonly cacheableKeys: ReadonlySet<keyof TFields>;
|
|
@@ -47,6 +47,7 @@ export default class EntityConfiguration<TFields> {
|
|
|
47
47
|
*/
|
|
48
48
|
cacheAdapterFlavor: CacheAdapterFlavor;
|
|
49
49
|
});
|
|
50
|
+
private static validateSchema;
|
|
50
51
|
private static computeCacheableKeys;
|
|
51
52
|
private static computeEntityToDBFieldsKeyMapping;
|
|
52
53
|
}
|
|
@@ -6,6 +6,16 @@ const maps_1 = require("./utils/collections/maps");
|
|
|
6
6
|
* cachable fields, field mappings, and types of cache and database adapter.
|
|
7
7
|
*/
|
|
8
8
|
class EntityConfiguration {
|
|
9
|
+
idField;
|
|
10
|
+
tableName;
|
|
11
|
+
cacheableKeys;
|
|
12
|
+
cacheKeyVersion;
|
|
13
|
+
inboundEdges;
|
|
14
|
+
schema;
|
|
15
|
+
entityToDBFieldsKeyMapping;
|
|
16
|
+
dbToEntityFieldsKeyMapping;
|
|
17
|
+
databaseAdapterFlavor;
|
|
18
|
+
cacheAdapterFlavor;
|
|
9
19
|
constructor({ idField, tableName, schema, inboundEdges = [], cacheKeyVersion = 0, databaseAdapterFlavor, cacheAdapterFlavor, }) {
|
|
10
20
|
this.idField = idField;
|
|
11
21
|
this.tableName = tableName;
|
|
@@ -15,12 +25,20 @@ class EntityConfiguration {
|
|
|
15
25
|
this.inboundEdges = inboundEdges;
|
|
16
26
|
// external schema is a Record to typecheck that all fields have FieldDefinitions,
|
|
17
27
|
// but internally the most useful representation is a map for lookups
|
|
18
|
-
|
|
28
|
+
EntityConfiguration.validateSchema(schema);
|
|
19
29
|
this.schema = new Map(Object.entries(schema));
|
|
20
30
|
this.cacheableKeys = EntityConfiguration.computeCacheableKeys(this.schema);
|
|
21
31
|
this.entityToDBFieldsKeyMapping = EntityConfiguration.computeEntityToDBFieldsKeyMapping(this.schema);
|
|
22
32
|
this.dbToEntityFieldsKeyMapping = (0, maps_1.invertMap)(this.entityToDBFieldsKeyMapping);
|
|
23
33
|
}
|
|
34
|
+
static validateSchema(schema) {
|
|
35
|
+
const disallowedFieldsKeys = Object.getOwnPropertyNames(Object.prototype);
|
|
36
|
+
for (const disallowedFieldsKey of disallowedFieldsKeys) {
|
|
37
|
+
if (Object.hasOwn(schema, disallowedFieldsKey)) {
|
|
38
|
+
throw new Error(`Entity field name not allowed to prevent conflicts with standard Object prototype fields: ${disallowedFieldsKey}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
24
42
|
static computeCacheableKeys(schema) {
|
|
25
43
|
return (0, maps_1.reduceMap)(schema, (acc, v, k) => {
|
|
26
44
|
if (v.cache) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityConfiguration.js","sourceRoot":"","sources":["../src/EntityConfiguration.ts"],"names":[],"mappings":";;AAGA,mDAAwE;AAExE;;;GAGG;AACH,MAAqB,mBAAmB;
|
|
1
|
+
{"version":3,"file":"EntityConfiguration.js","sourceRoot":"","sources":["../src/EntityConfiguration.ts"],"names":[],"mappings":";;AAGA,mDAAwE;AAExE;;;GAGG;AACH,MAAqB,mBAAmB;IAC7B,OAAO,CAAgB;IACvB,SAAS,CAAS;IAClB,aAAa,CAA6B;IAC1C,eAAe,CAAS;IAExB,YAAY,CAA+C;IAC3D,MAAM,CAAyD;IAC/D,0BAA0B,CAAqC;IAC/D,0BAA0B,CAAqC;IAE/D,qBAAqB,CAAwB;IAC7C,kBAAkB,CAAqB;IAEhD,YAAY,EACV,OAAO,EACP,SAAS,EACT,MAAM,EACN,YAAY,GAAG,EAAE,EACjB,eAAe,GAAG,CAAC,EACnB,qBAAqB,EACrB,kBAAkB,GAqCnB;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,kFAAkF;QAClF,qEAAqE;QACrE,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAE9C,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,0BAA0B,GAAG,mBAAmB,CAAC,iCAAiC,CACrF,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,CAAC,0BAA0B,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC/E,CAAC;IAEO,MAAM,CAAC,cAAc,CAAsC,MAAe;QAChF,MAAM,oBAAoB,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1E,KAAK,MAAM,mBAAmB,IAAI,oBAAoB,EAAE,CAAC;YACvD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CACb,6FAA6F,mBAAmB,EAAE,CACnH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,MAA8D;QAE9D,OAAO,IAAA,gBAAS,EACd,MAAM,EACN,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gBACZ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACb,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EACD,IAAI,GAAG,EAAiB,CACzB,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,iCAAiC,CAC9C,MAA8D;QAE9D,OAAO,IAAA,aAAM,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;CACF;AA7GD,sCA6GC"}
|
|
@@ -76,7 +76,7 @@ export interface TableQuerySelectionModifiersWithOrderByRaw extends TableQuerySe
|
|
|
76
76
|
* handles all entity field transformation. Subclasses are responsible for
|
|
77
77
|
* implementing database-specific logic for a type of database.
|
|
78
78
|
*/
|
|
79
|
-
export default abstract class EntityDatabaseAdapter<TFields
|
|
79
|
+
export default abstract class EntityDatabaseAdapter<TFields extends Record<string, any>> {
|
|
80
80
|
private readonly entityConfiguration;
|
|
81
81
|
private readonly fieldTransformerMap;
|
|
82
82
|
constructor(entityConfiguration: EntityConfiguration<TFields>);
|
|
@@ -94,7 +94,7 @@ export default abstract class EntityDatabaseAdapter<TFields> {
|
|
|
94
94
|
* @param fieldValues - fieldName field values being queried
|
|
95
95
|
* @returns map from fieldValue to objects that match the query for that fieldValue
|
|
96
96
|
*/
|
|
97
|
-
fetchManyWhereAsync<K extends keyof TFields>(queryContext: EntityQueryContext,
|
|
97
|
+
fetchManyWhereAsync<K extends keyof TFields>(queryContext: EntityQueryContext, fieldName: K, fieldValues: readonly NonNullable<TFields[K]>[]): Promise<ReadonlyMap<NonNullable<TFields[K]>, readonly Readonly<TFields>[]>>;
|
|
98
98
|
protected abstract fetchManyWhereInternalAsync(queryInterface: any, tableName: string, tableField: string, tableValues: readonly any[]): Promise<object[]>;
|
|
99
99
|
/**
|
|
100
100
|
* Fetch many objects matching the conjunction of where clauses constructed from
|
|
@@ -18,6 +18,8 @@ var OrderByOrdering;
|
|
|
18
18
|
* implementing database-specific logic for a type of database.
|
|
19
19
|
*/
|
|
20
20
|
class EntityDatabaseAdapter {
|
|
21
|
+
entityConfiguration;
|
|
22
|
+
fieldTransformerMap;
|
|
21
23
|
constructor(entityConfiguration) {
|
|
22
24
|
this.entityConfiguration = entityConfiguration;
|
|
23
25
|
this.fieldTransformerMap = this.getFieldTransformerMap();
|
|
@@ -30,8 +32,8 @@ class EntityDatabaseAdapter {
|
|
|
30
32
|
* @param fieldValues - fieldName field values being queried
|
|
31
33
|
* @returns map from fieldValue to objects that match the query for that fieldValue
|
|
32
34
|
*/
|
|
33
|
-
async fetchManyWhereAsync(queryContext,
|
|
34
|
-
const fieldColumn = (0, EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField)(this.entityConfiguration,
|
|
35
|
+
async fetchManyWhereAsync(queryContext, fieldName, fieldValues) {
|
|
36
|
+
const fieldColumn = (0, EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField)(this.entityConfiguration, fieldName);
|
|
35
37
|
const results = await this.fetchManyWhereInternalAsync(queryContext.getQueryInterface(), this.entityConfiguration.tableName, fieldColumn, fieldValues);
|
|
36
38
|
const objects = results.map((result) => (0, EntityFieldTransformationUtils_1.transformDatabaseObjectToFields)(this.entityConfiguration, this.fieldTransformerMap, result));
|
|
37
39
|
const objectMap = new Map();
|
|
@@ -39,7 +41,7 @@ class EntityDatabaseAdapter {
|
|
|
39
41
|
objectMap.set(fieldValue, []);
|
|
40
42
|
}
|
|
41
43
|
objects.forEach((object) => {
|
|
42
|
-
const objectFieldValue = object[
|
|
44
|
+
const objectFieldValue = object[fieldName];
|
|
43
45
|
objectMap.get(objectFieldValue).push(object);
|
|
44
46
|
});
|
|
45
47
|
return objectMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityDatabaseAdapter.js","sourceRoot":"","sources":["../src/EntityDatabaseAdapter.ts"],"names":[],"mappings":";;;AAEA,8FAKmD;AAgCnD,SAAgB,mCAAmC,CAIjD,SAA6C;IAE7C,OAAQ,SAA2D,CAAC,UAAU,KAAK,SAAS,CAAC;AAC/F,CAAC;AAPD,kFAOC;AAYD,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;AACrB,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AAgDD;;;;;GAKG;AACH,MAA8B,qBAAqB;
|
|
1
|
+
{"version":3,"file":"EntityDatabaseAdapter.js","sourceRoot":"","sources":["../src/EntityDatabaseAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,25 @@ export interface EntityAssociationDefinition<TViewerContext extends ViewerContex
|
|
|
62
62
|
*/
|
|
63
63
|
edgeDeletionBehavior: EntityEdgeDeletionBehavior;
|
|
64
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Options for EntityFieldDefinition
|
|
67
|
+
*/
|
|
68
|
+
export interface EntityFieldDefinitionOptions {
|
|
69
|
+
/**
|
|
70
|
+
* Column name in the database.
|
|
71
|
+
*/
|
|
72
|
+
columnName: string;
|
|
73
|
+
/**
|
|
74
|
+
* Whether or not to cache loaded instances of the entity by this field. The column name is
|
|
75
|
+
* used to derive a cache key for the cache entry. If true, this column must be able uniquely
|
|
76
|
+
* identify the entity.
|
|
77
|
+
*/
|
|
78
|
+
cache?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Defines the association behavior for an entity that this column references.
|
|
81
|
+
*/
|
|
82
|
+
association?: EntityAssociationDefinition<any, any, any, any, any, any>;
|
|
83
|
+
}
|
|
65
84
|
/**
|
|
66
85
|
* Definition for a field referencing a column in the underlying database. Specifies things like
|
|
67
86
|
* cache behavior and associations, and handles input validation.
|
|
@@ -72,17 +91,9 @@ export declare abstract class EntityFieldDefinition<T> {
|
|
|
72
91
|
readonly association: EntityAssociationDefinition<any, any, any, any, any, any> | undefined;
|
|
73
92
|
/**
|
|
74
93
|
*
|
|
75
|
-
* @param
|
|
76
|
-
* @param cache - Whether or not to cache loaded instances of the entity by this field. The column name is
|
|
77
|
-
* used to derive a cache key for the cache entry. If true, this column must be able uniquely
|
|
78
|
-
* identify the entity.
|
|
79
|
-
* @param association - Defines the association behavior for an entity that this column references.
|
|
94
|
+
* @param options - options for this field definition
|
|
80
95
|
*/
|
|
81
|
-
constructor(
|
|
82
|
-
columnName: string;
|
|
83
|
-
cache?: boolean;
|
|
84
|
-
association?: EntityAssociationDefinition<any, any, any, any, any, any>;
|
|
85
|
-
});
|
|
96
|
+
constructor(options: EntityFieldDefinitionOptions);
|
|
86
97
|
/**
|
|
87
98
|
* Validates input value for a field of this type. Null and undefined are considered valid by default. This is used for things like:
|
|
88
99
|
* - EntityLoader.loadByFieldValue - to ensure the value being loaded by is a valid value
|
|
@@ -36,18 +36,17 @@ var EntityEdgeDeletionBehavior;
|
|
|
36
36
|
* cache behavior and associations, and handles input validation.
|
|
37
37
|
*/
|
|
38
38
|
class EntityFieldDefinition {
|
|
39
|
+
columnName;
|
|
40
|
+
cache;
|
|
41
|
+
association;
|
|
39
42
|
/**
|
|
40
43
|
*
|
|
41
|
-
* @param
|
|
42
|
-
* @param cache - Whether or not to cache loaded instances of the entity by this field. The column name is
|
|
43
|
-
* used to derive a cache key for the cache entry. If true, this column must be able uniquely
|
|
44
|
-
* identify the entity.
|
|
45
|
-
* @param association - Defines the association behavior for an entity that this column references.
|
|
44
|
+
* @param options - options for this field definition
|
|
46
45
|
*/
|
|
47
|
-
constructor(
|
|
48
|
-
this.columnName = columnName;
|
|
49
|
-
this.cache = cache;
|
|
50
|
-
this.association = association;
|
|
46
|
+
constructor(options) {
|
|
47
|
+
this.columnName = options.columnName;
|
|
48
|
+
this.cache = options.cache ?? false;
|
|
49
|
+
this.association = options.association;
|
|
51
50
|
}
|
|
52
51
|
/**
|
|
53
52
|
* Validates input value for a field of this type. Null and undefined are considered valid by default. This is used for things like:
|
|
@@ -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;
|
|
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;AAmFD;;;GAGG;AACH,MAAsB,qBAAqB;IAChC,UAAU,CAAS;IACnB,KAAK,CAAU;IACf,WAAW,CAAwE;IAC5F;;;OAGG;IACH,YAAY,OAAqC;QAC/C,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;AA3BD,sDA2BC"}
|
package/build/EntityFields.d.ts
CHANGED
|
@@ -57,3 +57,13 @@ export declare class JSONObjectField extends EntityFieldDefinition<object> {
|
|
|
57
57
|
export declare class EnumField extends EntityFieldDefinition<string | number> {
|
|
58
58
|
protected validateInputValueInternal(value: string | number): boolean;
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* EntityFieldDefinition for a enum column with a strict typescript enum type.
|
|
62
|
+
*/
|
|
63
|
+
export declare class StrictEnumField<T extends object> extends EnumField {
|
|
64
|
+
private readonly enum;
|
|
65
|
+
constructor(options: ConstructorParameters<typeof EnumField>[0] & {
|
|
66
|
+
enum: T;
|
|
67
|
+
});
|
|
68
|
+
protected validateInputValueInternal(value: string | number): boolean;
|
|
69
|
+
}
|
package/build/EntityFields.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EnumField = exports.JSONObjectField = exports.StringArrayField = exports.FloatField = exports.IntField = exports.BooleanField = exports.DateField = exports.UUIDField = exports.StringField = void 0;
|
|
3
|
+
exports.StrictEnumField = exports.EnumField = exports.JSONObjectField = exports.StringArrayField = exports.FloatField = exports.IntField = exports.BooleanField = exports.DateField = exports.UUIDField = exports.StringField = void 0;
|
|
4
4
|
const EntityFieldDefinition_1 = require("./EntityFieldDefinition");
|
|
5
5
|
// Use our own regex since the `uuid` package doesn't support validating UUIDv6/7/8 yet
|
|
6
6
|
const UUID_REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;
|
|
@@ -89,4 +89,18 @@ class EnumField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
exports.EnumField = EnumField;
|
|
92
|
+
/**
|
|
93
|
+
* EntityFieldDefinition for a enum column with a strict typescript enum type.
|
|
94
|
+
*/
|
|
95
|
+
class StrictEnumField extends EnumField {
|
|
96
|
+
enum;
|
|
97
|
+
constructor(options) {
|
|
98
|
+
super(options);
|
|
99
|
+
this.enum = options.enum;
|
|
100
|
+
}
|
|
101
|
+
validateInputValueInternal(value) {
|
|
102
|
+
return super.validateInputValueInternal(value) && Object.values(this.enum).includes(value);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.StrictEnumField = StrictEnumField;
|
|
92
106
|
//# sourceMappingURL=EntityFields.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityFields.js","sourceRoot":"","sources":["../src/EntityFields.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAEhE,uFAAuF;AACvF,MAAM,UAAU,GACd,0JAA0J,CAAC;AAE7J;;GAEG;AACH,MAAa,WAAY,SAAQ,6CAA6B;IAClD,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;CACF;AAJD,kCAIC;AAED;;;GAGG;AACH,MAAa,SAAU,SAAQ,WAAW;IACrB,0BAA0B,CAAC,KAAa;QACzD,OAAO,KAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF;AAJD,8BAIC;AAED;;GAEG;AACH,MAAa,SAAU,SAAQ,6CAA2B;IAC9C,0BAA0B,CAAC,KAAW;QAC9C,OAAO,KAAK,YAAY,IAAI,CAAC;IAC/B,CAAC;CACF;AAJD,8BAIC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,6CAA8B;IACpD,0BAA0B,CAAC,KAAc;QACjD,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;IACpC,CAAC;CACF;AAJD,oCAIC;AAED;;;GAGG;AACH,MAAa,QAAS,SAAQ,6CAA6B;IAC/C,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;CACF;AAJD,4BAIC;AAED;;;GAGG;AACH,MAAa,UAAW,SAAQ,6CAA6B;IACjD,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;CACF;AAJD,gCAIC;AAED;;;GAGG;AACH,MAAa,gBAAiB,SAAQ,6CAA+B;IACzD,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;AAJD,4CAIC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,6CAA6B;IACtD,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;CACF;AAJD,0CAIC;AAED;;GAEG;AACH,MAAa,SAAU,SAAQ,6CAAsC;IACzD,0BAA0B,CAAC,KAAsB;QACzD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;IAChE,CAAC;CACF;AAJD,8BAIC"}
|
|
1
|
+
{"version":3,"file":"EntityFields.js","sourceRoot":"","sources":["../src/EntityFields.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAEhE,uFAAuF;AACvF,MAAM,UAAU,GACd,0JAA0J,CAAC;AAE7J;;GAEG;AACH,MAAa,WAAY,SAAQ,6CAA6B;IAClD,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;CACF;AAJD,kCAIC;AAED;;;GAGG;AACH,MAAa,SAAU,SAAQ,WAAW;IACrB,0BAA0B,CAAC,KAAa;QACzD,OAAO,KAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF;AAJD,8BAIC;AAED;;GAEG;AACH,MAAa,SAAU,SAAQ,6CAA2B;IAC9C,0BAA0B,CAAC,KAAW;QAC9C,OAAO,KAAK,YAAY,IAAI,CAAC;IAC/B,CAAC;CACF;AAJD,8BAIC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,6CAA8B;IACpD,0BAA0B,CAAC,KAAc;QACjD,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;IACpC,CAAC;CACF;AAJD,oCAIC;AAED;;;GAGG;AACH,MAAa,QAAS,SAAQ,6CAA6B;IAC/C,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;CACF;AAJD,4BAIC;AAED;;;GAGG;AACH,MAAa,UAAW,SAAQ,6CAA6B;IACjD,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;CACF;AAJD,gCAIC;AAED;;;GAGG;AACH,MAAa,gBAAiB,SAAQ,6CAA+B;IACzD,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;AAJD,4CAIC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,6CAA6B;IACtD,0BAA0B,CAAC,KAAa;QAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;CACF;AAJD,0CAIC;AAED;;GAEG;AACH,MAAa,SAAU,SAAQ,6CAAsC;IACzD,0BAA0B,CAAC,KAAsB;QACzD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;IAChE,CAAC;CACF;AAJD,8BAIC;AAED;;GAEG;AACH,MAAa,eAAkC,SAAQ,SAAS;IAC7C,IAAI,CAAI;IACzB,YAAY,OAAiE;QAC3E,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;AAVD,0CAUC"}
|
package/build/EntityLoader.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import AuthorizationResultBasedEntityLoader from './AuthorizationResultBasedEntityLoader';
|
|
2
2
|
import EnforcingEntityLoader from './EnforcingEntityLoader';
|
|
3
3
|
import { IEntityClass } from './Entity';
|
|
4
4
|
import EntityConfiguration from './EntityConfiguration';
|
|
5
|
-
import
|
|
5
|
+
import EntityLoaderUtils from './EntityLoaderUtils';
|
|
6
6
|
import EntityPrivacyPolicy, { EntityPrivacyPolicyEvaluationContext } from './EntityPrivacyPolicy';
|
|
7
7
|
import { EntityQueryContext } from './EntityQueryContext';
|
|
8
8
|
import ReadonlyEntity from './ReadonlyEntity';
|
|
@@ -23,136 +23,23 @@ export default class EntityLoader<TFields extends object, TID extends NonNullabl
|
|
|
23
23
|
private readonly privacyPolicy;
|
|
24
24
|
private readonly dataManager;
|
|
25
25
|
protected readonly metricsAdapter: IEntityMetricsAdapter;
|
|
26
|
-
|
|
26
|
+
private readonly utilsPrivate;
|
|
27
|
+
constructor(viewerContext: TViewerContext, queryContext: EntityQueryContext, privacyPolicyEvaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TID, TViewerContext, TEntity, TSelectedFields>, entityConfiguration: EntityConfiguration<TFields>, entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, entitySelectedFields: TSelectedFields[] | undefined, privacyPolicy: TPrivacyPolicy, dataManager: EntityDataManager<TFields>, metricsAdapter: IEntityMetricsAdapter);
|
|
27
28
|
/**
|
|
28
|
-
* Enforcing
|
|
29
|
+
* Enforcing entity loader. All loads through this loader are
|
|
29
30
|
* guaranteed to be the values of successful results (or null for some loader methods),
|
|
30
31
|
* and will throw otherwise.
|
|
31
32
|
*/
|
|
32
33
|
enforcing(): EnforcingEntityLoader<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
33
34
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* @returns map from fieldValue to entity results that match the query for that fieldValue,
|
|
38
|
-
* where result errors can be UnauthorizedError
|
|
35
|
+
* Authorization-result-based entity loader. All loads through this
|
|
36
|
+
* loader are are results (or null for some loader methods), where an unsuccessful result
|
|
37
|
+
* means an authorization error or entity construction error occurred. Other errors are thrown.
|
|
39
38
|
*/
|
|
40
|
-
|
|
39
|
+
withAuthorizationResults(): AuthorizationResultBasedEntityLoader<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
41
40
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* @param fieldValue - fieldName field value being queried
|
|
45
|
-
* @returns array of entity results that match the query for fieldValue, where result error can be UnauthorizedError
|
|
41
|
+
* Entity loader utilities for things like cache invalidation, entity construction, and authorization.
|
|
42
|
+
* Calling into these should only be necessary in rare cases.
|
|
46
43
|
*/
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Load an entity where fieldName equals fieldValue, or null if no entity exists.
|
|
50
|
-
* @param uniqueFieldName - entity field being queried
|
|
51
|
-
* @param fieldValue - uniqueFieldName field value being queried
|
|
52
|
-
* @returns entity result where uniqueFieldName equals fieldValue, or null if no entity matches the condition.
|
|
53
|
-
* @throws when multiple entities match the condition
|
|
54
|
-
*/
|
|
55
|
-
loadByFieldEqualingAsync<N extends keyof Pick<TFields, TSelectedFields>>(uniqueFieldName: N, fieldValue: NonNullable<TFields[N]>): Promise<Result<TEntity> | null>;
|
|
56
|
-
/**
|
|
57
|
-
* Loads an entity by a specified ID.
|
|
58
|
-
* @param id - ID of the entity
|
|
59
|
-
* @returns entity result for matching ID, where result error can be UnauthorizedError or EntityNotFoundError.
|
|
60
|
-
*/
|
|
61
|
-
loadByIDAsync(id: TID): Promise<Result<TEntity>>;
|
|
62
|
-
/**
|
|
63
|
-
* Load an entity by a specified ID, or return null if non-existent.
|
|
64
|
-
* @param id - ID of the entity
|
|
65
|
-
* @returns entity result for matching ID, or null if no entity exists for ID.
|
|
66
|
-
*/
|
|
67
|
-
loadByIDNullableAsync(id: TID): Promise<Result<TEntity> | null>;
|
|
68
|
-
/**
|
|
69
|
-
* Loads many entities for a list of IDs.
|
|
70
|
-
* @param viewerContext - viewer context of loading user
|
|
71
|
-
* @param ids - IDs of the entities to load
|
|
72
|
-
* @returns map from ID to corresponding entity result, where result error can be UnauthorizedError or EntityNotFoundError.
|
|
73
|
-
*/
|
|
74
|
-
loadManyByIDsAsync(ids: readonly TID[]): Promise<ReadonlyMap<TID, Result<TEntity>>>;
|
|
75
|
-
/**
|
|
76
|
-
* Loads many entities for a list of IDs, returning null for any IDs that are non-existent.
|
|
77
|
-
* @param ids - IDs of the entities to load
|
|
78
|
-
* @returns map from ID to nullable corresponding entity result, where result error can be UnauthorizedError or EntityNotFoundError.
|
|
79
|
-
*/
|
|
80
|
-
loadManyByIDsNullableAsync(ids: readonly TID[]): Promise<ReadonlyMap<TID, Result<TEntity> | null>>;
|
|
81
|
-
/**
|
|
82
|
-
* Loads the first entity matching the selection constructed from the conjunction of specified
|
|
83
|
-
* operands, or null if no matching entity exists. Entities loaded using this method are not
|
|
84
|
-
* batched or cached.
|
|
85
|
-
*
|
|
86
|
-
* This is a convenience method for {@link loadManyByFieldEqualityConjunctionAsync}. However, the
|
|
87
|
-
* `orderBy` option must be specified to define what "first" means. If ordering doesn't matter,
|
|
88
|
-
* explicitly pass in an empty array.
|
|
89
|
-
*
|
|
90
|
-
* @param fieldEqualityOperands - list of field equality selection operand specifications
|
|
91
|
-
* @param querySelectionModifiers - orderBy and optional offset for the query
|
|
92
|
-
* @returns the first entity results that matches the query, where result error can be
|
|
93
|
-
* UnauthorizedError
|
|
94
|
-
*/
|
|
95
|
-
loadFirstByFieldEqualityConjunctionAsync<N extends keyof Pick<TFields, TSelectedFields>>(fieldEqualityOperands: FieldEqualityCondition<TFields, N>[], querySelectionModifiers: Omit<QuerySelectionModifiers<TFields>, 'limit'> & Required<Pick<QuerySelectionModifiers<TFields>, 'orderBy'>>): Promise<Result<TEntity> | null>;
|
|
96
|
-
/**
|
|
97
|
-
* Loads many entities matching the selection constructed from the conjunction of specified operands.
|
|
98
|
-
* Entities loaded using this method are not batched or cached.
|
|
99
|
-
*
|
|
100
|
-
* @example
|
|
101
|
-
* fieldEqualityOperands:
|
|
102
|
-
* `[{fieldName: 'hello', fieldValue: 1}, {fieldName: 'world', fieldValues: [2, 3]}]`
|
|
103
|
-
* Entities returned with a SQL EntityDatabaseAdapter:
|
|
104
|
-
* `WHERE hello = 1 AND world = ANY({2, 3})`
|
|
105
|
-
*
|
|
106
|
-
* @param fieldEqualityOperands - list of field equality selection operand specifications
|
|
107
|
-
* @param querySelectionModifiers - limit, offset, and orderBy for the query
|
|
108
|
-
* @returns array of entity results that match the query, where result error can be UnauthorizedError
|
|
109
|
-
*/
|
|
110
|
-
loadManyByFieldEqualityConjunctionAsync<N extends keyof Pick<TFields, TSelectedFields>>(fieldEqualityOperands: FieldEqualityCondition<TFields, N>[], querySelectionModifiers?: QuerySelectionModifiers<TFields>): Promise<readonly Result<TEntity>[]>;
|
|
111
|
-
/**
|
|
112
|
-
* Loads many entities matching the raw WHERE clause. Corresponds to the knex `whereRaw` argument format.
|
|
113
|
-
*
|
|
114
|
-
* @remarks
|
|
115
|
-
* Important notes:
|
|
116
|
-
* - Fields in clause are database column names instead of transformed entity field names.
|
|
117
|
-
* - Entities loaded using this method are not batched or cached.
|
|
118
|
-
* - Not all database adapters implement the ability to execute this method of fetching entities.
|
|
119
|
-
*
|
|
120
|
-
* @example
|
|
121
|
-
* rawWhereClause: `id = ?`
|
|
122
|
-
* bindings: `[1]`
|
|
123
|
-
* Entites returned `WHERE id = 1`
|
|
124
|
-
*
|
|
125
|
-
* http://knexjs.org/#Builder-whereRaw
|
|
126
|
-
* http://knexjs.org/#Raw-Bindings
|
|
127
|
-
*
|
|
128
|
-
* @param rawWhereClause - parameterized SQL WHERE clause with positional binding placeholders or named binding placeholders
|
|
129
|
-
* @param bindings - array of positional bindings or object of named bindings
|
|
130
|
-
* @param querySelectionModifiers - limit, offset, orderBy, and orderByRaw for the query
|
|
131
|
-
* @returns array of entity results that match the query, where result error can be UnauthorizedError
|
|
132
|
-
* @throws Error when rawWhereClause or bindings are invalid
|
|
133
|
-
*
|
|
134
|
-
* @deprecated prefer caching loaders
|
|
135
|
-
*/
|
|
136
|
-
loadManyByRawWhereClauseAsync(rawWhereClause: string, bindings: any[] | object, querySelectionModifiers?: QuerySelectionModifiersWithOrderByRaw<TFields>): Promise<readonly Result<TEntity>[]>;
|
|
137
|
-
/**
|
|
138
|
-
* Invalidate all caches for an entity's fields. Exposed primarily for internal use by EntityMutator.
|
|
139
|
-
* @param objectFields - entity data object to be invalidated
|
|
140
|
-
*/
|
|
141
|
-
invalidateFieldsAsync(objectFields: Readonly<TFields>): Promise<void>;
|
|
142
|
-
/**
|
|
143
|
-
* Invalidate all caches for an entity. One potential use case would be to keep the entity
|
|
144
|
-
* framework in sync with changes made to data outside of the framework.
|
|
145
|
-
* @param entity - entity to be invalidated
|
|
146
|
-
*/
|
|
147
|
-
invalidateEntityAsync(entity: TEntity): Promise<void>;
|
|
148
|
-
private tryConstructEntities;
|
|
149
|
-
constructEntity(fieldsObject: TFields): TEntity;
|
|
150
|
-
/**
|
|
151
|
-
* Construct and authorize entities from fields map, returning error results for entities that fail
|
|
152
|
-
* to construct or fail to authorize.
|
|
153
|
-
*
|
|
154
|
-
* @param map - map from an arbitrary key type to an array of entity field objects
|
|
155
|
-
*/
|
|
156
|
-
constructAndAuthorizeEntitiesAsync<K>(map: ReadonlyMap<K, readonly Readonly<TFields>[]>): Promise<ReadonlyMap<K, readonly Result<TEntity>[]>>;
|
|
157
|
-
private validateFieldValues;
|
|
44
|
+
utils(): EntityLoaderUtils<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>;
|
|
158
45
|
}
|