@expo/entity-secondary-cache-redis 0.41.0 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,6 @@ import { GenericRedisCacheContext } from '@expo/entity-cache-adapter-redis';
3
3
  /**
4
4
  * A redis GenericSecondaryEntityCache.
5
5
  */
6
- export default class RedisSecondaryEntityCache<TFields extends Record<string, any>, TLoadParams> extends GenericSecondaryEntityCache<TFields, TLoadParams> {
7
- constructor(entityConfiguration: EntityConfiguration<TFields>, genericRedisCacheContext: GenericRedisCacheContext, constructRedisKey: (params: Readonly<TLoadParams>) => string);
6
+ export default class RedisSecondaryEntityCache<TFields extends Record<string, any>, TIDField extends keyof TFields, TLoadParams> extends GenericSecondaryEntityCache<TFields, TIDField, TLoadParams> {
7
+ constructor(entityConfiguration: EntityConfiguration<TFields, TIDField>, genericRedisCacheContext: GenericRedisCacheContext, constructRedisKey: (params: Readonly<TLoadParams>) => string);
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RedisSecondaryEntityCache.js","sourceRoot":"","sources":["../src/RedisSecondaryEntityCache.ts"],"names":[],"mappings":";;AAAA,yCAAgF;AAChF,iFAAgG;AAEhG;;GAEG;AACH,MAAqB,yBAGnB,SAAQ,oCAAiD;IACzD,YACE,mBAAiD,EACjD,wBAAkD,EAClD,iBAA4D;QAE5D,KAAK,CAAC,IAAI,+CAAkB,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAClG,CAAC;CACF;AAXD,4CAWC"}
1
+ {"version":3,"file":"RedisSecondaryEntityCache.js","sourceRoot":"","sources":["../src/RedisSecondaryEntityCache.ts"],"names":[],"mappings":";;AAAA,yCAAgF;AAChF,iFAAgG;AAEhG;;GAEG;AACH,MAAqB,yBAInB,SAAQ,oCAA2D;IACnE,YACE,mBAA2D,EAC3D,wBAAkD,EAClD,iBAA4D;QAE5D,KAAK,CAAC,IAAI,+CAAkB,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAClG,CAAC;CACF;AAZD,4CAYC"}
@@ -0,0 +1 @@
1
+ {"root":["../src/redissecondaryentitycache.ts","../src/index.ts"],"version":"5.8.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/entity-secondary-cache-redis",
3
- "version": "0.41.0",
3
+ "version": "0.43.0",
4
4
  "description": "Redis secondary cache for @expo/entity",
5
5
  "files": [
6
6
  "build",
@@ -10,6 +10,7 @@
10
10
  "types": "build/index.d.ts",
11
11
  "scripts": {
12
12
  "tsc": "tsc",
13
+ "build": "tsc -b tsconfig.build.json",
13
14
  "clean": "rm -rf build coverage coverage-integration",
14
15
  "lint": "eslint src",
15
16
  "lint-fix": "eslint src --fix",
@@ -27,24 +28,24 @@
27
28
  "author": "Expo",
28
29
  "license": "MIT",
29
30
  "dependencies": {
30
- "@expo/entity": "^0.41.0",
31
- "@expo/entity-cache-adapter-redis": "^0.41.0"
31
+ "@expo/entity": "^0.43.0",
32
+ "@expo/entity-cache-adapter-redis": "^0.43.0"
32
33
  },
33
34
  "devDependencies": {
34
- "@types/jest": "^29.5.12",
35
+ "@types/jest": "^29.5.14",
35
36
  "@types/node": "^20.14.1",
36
37
  "ctix": "^2.7.0",
37
38
  "eslint": "^8.57.1",
38
39
  "eslint-config-universe": "^14.0.0",
39
40
  "eslint-plugin-tsdoc": "^0.3.0",
40
- "ioredis": "^5.4.1",
41
+ "ioredis": "^5.6.0",
41
42
  "jest": "^29.7.0",
42
43
  "nullthrows": "^1.1.1",
43
44
  "prettier": "^3.3.3",
44
45
  "prettier-plugin-organize-imports": "^4.1.0",
45
- "ts-jest": "^29.2.5",
46
+ "ts-jest": "^29.3.1",
46
47
  "ts-mockito": "^2.6.1",
47
- "typescript": "^5.7.3"
48
+ "typescript": "^5.8.3"
48
49
  },
49
- "gitHead": "ee4be736a9a0ba580e9af0194e07c9cd36b1c599"
50
+ "gitHead": "618383027dc76b9250f22d163321ec25e2af0115"
50
51
  }
@@ -6,10 +6,11 @@ import { GenericRedisCacheContext, GenericRedisCacher } from '@expo/entity-cache
6
6
  */
7
7
  export default class RedisSecondaryEntityCache<
8
8
  TFields extends Record<string, any>,
9
+ TIDField extends keyof TFields,
9
10
  TLoadParams,
10
- > extends GenericSecondaryEntityCache<TFields, TLoadParams> {
11
+ > extends GenericSecondaryEntityCache<TFields, TIDField, TLoadParams> {
11
12
  constructor(
12
- entityConfiguration: EntityConfiguration<TFields>,
13
+ entityConfiguration: EntityConfiguration<TFields, TIDField>,
13
14
  genericRedisCacheContext: GenericRedisCacheContext,
14
15
  constructRedisKey: (params: Readonly<TLoadParams>) => string,
15
16
  ) {
@@ -1,5 +1,8 @@
1
1
  import { EntitySecondaryCacheLoader, mapMapAsync, ViewerContext } from '@expo/entity';
2
- import { GenericRedisCacheContext } from '@expo/entity-cache-adapter-redis';
2
+ import {
3
+ GenericRedisCacheContext,
4
+ RedisCacheInvalidationStrategy,
5
+ } from '@expo/entity-cache-adapter-redis';
3
6
  import Redis from 'ioredis';
4
7
  import nullthrows from 'nullthrows';
5
8
  import { URL } from 'url';
@@ -9,8 +12,8 @@ import RedisTestEntity, {
9
12
  redisTestEntityConfiguration,
10
13
  RedisTestEntityFields,
11
14
  RedisTestEntityPrivacyPolicy,
12
- } from '../testfixtures/RedisTestEntity';
13
- import { createRedisIntegrationTestEntityCompanionProvider } from '../testfixtures/createRedisIntegrationTestEntityCompanionProvider';
15
+ } from '../__testfixtures__/RedisTestEntity';
16
+ import { createRedisIntegrationTestEntityCompanionProvider } from '../__testfixtures__/createRedisIntegrationTestEntityCompanionProvider';
14
17
 
15
18
  class TestViewerContext extends ViewerContext {}
16
19
 
@@ -21,7 +24,7 @@ const FAKE_ID = 'fake';
21
24
  class TestSecondaryRedisCacheLoader extends EntitySecondaryCacheLoader<
22
25
  TestLoadParams,
23
26
  RedisTestEntityFields,
24
- string,
27
+ 'id',
25
28
  TestViewerContext,
26
29
  RedisTestEntity,
27
30
  RedisTestEntityPrivacyPolicy
@@ -64,6 +67,7 @@ describe(RedisSecondaryEntityCache, () => {
64
67
  cacheKeyPrefix: 'test-',
65
68
  ttlSecondsPositive: 86400, // 1 day
66
69
  ttlSecondsNegative: 600, // 10 minutes
70
+ invalidationStrategy: RedisCacheInvalidationStrategy.CURRENT_CACHE_KEY_VERSION,
67
71
  };
68
72
  });
69
73
 
@@ -2,11 +2,11 @@ import {
2
2
  AlwaysAllowPrivacyPolicyRule,
3
3
  EntityPrivacyPolicy,
4
4
  ViewerContext,
5
- UUIDField,
6
5
  StringField,
7
6
  EntityConfiguration,
8
7
  EntityCompanionDefinition,
9
8
  Entity,
9
+ UUIDField,
10
10
  } from '@expo/entity';
11
11
 
12
12
  export type RedisTestEntityFields = {
@@ -14,10 +14,10 @@ export type RedisTestEntityFields = {
14
14
  name: string;
15
15
  };
16
16
 
17
- export default class RedisTestEntity extends Entity<RedisTestEntityFields, string, ViewerContext> {
17
+ export default class RedisTestEntity extends Entity<RedisTestEntityFields, 'id', ViewerContext> {
18
18
  static defineCompanionDefinition(): EntityCompanionDefinition<
19
19
  RedisTestEntityFields,
20
- string,
20
+ 'id',
21
21
  ViewerContext,
22
22
  RedisTestEntity,
23
23
  RedisTestEntityPrivacyPolicy
@@ -32,50 +32,31 @@ export default class RedisTestEntity extends Entity<RedisTestEntityFields, strin
32
32
 
33
33
  export class RedisTestEntityPrivacyPolicy extends EntityPrivacyPolicy<
34
34
  RedisTestEntityFields,
35
- string,
35
+ 'id',
36
36
  ViewerContext,
37
37
  RedisTestEntity
38
38
  > {
39
39
  protected override readonly createRules = [
40
- new AlwaysAllowPrivacyPolicyRule<
41
- RedisTestEntityFields,
42
- string,
43
- ViewerContext,
44
- RedisTestEntity
45
- >(),
40
+ new AlwaysAllowPrivacyPolicyRule<RedisTestEntityFields, 'id', ViewerContext, RedisTestEntity>(),
46
41
  ];
47
42
  protected override readonly readRules = [
48
- new AlwaysAllowPrivacyPolicyRule<
49
- RedisTestEntityFields,
50
- string,
51
- ViewerContext,
52
- RedisTestEntity
53
- >(),
43
+ new AlwaysAllowPrivacyPolicyRule<RedisTestEntityFields, 'id', ViewerContext, RedisTestEntity>(),
54
44
  ];
55
45
  protected override readonly updateRules = [
56
- new AlwaysAllowPrivacyPolicyRule<
57
- RedisTestEntityFields,
58
- string,
59
- ViewerContext,
60
- RedisTestEntity
61
- >(),
46
+ new AlwaysAllowPrivacyPolicyRule<RedisTestEntityFields, 'id', ViewerContext, RedisTestEntity>(),
62
47
  ];
63
48
  protected override readonly deleteRules = [
64
- new AlwaysAllowPrivacyPolicyRule<
65
- RedisTestEntityFields,
66
- string,
67
- ViewerContext,
68
- RedisTestEntity
69
- >(),
49
+ new AlwaysAllowPrivacyPolicyRule<RedisTestEntityFields, 'id', ViewerContext, RedisTestEntity>(),
70
50
  ];
71
51
  }
72
52
 
73
- export const redisTestEntityConfiguration = new EntityConfiguration<RedisTestEntityFields>({
53
+ export const redisTestEntityConfiguration = new EntityConfiguration<RedisTestEntityFields, 'id'>({
74
54
  idField: 'id',
75
55
  tableName: 'redis_test_entities',
76
56
  schema: {
77
57
  id: new UUIDField({
78
58
  columnName: 'id',
59
+ cache: false,
79
60
  }),
80
61
  name: new StringField({
81
62
  columnName: 'name',
@@ -2,13 +2,12 @@ import {
2
2
  NoOpEntityMetricsAdapter,
3
3
  IEntityMetricsAdapter,
4
4
  EntityCompanionProvider,
5
- StubQueryContextProvider,
6
- StubDatabaseAdapterProvider,
7
5
  } from '@expo/entity';
8
6
  import {
9
7
  GenericRedisCacheContext,
10
8
  RedisCacheAdapterProvider,
11
9
  } from '@expo/entity-cache-adapter-redis';
10
+ import { StubDatabaseAdapterProvider, StubQueryContextProvider } from '@expo/entity-testing-utils';
12
11
 
13
12
  const queryContextProvider = new StubQueryContextProvider();
14
13
 
@@ -1,113 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const entity_1 = require("@expo/entity");
40
- const ioredis_1 = __importDefault(require("ioredis"));
41
- const nullthrows_1 = __importDefault(require("nullthrows"));
42
- const url_1 = require("url");
43
- const RedisSecondaryEntityCache_1 = __importDefault(require("../RedisSecondaryEntityCache"));
44
- const RedisTestEntity_1 = __importStar(require("../testfixtures/RedisTestEntity"));
45
- const createRedisIntegrationTestEntityCompanionProvider_1 = require("../testfixtures/createRedisIntegrationTestEntityCompanionProvider");
46
- class TestViewerContext extends entity_1.ViewerContext {
47
- }
48
- const FAKE_ID = 'fake';
49
- class TestSecondaryRedisCacheLoader extends entity_1.EntitySecondaryCacheLoader {
50
- databaseLoadCount = 0;
51
- async fetchObjectsFromDatabaseAsync(loadParamsArray) {
52
- this.databaseLoadCount += loadParamsArray.length;
53
- const emptyMap = new Map(loadParamsArray.map((p) => [p, null]));
54
- return await (0, entity_1.mapMapAsync)(emptyMap, async (_value, loadParams) => {
55
- if (loadParams.id === FAKE_ID) {
56
- return null;
57
- }
58
- return (0, nullthrows_1.default)((await this.entityLoader.loadManyByFieldEqualityConjunctionAsync([
59
- { fieldName: 'id', fieldValue: loadParams.id },
60
- ]))[0])
61
- .enforceValue()
62
- .getAllFields();
63
- });
64
- }
65
- }
66
- describe(RedisSecondaryEntityCache_1.default, () => {
67
- const redisClient = new ioredis_1.default(new url_1.URL(process.env['REDIS_URL']).toString());
68
- let genericRedisCacheContext;
69
- beforeAll(() => {
70
- genericRedisCacheContext = {
71
- redisClient,
72
- makeKeyFn(..._parts) {
73
- throw new Error('should not be used by this test');
74
- },
75
- cacheKeyPrefix: 'test-',
76
- ttlSecondsPositive: 86400, // 1 day
77
- ttlSecondsNegative: 600, // 10 minutes
78
- };
79
- });
80
- beforeEach(async () => {
81
- await redisClient.flushdb();
82
- });
83
- afterAll(async () => {
84
- redisClient.disconnect();
85
- });
86
- it('Loads through secondary loader, caches, and invalidates', async () => {
87
- const viewerContext = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
88
- const createdEntity = await RedisTestEntity_1.default.creator(viewerContext)
89
- .setField('name', 'wat')
90
- .createAsync();
91
- const secondaryCacheLoader = new TestSecondaryRedisCacheLoader(new RedisSecondaryEntityCache_1.default(RedisTestEntity_1.redisTestEntityConfiguration, genericRedisCacheContext, (loadParams) => `test-key-${loadParams.id}`), RedisTestEntity_1.default.loaderWithAuthorizationResults(viewerContext));
92
- const loadParams = { id: createdEntity.getID() };
93
- const results = await secondaryCacheLoader.loadManyAsync([loadParams]);
94
- expect((0, nullthrows_1.default)(results.get(loadParams)).enforceValue().getID()).toEqual(createdEntity.getID());
95
- expect(secondaryCacheLoader.databaseLoadCount).toEqual(1);
96
- const results2 = await secondaryCacheLoader.loadManyAsync([loadParams]);
97
- expect((0, nullthrows_1.default)(results2.get(loadParams)).enforceValue().getID()).toEqual(createdEntity.getID());
98
- expect(secondaryCacheLoader.databaseLoadCount).toEqual(1);
99
- await secondaryCacheLoader.invalidateManyAsync([loadParams]);
100
- const results3 = await secondaryCacheLoader.loadManyAsync([loadParams]);
101
- expect((0, nullthrows_1.default)(results3.get(loadParams)).enforceValue().getID()).toEqual(createdEntity.getID());
102
- expect(secondaryCacheLoader.databaseLoadCount).toEqual(2);
103
- });
104
- it('correctly handles uncached and unfetchable load params', async () => {
105
- const viewerContext = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
106
- const secondaryCacheLoader = new TestSecondaryRedisCacheLoader(new RedisSecondaryEntityCache_1.default(RedisTestEntity_1.redisTestEntityConfiguration, genericRedisCacheContext, (loadParams) => `test-key-${loadParams.id}`), RedisTestEntity_1.default.loaderWithAuthorizationResults(viewerContext));
107
- const loadParams = { id: FAKE_ID };
108
- const results = await secondaryCacheLoader.loadManyAsync([loadParams]);
109
- expect(results.size).toBe(1);
110
- expect(results.get(loadParams)).toBe(null);
111
- });
112
- });
113
- //# sourceMappingURL=RedisSecondaryEntityCache-integration-test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RedisSecondaryEntityCache-integration-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/RedisSecondaryEntityCache-integration-test.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { AlwaysAllowPrivacyPolicyRule, EntityPrivacyPolicy, ViewerContext, EntityConfiguration, EntityCompanionDefinition, Entity } from '@expo/entity';
2
- export type RedisTestEntityFields = {
3
- id: string;
4
- name: string;
5
- };
6
- export default class RedisTestEntity extends Entity<RedisTestEntityFields, string, ViewerContext> {
7
- static defineCompanionDefinition(): EntityCompanionDefinition<RedisTestEntityFields, string, ViewerContext, RedisTestEntity, RedisTestEntityPrivacyPolicy>;
8
- }
9
- export declare class RedisTestEntityPrivacyPolicy extends EntityPrivacyPolicy<RedisTestEntityFields, string, ViewerContext, RedisTestEntity> {
10
- protected readonly createRules: AlwaysAllowPrivacyPolicyRule<RedisTestEntityFields, string, ViewerContext, RedisTestEntity, keyof RedisTestEntityFields>[];
11
- protected readonly readRules: AlwaysAllowPrivacyPolicyRule<RedisTestEntityFields, string, ViewerContext, RedisTestEntity, keyof RedisTestEntityFields>[];
12
- protected readonly updateRules: AlwaysAllowPrivacyPolicyRule<RedisTestEntityFields, string, ViewerContext, RedisTestEntity, keyof RedisTestEntityFields>[];
13
- protected readonly deleteRules: AlwaysAllowPrivacyPolicyRule<RedisTestEntityFields, string, ViewerContext, RedisTestEntity, keyof RedisTestEntityFields>[];
14
- }
15
- export declare const redisTestEntityConfiguration: EntityConfiguration<RedisTestEntityFields>;
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.redisTestEntityConfiguration = exports.RedisTestEntityPrivacyPolicy = void 0;
4
- const entity_1 = require("@expo/entity");
5
- class RedisTestEntity extends entity_1.Entity {
6
- static defineCompanionDefinition() {
7
- return {
8
- entityClass: RedisTestEntity,
9
- entityConfiguration: exports.redisTestEntityConfiguration,
10
- privacyPolicyClass: RedisTestEntityPrivacyPolicy,
11
- };
12
- }
13
- }
14
- exports.default = RedisTestEntity;
15
- class RedisTestEntityPrivacyPolicy extends entity_1.EntityPrivacyPolicy {
16
- createRules = [
17
- new entity_1.AlwaysAllowPrivacyPolicyRule(),
18
- ];
19
- readRules = [
20
- new entity_1.AlwaysAllowPrivacyPolicyRule(),
21
- ];
22
- updateRules = [
23
- new entity_1.AlwaysAllowPrivacyPolicyRule(),
24
- ];
25
- deleteRules = [
26
- new entity_1.AlwaysAllowPrivacyPolicyRule(),
27
- ];
28
- }
29
- exports.RedisTestEntityPrivacyPolicy = RedisTestEntityPrivacyPolicy;
30
- exports.redisTestEntityConfiguration = new entity_1.EntityConfiguration({
31
- idField: 'id',
32
- tableName: 'redis_test_entities',
33
- schema: {
34
- id: new entity_1.UUIDField({
35
- columnName: 'id',
36
- }),
37
- name: new entity_1.StringField({
38
- columnName: 'name',
39
- }),
40
- },
41
- databaseAdapterFlavor: 'postgres',
42
- cacheAdapterFlavor: 'redis',
43
- });
44
- //# sourceMappingURL=RedisTestEntity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RedisTestEntity.js","sourceRoot":"","sources":["../../src/testfixtures/RedisTestEntity.ts"],"names":[],"mappings":";;;AAAA,yCASsB;AAOtB,MAAqB,eAAgB,SAAQ,eAAoD;IAC/F,MAAM,CAAC,yBAAyB;QAO9B,OAAO;YACL,WAAW,EAAE,eAAe;YAC5B,mBAAmB,EAAE,oCAA4B;YACjD,kBAAkB,EAAE,4BAA4B;SACjD,CAAC;IACJ,CAAC;CACF;AAdD,kCAcC;AAED,MAAa,4BAA6B,SAAQ,4BAKjD;IAC6B,WAAW,GAAG;QACxC,IAAI,qCAA4B,EAK7B;KACJ,CAAC;IAC0B,SAAS,GAAG;QACtC,IAAI,qCAA4B,EAK7B;KACJ,CAAC;IAC0B,WAAW,GAAG;QACxC,IAAI,qCAA4B,EAK7B;KACJ,CAAC;IAC0B,WAAW,GAAG;QACxC,IAAI,qCAA4B,EAK7B;KACJ,CAAC;CACH;AAtCD,oEAsCC;AAEY,QAAA,4BAA4B,GAAG,IAAI,4BAAmB,CAAwB;IACzF,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,qBAAqB;IAChC,MAAM,EAAE;QACN,EAAE,EAAE,IAAI,kBAAS,CAAC;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC;QACF,IAAI,EAAE,IAAI,oBAAW,CAAC;YACpB,UAAU,EAAE,MAAM;SACnB,CAAC;KACH;IACD,qBAAqB,EAAE,UAAU;IACjC,kBAAkB,EAAE,OAAO;CAC5B,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import { IEntityMetricsAdapter, EntityCompanionProvider } from '@expo/entity';
2
- import { GenericRedisCacheContext } from '@expo/entity-cache-adapter-redis';
3
- export declare const createRedisIntegrationTestEntityCompanionProvider: (genericRedisCacheContext: GenericRedisCacheContext, metricsAdapter?: IEntityMetricsAdapter) => EntityCompanionProvider;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createRedisIntegrationTestEntityCompanionProvider = void 0;
4
- const entity_1 = require("@expo/entity");
5
- const entity_cache_adapter_redis_1 = require("@expo/entity-cache-adapter-redis");
6
- const queryContextProvider = new entity_1.StubQueryContextProvider();
7
- const createRedisIntegrationTestEntityCompanionProvider = (genericRedisCacheContext, metricsAdapter = new entity_1.NoOpEntityMetricsAdapter()) => {
8
- return new entity_1.EntityCompanionProvider(metricsAdapter, new Map([
9
- [
10
- 'postgres',
11
- {
12
- adapterProvider: new entity_1.StubDatabaseAdapterProvider(),
13
- queryContextProvider,
14
- },
15
- ],
16
- ]), new Map([
17
- [
18
- 'redis',
19
- {
20
- cacheAdapterProvider: new entity_cache_adapter_redis_1.RedisCacheAdapterProvider(genericRedisCacheContext),
21
- },
22
- ],
23
- ]));
24
- };
25
- exports.createRedisIntegrationTestEntityCompanionProvider = createRedisIntegrationTestEntityCompanionProvider;
26
- //# sourceMappingURL=createRedisIntegrationTestEntityCompanionProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createRedisIntegrationTestEntityCompanionProvider.js","sourceRoot":"","sources":["../../src/testfixtures/createRedisIntegrationTestEntityCompanionProvider.ts"],"names":[],"mappings":";;;AAAA,yCAMsB;AACtB,iFAG0C;AAE1C,MAAM,oBAAoB,GAAG,IAAI,iCAAwB,EAAE,CAAC;AAErD,MAAM,iDAAiD,GAAG,CAC/D,wBAAkD,EAClD,iBAAwC,IAAI,iCAAwB,EAAE,EAC7C,EAAE;IAC3B,OAAO,IAAI,gCAAuB,CAChC,cAAc,EACd,IAAI,GAAG,CAAC;QACN;YACE,UAAU;YACV;gBACE,eAAe,EAAE,IAAI,oCAA2B,EAAE;gBAClD,oBAAoB;aACrB;SACF;KACF,CAAC,EACF,IAAI,GAAG,CAAC;QACN;YACE,OAAO;YACP;gBACE,oBAAoB,EAAE,IAAI,sDAAyB,CAAC,wBAAwB,CAAC;aAC9E;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,iDAAiD,qDAwB5D"}