@fjell/cache 4.6.1 → 4.6.2

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.
@@ -220,6 +220,18 @@ const createAggregator = async (cache, { aggregates = {}, events = {} })=>{
220
220
  populatedItem
221
221
  ];
222
222
  };
223
+ // Facets are a pass-thru for aggregators
224
+ const facet = async (key, facet)=>{
225
+ logger.default('facet', {
226
+ key,
227
+ facet
228
+ });
229
+ const [cacheMap, response] = await cache.facet(key, facet);
230
+ return [
231
+ cacheMap,
232
+ response
233
+ ];
234
+ };
223
235
  const find = async (finder, finderParams, locations = [])=>{
224
236
  logger.default('find', {
225
237
  finder,
@@ -233,6 +245,19 @@ const createAggregator = async (cache, { aggregates = {}, events = {} })=>{
233
245
  populatedItems
234
246
  ];
235
247
  };
248
+ const findOne = async (finder, finderParams, locations = [])=>{
249
+ logger.default('find', {
250
+ finder,
251
+ finderParams,
252
+ locations
253
+ });
254
+ const [cacheMap, item] = await cache.findOne(finder, finderParams, locations);
255
+ const populatedItem = await populate(item);
256
+ return [
257
+ cacheMap,
258
+ populatedItem
259
+ ];
260
+ };
236
261
  const set = async (key, v)=>{
237
262
  logger.default('set', {
238
263
  key,
@@ -260,7 +285,9 @@ const createAggregator = async (cache, { aggregates = {}, events = {} })=>{
260
285
  retrieve,
261
286
  remove,
262
287
  update,
288
+ facet,
263
289
  find,
290
+ findOne,
264
291
  reset,
265
292
  set,
266
293
  pkTypes: cache.pkTypes,
@@ -273,4 +300,4 @@ const createAggregator = async (cache, { aggregates = {}, events = {} })=>{
273
300
 
274
301
  exports.createAggregator = createAggregator;
275
302
  exports.toCacheConfig = toCacheConfig;
276
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdncmVnYXRvci5janMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
303
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdncmVnYXRvci5janMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
@@ -216,6 +216,18 @@ const createAggregator = async (cache, { aggregates = {}, events = {} })=>{
216
216
  populatedItem
217
217
  ];
218
218
  };
219
+ // Facets are a pass-thru for aggregators
220
+ const facet = async (key, facet)=>{
221
+ logger.default('facet', {
222
+ key,
223
+ facet
224
+ });
225
+ const [cacheMap, response] = await cache.facet(key, facet);
226
+ return [
227
+ cacheMap,
228
+ response
229
+ ];
230
+ };
219
231
  const find = async (finder, finderParams, locations = [])=>{
220
232
  logger.default('find', {
221
233
  finder,
@@ -229,6 +241,19 @@ const createAggregator = async (cache, { aggregates = {}, events = {} })=>{
229
241
  populatedItems
230
242
  ];
231
243
  };
244
+ const findOne = async (finder, finderParams, locations = [])=>{
245
+ logger.default('find', {
246
+ finder,
247
+ finderParams,
248
+ locations
249
+ });
250
+ const [cacheMap, item] = await cache.findOne(finder, finderParams, locations);
251
+ const populatedItem = await populate(item);
252
+ return [
253
+ cacheMap,
254
+ populatedItem
255
+ ];
256
+ };
232
257
  const set = async (key, v)=>{
233
258
  logger.default('set', {
234
259
  key,
@@ -256,7 +281,9 @@ const createAggregator = async (cache, { aggregates = {}, events = {} })=>{
256
281
  retrieve,
257
282
  remove,
258
283
  update,
284
+ facet,
259
285
  find,
286
+ findOne,
260
287
  reset,
261
288
  set,
262
289
  pkTypes: cache.pkTypes,
@@ -268,4 +295,4 @@ const createAggregator = async (cache, { aggregates = {}, events = {} })=>{
268
295
  };
269
296
 
270
297
  export { createAggregator, toCacheConfig };
271
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdncmVnYXRvci5lcy5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
298
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWdncmVnYXRvci5lcy5qcyIsInNvdXJjZXMiOltdLCJzb3VyY2VzQ29udGVudCI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7In0=
package/dist/Cache.cjs.js CHANGED
@@ -213,6 +213,18 @@ const createCache = async (api, pkType, parentCache)=>{
213
213
  throw e;
214
214
  }
215
215
  };
216
+ // Facets are a pass-thru for caches
217
+ const facet = async (key, facet)=>{
218
+ logger.default('facet', {
219
+ key,
220
+ facet
221
+ });
222
+ const ret = await api.facet(key, facet, {});
223
+ return [
224
+ cacheMap,
225
+ ret
226
+ ];
227
+ };
216
228
  const find = async (finder, finderParams, locations = [])=>{
217
229
  logger.default('find', {
218
230
  finder,
@@ -228,6 +240,19 @@ const createCache = async (api, pkType, parentCache)=>{
228
240
  core.validatePK(ret, pkType)
229
241
  ];
230
242
  };
243
+ const findOne = async (finder, finderParams, locations = [])=>{
244
+ logger.default('findOne', {
245
+ finder,
246
+ finderParams,
247
+ locations
248
+ });
249
+ const ret = await api.findOne(finder, finderParams, {}, locations);
250
+ cacheMap.set(ret.key, ret);
251
+ return [
252
+ cacheMap,
253
+ core.validatePK(ret, pkType)
254
+ ];
255
+ };
231
256
  const reset = async ()=>{
232
257
  cacheMap = new CacheMap.CacheMap(pkTypes);
233
258
  return [
@@ -267,7 +292,9 @@ const createCache = async (api, pkType, parentCache)=>{
267
292
  retrieve,
268
293
  remove,
269
294
  update,
295
+ facet,
270
296
  find,
297
+ findOne,
271
298
  reset,
272
299
  set,
273
300
  pkTypes,
@@ -276,4 +303,4 @@ const createCache = async (api, pkType, parentCache)=>{
276
303
  };
277
304
 
278
305
  exports.createCache = createCache;
279
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGUuY2pzLmpzIiwic291cmNlcyI6W10sInNvdXJjZXNDb250ZW50IjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9
306
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGUuY2pzLmpzIiwic291cmNlcyI6W10sInNvdXJjZXNDb250ZW50IjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9
package/dist/Cache.d.ts CHANGED
@@ -11,7 +11,9 @@ export interface Cache<V extends Item<S, L1, L2, L3, L4, L5>, S extends string,
11
11
  retrieve: (key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5> | null, V | null]>;
12
12
  remove: (key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>) => Promise<CacheMap<V, S, L1, L2, L3, L4, L5>>;
13
13
  update: (key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, v: TypesProperties<V, S, L1, L2, L3, L4, L5>) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V]>;
14
+ facet: (key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, facet: string) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, any]>;
14
15
  find: (finder: string, finderParams: Record<string, string | number | boolean | Date | Array<string | number | boolean | Date>>, locations?: LocKeyArray<L1, L2, L3, L4, L5> | []) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V[]]>;
16
+ findOne: (finder: string, finderParams: Record<string, string | number | boolean | Date | Array<string | number | boolean | Date>>, locations?: LocKeyArray<L1, L2, L3, L4, L5> | []) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V]>;
15
17
  set: (key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, v: Item<S, L1, L2, L3, L4, L5>) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V]>;
16
18
  reset: () => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>]>;
17
19
  pkTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5>;
package/dist/Cache.es.js CHANGED
@@ -209,6 +209,18 @@ const createCache = async (api, pkType, parentCache)=>{
209
209
  throw e;
210
210
  }
211
211
  };
212
+ // Facets are a pass-thru for caches
213
+ const facet = async (key, facet)=>{
214
+ logger.default('facet', {
215
+ key,
216
+ facet
217
+ });
218
+ const ret = await api.facet(key, facet, {});
219
+ return [
220
+ cacheMap,
221
+ ret
222
+ ];
223
+ };
212
224
  const find = async (finder, finderParams, locations = [])=>{
213
225
  logger.default('find', {
214
226
  finder,
@@ -224,6 +236,19 @@ const createCache = async (api, pkType, parentCache)=>{
224
236
  validatePK(ret, pkType)
225
237
  ];
226
238
  };
239
+ const findOne = async (finder, finderParams, locations = [])=>{
240
+ logger.default('findOne', {
241
+ finder,
242
+ finderParams,
243
+ locations
244
+ });
245
+ const ret = await api.findOne(finder, finderParams, {}, locations);
246
+ cacheMap.set(ret.key, ret);
247
+ return [
248
+ cacheMap,
249
+ validatePK(ret, pkType)
250
+ ];
251
+ };
227
252
  const reset = async ()=>{
228
253
  cacheMap = new CacheMap(pkTypes);
229
254
  return [
@@ -263,7 +288,9 @@ const createCache = async (api, pkType, parentCache)=>{
263
288
  retrieve,
264
289
  remove,
265
290
  update,
291
+ facet,
266
292
  find,
293
+ findOne,
267
294
  reset,
268
295
  set,
269
296
  pkTypes,
@@ -272,4 +299,4 @@ const createCache = async (api, pkType, parentCache)=>{
272
299
  };
273
300
 
274
301
  export { createCache };
275
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGUuZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==
302
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGUuZXMuanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==
package/dist/index.cjs CHANGED
@@ -224,6 +224,18 @@ const createAggregator = async (cache, { aggregates = {}, events = {} })=>{
224
224
  populatedItem
225
225
  ];
226
226
  };
227
+ // Facets are a pass-thru for aggregators
228
+ const facet = async (key, facet)=>{
229
+ logger$3.default('facet', {
230
+ key,
231
+ facet
232
+ });
233
+ const [cacheMap, response] = await cache.facet(key, facet);
234
+ return [
235
+ cacheMap,
236
+ response
237
+ ];
238
+ };
227
239
  const find = async (finder, finderParams, locations = [])=>{
228
240
  logger$3.default('find', {
229
241
  finder,
@@ -237,6 +249,19 @@ const createAggregator = async (cache, { aggregates = {}, events = {} })=>{
237
249
  populatedItems
238
250
  ];
239
251
  };
252
+ const findOne = async (finder, finderParams, locations = [])=>{
253
+ logger$3.default('find', {
254
+ finder,
255
+ finderParams,
256
+ locations
257
+ });
258
+ const [cacheMap, item] = await cache.findOne(finder, finderParams, locations);
259
+ const populatedItem = await populate(item);
260
+ return [
261
+ cacheMap,
262
+ populatedItem
263
+ ];
264
+ };
240
265
  const set = async (key, v)=>{
241
266
  logger$3.default('set', {
242
267
  key,
@@ -264,7 +289,9 @@ const createAggregator = async (cache, { aggregates = {}, events = {} })=>{
264
289
  retrieve,
265
290
  remove,
266
291
  update,
292
+ facet,
267
293
  find,
294
+ findOne,
268
295
  reset,
269
296
  set,
270
297
  pkTypes: cache.pkTypes,
@@ -580,6 +607,18 @@ const createCache = async (api, pkType, parentCache)=>{
580
607
  throw e;
581
608
  }
582
609
  };
610
+ // Facets are a pass-thru for caches
611
+ const facet = async (key, facet)=>{
612
+ logger$1.default('facet', {
613
+ key,
614
+ facet
615
+ });
616
+ const ret = await api.facet(key, facet, {});
617
+ return [
618
+ cacheMap,
619
+ ret
620
+ ];
621
+ };
583
622
  const find = async (finder, finderParams, locations = [])=>{
584
623
  logger$1.default('find', {
585
624
  finder,
@@ -595,6 +634,19 @@ const createCache = async (api, pkType, parentCache)=>{
595
634
  core.validatePK(ret, pkType)
596
635
  ];
597
636
  };
637
+ const findOne = async (finder, finderParams, locations = [])=>{
638
+ logger$1.default('findOne', {
639
+ finder,
640
+ finderParams,
641
+ locations
642
+ });
643
+ const ret = await api.findOne(finder, finderParams, {}, locations);
644
+ cacheMap.set(ret.key, ret);
645
+ return [
646
+ cacheMap,
647
+ core.validatePK(ret, pkType)
648
+ ];
649
+ };
598
650
  const reset = async ()=>{
599
651
  cacheMap = new CacheMap(pkTypes);
600
652
  return [
@@ -634,7 +686,9 @@ const createCache = async (api, pkType, parentCache)=>{
634
686
  retrieve,
635
687
  remove,
636
688
  update,
689
+ facet,
637
690
  find,
691
+ findOne,
638
692
  reset,
639
693
  set,
640
694
  pkTypes,
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fjell/cache",
3
3
  "description": "Cache for Fjell",
4
- "version": "4.6.1",
4
+ "version": "4.6.2",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./dist/index.cjs.js",
@@ -15,13 +15,13 @@
15
15
  }
16
16
  },
17
17
  "dependencies": {
18
- "@fjell/client-api": "^4.4.0",
18
+ "@fjell/client-api": "^4.4.2",
19
19
  "@fjell/core": "^4.4.2",
20
20
  "@fjell/http-api": "^4.4.0",
21
21
  "@fjell/logging": "^4.4.2",
22
22
  "d3": "^7.9.0",
23
23
  "dayjs": "^1.11.13",
24
- "react": "18.3.1"
24
+ "react": "19.1.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@babel/preset-env": "^7.26.9",
@@ -33,7 +33,7 @@
33
33
  "@types/babel__preset-env": "^7.10.0",
34
34
  "@types/d3": "^7.4.3",
35
35
  "@types/multer": "^1.4.12",
36
- "@types/node": "^22.13.5",
36
+ "@types/node": "^24.0.3",
37
37
  "@typescript-eslint/eslint-plugin": "^8.24.1",
38
38
  "@typescript-eslint/parser": "^8.24.1",
39
39
  "@vitest/coverage-v8": "^3.1.4",
package/src/Aggregator.ts CHANGED
@@ -247,6 +247,16 @@ export const createAggregator = async <
247
247
  return [cacheMap, populatedItem];
248
248
  }
249
249
 
250
+ // Facets are a pass-thru for aggregators
251
+ const facet = async (
252
+ key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>,
253
+ facet: string,
254
+ ): Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, any]> => {
255
+ logger.default('facet', { key, facet });
256
+ const [cacheMap, response] = await cache.facet(key, facet);
257
+ return [cacheMap, response];
258
+ }
259
+
250
260
  const find = async (
251
261
  finder: string,
252
262
  finderParams: Record<string, string | number | boolean | Date | Array<string | number | boolean | Date>>,
@@ -258,6 +268,17 @@ export const createAggregator = async <
258
268
  return [cacheMap, populatedItems];
259
269
  }
260
270
 
271
+ const findOne = async (
272
+ finder: string,
273
+ finderParams: Record<string, string | number | boolean | Date | Array<string | number | boolean | Date>>,
274
+ locations: LocKeyArray<L1, L2, L3, L4, L5> | [] = []
275
+ ): Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V]> => {
276
+ logger.default('find', { finder, finderParams, locations });
277
+ const [cacheMap, item] = await cache.findOne(finder, finderParams, locations);
278
+ const populatedItem = await populate(item);
279
+ return [cacheMap, populatedItem];
280
+ }
281
+
261
282
  const set = async (
262
283
  key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>,
263
284
  v: Item<S, L1, L2, L3, L4, L5>
@@ -285,7 +306,9 @@ export const createAggregator = async <
285
306
  retrieve,
286
307
  remove,
287
308
  update,
309
+ facet,
288
310
  find,
311
+ findOne,
289
312
  reset,
290
313
  set,
291
314
  pkTypes: cache.pkTypes,
package/src/Cache.ts CHANGED
@@ -73,12 +73,23 @@ export interface Cache<
73
73
  v: TypesProperties<V, S, L1, L2, L3, L4, L5>,
74
74
  ) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V]>;
75
75
 
76
+ facet: (
77
+ key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>,
78
+ facet: string,
79
+ ) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, any]>;
80
+
76
81
  find: (
77
82
  finder: string,
78
83
  finderParams: Record<string, string | number | boolean | Date | Array<string | number | boolean | Date>>,
79
84
  locations?: LocKeyArray<L1, L2, L3, L4, L5> | []
80
85
  ) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V[]]>;
81
86
 
87
+ findOne: (
88
+ finder: string,
89
+ finderParams: Record<string, string | number | boolean | Date | Array<string | number | boolean | Date>>,
90
+ locations?: LocKeyArray<L1, L2, L3, L4, L5> | []
91
+ ) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V]>;
92
+
82
93
  set: (
83
94
  key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>,
84
95
  v: Item<S, L1, L2, L3, L4, L5>
@@ -105,8 +116,8 @@ export const createCache = async <
105
116
  parentCache?: Cache<Item<L1, L2, L3, L4, L5>, L1, L2, L3, L4, L5>
106
117
  ): Promise<Cache<V, S, L1, L2, L3, L4, L5>> => {
107
118
 
108
- let pkTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5> = [ pkType ];
109
- if( parentCache ) {
119
+ let pkTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5> = [pkType];
120
+ if (parentCache) {
110
121
  pkTypes = pkTypes.concat(parentCache.pkTypes as any) as unknown as AllItemTypeArrays<S, L1, L2, L3, L4, L5>;
111
122
  }
112
123
 
@@ -264,7 +275,7 @@ export const createCache = async <
264
275
  const retValue: [CacheMap<V, S, L1, L2, L3, L4, L5> | null, V | null] = [
265
276
  containsItemKey ? null : cacheMap,
266
277
  retrieved ?
267
- validatePK(retrieved, pkType) as V:
278
+ validatePK(retrieved, pkType) as V :
268
279
  null
269
280
  ];
270
281
  // logger.debug('Returning from retrieve', { retValue });
@@ -314,6 +325,16 @@ export const createCache = async <
314
325
  }
315
326
  }
316
327
 
328
+ // Facets are a pass-thru for caches
329
+ const facet = async (
330
+ key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>,
331
+ facet: string,
332
+ ): Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, any]> => {
333
+ logger.default('facet', { key, facet });
334
+ const ret = await api.facet(key, facet, {});
335
+ return [cacheMap, ret];
336
+ }
337
+
317
338
  const find = async (
318
339
  finder: string,
319
340
  finderParams: Record<string, string | number | boolean | Date | Array<string | number | boolean | Date>>,
@@ -327,6 +348,17 @@ export const createCache = async <
327
348
  return [cacheMap, validatePK(ret, pkType) as V[]];
328
349
  }
329
350
 
351
+ const findOne = async (
352
+ finder: string,
353
+ finderParams: Record<string, string | number | boolean | Date | Array<string | number | boolean | Date>>,
354
+ locations: LocKeyArray<L1, L2, L3, L4, L5> | [] = []
355
+ ): Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V]> => {
356
+ logger.default('findOne', { finder, finderParams, locations });
357
+ const ret = await api.findOne(finder, finderParams, {}, locations);
358
+ cacheMap.set(ret.key, ret);
359
+ return [cacheMap, validatePK(ret, pkType) as V];
360
+ }
361
+
330
362
  const reset = async (): Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>]> => {
331
363
  cacheMap = new CacheMap<V, S, L1, L2, L3, L4, L5>(pkTypes);
332
364
  return [cacheMap];
@@ -337,7 +369,7 @@ export const createCache = async <
337
369
  v: Item<S, L1, L2, L3, L4, L5>
338
370
  ): Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V]> => {
339
371
  logger.default('set', { key, v });
340
-
372
+
341
373
  // TODO: This is validating the key, but it doesn't have knowledge of the pkType
342
374
  // This should be looking at the parentCaches and calculating an array of pkTypes
343
375
  if (!isValidItemKey(key)) {
@@ -367,7 +399,9 @@ export const createCache = async <
367
399
  retrieve,
368
400
  remove,
369
401
  update,
402
+ facet,
370
403
  find,
404
+ findOne,
371
405
  reset,
372
406
  set,
373
407
  pkTypes,
package/vitest.config.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { defineConfig } from 'vitest/config'
2
- import path from 'path'
2
+ import * as path from 'path'
3
3
 
4
4
  export default defineConfig({
5
5
  test: {
@@ -13,7 +13,17 @@ export default defineConfig({
13
13
  'node_modules/',
14
14
  'tests/',
15
15
  'src/index.ts',
16
+ 'eslint.config.mjs',
17
+ 'vite.config.ts',
18
+ 'vitest.config.ts',
19
+ 'dist',
16
20
  ],
21
+ thresholds: {
22
+ lines: 89,
23
+ functions: 85,
24
+ branches: 94,
25
+ statements: 89,
26
+ },
17
27
  },
18
28
  setupFiles: ['./tests/setup.ts'],
19
29
  deps: {