@expo/entity-cache-adapter-local-memory 0.39.0 → 0.41.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/GenericLocalMemoryCacher.d.ts +1 -2
- package/build/GenericLocalMemoryCacher.js.map +1 -1
- package/build/__tests__/GenericLocalMemoryCacher-full-test.js +8 -20
- package/build/__tests__/GenericLocalMemoryCacher-full-test.js.map +1 -1
- package/build/__tests__/GenericLocalMemoryCacher-test.js +17 -7
- package/build/__tests__/GenericLocalMemoryCacher-test.js.map +1 -1
- package/build/testfixtures/createLocalMemoryTestEntityCompanionProvider.js +2 -1
- package/build/testfixtures/createLocalMemoryTestEntityCompanionProvider.js.map +1 -1
- package/package.json +17 -7
- package/src/GenericLocalMemoryCacher.ts +3 -1
- package/src/__tests__/GenericLocalMemoryCacher-full-test.ts +23 -20
- package/src/testfixtures/createLocalMemoryTestEntityCompanionProvider.ts +3 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CacheLoadResult, EntityConfiguration, IEntityGenericCacher } from '@expo/entity';
|
|
2
2
|
import LRUCache from 'lru-cache';
|
|
3
3
|
export declare const DOES_NOT_EXIST_LOCAL_MEMORY_CACHE: unique symbol;
|
|
4
|
-
type LocalMemoryCacheValue<TFields> = Readonly<TFields> | typeof DOES_NOT_EXIST_LOCAL_MEMORY_CACHE;
|
|
4
|
+
export type LocalMemoryCacheValue<TFields> = Readonly<TFields> | typeof DOES_NOT_EXIST_LOCAL_MEMORY_CACHE;
|
|
5
5
|
export type LocalMemoryCache<TFields> = LRUCache<string, LocalMemoryCacheValue<TFields>>;
|
|
6
6
|
export default class GenericLocalMemoryCacher<TFields extends Record<string, any>> implements IEntityGenericCacher<TFields> {
|
|
7
7
|
private readonly entityConfiguration;
|
|
@@ -18,4 +18,3 @@ export default class GenericLocalMemoryCacher<TFields extends Record<string, any
|
|
|
18
18
|
invalidateManyAsync(keys: readonly string[]): Promise<void>;
|
|
19
19
|
makeCacheKey<N extends keyof TFields>(fieldName: N, fieldValue: NonNullable<TFields[N]>): string;
|
|
20
20
|
}
|
|
21
|
-
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericLocalMemoryCacher.js","sourceRoot":"","sources":["../src/GenericLocalMemoryCacher.ts"],"names":[],"mappings":";;;;;;AAAA,yCAKsB;AACtB,0DAAkC;AAClC,0DAAiC;AAEjC,+EAA+E;AAC/E,qEAAqE;AACxD,QAAA,iCAAiC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"GenericLocalMemoryCacher.js","sourceRoot":"","sources":["../src/GenericLocalMemoryCacher.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,11 +18,9 @@ describe(GenericLocalMemoryCacher_1.default, () => {
|
|
|
18
18
|
const entity1Created = await LocalMemoryTestEntity_1.default.creator(viewerContext)
|
|
19
19
|
.setField('name', 'blah')
|
|
20
20
|
.setField('dateField', date)
|
|
21
|
-
.
|
|
21
|
+
.createAsync();
|
|
22
22
|
// loading an entity should put it in cache
|
|
23
|
-
const entity1 = await LocalMemoryTestEntity_1.default.loader(viewerContext)
|
|
24
|
-
.enforcing()
|
|
25
|
-
.loadByIDAsync(entity1Created.getID());
|
|
23
|
+
const entity1 = await LocalMemoryTestEntity_1.default.loader(viewerContext).loadByIDAsync(entity1Created.getID());
|
|
26
24
|
const localMemoryCacheAdapterProvider = entityCompanionProvider['cacheAdapterFlavors'].get('local-memory').cacheAdapterProvider;
|
|
27
25
|
const entitySpecificGenericCacher = localMemoryCacheAdapterProvider['localMemoryCacheAdapterMap'].get(viewerContext.entityCompanionProvider.getCompanionForEntity(LocalMemoryTestEntity_1.default)
|
|
28
26
|
.entityCompanionDefinition.entityConfiguration.tableName)['genericCacher'];
|
|
@@ -40,9 +38,7 @@ describe(GenericLocalMemoryCacher_1.default, () => {
|
|
|
40
38
|
});
|
|
41
39
|
// simulate non existent db fetch, should write negative result ('') to cache
|
|
42
40
|
const nonExistentId = (0, uuid_1.v4)();
|
|
43
|
-
const entityNonExistentResult = await LocalMemoryTestEntity_1.default.
|
|
44
|
-
.withAuthorizationResults()
|
|
45
|
-
.loadByIDAsync(nonExistentId);
|
|
41
|
+
const entityNonExistentResult = await LocalMemoryTestEntity_1.default.loaderWithAuthorizationResults(viewerContext).loadByIDAsync(nonExistentId);
|
|
46
42
|
expect(entityNonExistentResult.ok).toBe(false);
|
|
47
43
|
const nonExistentCachedResult = await entitySpecificGenericCacher.loadManyAsync([
|
|
48
44
|
cacheKeyMaker('id', nonExistentId),
|
|
@@ -51,14 +47,10 @@ describe(GenericLocalMemoryCacher_1.default, () => {
|
|
|
51
47
|
status: entity_1.CacheStatus.NEGATIVE,
|
|
52
48
|
});
|
|
53
49
|
// load again through entities framework to ensure it reads negative result
|
|
54
|
-
const entityNonExistentResult2 = await LocalMemoryTestEntity_1.default.
|
|
55
|
-
.withAuthorizationResults()
|
|
56
|
-
.loadByIDAsync(nonExistentId);
|
|
50
|
+
const entityNonExistentResult2 = await LocalMemoryTestEntity_1.default.loaderWithAuthorizationResults(viewerContext).loadByIDAsync(nonExistentId);
|
|
57
51
|
expect(entityNonExistentResult2.ok).toBe(false);
|
|
58
52
|
// invalidate from cache to ensure it invalidates correctly
|
|
59
|
-
await LocalMemoryTestEntity_1.default.
|
|
60
|
-
.utils()
|
|
61
|
-
.invalidateFieldsAsync(entity1.getAllFields());
|
|
53
|
+
await LocalMemoryTestEntity_1.default.loaderUtils(viewerContext).invalidateFieldsAsync(entity1.getAllFields());
|
|
62
54
|
const cachedResultMiss = await entitySpecificGenericCacher.loadManyAsync([
|
|
63
55
|
cacheKeyMaker('id', entity1.getID()),
|
|
64
56
|
]);
|
|
@@ -74,11 +66,9 @@ describe(GenericLocalMemoryCacher_1.default, () => {
|
|
|
74
66
|
const entity1Created = await LocalMemoryTestEntity_1.default.creator(viewerContext)
|
|
75
67
|
.setField('name', 'blah')
|
|
76
68
|
.setField('dateField', date)
|
|
77
|
-
.
|
|
69
|
+
.createAsync();
|
|
78
70
|
// loading an entity will try to put it in cache but it's a noop cache, so it should be a miss
|
|
79
|
-
const entity1 = await LocalMemoryTestEntity_1.default.loader(viewerContext)
|
|
80
|
-
.enforcing()
|
|
81
|
-
.loadByIDAsync(entity1Created.getID());
|
|
71
|
+
const entity1 = await LocalMemoryTestEntity_1.default.loader(viewerContext).loadByIDAsync(entity1Created.getID());
|
|
82
72
|
const localMemoryCacheAdapterProvider = entityCompanionProvider['cacheAdapterFlavors'].get('local-memory').cacheAdapterProvider;
|
|
83
73
|
const entitySpecificGenericCacher = localMemoryCacheAdapterProvider['localMemoryCacheAdapterMap'].get(viewerContext.entityCompanionProvider.getCompanionForEntity(LocalMemoryTestEntity_1.default)
|
|
84
74
|
.entityCompanionDefinition.entityConfiguration.tableName)['genericCacher'];
|
|
@@ -91,9 +81,7 @@ describe(GenericLocalMemoryCacher_1.default, () => {
|
|
|
91
81
|
});
|
|
92
82
|
// a non existent db fetch should try to write negative result ('') but it's a noop cache, so it should be a miss
|
|
93
83
|
const nonExistentId = (0, uuid_1.v4)();
|
|
94
|
-
const entityNonExistentResult = await LocalMemoryTestEntity_1.default.
|
|
95
|
-
.withAuthorizationResults()
|
|
96
|
-
.loadByIDAsync(nonExistentId);
|
|
84
|
+
const entityNonExistentResult = await LocalMemoryTestEntity_1.default.loaderWithAuthorizationResults(viewerContext).loadByIDAsync(nonExistentId);
|
|
97
85
|
expect(entityNonExistentResult.ok).toBe(false);
|
|
98
86
|
const nonExistentCachedResult = await entitySpecificGenericCacher.loadManyAsync([
|
|
99
87
|
cacheKeyMaker('id', nonExistentId),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericLocalMemoryCacher-full-test.js","sourceRoot":"","sources":["../../src/__tests__/GenericLocalMemoryCacher-full-test.ts"],"names":[],"mappings":";;;;;AAAA,yCAKsB;AACtB,+BAAoC;AAEpC,2FAAmE;AAEnE,kGAA0E;AAC1E,+HAGsE;AAEtE,QAAQ,CAAC,kCAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,uBAAuB,GAAG,IAAA,2FAA4C,GAAE,CAAC;QAC/E,MAAM,aAAa,GAAG,IAAI,sBAAa,CAAC,uBAAuB,CAAC,CAAC;QACjE,MAAM,aAAa,GACjB,aAAa,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,+BAAqB,CAAC,CAChF,sBAAsB,CACvB,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;QACrC,MAAM,aAAa,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAExE,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,MAAM,+BAAqB,CAAC,OAAO,CAAC,aAAa,CAAC;aACtE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;aACxB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;aAC3B,
|
|
1
|
+
{"version":3,"file":"GenericLocalMemoryCacher-full-test.js","sourceRoot":"","sources":["../../src/__tests__/GenericLocalMemoryCacher-full-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
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
|
+
})();
|
|
25
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
36
|
const entity_1 = require("@expo/entity");
|
|
27
37
|
const GenericLocalMemoryCacher_1 = __importStar(require("../GenericLocalMemoryCacher"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericLocalMemoryCacher-test.js","sourceRoot":"","sources":["../../src/__tests__/GenericLocalMemoryCacher-test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GenericLocalMemoryCacher-test.js","sourceRoot":"","sources":["../../src/__tests__/GenericLocalMemoryCacher-test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAKsB;AAEtB,wFAEqC;AAMrC,MAAM,mBAAmB,GAAG,IAAI,4BAAmB,CAAa;IAC9D,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE;QACN,EAAE,EAAE,IAAI,kBAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KACrD;IACD,qBAAqB,EAAE,UAAU;IACjC,kBAAkB,EAAE,cAAc;CACnC,CAAC,CAAC;AAEH,QAAQ,CAAC,kCAAwB,EAAE,GAAG,EAAE;IACtC,QAAQ,CAAC,kCAAwB,CAAC,cAAc,EAAE,GAAG,EAAE;QACrD,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,KAAK,GAAG,kCAAwB,CAAC,cAAc,EAAE,CAAC;YACxD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,KAAK,GAAG,kCAAwB,CAAC,cAAc,CAAC;gBACpD,UAAU,EAAE,CAAC;gBACb,OAAO,EAAE,EAAE;aACZ,CAAC,CAAC;YACH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kCAAwB,CAAC,eAAe,EAAE,GAAG,EAAE;QACtD,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,MAAM,KAAK,GAAG,kCAAwB,CAAC,eAAe,EAAsB,CAAC;YAC7E,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,YAAY,GAAG,IAAI,kCAAyB,CAChD,IAAI,kCAAwB,CAC1B,mBAAmB,EACnB,kCAAwB,CAAC,cAAc,EAAE,CAC1C,CACF,CAAC;YAEF,MAAM,SAAS,GAAG,IAAI,GAAG,CAA+B,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9F,MAAM,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACnD,MAAM,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YAE3D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE;gBACrD,WAAW;gBACX,WAAW;gBACX,WAAW;aACZ,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC7C,MAAM,EAAE,oBAAW,CAAC,GAAG;gBACvB,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE;aAC1B,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,oBAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,oBAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,YAAY,GAAG,IAAI,kCAAyB,CAChD,IAAI,kCAAwB,CAC1B,mBAAmB,EACnB,kCAAwB,CAAC,cAAc,EAAE,CAC1C,CACF,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,gBAAgB,GAAG,kCAAwB,CAAC,cAAc,CAAa,EAAE,CAAC,CAAC;YAEjF,MAAM,iBAAiB,GAAG,IAAI,kCAAwB,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;YAC9F,MAAM,YAAY,GAAG,IAAI,kCAAyB,CAAC,iBAAiB,CAAC,CAAC;YACtE,MAAM,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAEvF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACtE,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC;gBACnD,EAAE,EAAE,WAAW;aAChB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,gBAAgB,GAAG,kCAAwB,CAAC,cAAc,CAAa,EAAE,CAAC,CAAC;YAEjF,MAAM,iBAAiB,GAAG,IAAI,kCAAwB,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;YAC9F,MAAM,YAAY,GAAG,IAAI,kCAAyB,CAAC,iBAAiB,CAAC,CAAC;YACtE,MAAM,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YAE3D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACtE,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,4DAAiC,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;YACrC,MAAM,gBAAgB,GAAG,kCAAwB,CAAC,cAAc,CAAa,EAAE,CAAC,CAAC;YAEjF,MAAM,YAAY,GAAG,IAAI,kCAAyB,CAChD,IAAI,kCAAwB,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CACpE,CAAC;YACF,MAAM,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvF,MAAM,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YAC3D,MAAM,YAAY,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;YAEzE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;YACnF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,oBAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,oBAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,YAAY,GAAG,IAAI,kCAAyB,CAChD,IAAI,kCAAwB,CAC1B,mBAAmB,EACnB,kCAAwB,CAAC,cAAc,CAAa,EAAE,CAAC,CACxD,CACF,CAAC;YACF,MAAM,YAAY,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.createNoOpLocalMemoryIntegrationTestEntityCompanionProvider = exports.createLocalMemoryTestEntityCompanionProvider = void 0;
|
|
7
7
|
const entity_1 = require("@expo/entity");
|
|
8
8
|
const LocalMemoryCacheAdapterProvider_1 = __importDefault(require("../LocalMemoryCacheAdapterProvider"));
|
|
9
|
+
const queryContextProvider = new entity_1.StubQueryContextProvider();
|
|
9
10
|
const createLocalMemoryTestEntityCompanionProvider = (localMemoryOptions = {}, metricsAdapter = new entity_1.NoOpEntityMetricsAdapter()) => {
|
|
10
11
|
const localMemoryCacheAdapterProvider = localMemoryOptions.maxSize === 0 && localMemoryOptions.ttlSeconds === 0
|
|
11
12
|
? LocalMemoryCacheAdapterProvider_1.default.createNoOpProvider()
|
|
@@ -15,7 +16,7 @@ const createLocalMemoryTestEntityCompanionProvider = (localMemoryOptions = {}, m
|
|
|
15
16
|
'postgres',
|
|
16
17
|
{
|
|
17
18
|
adapterProvider: new entity_1.StubDatabaseAdapterProvider(),
|
|
18
|
-
queryContextProvider
|
|
19
|
+
queryContextProvider,
|
|
19
20
|
},
|
|
20
21
|
],
|
|
21
22
|
]), new Map([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createLocalMemoryTestEntityCompanionProvider.js","sourceRoot":"","sources":["../../src/testfixtures/createLocalMemoryTestEntityCompanionProvider.ts"],"names":[],"mappings":";;;;;;AAAA,yCAMsB;AAEtB,yGAAiF;
|
|
1
|
+
{"version":3,"file":"createLocalMemoryTestEntityCompanionProvider.js","sourceRoot":"","sources":["../../src/testfixtures/createLocalMemoryTestEntityCompanionProvider.ts"],"names":[],"mappings":";;;;;;AAAA,yCAMsB;AAEtB,yGAAiF;AAEjF,MAAM,oBAAoB,GAAG,IAAI,iCAAwB,EAAE,CAAC;AAErD,MAAM,4CAA4C,GAAG,CAC1D,qBAAgE,EAAE,EAClE,iBAAwC,IAAI,iCAAwB,EAAE,EAC7C,EAAE;IAC3B,MAAM,+BAA+B,GACnC,kBAAkB,CAAC,OAAO,KAAK,CAAC,IAAI,kBAAkB,CAAC,UAAU,KAAK,CAAC;QACrE,CAAC,CAAC,yCAA+B,CAAC,kBAAkB,EAAE;QACtD,CAAC,CAAC,yCAA+B,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAC;IACpF,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,cAAc;YACd;gBACE,oBAAoB,EAAE,+BAA+B;aACtD;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,4CAA4C,gDA4BvD;AAEK,MAAM,2DAA2D,GAAG,CACzE,iBAAwC,IAAI,iCAAwB,EAAE,EAC7C,EAAE;IAC3B,OAAO,IAAA,oDAA4C,EACjD,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAC7B,cAAc,CACf,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,2DAA2D,+DAOtE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/entity-cache-adapter-local-memory",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.0",
|
|
4
4
|
"description": "Cross-request local memory cache adapter for @expo/entity",
|
|
5
5
|
"files": [
|
|
6
6
|
"build",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"test": "jest --rootDir . --config ../../resources/jest.config.js",
|
|
17
17
|
"integration": "../../resources/run-with-docker yarn integration-no-setup",
|
|
18
18
|
"integration-no-setup": "jest --config ../../resources/jest-integration.config.js --rootDir . --runInBand --passWithNoTests",
|
|
19
|
-
"
|
|
19
|
+
"ctix": "ctix build --config ../../.ctirc && ../../resources/prepend-barrel.sh '@expo/entity-cache-adapter-local-memory'"
|
|
20
20
|
},
|
|
21
21
|
"engines": {
|
|
22
22
|
"node": ">=16"
|
|
@@ -26,14 +26,24 @@
|
|
|
26
26
|
],
|
|
27
27
|
"author": "Expo",
|
|
28
28
|
"license": "MIT",
|
|
29
|
-
"peerDependencies": {
|
|
30
|
-
"@expo/entity": "*"
|
|
31
|
-
},
|
|
32
29
|
"dependencies": {
|
|
30
|
+
"@expo/entity": "^0.41.0",
|
|
33
31
|
"lru-cache": "^6.0.0"
|
|
34
32
|
},
|
|
35
33
|
"devDependencies": {
|
|
36
|
-
"@
|
|
34
|
+
"@types/jest": "^29.5.12",
|
|
35
|
+
"@types/lru-cache": "^5.1.1",
|
|
36
|
+
"@types/node": "^20.14.1",
|
|
37
|
+
"ctix": "^2.7.0",
|
|
38
|
+
"eslint": "^8.57.1",
|
|
39
|
+
"eslint-config-universe": "^14.0.0",
|
|
40
|
+
"eslint-plugin-tsdoc": "^0.3.0",
|
|
41
|
+
"jest": "^29.7.0",
|
|
42
|
+
"prettier": "^3.3.3",
|
|
43
|
+
"prettier-plugin-organize-imports": "^4.1.0",
|
|
44
|
+
"ts-jest": "^29.2.5",
|
|
45
|
+
"ts-mockito": "^2.6.1",
|
|
46
|
+
"typescript": "^5.7.3"
|
|
37
47
|
},
|
|
38
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "ee4be736a9a0ba580e9af0194e07c9cd36b1c599"
|
|
39
49
|
}
|
|
@@ -10,7 +10,9 @@ import LRUCache from 'lru-cache';
|
|
|
10
10
|
// Sentinel value we store in local memory to negatively cache a database miss.
|
|
11
11
|
// The sentinel value is distinct from any (positively) cached value.
|
|
12
12
|
export const DOES_NOT_EXIST_LOCAL_MEMORY_CACHE = Symbol('doesNotExist');
|
|
13
|
-
type LocalMemoryCacheValue<TFields> =
|
|
13
|
+
export type LocalMemoryCacheValue<TFields> =
|
|
14
|
+
| Readonly<TFields>
|
|
15
|
+
| typeof DOES_NOT_EXIST_LOCAL_MEMORY_CACHE;
|
|
14
16
|
export type LocalMemoryCache<TFields> = LRUCache<string, LocalMemoryCacheValue<TFields>>;
|
|
15
17
|
|
|
16
18
|
export default class GenericLocalMemoryCacher<TFields extends Record<string, any>>
|
|
@@ -28,12 +28,12 @@ describe(GenericLocalMemoryCacher, () => {
|
|
|
28
28
|
const entity1Created = await LocalMemoryTestEntity.creator(viewerContext)
|
|
29
29
|
.setField('name', 'blah')
|
|
30
30
|
.setField('dateField', date)
|
|
31
|
-
.
|
|
31
|
+
.createAsync();
|
|
32
32
|
|
|
33
33
|
// loading an entity should put it in cache
|
|
34
|
-
const entity1 = await LocalMemoryTestEntity.loader(viewerContext)
|
|
35
|
-
.
|
|
36
|
-
|
|
34
|
+
const entity1 = await LocalMemoryTestEntity.loader(viewerContext).loadByIDAsync(
|
|
35
|
+
entity1Created.getID(),
|
|
36
|
+
);
|
|
37
37
|
|
|
38
38
|
const localMemoryCacheAdapterProvider = (
|
|
39
39
|
entityCompanionProvider['cacheAdapterFlavors'] as ReadonlyMap<
|
|
@@ -63,9 +63,10 @@ describe(GenericLocalMemoryCacher, () => {
|
|
|
63
63
|
// simulate non existent db fetch, should write negative result ('') to cache
|
|
64
64
|
const nonExistentId = uuidv4();
|
|
65
65
|
|
|
66
|
-
const entityNonExistentResult =
|
|
67
|
-
.
|
|
68
|
-
|
|
66
|
+
const entityNonExistentResult =
|
|
67
|
+
await LocalMemoryTestEntity.loaderWithAuthorizationResults(viewerContext).loadByIDAsync(
|
|
68
|
+
nonExistentId,
|
|
69
|
+
);
|
|
69
70
|
expect(entityNonExistentResult.ok).toBe(false);
|
|
70
71
|
|
|
71
72
|
const nonExistentCachedResult = await entitySpecificGenericCacher.loadManyAsync([
|
|
@@ -76,15 +77,16 @@ describe(GenericLocalMemoryCacher, () => {
|
|
|
76
77
|
});
|
|
77
78
|
|
|
78
79
|
// load again through entities framework to ensure it reads negative result
|
|
79
|
-
const entityNonExistentResult2 =
|
|
80
|
-
.
|
|
81
|
-
|
|
80
|
+
const entityNonExistentResult2 =
|
|
81
|
+
await LocalMemoryTestEntity.loaderWithAuthorizationResults(viewerContext).loadByIDAsync(
|
|
82
|
+
nonExistentId,
|
|
83
|
+
);
|
|
82
84
|
expect(entityNonExistentResult2.ok).toBe(false);
|
|
83
85
|
|
|
84
86
|
// invalidate from cache to ensure it invalidates correctly
|
|
85
|
-
await LocalMemoryTestEntity.
|
|
86
|
-
.
|
|
87
|
-
|
|
87
|
+
await LocalMemoryTestEntity.loaderUtils(viewerContext).invalidateFieldsAsync(
|
|
88
|
+
entity1.getAllFields(),
|
|
89
|
+
);
|
|
88
90
|
const cachedResultMiss = await entitySpecificGenericCacher.loadManyAsync([
|
|
89
91
|
cacheKeyMaker('id', entity1.getID()),
|
|
90
92
|
]);
|
|
@@ -105,12 +107,12 @@ describe(GenericLocalMemoryCacher, () => {
|
|
|
105
107
|
const entity1Created = await LocalMemoryTestEntity.creator(viewerContext)
|
|
106
108
|
.setField('name', 'blah')
|
|
107
109
|
.setField('dateField', date)
|
|
108
|
-
.
|
|
110
|
+
.createAsync();
|
|
109
111
|
|
|
110
112
|
// loading an entity will try to put it in cache but it's a noop cache, so it should be a miss
|
|
111
|
-
const entity1 = await LocalMemoryTestEntity.loader(viewerContext)
|
|
112
|
-
.
|
|
113
|
-
|
|
113
|
+
const entity1 = await LocalMemoryTestEntity.loader(viewerContext).loadByIDAsync(
|
|
114
|
+
entity1Created.getID(),
|
|
115
|
+
);
|
|
114
116
|
|
|
115
117
|
const localMemoryCacheAdapterProvider = (
|
|
116
118
|
entityCompanionProvider['cacheAdapterFlavors'] as ReadonlyMap<
|
|
@@ -135,9 +137,10 @@ describe(GenericLocalMemoryCacher, () => {
|
|
|
135
137
|
// a non existent db fetch should try to write negative result ('') but it's a noop cache, so it should be a miss
|
|
136
138
|
const nonExistentId = uuidv4();
|
|
137
139
|
|
|
138
|
-
const entityNonExistentResult =
|
|
139
|
-
.
|
|
140
|
-
|
|
140
|
+
const entityNonExistentResult =
|
|
141
|
+
await LocalMemoryTestEntity.loaderWithAuthorizationResults(viewerContext).loadByIDAsync(
|
|
142
|
+
nonExistentId,
|
|
143
|
+
);
|
|
141
144
|
expect(entityNonExistentResult.ok).toBe(false);
|
|
142
145
|
|
|
143
146
|
const nonExistentCachedResult = await entitySpecificGenericCacher.loadManyAsync([
|
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
|
|
9
9
|
import LocalMemoryCacheAdapterProvider from '../LocalMemoryCacheAdapterProvider';
|
|
10
10
|
|
|
11
|
+
const queryContextProvider = new StubQueryContextProvider();
|
|
12
|
+
|
|
11
13
|
export const createLocalMemoryTestEntityCompanionProvider = (
|
|
12
14
|
localMemoryOptions: { maxSize?: number; ttlSeconds?: number } = {},
|
|
13
15
|
metricsAdapter: IEntityMetricsAdapter = new NoOpEntityMetricsAdapter(),
|
|
@@ -23,7 +25,7 @@ export const createLocalMemoryTestEntityCompanionProvider = (
|
|
|
23
25
|
'postgres',
|
|
24
26
|
{
|
|
25
27
|
adapterProvider: new StubDatabaseAdapterProvider(),
|
|
26
|
-
queryContextProvider
|
|
28
|
+
queryContextProvider,
|
|
27
29
|
},
|
|
28
30
|
],
|
|
29
31
|
]),
|