@expo/entity 0.46.0 → 0.48.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/src/AuthorizationResultBasedEntityMutator.d.ts +5 -3
- package/build/src/AuthorizationResultBasedEntityMutator.js +75 -37
- package/build/src/AuthorizationResultBasedEntityMutator.js.map +1 -1
- package/build/src/EntityDeleter.js +1 -1
- package/build/src/EntityDeleter.js.map +1 -1
- package/build/src/EntityFields.d.ts +7 -0
- package/build/src/EntityFields.js +11 -1
- package/build/src/EntityFields.js.map +1 -1
- package/build/src/EntityMutatorFactory.d.ts +3 -2
- package/build/src/EntityMutatorFactory.js +4 -4
- package/build/src/EntityMutatorFactory.js.map +1 -1
- package/build/src/EntityUpdater.js +1 -1
- package/build/src/EntityUpdater.js.map +1 -1
- package/build/src/ViewerScopedEntityMutatorFactory.d.ts +3 -2
- package/build/src/ViewerScopedEntityMutatorFactory.js +4 -4
- package/build/src/ViewerScopedEntityMutatorFactory.js.map +1 -1
- package/package.json +5 -2
- package/src/AuthorizationResultBasedEntityMutator.ts +63 -49
- package/src/EntityDeleter.ts +1 -1
- package/src/EntityFields.ts +13 -0
- package/src/EntityMutatorFactory.ts +5 -0
- package/src/EntityUpdater.ts +1 -1
- package/src/ViewerScopedEntityMutatorFactory.ts +5 -2
- package/src/__tests__/EntityFields-test.ts +7 -0
- package/src/__tests__/EntityMutator-test.ts +217 -16
- package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.d.ts +0 -1
- package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js +0 -240
- package/build/src/__tests__/AuthorizationResultBasedEntityAssociationLoader-test.js.map +0 -1
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.d.ts +0 -26
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js +0 -109
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.js.map +0 -1
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.d.ts +0 -1
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.js +0 -590
- package/build/src/__tests__/AuthorizationResultBasedEntityLoader-test.js.map +0 -1
- package/build/src/__tests__/ComposedCacheAdapter-test.d.ts +0 -1
- package/build/src/__tests__/ComposedCacheAdapter-test.js +0 -259
- package/build/src/__tests__/ComposedCacheAdapter-test.js.map +0 -1
- package/build/src/__tests__/ComposedSecondaryEntityCache-test.d.ts +0 -1
- package/build/src/__tests__/ComposedSecondaryEntityCache-test.js +0 -67
- package/build/src/__tests__/ComposedSecondaryEntityCache-test.js.map +0 -1
- package/build/src/__tests__/EnforcingEntityAssociationLoader-test.d.ts +0 -1
- package/build/src/__tests__/EnforcingEntityAssociationLoader-test.js +0 -113
- package/build/src/__tests__/EnforcingEntityAssociationLoader-test.js.map +0 -1
- package/build/src/__tests__/EnforcingEntityLoader-test.d.ts +0 -1
- package/build/src/__tests__/EnforcingEntityLoader-test.js +0 -316
- package/build/src/__tests__/EnforcingEntityLoader-test.js.map +0 -1
- package/build/src/__tests__/Entity-test.d.ts +0 -1
- package/build/src/__tests__/Entity-test.js +0 -92
- package/build/src/__tests__/Entity-test.js.map +0 -1
- package/build/src/__tests__/EntityAssociationLoader-test.d.ts +0 -1
- package/build/src/__tests__/EntityAssociationLoader-test.js +0 -28
- package/build/src/__tests__/EntityAssociationLoader-test.js.map +0 -1
- package/build/src/__tests__/EntityCommonUseCases-test.d.ts +0 -1
- package/build/src/__tests__/EntityCommonUseCases-test.js +0 -111
- package/build/src/__tests__/EntityCommonUseCases-test.js.map +0 -1
- package/build/src/__tests__/EntityCompanion-test.d.ts +0 -1
- package/build/src/__tests__/EntityCompanion-test.js +0 -42
- package/build/src/__tests__/EntityCompanion-test.js.map +0 -1
- package/build/src/__tests__/EntityCompanionProvider-test.d.ts +0 -1
- package/build/src/__tests__/EntityCompanionProvider-test.js +0 -53
- package/build/src/__tests__/EntityCompanionProvider-test.js.map +0 -1
- package/build/src/__tests__/EntityConfiguration-test.d.ts +0 -1
- package/build/src/__tests__/EntityConfiguration-test.js +0 -164
- package/build/src/__tests__/EntityConfiguration-test.js.map +0 -1
- package/build/src/__tests__/EntityDatabaseAdapter-test.d.ts +0 -1
- package/build/src/__tests__/EntityDatabaseAdapter-test.js +0 -189
- package/build/src/__tests__/EntityDatabaseAdapter-test.js.map +0 -1
- package/build/src/__tests__/EntityEdges-test.d.ts +0 -1
- package/build/src/__tests__/EntityEdges-test.js +0 -680
- package/build/src/__tests__/EntityEdges-test.js.map +0 -1
- package/build/src/__tests__/EntityFields-test.d.ts +0 -1
- package/build/src/__tests__/EntityFields-test.js +0 -61
- package/build/src/__tests__/EntityFields-test.js.map +0 -1
- package/build/src/__tests__/EntityLoader-test.d.ts +0 -1
- package/build/src/__tests__/EntityLoader-test.js +0 -34
- package/build/src/__tests__/EntityLoader-test.js.map +0 -1
- package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +0 -1
- package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.js +0 -71
- package/build/src/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +0 -1
- package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.d.ts +0 -1
- package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.js +0 -54
- package/build/src/__tests__/EntityMutator-SingleCompositeFieldCacheConsistency-test.js.map +0 -1
- package/build/src/__tests__/EntityMutator-test.d.ts +0 -1
- package/build/src/__tests__/EntityMutator-test.js +0 -721
- package/build/src/__tests__/EntityMutator-test.js.map +0 -1
- package/build/src/__tests__/EntityPrivacyPolicy-test.d.ts +0 -1
- package/build/src/__tests__/EntityPrivacyPolicy-test.js +0 -429
- package/build/src/__tests__/EntityPrivacyPolicy-test.js.map +0 -1
- package/build/src/__tests__/EntityQueryContext-test.d.ts +0 -1
- package/build/src/__tests__/EntityQueryContext-test.js +0 -181
- package/build/src/__tests__/EntityQueryContext-test.js.map +0 -1
- package/build/src/__tests__/EntitySecondaryCacheLoader-test.d.ts +0 -1
- package/build/src/__tests__/EntitySecondaryCacheLoader-test.js +0 -58
- package/build/src/__tests__/EntitySecondaryCacheLoader-test.js.map +0 -1
- package/build/src/__tests__/EntitySelfReferentialEdges-test.d.ts +0 -1
- package/build/src/__tests__/EntitySelfReferentialEdges-test.js +0 -196
- package/build/src/__tests__/EntitySelfReferentialEdges-test.js.map +0 -1
- package/build/src/__tests__/GenericEntityCacheAdapter-test.d.ts +0 -1
- package/build/src/__tests__/GenericEntityCacheAdapter-test.js +0 -95
- package/build/src/__tests__/GenericEntityCacheAdapter-test.js.map +0 -1
- package/build/src/__tests__/ReadonlyEntity-test.d.ts +0 -1
- package/build/src/__tests__/ReadonlyEntity-test.js +0 -209
- package/build/src/__tests__/ReadonlyEntity-test.js.map +0 -1
- package/build/src/__tests__/ViewerContext-test.d.ts +0 -1
- package/build/src/__tests__/ViewerContext-test.js +0 -28
- package/build/src/__tests__/ViewerContext-test.js.map +0 -1
- package/build/src/__tests__/ViewerScopedEntityCompanion-test.d.ts +0 -1
- package/build/src/__tests__/ViewerScopedEntityCompanion-test.js +0 -18
- package/build/src/__tests__/ViewerScopedEntityCompanion-test.js.map +0 -1
- package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.d.ts +0 -1
- package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.js +0 -18
- package/build/src/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +0 -1
- package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.d.ts +0 -1
- package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.js +0 -21
- package/build/src/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +0 -1
- package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.d.ts +0 -1
- package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.js +0 -20
- package/build/src/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +0 -1
- package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.d.ts +0 -1
- package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +0 -121
- package/build/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +0 -1
- package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.d.ts +0 -1
- package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +0 -119
- package/build/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +0 -1
- package/build/src/__tests__/entityUtils-test.d.ts +0 -1
- package/build/src/__tests__/entityUtils-test.js +0 -88
- package/build/src/__tests__/entityUtils-test.js.map +0 -1
- package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.d.ts +0 -1
- package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.js +0 -21
- package/build/src/errors/__tests__/EntityDatabaseAdapterError-test.js.map +0 -1
- package/build/src/internal/__tests__/CompositeFieldHolder-test.d.ts +0 -1
- package/build/src/internal/__tests__/CompositeFieldHolder-test.js +0 -25
- package/build/src/internal/__tests__/CompositeFieldHolder-test.js.map +0 -1
- package/build/src/internal/__tests__/CompositeFieldValueMap-test.d.ts +0 -1
- package/build/src/internal/__tests__/CompositeFieldValueMap-test.js +0 -40
- package/build/src/internal/__tests__/CompositeFieldValueMap-test.js.map +0 -1
- package/build/src/internal/__tests__/EntityDataManager-test.d.ts +0 -1
- package/build/src/internal/__tests__/EntityDataManager-test.js +0 -666
- package/build/src/internal/__tests__/EntityDataManager-test.js.map +0 -1
- package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.d.ts +0 -1
- package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.js +0 -135
- package/build/src/internal/__tests__/EntityFieldTransformationUtils-test.js.map +0 -1
- package/build/src/internal/__tests__/ReadThroughEntityCache-test.d.ts +0 -1
- package/build/src/internal/__tests__/ReadThroughEntityCache-test.js +0 -217
- package/build/src/internal/__tests__/ReadThroughEntityCache-test.js.map +0 -1
- package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.d.ts +0 -1
- package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +0 -18
- package/build/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +0 -1
- package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.d.ts +0 -1
- package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +0 -18
- package/build/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +0 -1
- package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.d.ts +0 -1
- package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +0 -18
- package/build/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +0 -1
- package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.d.ts +0 -28
- package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.js +0 -53
- package/build/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.js.map +0 -1
- package/build/src/utils/__testfixtures__/SimpleTestEntity.d.ts +0 -20
- package/build/src/utils/__testfixtures__/SimpleTestEntity.js +0 -46
- package/build/src/utils/__testfixtures__/SimpleTestEntity.js.map +0 -1
- package/build/src/utils/__testfixtures__/StubCacheAdapter.d.ts +0 -29
- package/build/src/utils/__testfixtures__/StubCacheAdapter.js +0 -103
- package/build/src/utils/__testfixtures__/StubCacheAdapter.js.map +0 -1
- package/build/src/utils/__testfixtures__/StubDatabaseAdapter.d.ts +0 -26
- package/build/src/utils/__testfixtures__/StubDatabaseAdapter.js +0 -173
- package/build/src/utils/__testfixtures__/StubDatabaseAdapter.js.map +0 -1
- package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.d.ts +0 -7
- package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.js +0 -12
- package/build/src/utils/__testfixtures__/StubDatabaseAdapterProvider.js.map +0 -1
- package/build/src/utils/__testfixtures__/StubQueryContextProvider.d.ts +0 -7
- package/build/src/utils/__testfixtures__/StubQueryContextProvider.js +0 -17
- package/build/src/utils/__testfixtures__/StubQueryContextProvider.js.map +0 -1
- package/build/src/utils/__testfixtures__/TSMockitoExtensions.d.ts +0 -9
- package/build/src/utils/__testfixtures__/TSMockitoExtensions.js +0 -65
- package/build/src/utils/__testfixtures__/TSMockitoExtensions.js.map +0 -1
- package/build/src/utils/__testfixtures__/TestEntity.d.ts +0 -30
- package/build/src/utils/__testfixtures__/TestEntity.js +0 -96
- package/build/src/utils/__testfixtures__/TestEntity.js.map +0 -1
- package/build/src/utils/__testfixtures__/TestEntity2.d.ts +0 -20
- package/build/src/utils/__testfixtures__/TestEntity2.js +0 -49
- package/build/src/utils/__testfixtures__/TestEntity2.js.map +0 -1
- package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.d.ts +0 -36
- package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.js +0 -80
- package/build/src/utils/__testfixtures__/TestEntityWithMutationTriggers.js.map +0 -1
- package/build/src/utils/__testfixtures__/TestViewerContext.d.ts +0 -3
- package/build/src/utils/__testfixtures__/TestViewerContext.js +0 -8
- package/build/src/utils/__testfixtures__/TestViewerContext.js.map +0 -1
- package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.d.ts +0 -7
- package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.js +0 -33
- package/build/src/utils/__testfixtures__/createUnitTestEntityCompanionProvider.js.map +0 -1
- package/build/src/utils/__testfixtures__/describeFieldTestCase.d.ts +0 -2
- package/build/src/utils/__testfixtures__/describeFieldTestCase.js +0 -19
- package/build/src/utils/__testfixtures__/describeFieldTestCase.js.map +0 -1
- package/build/src/utils/__tests__/EntityCreationUtils-test.d.ts +0 -1
- package/build/src/utils/__tests__/EntityCreationUtils-test.js +0 -144
- package/build/src/utils/__tests__/EntityCreationUtils-test.js.map +0 -1
- package/build/src/utils/__tests__/EntityPrivacyUtils-test.d.ts +0 -1
- package/build/src/utils/__tests__/EntityPrivacyUtils-test.js +0 -460
- package/build/src/utils/__tests__/EntityPrivacyUtils-test.js.map +0 -1
- package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.d.ts +0 -1
- package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js +0 -180
- package/build/src/utils/__tests__/canViewerDeleteAsync-edgeDeletionPermissionInferenceBehavior-test.js.map +0 -1
- package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +0 -1
- package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +0 -27
- package/build/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +0 -1
- package/build/src/utils/collections/__tests__/SerializableKeyMap-test.d.ts +0 -5
- package/build/src/utils/collections/__tests__/SerializableKeyMap-test.js +0 -99
- package/build/src/utils/collections/__tests__/SerializableKeyMap-test.js.map +0 -1
- package/build/src/utils/collections/__tests__/maps-test.d.ts +0 -1
- package/build/src/utils/collections/__tests__/maps-test.js +0 -121
- package/build/src/utils/collections/__tests__/maps-test.js.map +0 -1
- package/build/src/utils/collections/__tests__/sets-test.d.ts +0 -1
- package/build/src/utils/collections/__tests__/sets-test.js +0 -19
- package/build/src/utils/collections/__tests__/sets-test.js.map +0 -1
- package/build/tsconfig.tsbuildinfo +0 -1
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.describePrivacyPolicyRule = exports.describePrivacyPolicyRuleWithAsyncTestCase = void 0;
|
|
4
|
-
const globals_1 = require("@jest/globals");
|
|
5
|
-
const PrivacyPolicyRule_1 = require("../../rules/PrivacyPolicyRule");
|
|
6
|
-
/**
|
|
7
|
-
* Useful for defining test cases that have async preconditions.
|
|
8
|
-
*/
|
|
9
|
-
const describePrivacyPolicyRuleWithAsyncTestCase = (privacyPolicyRule, { allowCases = new Map(), skipCases = new Map(), denyCases = new Map(), }) => {
|
|
10
|
-
(0, globals_1.describe)(privacyPolicyRule.constructor.name, () => {
|
|
11
|
-
if (allowCases && allowCases.size > 0) {
|
|
12
|
-
(0, globals_1.describe)('allow cases', () => {
|
|
13
|
-
globals_1.test.each(Array.from(allowCases.keys()))('%p', async (caseKey) => {
|
|
14
|
-
const { viewerContext, queryContext, evaluationContext, entity } = await allowCases.get(caseKey)();
|
|
15
|
-
await (0, globals_1.expect)(privacyPolicyRule.evaluateAsync(viewerContext, queryContext, evaluationContext, entity)).resolves.toEqual(PrivacyPolicyRule_1.RuleEvaluationResult.ALLOW);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
if (skipCases && skipCases.size > 0) {
|
|
20
|
-
(0, globals_1.describe)('skip cases', () => {
|
|
21
|
-
globals_1.test.each(Array.from(skipCases.keys()))('%p', async (caseKey) => {
|
|
22
|
-
const { viewerContext, queryContext, evaluationContext, entity } = await skipCases.get(caseKey)();
|
|
23
|
-
await (0, globals_1.expect)(privacyPolicyRule.evaluateAsync(viewerContext, queryContext, evaluationContext, entity)).resolves.toEqual(PrivacyPolicyRule_1.RuleEvaluationResult.SKIP);
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
if (denyCases && denyCases.size > 0) {
|
|
28
|
-
(0, globals_1.describe)('deny cases', () => {
|
|
29
|
-
globals_1.test.each(Array.from(denyCases.keys()))('%p', async (caseKey) => {
|
|
30
|
-
const { viewerContext, queryContext, evaluationContext, entity } = await denyCases.get(caseKey)();
|
|
31
|
-
await (0, globals_1.expect)(privacyPolicyRule.evaluateAsync(viewerContext, queryContext, evaluationContext, entity)).resolves.toEqual(PrivacyPolicyRule_1.RuleEvaluationResult.DENY);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
exports.describePrivacyPolicyRuleWithAsyncTestCase = describePrivacyPolicyRuleWithAsyncTestCase;
|
|
38
|
-
/**
|
|
39
|
-
* For test simple privacy rules that don't have complex async preconditions.
|
|
40
|
-
*/
|
|
41
|
-
const describePrivacyPolicyRule = (privacyPolicyRule, { allowCases = [], skipCases = [], denyCases = [], }) => {
|
|
42
|
-
const makeCasesMap = (cases) => cases.reduce((acc, testCase, index) => {
|
|
43
|
-
acc.set(`case ${index}`, async () => testCase);
|
|
44
|
-
return acc;
|
|
45
|
-
}, new Map());
|
|
46
|
-
(0, exports.describePrivacyPolicyRuleWithAsyncTestCase)(privacyPolicyRule, {
|
|
47
|
-
allowCases: makeCasesMap(allowCases),
|
|
48
|
-
skipCases: makeCasesMap(skipCases),
|
|
49
|
-
denyCases: makeCasesMap(denyCases),
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
exports.describePrivacyPolicyRule = describePrivacyPolicyRule;
|
|
53
|
-
//# sourceMappingURL=PrivacyPolicyRuleTestUtils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PrivacyPolicyRuleTestUtils.js","sourceRoot":"","sources":["../../../../src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.ts"],"names":[],"mappings":";;;AAAA,2CAAuD;AAMvD,qEAAwF;AA6BxF;;GAEG;AACI,MAAM,0CAA0C,GAAG,CAOxD,iBAAiG,EACjG,EACE,UAAU,GAAG,IAAI,GAAG,EAAE,EACtB,SAAS,GAAG,IAAI,GAAG,EAAE,EACrB,SAAS,GAAG,IAAI,GAAG,EAAE,GAKtB,EACK,EAAE;IACR,IAAA,kBAAQ,EAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;QAChD,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtC,IAAA,kBAAQ,EAAC,aAAa,EAAE,GAAG,EAAE;gBAC3B,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC/D,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAC9D,MAAM,UAAU,CAAC,GAAG,CAAC,OAAO,CAAE,EAAE,CAAC;oBACnC,MAAM,IAAA,gBAAM,EACV,iBAAiB,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CACxF,CAAC,QAAQ,CAAC,OAAO,CAAC,wCAAoB,CAAC,KAAK,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACpC,IAAA,kBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;gBAC1B,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC9D,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAC9D,MAAM,SAAS,CAAC,GAAG,CAAC,OAAO,CAAE,EAAE,CAAC;oBAClC,MAAM,IAAA,gBAAM,EACV,iBAAiB,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CACxF,CAAC,QAAQ,CAAC,OAAO,CAAC,wCAAoB,CAAC,IAAI,CAAC,CAAC;gBAChD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACpC,IAAA,kBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;gBAC1B,cAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC9D,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAC9D,MAAM,SAAS,CAAC,GAAG,CAAC,OAAO,CAAE,EAAE,CAAC;oBAClC,MAAM,IAAA,gBAAM,EACV,iBAAiB,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CACxF,CAAC,QAAQ,CAAC,OAAO,CAAC,wCAAoB,CAAC,IAAI,CAAC,CAAC;gBAChD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAvDW,QAAA,0CAA0C,8CAuDrD;AAEF;;GAEG;AACI,MAAM,yBAAyB,GAAG,CAOvC,iBAAiG,EACjG,EACE,UAAU,GAAG,EAAE,EACf,SAAS,GAAG,EAAE,EACd,SAAS,GAAG,EAAE,GAKf,EACK,EAAE;IACR,MAAM,YAAY,GAAG,CACnB,KAA0E,EACJ,EAAE,CACxE,KAAK,CAAC,MAAM,CACV,CACE,GAAyE,EACzE,QAA2E,EAC3E,KAAK,EACL,EAAE;QACF,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC/C,OAAO,GAAG,CAAC;IACb,CAAC,EACD,IAAI,GAAG,EAAE,CACV,CAAC;IAEJ,IAAA,kDAA0C,EAAC,iBAAiB,EAAE;QAC5D,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC;QACpC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC;QAClC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC;KACnC,CAAC,CAAC;AACL,CAAC,CAAC;AAtCW,QAAA,yBAAyB,6BAsCpC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Entity } from '../../Entity';
|
|
2
|
-
import { EntityCompanionDefinition } from '../../EntityCompanionProvider';
|
|
3
|
-
import { EntityConfiguration } from '../../EntityConfiguration';
|
|
4
|
-
import { EntityPrivacyPolicy } from '../../EntityPrivacyPolicy';
|
|
5
|
-
import { ViewerContext } from '../../ViewerContext';
|
|
6
|
-
import { AlwaysAllowPrivacyPolicyRule } from '../../rules/AlwaysAllowPrivacyPolicyRule';
|
|
7
|
-
export type SimpleTestFields = {
|
|
8
|
-
id: string;
|
|
9
|
-
};
|
|
10
|
-
export type SimpleTestFieldSelection = keyof SimpleTestFields;
|
|
11
|
-
export declare const simpleTestEntityConfiguration: EntityConfiguration<SimpleTestFields, "id">;
|
|
12
|
-
export declare class SimpleTestEntityPrivacyPolicy extends EntityPrivacyPolicy<SimpleTestFields, 'id', ViewerContext, SimpleTestEntity, SimpleTestFieldSelection> {
|
|
13
|
-
protected readonly readRules: AlwaysAllowPrivacyPolicyRule<SimpleTestFields, "id", ViewerContext, SimpleTestEntity, "id">[];
|
|
14
|
-
protected readonly createRules: AlwaysAllowPrivacyPolicyRule<SimpleTestFields, "id", ViewerContext, SimpleTestEntity, "id">[];
|
|
15
|
-
protected readonly updateRules: AlwaysAllowPrivacyPolicyRule<SimpleTestFields, "id", ViewerContext, SimpleTestEntity, "id">[];
|
|
16
|
-
protected readonly deleteRules: AlwaysAllowPrivacyPolicyRule<SimpleTestFields, "id", ViewerContext, SimpleTestEntity, "id">[];
|
|
17
|
-
}
|
|
18
|
-
export declare class SimpleTestEntity extends Entity<SimpleTestFields, 'id', ViewerContext, SimpleTestFieldSelection> {
|
|
19
|
-
static defineCompanionDefinition(): EntityCompanionDefinition<SimpleTestFields, 'id', ViewerContext, SimpleTestEntity, SimpleTestEntityPrivacyPolicy, SimpleTestFieldSelection>;
|
|
20
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SimpleTestEntity = exports.SimpleTestEntityPrivacyPolicy = exports.simpleTestEntityConfiguration = void 0;
|
|
4
|
-
const Entity_1 = require("../../Entity");
|
|
5
|
-
const EntityConfiguration_1 = require("../../EntityConfiguration");
|
|
6
|
-
const EntityFields_1 = require("../../EntityFields");
|
|
7
|
-
const EntityPrivacyPolicy_1 = require("../../EntityPrivacyPolicy");
|
|
8
|
-
const AlwaysAllowPrivacyPolicyRule_1 = require("../../rules/AlwaysAllowPrivacyPolicyRule");
|
|
9
|
-
exports.simpleTestEntityConfiguration = new EntityConfiguration_1.EntityConfiguration({
|
|
10
|
-
idField: 'id',
|
|
11
|
-
tableName: 'simple_test_entity_should_not_write_to_db',
|
|
12
|
-
schema: {
|
|
13
|
-
id: new EntityFields_1.UUIDField({
|
|
14
|
-
columnName: 'custom_id',
|
|
15
|
-
cache: true,
|
|
16
|
-
}),
|
|
17
|
-
},
|
|
18
|
-
databaseAdapterFlavor: 'postgres',
|
|
19
|
-
cacheAdapterFlavor: 'redis',
|
|
20
|
-
});
|
|
21
|
-
class SimpleTestEntityPrivacyPolicy extends EntityPrivacyPolicy_1.EntityPrivacyPolicy {
|
|
22
|
-
readRules = [
|
|
23
|
-
new AlwaysAllowPrivacyPolicyRule_1.AlwaysAllowPrivacyPolicyRule(),
|
|
24
|
-
];
|
|
25
|
-
createRules = [
|
|
26
|
-
new AlwaysAllowPrivacyPolicyRule_1.AlwaysAllowPrivacyPolicyRule(),
|
|
27
|
-
];
|
|
28
|
-
updateRules = [
|
|
29
|
-
new AlwaysAllowPrivacyPolicyRule_1.AlwaysAllowPrivacyPolicyRule(),
|
|
30
|
-
];
|
|
31
|
-
deleteRules = [
|
|
32
|
-
new AlwaysAllowPrivacyPolicyRule_1.AlwaysAllowPrivacyPolicyRule(),
|
|
33
|
-
];
|
|
34
|
-
}
|
|
35
|
-
exports.SimpleTestEntityPrivacyPolicy = SimpleTestEntityPrivacyPolicy;
|
|
36
|
-
class SimpleTestEntity extends Entity_1.Entity {
|
|
37
|
-
static defineCompanionDefinition() {
|
|
38
|
-
return {
|
|
39
|
-
entityClass: SimpleTestEntity,
|
|
40
|
-
entityConfiguration: exports.simpleTestEntityConfiguration,
|
|
41
|
-
privacyPolicyClass: SimpleTestEntityPrivacyPolicy,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.SimpleTestEntity = SimpleTestEntity;
|
|
46
|
-
//# sourceMappingURL=SimpleTestEntity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleTestEntity.js","sourceRoot":"","sources":["../../../../src/utils/__testfixtures__/SimpleTestEntity.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAEtC,mEAAgE;AAChE,qDAA+C;AAC/C,mEAAgE;AAEhE,2FAAwF;AAQ3E,QAAA,6BAA6B,GAAG,IAAI,yCAAmB,CAAyB;IAC3F,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,2CAA2C;IACtD,MAAM,EAAE;QACN,EAAE,EAAE,IAAI,wBAAS,CAAC;YAChB,UAAU,EAAE,WAAW;YACvB,KAAK,EAAE,IAAI;SACZ,CAAC;KACH;IACD,qBAAqB,EAAE,UAAU;IACjC,kBAAkB,EAAE,OAAO;CAC5B,CAAC,CAAC;AAEH,MAAa,6BAA8B,SAAQ,yCAMlD;IAC6B,SAAS,GAAG;QACtC,IAAI,2DAA4B,EAM7B;KACJ,CAAC;IAC0B,WAAW,GAAG;QACxC,IAAI,2DAA4B,EAM7B;KACJ,CAAC;IAC0B,WAAW,GAAG;QACxC,IAAI,2DAA4B,EAM7B;KACJ,CAAC;IAC0B,WAAW,GAAG;QACxC,IAAI,2DAA4B,EAM7B;KACJ,CAAC;CACH;AA3CD,sEA2CC;AAED,MAAa,gBAAiB,SAAQ,eAKrC;IACC,MAAM,CAAC,yBAAyB;QAQ9B,OAAO;YACL,WAAW,EAAE,gBAAgB;YAC7B,mBAAmB,EAAE,qCAA6B;YAClD,kBAAkB,EAAE,6BAA6B;SAClD,CAAC;IACJ,CAAC;CACF;AApBD,4CAoBC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { EntityConfiguration } from '../../EntityConfiguration';
|
|
2
|
-
import { IEntityCacheAdapter } from '../../IEntityCacheAdapter';
|
|
3
|
-
import { IEntityCacheAdapterProvider } from '../../IEntityCacheAdapterProvider';
|
|
4
|
-
import { IEntityLoadKey, IEntityLoadValue } from '../../internal/EntityLoadInterfaces';
|
|
5
|
-
import { CacheLoadResult } from '../../internal/ReadThroughEntityCache';
|
|
6
|
-
export declare class NoCacheStubCacheAdapterProvider implements IEntityCacheAdapterProvider {
|
|
7
|
-
getCacheAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields>(_entityConfiguration: EntityConfiguration<TFields, TIDField>): IEntityCacheAdapter<TFields, TIDField>;
|
|
8
|
-
}
|
|
9
|
-
export declare class NoCacheStubCacheAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields> implements IEntityCacheAdapter<TFields, TIDField> {
|
|
10
|
-
loadManyAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, values: readonly TLoadValue[]): Promise<ReadonlyMap<TLoadValue, CacheLoadResult<TFields>>>;
|
|
11
|
-
cacheManyAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(_key: TLoadKey, _objectMap: ReadonlyMap<TLoadValue, Readonly<TFields>>): Promise<void>;
|
|
12
|
-
cacheDBMissesAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(_key: TLoadKey, _values: readonly TLoadValue[]): Promise<void>;
|
|
13
|
-
invalidateManyAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(_key: TLoadKey, _values: readonly TLoadValue[]): Promise<void>;
|
|
14
|
-
}
|
|
15
|
-
export declare const DOES_NOT_EXIST: unique symbol;
|
|
16
|
-
export declare class InMemoryFullCacheStubCacheAdapterProvider implements IEntityCacheAdapterProvider {
|
|
17
|
-
private readonly cache;
|
|
18
|
-
getCacheAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields>(entityConfiguration: EntityConfiguration<TFields, TIDField>): IEntityCacheAdapter<TFields, TIDField>;
|
|
19
|
-
}
|
|
20
|
-
export declare class InMemoryFullCacheStubCacheAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields> implements IEntityCacheAdapter<TFields, TIDField> {
|
|
21
|
-
private readonly entityConfiguration;
|
|
22
|
-
private readonly cache;
|
|
23
|
-
constructor(entityConfiguration: EntityConfiguration<TFields, TIDField>, cache: Map<string, Readonly<TFields> | typeof DOES_NOT_EXIST>);
|
|
24
|
-
loadManyAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, values: readonly TLoadValue[]): Promise<ReadonlyMap<TLoadValue, CacheLoadResult<TFields>>>;
|
|
25
|
-
cacheManyAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, objectMap: ReadonlyMap<TLoadValue, Readonly<TFields>>): Promise<void>;
|
|
26
|
-
cacheDBMissesAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, values: readonly TLoadValue[]): Promise<void>;
|
|
27
|
-
invalidateManyAsync<TLoadKey extends IEntityLoadKey<TFields, TIDField, TSerializedLoadValue, TLoadValue>, TSerializedLoadValue, TLoadValue extends IEntityLoadValue<TSerializedLoadValue>>(key: TLoadKey, values: readonly TLoadValue[]): Promise<void>;
|
|
28
|
-
private createCacheKey;
|
|
29
|
-
}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.InMemoryFullCacheStubCacheAdapter = exports.InMemoryFullCacheStubCacheAdapterProvider = exports.DOES_NOT_EXIST = exports.NoCacheStubCacheAdapter = exports.NoCacheStubCacheAdapterProvider = void 0;
|
|
7
|
-
const invariant_1 = __importDefault(require("invariant"));
|
|
8
|
-
const ReadThroughEntityCache_1 = require("../../internal/ReadThroughEntityCache");
|
|
9
|
-
class NoCacheStubCacheAdapterProvider {
|
|
10
|
-
getCacheAdapter(_entityConfiguration) {
|
|
11
|
-
return new NoCacheStubCacheAdapter();
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.NoCacheStubCacheAdapterProvider = NoCacheStubCacheAdapterProvider;
|
|
15
|
-
class NoCacheStubCacheAdapter {
|
|
16
|
-
async loadManyAsync(key, values) {
|
|
17
|
-
return values.reduce((acc, v) => {
|
|
18
|
-
acc.set(v, {
|
|
19
|
-
status: ReadThroughEntityCache_1.CacheStatus.MISS,
|
|
20
|
-
});
|
|
21
|
-
return acc;
|
|
22
|
-
}, key.vendNewLoadValueMap());
|
|
23
|
-
}
|
|
24
|
-
async cacheManyAsync(_key, _objectMap) { }
|
|
25
|
-
async cacheDBMissesAsync(_key, _values) { }
|
|
26
|
-
async invalidateManyAsync(_key, _values) { }
|
|
27
|
-
}
|
|
28
|
-
exports.NoCacheStubCacheAdapter = NoCacheStubCacheAdapter;
|
|
29
|
-
// Sentinel value we store in the in-memory cache to negatively cache a database miss.
|
|
30
|
-
// The sentinel value is distinct from any (positively) cached value.
|
|
31
|
-
exports.DOES_NOT_EXIST = Symbol('inMemoryCacheDoesNotExistValue');
|
|
32
|
-
class InMemoryFullCacheStubCacheAdapterProvider {
|
|
33
|
-
cache = new Map();
|
|
34
|
-
getCacheAdapter(entityConfiguration) {
|
|
35
|
-
return new InMemoryFullCacheStubCacheAdapter(entityConfiguration, this.cache);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.InMemoryFullCacheStubCacheAdapterProvider = InMemoryFullCacheStubCacheAdapterProvider;
|
|
39
|
-
class InMemoryFullCacheStubCacheAdapter {
|
|
40
|
-
entityConfiguration;
|
|
41
|
-
cache;
|
|
42
|
-
constructor(entityConfiguration, cache) {
|
|
43
|
-
this.entityConfiguration = entityConfiguration;
|
|
44
|
-
this.cache = cache;
|
|
45
|
-
}
|
|
46
|
-
async loadManyAsync(key, values) {
|
|
47
|
-
const results = key.vendNewLoadValueMap();
|
|
48
|
-
values.forEach((value) => {
|
|
49
|
-
const cacheKey = this.createCacheKey(key, value);
|
|
50
|
-
if (!this.cache.has(cacheKey)) {
|
|
51
|
-
results.set(value, {
|
|
52
|
-
status: ReadThroughEntityCache_1.CacheStatus.MISS,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
const objectForFieldValue = this.cache.get(cacheKey);
|
|
57
|
-
(0, invariant_1.default)(objectForFieldValue !== undefined, 'should have set value for key');
|
|
58
|
-
if (objectForFieldValue === exports.DOES_NOT_EXIST) {
|
|
59
|
-
results.set(value, {
|
|
60
|
-
status: ReadThroughEntityCache_1.CacheStatus.NEGATIVE,
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
results.set(value, {
|
|
65
|
-
status: ReadThroughEntityCache_1.CacheStatus.HIT,
|
|
66
|
-
item: objectForFieldValue,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
return results;
|
|
72
|
-
}
|
|
73
|
-
async cacheManyAsync(key, objectMap) {
|
|
74
|
-
objectMap.forEach((obj, value) => {
|
|
75
|
-
const cacheKey = this.createCacheKey(key, value);
|
|
76
|
-
this.cache.set(cacheKey, obj);
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
async cacheDBMissesAsync(key, values) {
|
|
80
|
-
values.forEach((value) => {
|
|
81
|
-
const cacheKey = this.createCacheKey(key, value);
|
|
82
|
-
this.cache.set(cacheKey, exports.DOES_NOT_EXIST);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
async invalidateManyAsync(key, values) {
|
|
86
|
-
values.forEach((value) => {
|
|
87
|
-
const cacheKey = this.createCacheKey(key, value);
|
|
88
|
-
this.cache.delete(cacheKey);
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
createCacheKey(key, value) {
|
|
92
|
-
const cacheKeyType = key.getLoadMethodType();
|
|
93
|
-
const parts = key.createCacheKeyPartsForLoadValue(this.entityConfiguration, value);
|
|
94
|
-
return [
|
|
95
|
-
this.entityConfiguration.tableName,
|
|
96
|
-
cacheKeyType,
|
|
97
|
-
`v${this.entityConfiguration.cacheKeyVersion}`,
|
|
98
|
-
...parts,
|
|
99
|
-
].join(':');
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
exports.InMemoryFullCacheStubCacheAdapter = InMemoryFullCacheStubCacheAdapter;
|
|
103
|
-
//# sourceMappingURL=StubCacheAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StubCacheAdapter.js","sourceRoot":"","sources":["../../../../src/utils/__testfixtures__/StubCacheAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { EntityConfiguration } from '../../EntityConfiguration';
|
|
2
|
-
import { EntityDatabaseAdapter, TableFieldMultiValueEqualityCondition, TableFieldSingleValueEqualityCondition, TableQuerySelectionModifiers } from '../../EntityDatabaseAdapter';
|
|
3
|
-
import { FieldTransformerMap } from '../../internal/EntityFieldTransformationUtils';
|
|
4
|
-
export declare class StubDatabaseAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields> extends EntityDatabaseAdapter<TFields, TIDField> {
|
|
5
|
-
private readonly entityConfiguration2;
|
|
6
|
-
private readonly dataStore;
|
|
7
|
-
constructor(entityConfiguration2: EntityConfiguration<TFields, TIDField>, dataStore: Map<string, Readonly<{
|
|
8
|
-
[key: string]: any;
|
|
9
|
-
}>[]>);
|
|
10
|
-
static convertFieldObjectsToDataStore<TFields extends Record<string, any>, TIDField extends keyof TFields>(entityConfiguration: EntityConfiguration<TFields, TIDField>, dataStore: Map<string, Readonly<TFields>[]>): Map<string, Readonly<{
|
|
11
|
-
[key: string]: any;
|
|
12
|
-
}>[]>;
|
|
13
|
-
getObjectCollectionForTable(tableName: string): {
|
|
14
|
-
[key: string]: any;
|
|
15
|
-
}[];
|
|
16
|
-
protected getFieldTransformerMap(): FieldTransformerMap;
|
|
17
|
-
private static uniqBy;
|
|
18
|
-
protected fetchManyWhereInternalAsync(_queryInterface: any, tableName: string, tableColumns: readonly string[], tableTuples: (readonly any[])[]): Promise<object[]>;
|
|
19
|
-
private static compareByOrderBys;
|
|
20
|
-
protected fetchManyByFieldEqualityConjunctionInternalAsync(_queryInterface: any, tableName: string, tableFieldSingleValueEqualityOperands: TableFieldSingleValueEqualityCondition[], tableFieldMultiValueEqualityOperands: TableFieldMultiValueEqualityCondition[], querySelectionModifiers: TableQuerySelectionModifiers): Promise<object[]>;
|
|
21
|
-
protected fetchManyByRawWhereClauseInternalAsync(_queryInterface: any, _tableName: string, _rawWhereClause: string, _bindings: object | any[], _querySelectionModifiers: TableQuerySelectionModifiers): Promise<object[]>;
|
|
22
|
-
private generateRandomID;
|
|
23
|
-
protected insertInternalAsync(_queryInterface: any, tableName: string, object: object): Promise<object[]>;
|
|
24
|
-
protected updateInternalAsync(_queryInterface: any, tableName: string, tableIdField: string, id: any, object: object): Promise<object[]>;
|
|
25
|
-
protected deleteInternalAsync(_queryInterface: any, tableName: string, tableIdField: string, id: any): Promise<number>;
|
|
26
|
-
}
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.StubDatabaseAdapter = void 0;
|
|
7
|
-
const invariant_1 = __importDefault(require("invariant"));
|
|
8
|
-
const uuidv7_1 = require("uuidv7");
|
|
9
|
-
const EntityDatabaseAdapter_1 = require("../../EntityDatabaseAdapter");
|
|
10
|
-
const EntityFields_1 = require("../../EntityFields");
|
|
11
|
-
const EntityFieldTransformationUtils_1 = require("../../internal/EntityFieldTransformationUtils");
|
|
12
|
-
const maps_1 = require("../collections/maps");
|
|
13
|
-
class StubDatabaseAdapter extends EntityDatabaseAdapter_1.EntityDatabaseAdapter {
|
|
14
|
-
entityConfiguration2;
|
|
15
|
-
dataStore;
|
|
16
|
-
constructor(entityConfiguration2, dataStore) {
|
|
17
|
-
super(entityConfiguration2);
|
|
18
|
-
this.entityConfiguration2 = entityConfiguration2;
|
|
19
|
-
this.dataStore = dataStore;
|
|
20
|
-
}
|
|
21
|
-
static convertFieldObjectsToDataStore(entityConfiguration, dataStore) {
|
|
22
|
-
return (0, maps_1.mapMap)(dataStore, (objectsForTable) => objectsForTable.map((objectForTable) => (0, EntityFieldTransformationUtils_1.transformFieldsToDatabaseObject)(entityConfiguration, new Map(), objectForTable)));
|
|
23
|
-
}
|
|
24
|
-
getObjectCollectionForTable(tableName) {
|
|
25
|
-
return (0, maps_1.computeIfAbsent)(this.dataStore, tableName, () => []);
|
|
26
|
-
}
|
|
27
|
-
getFieldTransformerMap() {
|
|
28
|
-
return new Map();
|
|
29
|
-
}
|
|
30
|
-
static uniqBy(a, keyExtractor) {
|
|
31
|
-
const seen = new Set();
|
|
32
|
-
return a.filter((item) => {
|
|
33
|
-
const k = keyExtractor(item);
|
|
34
|
-
if (seen.has(k)) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
seen.add(k);
|
|
38
|
-
return true;
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
async fetchManyWhereInternalAsync(_queryInterface, tableName, tableColumns, tableTuples) {
|
|
42
|
-
const objectCollection = this.getObjectCollectionForTable(tableName);
|
|
43
|
-
const results = StubDatabaseAdapter.uniqBy(tableTuples, (tuple) => tuple.join(':')).reduce((acc, tableTuple) => {
|
|
44
|
-
return acc.concat(objectCollection.filter((obj) => {
|
|
45
|
-
return tableColumns.every((tableColumn, index) => {
|
|
46
|
-
return obj[tableColumn] === tableTuple[index];
|
|
47
|
-
});
|
|
48
|
-
}));
|
|
49
|
-
}, []);
|
|
50
|
-
return [...results];
|
|
51
|
-
}
|
|
52
|
-
static compareByOrderBys(orderBys, objectA, objectB) {
|
|
53
|
-
if (orderBys.length === 0) {
|
|
54
|
-
return 0;
|
|
55
|
-
}
|
|
56
|
-
const currentOrderBy = orderBys[0];
|
|
57
|
-
const aField = objectA[currentOrderBy.columnName];
|
|
58
|
-
const bField = objectB[currentOrderBy.columnName];
|
|
59
|
-
switch (currentOrderBy.order) {
|
|
60
|
-
case EntityDatabaseAdapter_1.OrderByOrdering.DESCENDING: {
|
|
61
|
-
// simulate NULLS FIRST for DESC
|
|
62
|
-
if (aField === null && bField === null) {
|
|
63
|
-
return 0;
|
|
64
|
-
}
|
|
65
|
-
else if (aField === null) {
|
|
66
|
-
return -1;
|
|
67
|
-
}
|
|
68
|
-
else if (bField === null) {
|
|
69
|
-
return 1;
|
|
70
|
-
}
|
|
71
|
-
return aField > bField
|
|
72
|
-
? -1
|
|
73
|
-
: aField < bField
|
|
74
|
-
? 1
|
|
75
|
-
: this.compareByOrderBys(orderBys.slice(1), objectA, objectB);
|
|
76
|
-
}
|
|
77
|
-
case EntityDatabaseAdapter_1.OrderByOrdering.ASCENDING: {
|
|
78
|
-
// simulate NULLS LAST for ASC
|
|
79
|
-
if (aField === null && bField === null) {
|
|
80
|
-
return 0;
|
|
81
|
-
}
|
|
82
|
-
else if (bField === null) {
|
|
83
|
-
return -1;
|
|
84
|
-
}
|
|
85
|
-
else if (aField === null) {
|
|
86
|
-
return 1;
|
|
87
|
-
}
|
|
88
|
-
return bField > aField
|
|
89
|
-
? -1
|
|
90
|
-
: bField < aField
|
|
91
|
-
? 1
|
|
92
|
-
: this.compareByOrderBys(orderBys.slice(1), objectA, objectB);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
async fetchManyByFieldEqualityConjunctionInternalAsync(_queryInterface, tableName, tableFieldSingleValueEqualityOperands, tableFieldMultiValueEqualityOperands, querySelectionModifiers) {
|
|
97
|
-
let filteredObjects = this.getObjectCollectionForTable(tableName);
|
|
98
|
-
for (const { tableField, tableValue } of tableFieldSingleValueEqualityOperands) {
|
|
99
|
-
filteredObjects = filteredObjects.filter((obj) => obj[tableField] === tableValue);
|
|
100
|
-
}
|
|
101
|
-
for (const { tableField, tableValues } of tableFieldMultiValueEqualityOperands) {
|
|
102
|
-
filteredObjects = filteredObjects.filter((obj) => tableValues.includes(obj[tableField]));
|
|
103
|
-
}
|
|
104
|
-
const orderBy = querySelectionModifiers.orderBy;
|
|
105
|
-
if (orderBy !== undefined) {
|
|
106
|
-
filteredObjects = filteredObjects.sort((a, b) => StubDatabaseAdapter.compareByOrderBys(orderBy, a, b));
|
|
107
|
-
}
|
|
108
|
-
const offset = querySelectionModifiers.offset;
|
|
109
|
-
if (offset !== undefined) {
|
|
110
|
-
filteredObjects = filteredObjects.slice(offset);
|
|
111
|
-
}
|
|
112
|
-
const limit = querySelectionModifiers.limit;
|
|
113
|
-
if (limit !== undefined) {
|
|
114
|
-
filteredObjects = filteredObjects.slice(0, 0 + limit);
|
|
115
|
-
}
|
|
116
|
-
return filteredObjects;
|
|
117
|
-
}
|
|
118
|
-
fetchManyByRawWhereClauseInternalAsync(_queryInterface, _tableName, _rawWhereClause, _bindings, _querySelectionModifiers) {
|
|
119
|
-
throw new Error('Raw WHERE clauses not supported for StubDatabaseAdapter');
|
|
120
|
-
}
|
|
121
|
-
generateRandomID() {
|
|
122
|
-
const idSchemaField = this.entityConfiguration2.schema.get(this.entityConfiguration2.idField);
|
|
123
|
-
(0, invariant_1.default)(idSchemaField, `No schema field found for ${String(this.entityConfiguration2.idField)}`);
|
|
124
|
-
if (idSchemaField instanceof EntityFields_1.StringField) {
|
|
125
|
-
return (0, uuidv7_1.uuidv7)();
|
|
126
|
-
}
|
|
127
|
-
else if (idSchemaField instanceof EntityFields_1.IntField) {
|
|
128
|
-
return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
throw new Error(`Unsupported ID type for StubDatabaseAdapter: ${idSchemaField.constructor.name}`);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
async insertInternalAsync(_queryInterface, tableName, object) {
|
|
135
|
-
const objectCollection = this.getObjectCollectionForTable(tableName);
|
|
136
|
-
const idField = (0, EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField)(this.entityConfiguration2, this.entityConfiguration2.idField);
|
|
137
|
-
const objectToInsert = {
|
|
138
|
-
[idField]: this.generateRandomID(),
|
|
139
|
-
...object,
|
|
140
|
-
};
|
|
141
|
-
objectCollection.push(objectToInsert);
|
|
142
|
-
return [objectToInsert];
|
|
143
|
-
}
|
|
144
|
-
async updateInternalAsync(_queryInterface, tableName, tableIdField, id, object) {
|
|
145
|
-
// SQL does not support empty updates, mirror behavior here for better test simulation
|
|
146
|
-
if (Object.keys(object).length === 0) {
|
|
147
|
-
throw new Error(`Empty update (${tableIdField} = ${id})`);
|
|
148
|
-
}
|
|
149
|
-
const objectCollection = this.getObjectCollectionForTable(tableName);
|
|
150
|
-
const objectIndex = objectCollection.findIndex((obj) => {
|
|
151
|
-
return obj[tableIdField] === id;
|
|
152
|
-
});
|
|
153
|
-
(0, invariant_1.default)(objectIndex >= 0, 'should exist');
|
|
154
|
-
objectCollection[objectIndex] = {
|
|
155
|
-
...objectCollection[objectIndex],
|
|
156
|
-
...object,
|
|
157
|
-
};
|
|
158
|
-
return [objectCollection[objectIndex]];
|
|
159
|
-
}
|
|
160
|
-
async deleteInternalAsync(_queryInterface, tableName, tableIdField, id) {
|
|
161
|
-
const objectCollection = this.getObjectCollectionForTable(tableName);
|
|
162
|
-
const objectIndex = objectCollection.findIndex((obj) => {
|
|
163
|
-
return obj[tableIdField] === id;
|
|
164
|
-
});
|
|
165
|
-
if (objectIndex < 0) {
|
|
166
|
-
return 0;
|
|
167
|
-
}
|
|
168
|
-
objectCollection.splice(objectIndex, 1);
|
|
169
|
-
return 1;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
exports.StubDatabaseAdapter = StubDatabaseAdapter;
|
|
173
|
-
//# sourceMappingURL=StubDatabaseAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StubDatabaseAdapter.js","sourceRoot":"","sources":["../../../../src/utils/__testfixtures__/StubDatabaseAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { EntityConfiguration } from '../../EntityConfiguration';
|
|
2
|
-
import { EntityDatabaseAdapter } from '../../EntityDatabaseAdapter';
|
|
3
|
-
import { IEntityDatabaseAdapterProvider } from '../../IEntityDatabaseAdapterProvider';
|
|
4
|
-
export declare class StubDatabaseAdapterProvider implements IEntityDatabaseAdapterProvider {
|
|
5
|
-
private readonly objectCollection;
|
|
6
|
-
getDatabaseAdapter<TFields extends Record<string, any>, TIDField extends keyof TFields>(entityConfiguration: EntityConfiguration<TFields, TIDField>): EntityDatabaseAdapter<TFields, TIDField>;
|
|
7
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StubDatabaseAdapterProvider = void 0;
|
|
4
|
-
const StubDatabaseAdapter_1 = require("../__testfixtures__/StubDatabaseAdapter");
|
|
5
|
-
class StubDatabaseAdapterProvider {
|
|
6
|
-
objectCollection = new Map();
|
|
7
|
-
getDatabaseAdapter(entityConfiguration) {
|
|
8
|
-
return new StubDatabaseAdapter_1.StubDatabaseAdapter(entityConfiguration, this.objectCollection);
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
exports.StubDatabaseAdapterProvider = StubDatabaseAdapterProvider;
|
|
12
|
-
//# sourceMappingURL=StubDatabaseAdapterProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StubDatabaseAdapterProvider.js","sourceRoot":"","sources":["../../../../src/utils/__testfixtures__/StubDatabaseAdapterProvider.ts"],"names":[],"mappings":";;;AAGA,iFAA8E;AAE9E,MAAa,2BAA2B;IACrB,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;IAE9C,kBAAkB,CAChB,mBAA2D;QAE3D,OAAO,IAAI,yCAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7E,CAAC;CACF;AARD,kEAQC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { TransactionConfig } from '../../EntityQueryContext';
|
|
2
|
-
import { EntityQueryContextProvider } from '../../EntityQueryContextProvider';
|
|
3
|
-
export declare class StubQueryContextProvider extends EntityQueryContextProvider {
|
|
4
|
-
protected getQueryInterface(): any;
|
|
5
|
-
protected createTransactionRunner<T>(_transactionConfig?: TransactionConfig): (transactionScope: (queryInterface: any) => Promise<T>) => Promise<T>;
|
|
6
|
-
protected createNestedTransactionRunner<T>(_outerQueryInterface: any): (transactionScope: (queryInterface: any) => Promise<T>) => Promise<T>;
|
|
7
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StubQueryContextProvider = void 0;
|
|
4
|
-
const EntityQueryContextProvider_1 = require("../../EntityQueryContextProvider");
|
|
5
|
-
class StubQueryContextProvider extends EntityQueryContextProvider_1.EntityQueryContextProvider {
|
|
6
|
-
getQueryInterface() {
|
|
7
|
-
return {};
|
|
8
|
-
}
|
|
9
|
-
createTransactionRunner(_transactionConfig) {
|
|
10
|
-
return (transactionScope) => Promise.resolve(transactionScope({}));
|
|
11
|
-
}
|
|
12
|
-
createNestedTransactionRunner(_outerQueryInterface) {
|
|
13
|
-
return (transactionScope) => Promise.resolve(transactionScope({}));
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.StubQueryContextProvider = StubQueryContextProvider;
|
|
17
|
-
//# sourceMappingURL=StubQueryContextProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StubQueryContextProvider.js","sourceRoot":"","sources":["../../../../src/utils/__testfixtures__/StubQueryContextProvider.ts"],"names":[],"mappings":";;;AACA,iFAA8E;AAE9E,MAAa,wBAAyB,SAAQ,uDAA0B;IAC5D,iBAAiB;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,uBAAuB,CAC/B,kBAAsC;QAEtC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAES,6BAA6B,CACrC,oBAAyB;QAEzB,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;CACF;AAhBD,4DAgBC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Matcher } from 'ts-mockito/lib/matcher/type/Matcher';
|
|
2
|
-
export declare function isEqualWithEntityAware(expected: any, actual: any): boolean;
|
|
3
|
-
export declare class DeepEqualEntityAwareMatcher<T> extends Matcher {
|
|
4
|
-
private readonly expectedValue;
|
|
5
|
-
constructor(expectedValue: T);
|
|
6
|
-
match(value: any): boolean;
|
|
7
|
-
toString(): string;
|
|
8
|
-
}
|
|
9
|
-
export declare function deepEqualEntityAware<T>(expectedValue: T): T;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DeepEqualEntityAwareMatcher = void 0;
|
|
7
|
-
exports.isEqualWithEntityAware = isEqualWithEntityAware;
|
|
8
|
-
exports.deepEqualEntityAware = deepEqualEntityAware;
|
|
9
|
-
const isEqualWith_1 = __importDefault(require("lodash/isEqualWith"));
|
|
10
|
-
const Matcher_1 = require("ts-mockito/lib/matcher/type/Matcher");
|
|
11
|
-
const CompositeFieldHolder_1 = require("../../internal/CompositeFieldHolder");
|
|
12
|
-
const SingleFieldHolder_1 = require("../../internal/SingleFieldHolder");
|
|
13
|
-
const SerializableKeyMap_1 = require("../collections/SerializableKeyMap");
|
|
14
|
-
function isEqualWithEntityAware(expected, actual) {
|
|
15
|
-
return (0, isEqualWith_1.default)(expected, actual, (expected, actual) => {
|
|
16
|
-
if (expected instanceof Matcher_1.Matcher) {
|
|
17
|
-
return expected.match(actual);
|
|
18
|
-
}
|
|
19
|
-
if (expected instanceof SingleFieldHolder_1.SingleFieldHolder && actual instanceof SingleFieldHolder_1.SingleFieldHolder) {
|
|
20
|
-
return expected.fieldName === actual.fieldName;
|
|
21
|
-
}
|
|
22
|
-
if (expected instanceof SingleFieldHolder_1.SingleFieldValueHolder && actual instanceof SingleFieldHolder_1.SingleFieldValueHolder) {
|
|
23
|
-
return expected.fieldValue === actual.fieldValue;
|
|
24
|
-
}
|
|
25
|
-
if (expected instanceof CompositeFieldHolder_1.CompositeFieldHolder && actual instanceof CompositeFieldHolder_1.CompositeFieldHolder) {
|
|
26
|
-
return expected.serialize() === actual.serialize();
|
|
27
|
-
}
|
|
28
|
-
if (expected instanceof CompositeFieldHolder_1.CompositeFieldValueHolder &&
|
|
29
|
-
actual instanceof CompositeFieldHolder_1.CompositeFieldValueHolder) {
|
|
30
|
-
return expected.serialize() === actual.serialize();
|
|
31
|
-
}
|
|
32
|
-
if (expected instanceof SerializableKeyMap_1.SerializableKeyMap && actual instanceof SerializableKeyMap_1.SerializableKeyMap) {
|
|
33
|
-
for (const [key, value] of expected.entries()) {
|
|
34
|
-
if (!actual.has(key) || !(0, isEqualWith_1.default)(value, actual.get(key))) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
return undefined;
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
class DeepEqualEntityAwareMatcher extends Matcher_1.Matcher {
|
|
44
|
-
expectedValue;
|
|
45
|
-
constructor(expectedValue) {
|
|
46
|
-
super();
|
|
47
|
-
this.expectedValue = expectedValue;
|
|
48
|
-
}
|
|
49
|
-
match(value) {
|
|
50
|
-
return isEqualWithEntityAware(this.expectedValue, value);
|
|
51
|
-
}
|
|
52
|
-
toString() {
|
|
53
|
-
if (this.expectedValue instanceof Array) {
|
|
54
|
-
return `deepEqualEntityAware([${this.expectedValue}])`;
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
return `deepEqualEntityAware(${this.expectedValue})`;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.DeepEqualEntityAwareMatcher = DeepEqualEntityAwareMatcher;
|
|
62
|
-
function deepEqualEntityAware(expectedValue) {
|
|
63
|
-
return new DeepEqualEntityAwareMatcher(expectedValue);
|
|
64
|
-
}
|
|
65
|
-
//# sourceMappingURL=TSMockitoExtensions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TSMockitoExtensions.js","sourceRoot":"","sources":["../../../../src/utils/__testfixtures__/TSMockitoExtensions.ts"],"names":[],"mappings":";;;;;;AAUA,wDAoCC;AAoBD,oDAEC;AApED,qEAA6C;AAC7C,iEAA8D;AAE9D,8EAG6C;AAC7C,wEAA6F;AAC7F,0EAAuE;AAEvE,SAAgB,sBAAsB,CAAC,QAAa,EAAE,MAAW;IAC/D,OAAO,IAAA,qBAAW,EAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,QAAa,EAAE,MAAW,EAAuB,EAAE;QACvF,IAAI,QAAQ,YAAY,iBAAO,EAAE,CAAC;YAChC,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,QAAQ,YAAY,qCAAiB,IAAI,MAAM,YAAY,qCAAiB,EAAE,CAAC;YACjF,OAAO,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC;QACjD,CAAC;QAED,IAAI,QAAQ,YAAY,0CAAsB,IAAI,MAAM,YAAY,0CAAsB,EAAE,CAAC;YAC3F,OAAO,QAAQ,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU,CAAC;QACnD,CAAC;QAED,IAAI,QAAQ,YAAY,2CAAoB,IAAI,MAAM,YAAY,2CAAoB,EAAE,CAAC;YACvF,OAAO,QAAQ,CAAC,SAAS,EAAE,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QACrD,CAAC;QAED,IACE,QAAQ,YAAY,gDAAyB;YAC7C,MAAM,YAAY,gDAAyB,EAC3C,CAAC;YACD,OAAO,QAAQ,CAAC,SAAS,EAAE,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QACrD,CAAC;QAED,IAAI,QAAQ,YAAY,uCAAkB,IAAI,MAAM,YAAY,uCAAkB,EAAE,CAAC;YACnF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAA,qBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC7D,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAa,2BAA+B,SAAQ,iBAAO;IAC5B;IAA7B,YAA6B,aAAgB;QAC3C,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAG;IAE7C,CAAC;IAEe,KAAK,CAAC,KAAU;QAC9B,OAAO,sBAAsB,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAEe,QAAQ;QACtB,IAAI,IAAI,CAAC,aAAa,YAAY,KAAK,EAAE,CAAC;YACxC,OAAO,yBAAyB,IAAI,CAAC,aAAa,IAAI,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,OAAO,wBAAwB,IAAI,CAAC,aAAa,GAAG,CAAC;QACvD,CAAC;IACH,CAAC;CACF;AAhBD,kEAgBC;AAED,SAAgB,oBAAoB,CAAI,aAAgB;IACtD,OAAO,IAAI,2BAA2B,CAAC,aAAa,CAAQ,CAAC;AAC/D,CAAC"}
|