@fjell/cache 4.7.10 → 4.7.11

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/dist/index.js CHANGED
@@ -957,15 +957,36 @@ import {
957
957
  import { NotFoundError as NotFoundError3 } from "@fjell/http-api";
958
958
  var logger9 = logger_default.get("allAction");
959
959
  var allAction = async (action2, body = {}, locations = [], context) => {
960
- const { api, cacheMap, pkType } = context;
960
+ const { api, cacheMap, pkType, eventEmitter } = context;
961
961
  logger9.default("allAction", { action: action2, body, locations });
962
+ const existingItems = [];
963
+ if (locations && locations.length > 0) {
964
+ try {
965
+ const cachedItems = await cacheMap.allIn(locations);
966
+ if (cachedItems) {
967
+ existingItems.push(...cachedItems);
968
+ }
969
+ } catch (error) {
970
+ logger9.debug("Could not retrieve existing items for comparison", { error });
971
+ }
972
+ }
962
973
  logger9.debug("Invalidating location before allAction", { locations });
963
- cacheMap.invalidateLocation(locations);
974
+ await cacheMap.invalidateLocation(locations);
964
975
  let ret = [];
965
976
  try {
966
977
  ret = await api.allAction(action2, body, locations);
967
978
  logger9.debug("Caching allAction results", { resultCount: ret.length });
979
+ const modifiedItems = [];
980
+ const newItems = [];
968
981
  for (const v of ret) {
982
+ const existedBefore = existingItems.some(
983
+ (existing) => JSON.stringify(existing.key) === JSON.stringify(v.key)
984
+ );
985
+ if (existedBefore) {
986
+ modifiedItems.push(v);
987
+ } else {
988
+ newItems.push(v);
989
+ }
969
990
  await cacheMap.set(v.key, v);
970
991
  const keyStr = JSON.stringify(v.key);
971
992
  context.ttlManager.onItemAdded(keyStr, cacheMap);
@@ -975,6 +996,55 @@ var allAction = async (action2, body = {}, locations = [], context) => {
975
996
  await cacheMap.delete(parsedKey);
976
997
  }
977
998
  }
999
+ for (const item of modifiedItems) {
1000
+ logger9.debug("Emitting item_updated event for modified item", { key: item.key });
1001
+ const itemEvent = CacheEventFactory.itemUpdated(
1002
+ item.key,
1003
+ item,
1004
+ null,
1005
+ // We don't have the previous item state
1006
+ "operation"
1007
+ );
1008
+ eventEmitter.emit(itemEvent);
1009
+ }
1010
+ for (const item of newItems) {
1011
+ logger9.debug("Emitting item_created event for new item", { key: item.key });
1012
+ const itemEvent = CacheEventFactory.itemCreated(
1013
+ item.key,
1014
+ item,
1015
+ "operation"
1016
+ );
1017
+ eventEmitter.emit(itemEvent);
1018
+ }
1019
+ if (modifiedItems.length > 0) {
1020
+ const modifiedKeys = modifiedItems.map((item) => item.key);
1021
+ logger9.debug("Invalidating individual item keys for modified items", {
1022
+ keyCount: modifiedKeys.length,
1023
+ keys: modifiedKeys
1024
+ });
1025
+ await cacheMap.invalidateItemKeys(modifiedKeys);
1026
+ }
1027
+ await cacheMap.clearQueryResults();
1028
+ logger9.debug("Emitting query_invalidated event after allAction", {
1029
+ eventType: "query_invalidated",
1030
+ reason: "item_changed",
1031
+ action: action2,
1032
+ modifiedCount: modifiedItems.length,
1033
+ newCount: newItems.length
1034
+ });
1035
+ const queryInvalidatedEvent = CacheEventFactory.createQueryInvalidatedEvent(
1036
+ [],
1037
+ // We don't track which specific queries were invalidated
1038
+ "item_changed",
1039
+ {
1040
+ source: "operation",
1041
+ context: {
1042
+ operation: "allAction",
1043
+ requestId: `allAction_${action2}_${Date.now()}`
1044
+ }
1045
+ }
1046
+ );
1047
+ eventEmitter.emit(queryInvalidatedEvent);
978
1048
  } catch (e) {
979
1049
  if (e instanceof NotFoundError3) {
980
1050
  } else {
@@ -1008,7 +1078,7 @@ import {
1008
1078
  } from "@fjell/core";
1009
1079
  var logger12 = logger_default.get("find");
1010
1080
  var find = async (finder, params = {}, locations = [], context) => {
1011
- const { api, cacheMap, pkType, ttlManager } = context;
1081
+ const { api, cacheMap, pkType, ttlManager, eventEmitter } = context;
1012
1082
  logger12.default("find", { finder, params, locations });
1013
1083
  const queryHash = createFinderHash(finder, params, locations);
1014
1084
  logger12.debug("Generated query hash for find", { queryHash });
@@ -1033,6 +1103,22 @@ var find = async (finder, params = {}, locations = [], context) => {
1033
1103
  cacheMap.deleteQueryResult(queryHash);
1034
1104
  }
1035
1105
  }
1106
+ if (!cachedItemKeys) {
1107
+ try {
1108
+ const directCachedItems = await cacheMap.queryIn(params, locations);
1109
+ if (directCachedItems && directCachedItems.length > 0) {
1110
+ logger12.debug("Found items directly in cache, skipping API call", { itemCount: directCachedItems.length });
1111
+ const itemKeys2 = directCachedItems.map((item) => item.key);
1112
+ await cacheMap.setQueryResult(queryHash, itemKeys2);
1113
+ logger12.debug("Cached query result from direct cache hit", { queryHash, itemKeyCount: itemKeys2.length });
1114
+ const event2 = CacheEventFactory.createQueryEvent(params, locations, directCachedItems);
1115
+ eventEmitter.emit(event2);
1116
+ return [context, validatePK9(directCachedItems, pkType)];
1117
+ }
1118
+ } catch (error) {
1119
+ logger12.debug("Error querying cache directly, proceeding to API", { error });
1120
+ }
1121
+ }
1036
1122
  const ret = await api.find(finder, params, locations);
1037
1123
  for (const v of ret) {
1038
1124
  await cacheMap.set(v.key, v);
@@ -1047,6 +1133,8 @@ var find = async (finder, params = {}, locations = [], context) => {
1047
1133
  const itemKeys = ret.map((item) => item.key);
1048
1134
  cacheMap.setQueryResult(queryHash, itemKeys);
1049
1135
  logger12.debug("Cached query result", { queryHash, itemKeyCount: itemKeys.length });
1136
+ const event = CacheEventFactory.createQueryEvent(params, locations, ret);
1137
+ eventEmitter.emit(event);
1050
1138
  return [context, validatePK9(ret, pkType)];
1051
1139
  };
1052
1140
 
@@ -1056,7 +1144,7 @@ import {
1056
1144
  } from "@fjell/core";
1057
1145
  var logger13 = logger_default.get("findOne");
1058
1146
  var findOne = async (finder, finderParams = {}, locations = [], context) => {
1059
- const { api, cacheMap, pkType, ttlManager } = context;
1147
+ const { api, cacheMap, pkType, ttlManager, eventEmitter } = context;
1060
1148
  logger13.default("findOne", { finder, finderParams, locations });
1061
1149
  const queryHash = createFinderHash(finder, finderParams, locations);
1062
1150
  logger13.debug("Generated query hash for findOne", { queryHash });
@@ -1071,6 +1159,22 @@ var findOne = async (finder, finderParams = {}, locations = [], context) => {
1071
1159
  cacheMap.deleteQueryResult(queryHash);
1072
1160
  }
1073
1161
  }
1162
+ if (!cachedItemKeys || cachedItemKeys.length === 0) {
1163
+ try {
1164
+ const directCachedItems = await cacheMap.queryIn(finderParams, locations);
1165
+ if (directCachedItems && directCachedItems.length > 0) {
1166
+ logger13.debug("Found items directly in cache, skipping API call", { itemCount: directCachedItems.length });
1167
+ const firstItem = directCachedItems[0];
1168
+ await cacheMap.setQueryResult(queryHash, [firstItem.key]);
1169
+ logger13.debug("Cached query result from direct cache hit", { queryHash, itemKey: firstItem.key });
1170
+ const event2 = CacheEventFactory.createQueryEvent(finderParams, locations, [firstItem]);
1171
+ eventEmitter.emit(event2);
1172
+ return [context, validatePK10(firstItem, pkType)];
1173
+ }
1174
+ } catch (error) {
1175
+ logger13.debug("Error querying cache directly, proceeding to API", { error });
1176
+ }
1177
+ }
1074
1178
  const ret = await api.findOne(finder, finderParams, locations);
1075
1179
  cacheMap.set(ret.key, ret);
1076
1180
  const keyStr = JSON.stringify(ret.key);
@@ -1082,6 +1186,8 @@ var findOne = async (finder, finderParams = {}, locations = [], context) => {
1082
1186
  }
1083
1187
  cacheMap.setQueryResult(queryHash, [ret.key]);
1084
1188
  logger13.debug("Cached query result", { queryHash, itemKey: ret.key });
1189
+ const event = CacheEventFactory.createQueryEvent(finderParams, locations, [ret]);
1190
+ eventEmitter.emit(event);
1085
1191
  return [context, validatePK10(ret, pkType)];
1086
1192
  };
1087
1193
 
@@ -1 +1 @@
1
- {"version":3,"file":"allAction.d.ts","sourceRoot":"","sources":["../../src/ops/allAction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,WAAW,EAEZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK/C,eAAO,MAAM,SAAS,GACpB,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EAEzB,QAAQ,MAAM,EACd,MAAM,GAAG,YAAK,EACd,YAAW,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,aAAK,EACpD,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAC9C,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAsCvD,CAAC"}
1
+ {"version":3,"file":"allAction.d.ts","sourceRoot":"","sources":["../../src/ops/allAction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,WAAW,EAEZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C,eAAO,MAAM,SAAS,GACpB,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EAEzB,QAAQ,MAAM,EACd,MAAM,GAAG,YAAK,EACd,YAAW,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,aAAK,EACpD,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAC9C,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAiIvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../src/ops/find.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C,eAAO,MAAM,IAAI,GACf,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EAEzB,QAAQ,MAAM,EACd,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,YAAK,EACvG,YAAW,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,aAAK,EACpD,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAC9C,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CA6DvD,CAAC"}
1
+ {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../src/ops/find.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAO/C,eAAO,MAAM,IAAI,GACf,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EAEzB,QAAQ,MAAM,EACd,QAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,YAAK,EACvG,YAAW,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,aAAK,EACpD,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAC9C,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CA0FvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../../src/ops/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C,eAAO,MAAM,OAAO,GAClB,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EAEzB,QAAQ,MAAM,EACd,cAAc,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,YAAK,EAC7G,YAAW,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,aAAK,EACpD,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAC9C,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CA8CrD,CAAC"}
1
+ {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../../src/ops/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,WAAW,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAO/C,eAAO,MAAM,OAAO,GAClB,CAAC,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACrC,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EAEzB,QAAQ,MAAM,EACd,cAAc,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,YAAK,EAC7G,YAAW,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,aAAK,EACpD,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAC9C,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CA2ErD,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fjell/cache",
3
3
  "description": "Cache for Fjell",
4
- "version": "4.7.10",
4
+ "version": "4.7.11",
5
5
  "keywords": [
6
6
  "cache",
7
7
  "fjell"
@@ -36,11 +36,11 @@
36
36
  "docs:test": "cd docs && npm run test"
37
37
  },
38
38
  "dependencies": {
39
- "@fjell/client-api": "^4.4.27",
39
+ "@fjell/client-api": "^4.4.28",
40
40
  "@fjell/core": "^4.4.38",
41
41
  "@fjell/http-api": "^4.4.36",
42
42
  "@fjell/logging": "^4.4.44",
43
- "@fjell/registry": "^4.4.32",
43
+ "@fjell/registry": "^4.4.33",
44
44
  "fast-safe-stringify": "^2.1.1",
45
45
  "flatted": "^3.3.3"
46
46
  },
package/debug-test.js DELETED
@@ -1,64 +0,0 @@
1
- import { MemoryCacheMap } from './dist/index.js';
2
-
3
- // Test data types
4
- const priKey1 = { kt: 'test', pk: '1' };
5
- const comKey1 = {
6
- kt: 'test',
7
- pk: '3',
8
- loc: [{ kt: 'container', lk: 'container1' }]
9
- };
10
-
11
- // Create cache map
12
- const cacheMap = new MemoryCacheMap(['test', 'container']);
13
-
14
- // Add test items
15
- await cacheMap.set(priKey1, { key: priKey1, id: '1', name: 'Item 1', value: 100 });
16
- await cacheMap.set(comKey1, { key: comKey1, id: '3', name: 'Item 3', value: 300 });
17
-
18
- // Set query result
19
- const queryHash = 'test_query';
20
- cacheMap.setQueryResult(queryHash, [priKey1, comKey1]);
21
-
22
- console.log('Before invalidation:');
23
- console.log('Query result exists:', await cacheMap.hasQueryResult(queryHash));
24
- console.log('priKey1 exists:', await cacheMap.includesKey(priKey1));
25
- console.log('comKey1 exists:', await cacheMap.includesKey(comKey1));
26
-
27
- // Check the query result content
28
- const queryResult = await cacheMap.getQueryResult(queryHash);
29
- console.log('Query result content:', queryResult);
30
-
31
- // Check the internal query result cache
32
- console.log('Internal query result cache keys:', Object.keys(cacheMap.queryResultCache || {}));
33
-
34
- // Invalidate location
35
- const location = [{ kt: 'container', lk: 'container1' }];
36
- console.log('\nInvalidating location:', location);
37
-
38
- // Check what keys will be invalidated
39
- const itemsInLocation = await cacheMap.allIn(location);
40
- console.log('Items in location:', itemsInLocation);
41
- const keysToInvalidate = itemsInLocation.map(item => item.key);
42
- console.log('Keys to invalidate:', keysToInvalidate);
43
-
44
- await cacheMap.invalidateLocation(location);
45
-
46
- console.log('\nAfter invalidation:');
47
- console.log('Query result exists:', await cacheMap.hasQueryResult(queryHash));
48
- console.log('priKey1 exists:', await cacheMap.includesKey(priKey1));
49
- console.log('comKey1 exists:', await cacheMap.includesKey(comKey1));
50
-
51
- // Check what keys were actually invalidated
52
- console.log('\nAll keys after invalidation:', await cacheMap.keys());
53
-
54
- // Check if the query result was modified
55
- const queryResultAfter = await cacheMap.getQueryResult(queryHash);
56
- console.log('Query result content after:', queryResultAfter);
57
-
58
- // Check the internal query result cache again
59
- console.log('Internal query result cache keys after:', Object.keys(cacheMap.queryResultCache || {}));
60
-
61
- // Try to manually delete the query result to see if that works
62
- console.log('\nManually deleting query result...');
63
- await cacheMap.deleteQueryResult(queryHash);
64
- console.log('Query result exists after manual deletion:', await cacheMap.hasQueryResult(queryHash));