@expo/entity-secondary-cache-redis 0.31.0 → 0.32.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/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  const secondaryCacheLoader = new TestSecondaryRedisCacheLoader(
13
13
  new RedisSecondaryEntityCache(
14
14
  redisTestEntityConfiguration,
15
- redisCacheAdapterContext,
15
+ genericRedisCacheContext,
16
16
  (loadParams) => `${loadParams.id}`
17
17
  ),
18
18
  RedisTestEntity.loader(viewerContext)
@@ -58,15 +58,14 @@ class TestSecondaryRedisCacheLoader extends entity_1.EntitySecondaryCacheLoader
58
58
  }
59
59
  describe(RedisSecondaryEntityCache_1.default, () => {
60
60
  const redisClient = new ioredis_1.default(new url_1.URL(process.env['REDIS_URL']).toString());
61
- let redisCacheAdapterContext;
61
+ let genericRedisCacheContext;
62
62
  beforeAll(() => {
63
- redisCacheAdapterContext = {
63
+ genericRedisCacheContext = {
64
64
  redisClient,
65
65
  makeKeyFn(..._parts) {
66
66
  throw new Error('should not be used by this test');
67
67
  },
68
68
  cacheKeyPrefix: 'test-',
69
- cacheKeyVersion: 1,
70
69
  ttlSecondsPositive: 86400,
71
70
  ttlSecondsNegative: 600, // 10 minutes
72
71
  };
@@ -78,11 +77,11 @@ describe(RedisSecondaryEntityCache_1.default, () => {
78
77
  redisClient.disconnect();
79
78
  });
80
79
  it('Loads through secondary loader, caches, and invalidates', async () => {
81
- const viewerContext = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(redisCacheAdapterContext));
80
+ const viewerContext = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
82
81
  const createdEntity = await RedisTestEntity_1.default.creator(viewerContext)
83
82
  .setField('name', 'wat')
84
83
  .enforceCreateAsync();
85
- const secondaryCacheLoader = new TestSecondaryRedisCacheLoader(new RedisSecondaryEntityCache_1.default(RedisTestEntity_1.redisTestEntityConfiguration, redisCacheAdapterContext, (loadParams) => `test-key-${loadParams.id}`), RedisTestEntity_1.default.loader(viewerContext));
84
+ const secondaryCacheLoader = new TestSecondaryRedisCacheLoader(new RedisSecondaryEntityCache_1.default(RedisTestEntity_1.redisTestEntityConfiguration, genericRedisCacheContext, (loadParams) => `test-key-${loadParams.id}`), RedisTestEntity_1.default.loader(viewerContext));
86
85
  const loadParams = { id: createdEntity.getID() };
87
86
  const results = await secondaryCacheLoader.loadManyAsync([loadParams]);
88
87
  expect((0, nullthrows_1.default)(results.get(loadParams)).enforceValue().getID()).toEqual(createdEntity.getID());
@@ -96,8 +95,8 @@ describe(RedisSecondaryEntityCache_1.default, () => {
96
95
  expect(secondaryCacheLoader.databaseLoadCount).toEqual(2);
97
96
  });
98
97
  it('correctly handles uncached and unfetchable load params', async () => {
99
- const viewerContext = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(redisCacheAdapterContext));
100
- const secondaryCacheLoader = new TestSecondaryRedisCacheLoader(new RedisSecondaryEntityCache_1.default(RedisTestEntity_1.redisTestEntityConfiguration, redisCacheAdapterContext, (loadParams) => `test-key-${loadParams.id}`), RedisTestEntity_1.default.loader(viewerContext));
98
+ const viewerContext = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
99
+ const secondaryCacheLoader = new TestSecondaryRedisCacheLoader(new RedisSecondaryEntityCache_1.default(RedisTestEntity_1.redisTestEntityConfiguration, genericRedisCacheContext, (loadParams) => `test-key-${loadParams.id}`), RedisTestEntity_1.default.loader(viewerContext));
101
100
  const loadParams = { id: FAKE_ID };
102
101
  const results = await secondaryCacheLoader.loadManyAsync([loadParams]);
103
102
  expect(results.size).toBe(1);
@@ -1 +1 @@
1
- {"version":3,"file":"RedisSecondaryEntityCache-integration-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/RedisSecondaryEntityCache-integration-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RedisSecondaryEntityCache-integration-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/RedisSecondaryEntityCache-integration-test.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { AlwaysAllowPrivacyPolicyRule, EntityPrivacyPolicy, ViewerContext, EntityConfiguration, EntityCompanionDefinition, Entity } from '@expo/entity';
2
- export declare type RedisTestEntityFields = {
2
+ export type RedisTestEntityFields = {
3
3
  id: string;
4
4
  name: string;
5
5
  };
6
6
  export default class RedisTestEntity extends Entity<RedisTestEntityFields, string, ViewerContext> {
7
- static getCompanionDefinition(): EntityCompanionDefinition<RedisTestEntityFields, string, ViewerContext, RedisTestEntity, RedisTestEntityPrivacyPolicy>;
7
+ static defineCompanionDefinition(): EntityCompanionDefinition<RedisTestEntityFields, string, ViewerContext, RedisTestEntity, RedisTestEntityPrivacyPolicy>;
8
8
  }
9
9
  export declare class RedisTestEntityPrivacyPolicy extends EntityPrivacyPolicy<RedisTestEntityFields, string, ViewerContext, RedisTestEntity> {
10
10
  protected readonly createRules: AlwaysAllowPrivacyPolicyRule<RedisTestEntityFields, string, ViewerContext, RedisTestEntity, keyof RedisTestEntityFields>[];
@@ -3,8 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.redisTestEntityConfiguration = exports.RedisTestEntityPrivacyPolicy = void 0;
4
4
  const entity_1 = require("@expo/entity");
5
5
  class RedisTestEntity extends entity_1.Entity {
6
- static getCompanionDefinition() {
7
- return redisTestEntityCompanionDefinition;
6
+ static defineCompanionDefinition() {
7
+ return {
8
+ entityClass: RedisTestEntity,
9
+ entityConfiguration: exports.redisTestEntityConfiguration,
10
+ privacyPolicyClass: RedisTestEntityPrivacyPolicy,
11
+ };
8
12
  }
9
13
  }
10
14
  exports.default = RedisTestEntity;
@@ -40,9 +44,4 @@ exports.redisTestEntityConfiguration = new entity_1.EntityConfiguration({
40
44
  databaseAdapterFlavor: 'postgres',
41
45
  cacheAdapterFlavor: 'redis',
42
46
  });
43
- const redisTestEntityCompanionDefinition = new entity_1.EntityCompanionDefinition({
44
- entityClass: RedisTestEntity,
45
- entityConfiguration: exports.redisTestEntityConfiguration,
46
- privacyPolicyClass: RedisTestEntityPrivacyPolicy,
47
- });
48
47
  //# sourceMappingURL=RedisTestEntity.js.map
@@ -1 +1 @@
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,sBAAsB;QAO3B,OAAO,kCAAkC,CAAC;IAC5C,CAAC;CACF;AAVD,kCAUC;AAED,MAAa,4BAA6B,SAAQ,4BAKjD;IALD;;QAM8B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,cAAS,GAAG;YACtC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;IACJ,CAAC;CAAA;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;AAEH,MAAM,kCAAkC,GAAG,IAAI,kCAAyB,CAAC;IACvE,WAAW,EAAE,eAAe;IAC5B,mBAAmB,EAAE,oCAA4B;IACjD,kBAAkB,EAAE,4BAA4B;CACjD,CAAC,CAAC"}
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;IALD;;QAM8B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,cAAS,GAAG;YACtC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;QAC0B,gBAAW,GAAG;YACxC,IAAI,qCAA4B,EAK7B;SACJ,CAAC;IACJ,CAAC;CAAA;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 +1,3 @@
1
1
  import { IEntityMetricsAdapter, EntityCompanionProvider } from '@expo/entity';
2
- import { RedisCacheAdapterContext } from '@expo/entity-cache-adapter-redis';
3
- export declare const createRedisIntegrationTestEntityCompanionProvider: (redisCacheAdapterContext: RedisCacheAdapterContext, metricsAdapter?: IEntityMetricsAdapter) => EntityCompanionProvider;
2
+ import { GenericRedisCacheContext } from '@expo/entity-cache-adapter-redis';
3
+ export declare const createRedisIntegrationTestEntityCompanionProvider: (genericRedisCacheContext: GenericRedisCacheContext, metricsAdapter?: IEntityMetricsAdapter) => EntityCompanionProvider;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createRedisIntegrationTestEntityCompanionProvider = void 0;
4
4
  const entity_1 = require("@expo/entity");
5
5
  const entity_cache_adapter_redis_1 = require("@expo/entity-cache-adapter-redis");
6
- const createRedisIntegrationTestEntityCompanionProvider = (redisCacheAdapterContext, metricsAdapter = new entity_1.NoOpEntityMetricsAdapter()) => {
6
+ const createRedisIntegrationTestEntityCompanionProvider = (genericRedisCacheContext, metricsAdapter = new entity_1.NoOpEntityMetricsAdapter()) => {
7
7
  return new entity_1.EntityCompanionProvider(metricsAdapter, new Map([
8
8
  [
9
9
  'postgres',
@@ -16,7 +16,7 @@ const createRedisIntegrationTestEntityCompanionProvider = (redisCacheAdapterCont
16
16
  [
17
17
  'redis',
18
18
  {
19
- cacheAdapterProvider: new entity_cache_adapter_redis_1.RedisCacheAdapterProvider(redisCacheAdapterContext),
19
+ cacheAdapterProvider: new entity_cache_adapter_redis_1.RedisCacheAdapterProvider(genericRedisCacheContext),
20
20
  },
21
21
  ],
22
22
  ]));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/entity-secondary-cache-redis",
3
- "version": "0.31.0",
3
+ "version": "0.32.0",
4
4
  "description": "Redis secondary cache for @expo/entity",
5
5
  "files": [
6
6
  "build",
@@ -19,7 +19,7 @@
19
19
  "barrelsby": "barrelsby --directory src --location top --exclude tests__ --singleQuotes --exportDefault --delete"
20
20
  },
21
21
  "engines": {
22
- "node": ">=12"
22
+ "node": ">=16"
23
23
  },
24
24
  "keywords": [
25
25
  "entity"
@@ -31,10 +31,10 @@
31
31
  "@expo/entity-cache-adapter-redis": "*"
32
32
  },
33
33
  "devDependencies": {
34
- "@expo/entity": "^0.31.0",
35
- "@expo/entity-cache-adapter-redis": "^0.31.0",
34
+ "@expo/entity": "^0.32.0",
35
+ "@expo/entity-cache-adapter-redis": "^0.32.0",
36
36
  "ioredis": "^5.2.5",
37
37
  "nullthrows": "^1.1.1"
38
38
  },
39
- "gitHead": "92f5529ebad6dbec6887538e1d1900968ffc9738"
39
+ "gitHead": "d2a4405fa1af673a98e36b9b7c76c0ee7961a23e"
40
40
  }
@@ -1,5 +1,5 @@
1
1
  import { EntitySecondaryCacheLoader, mapMapAsync, ViewerContext } from '@expo/entity';
2
- import { RedisCacheAdapterContext } from '@expo/entity-cache-adapter-redis';
2
+ import { GenericRedisCacheContext } from '@expo/entity-cache-adapter-redis';
3
3
  import Redis from 'ioredis';
4
4
  import nullthrows from 'nullthrows';
5
5
  import { URL } from 'url';
@@ -53,16 +53,15 @@ class TestSecondaryRedisCacheLoader extends EntitySecondaryCacheLoader<
53
53
 
54
54
  describe(RedisSecondaryEntityCache, () => {
55
55
  const redisClient = new Redis(new URL(process.env['REDIS_URL']!).toString());
56
- let redisCacheAdapterContext: RedisCacheAdapterContext;
56
+ let genericRedisCacheContext: GenericRedisCacheContext;
57
57
 
58
58
  beforeAll(() => {
59
- redisCacheAdapterContext = {
59
+ genericRedisCacheContext = {
60
60
  redisClient,
61
61
  makeKeyFn(..._parts: string[]): string {
62
62
  throw new Error('should not be used by this test');
63
63
  },
64
64
  cacheKeyPrefix: 'test-',
65
- cacheKeyVersion: 1,
66
65
  ttlSecondsPositive: 86400, // 1 day
67
66
  ttlSecondsNegative: 600, // 10 minutes
68
67
  };
@@ -77,7 +76,7 @@ describe(RedisSecondaryEntityCache, () => {
77
76
 
78
77
  it('Loads through secondary loader, caches, and invalidates', async () => {
79
78
  const viewerContext = new TestViewerContext(
80
- createRedisIntegrationTestEntityCompanionProvider(redisCacheAdapterContext)
79
+ createRedisIntegrationTestEntityCompanionProvider(genericRedisCacheContext)
81
80
  );
82
81
 
83
82
  const createdEntity = await RedisTestEntity.creator(viewerContext)
@@ -87,7 +86,7 @@ describe(RedisSecondaryEntityCache, () => {
87
86
  const secondaryCacheLoader = new TestSecondaryRedisCacheLoader(
88
87
  new RedisSecondaryEntityCache(
89
88
  redisTestEntityConfiguration,
90
- redisCacheAdapterContext,
89
+ genericRedisCacheContext,
91
90
  (loadParams) => `test-key-${loadParams.id}`
92
91
  ),
93
92
  RedisTestEntity.loader(viewerContext)
@@ -120,13 +119,13 @@ describe(RedisSecondaryEntityCache, () => {
120
119
 
121
120
  it('correctly handles uncached and unfetchable load params', async () => {
122
121
  const viewerContext = new TestViewerContext(
123
- createRedisIntegrationTestEntityCompanionProvider(redisCacheAdapterContext)
122
+ createRedisIntegrationTestEntityCompanionProvider(genericRedisCacheContext)
124
123
  );
125
124
 
126
125
  const secondaryCacheLoader = new TestSecondaryRedisCacheLoader(
127
126
  new RedisSecondaryEntityCache(
128
127
  redisTestEntityConfiguration,
129
- redisCacheAdapterContext,
128
+ genericRedisCacheContext,
130
129
  (loadParams) => `test-key-${loadParams.id}`
131
130
  ),
132
131
  RedisTestEntity.loader(viewerContext)
@@ -15,14 +15,18 @@ export type RedisTestEntityFields = {
15
15
  };
16
16
 
17
17
  export default class RedisTestEntity extends Entity<RedisTestEntityFields, string, ViewerContext> {
18
- static getCompanionDefinition(): EntityCompanionDefinition<
18
+ static defineCompanionDefinition(): EntityCompanionDefinition<
19
19
  RedisTestEntityFields,
20
20
  string,
21
21
  ViewerContext,
22
22
  RedisTestEntity,
23
23
  RedisTestEntityPrivacyPolicy
24
24
  > {
25
- return redisTestEntityCompanionDefinition;
25
+ return {
26
+ entityClass: RedisTestEntity,
27
+ entityConfiguration: redisTestEntityConfiguration,
28
+ privacyPolicyClass: RedisTestEntityPrivacyPolicy,
29
+ };
26
30
  }
27
31
  }
28
32
 
@@ -80,9 +84,3 @@ export const redisTestEntityConfiguration = new EntityConfiguration<RedisTestEnt
80
84
  databaseAdapterFlavor: 'postgres',
81
85
  cacheAdapterFlavor: 'redis',
82
86
  });
83
-
84
- const redisTestEntityCompanionDefinition = new EntityCompanionDefinition({
85
- entityClass: RedisTestEntity,
86
- entityConfiguration: redisTestEntityConfiguration,
87
- privacyPolicyClass: RedisTestEntityPrivacyPolicy,
88
- });
@@ -6,12 +6,12 @@ import {
6
6
  StubDatabaseAdapterProvider,
7
7
  } from '@expo/entity';
8
8
  import {
9
- RedisCacheAdapterContext,
9
+ GenericRedisCacheContext,
10
10
  RedisCacheAdapterProvider,
11
11
  } from '@expo/entity-cache-adapter-redis';
12
12
 
13
13
  export const createRedisIntegrationTestEntityCompanionProvider = (
14
- redisCacheAdapterContext: RedisCacheAdapterContext,
14
+ genericRedisCacheContext: GenericRedisCacheContext,
15
15
  metricsAdapter: IEntityMetricsAdapter = new NoOpEntityMetricsAdapter()
16
16
  ): EntityCompanionProvider => {
17
17
  return new EntityCompanionProvider(
@@ -29,7 +29,7 @@ export const createRedisIntegrationTestEntityCompanionProvider = (
29
29
  [
30
30
  'redis',
31
31
  {
32
- cacheAdapterProvider: new RedisCacheAdapterProvider(redisCacheAdapterContext),
32
+ cacheAdapterProvider: new RedisCacheAdapterProvider(genericRedisCacheContext),
33
33
  },
34
34
  ],
35
35
  ])