@fjell/cache 4.4.3 → 4.5.1
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/src/Aggregator.d.ts +19 -0
- package/dist/src/Aggregator.js +182 -0
- package/dist/src/Aggregator.js.map +1 -0
- package/dist/src/Cache.d.ts +7 -1
- package/dist/src/Cache.js +222 -1
- package/dist/src/Cache.js.map +1 -1
- package/dist/src/CacheRegistry.d.ts +2 -3
- package/dist/src/CacheRegistry.js +1 -1
- package/dist/src/CacheRegistry.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -10
- package/src/Aggregator.ts +289 -0
- package/src/Cache.ts +305 -2
- package/src/CacheRegistry.ts +3 -6
- package/dist/src/AItemAggregator.d.ts +0 -35
- package/dist/src/AItemAggregator.js +0 -163
- package/dist/src/AItemAggregator.js.map +0 -1
- package/dist/src/AItemCache.d.ts +0 -21
- package/dist/src/AItemCache.js +0 -189
- package/dist/src/AItemCache.js.map +0 -1
- package/dist/src/CItemCache.d.ts +0 -17
- package/dist/src/CItemCache.js +0 -58
- package/dist/src/CItemCache.js.map +0 -1
- package/dist/src/PItemCache.d.ts +0 -17
- package/dist/src/PItemCache.js +0 -50
- package/dist/src/PItemCache.js.map +0 -1
- package/dist/src/index.d.ts +0 -7
- package/dist/src/index.js +0 -7
- package/dist/src/index.js.map +0 -1
- package/src/AItemAggregator.ts +0 -251
- package/src/AItemCache.ts +0 -262
- package/src/CItemCache.ts +0 -117
- package/src/PItemCache.ts +0 -99
- package/src/index.ts +0 -10
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Item } from "@fjell/core";
|
|
2
|
+
import { Cache } from "./Cache";
|
|
3
|
+
export interface Aggregator<V extends Item<S, L1, L2, L3, L4, L5>, S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> extends Cache<V, S, L1, L2, L3, L4, L5> {
|
|
4
|
+
populate: (item: V) => Promise<V>;
|
|
5
|
+
populateAggregate: (key: string, item: V) => Promise<void>;
|
|
6
|
+
populateEvent: (key: string, item: V) => Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export interface CacheConfig {
|
|
9
|
+
cache: any;
|
|
10
|
+
optional: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface AggregateConfig {
|
|
13
|
+
[key: string]: (CacheConfig);
|
|
14
|
+
}
|
|
15
|
+
export declare const toCacheConfig: <V extends Item<S, L1, L2, L3, L4, L5>, S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(config: CacheConfig | Cache<V, S, L1, L2, L3, L4, L5>) => CacheConfig;
|
|
16
|
+
export declare const createAggregator: <V extends Item<S, L1, L2, L3, L4, L5>, S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(cache: Cache<V, S, L1, L2, L3, L4, L5>, { aggregates, events }: {
|
|
17
|
+
aggregates?: AggregateConfig;
|
|
18
|
+
events?: AggregateConfig;
|
|
19
|
+
}) => Aggregator<V, S, L1, L2, L3, L4, L5>;
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import LibLogger from "./logger";
|
|
2
|
+
const logger = LibLogger.get('ItemAggregator');
|
|
3
|
+
export const toCacheConfig = (config) => {
|
|
4
|
+
let cacheConfig;
|
|
5
|
+
if (config.optional === undefined) {
|
|
6
|
+
cacheConfig = { cache: config, optional: false };
|
|
7
|
+
}
|
|
8
|
+
else {
|
|
9
|
+
cacheConfig = config;
|
|
10
|
+
}
|
|
11
|
+
return cacheConfig;
|
|
12
|
+
};
|
|
13
|
+
export const createAggregator = (cache, { aggregates = {}, events = {} }) => {
|
|
14
|
+
const populate = async (item) => {
|
|
15
|
+
logger.default('populate', { item });
|
|
16
|
+
for (const key in aggregates) {
|
|
17
|
+
await populateAggregate(key, item);
|
|
18
|
+
}
|
|
19
|
+
for (const key in events) {
|
|
20
|
+
await populateEvent(key, item);
|
|
21
|
+
}
|
|
22
|
+
logger.default('populate done', { item });
|
|
23
|
+
return item;
|
|
24
|
+
};
|
|
25
|
+
const populateAggregate = async (key, item) => {
|
|
26
|
+
logger.default('populate aggregate key', { key });
|
|
27
|
+
const cacheConfig = toCacheConfig(aggregates[key]);
|
|
28
|
+
if (item.refs === undefined) {
|
|
29
|
+
if (cacheConfig.optional === false) {
|
|
30
|
+
logger.error('Item does not have refs an is not optional ' + JSON.stringify(item));
|
|
31
|
+
throw new Error('Item does not have refs an is not optional ' + JSON.stringify(item));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else if (item.refs[key] === undefined) {
|
|
35
|
+
if (cacheConfig.optional === false) {
|
|
36
|
+
logger.error('Item does not have mandatory ref with key, not optional ' +
|
|
37
|
+
key + ' ' + JSON.stringify(item));
|
|
38
|
+
throw new Error('Item does not have mandatory ref with key, not optional ' +
|
|
39
|
+
key + ' ' + JSON.stringify(item));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
const ref = item.refs[key];
|
|
44
|
+
logger.default('AGG Retrieving Item in Populate', { key: ref });
|
|
45
|
+
const [, newItem] = await cacheConfig.cache.retrieve(ref);
|
|
46
|
+
if (newItem) {
|
|
47
|
+
if (item.aggs === undefined) {
|
|
48
|
+
item.aggs = {};
|
|
49
|
+
}
|
|
50
|
+
item.aggs[key] = {
|
|
51
|
+
key: ref,
|
|
52
|
+
item: newItem,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
// TODO: I'm not a big fan that this just "automatically" assumes that the "by" key in event is a ref.
|
|
58
|
+
const populateEvent = async (key, item) => {
|
|
59
|
+
logger.default('populate event key', { key });
|
|
60
|
+
const cacheConfig = toCacheConfig(events[key]);
|
|
61
|
+
if (item.events === undefined) {
|
|
62
|
+
throw new Error('Item does not have events ' + JSON.stringify(item));
|
|
63
|
+
}
|
|
64
|
+
else if (item.events[key] === undefined) {
|
|
65
|
+
if (cacheConfig.optional === false) {
|
|
66
|
+
logger.error('Item does not have mandatory event with key ' + key + ' ' + JSON.stringify(item));
|
|
67
|
+
throw new Error('Item does not have mandatory event with key ' + key + ' ' + JSON.stringify(item));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
const event = item.events[key];
|
|
72
|
+
if (event.by === undefined) {
|
|
73
|
+
logger.error('populateEvent with an Event that does not have by', { event, ik: item.key, eventKey: key });
|
|
74
|
+
throw new Error('populateEvent with an Event that does not have by: ' + JSON.stringify({ key, event }));
|
|
75
|
+
}
|
|
76
|
+
logger.default('EVENT Retrieving Item in Populate', { key: event.by });
|
|
77
|
+
const [, newItem] = await cacheConfig.cache.retrieve(event.by);
|
|
78
|
+
if (newItem) {
|
|
79
|
+
event.agg = newItem;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
const all = async (query = {}, locations = []) => {
|
|
84
|
+
logger.default('all', { query, locations });
|
|
85
|
+
const [cacheMap, items] = await cache.all(query, locations);
|
|
86
|
+
const populatedItems = await Promise.all(items.map(async (item) => populate(item)));
|
|
87
|
+
return [cacheMap, populatedItems];
|
|
88
|
+
};
|
|
89
|
+
const one = async (query = {}, locations = []) => {
|
|
90
|
+
logger.default('one', { query, locations });
|
|
91
|
+
const [cacheMap, item] = await cache.one(query, locations);
|
|
92
|
+
let populatedItem = null;
|
|
93
|
+
if (item) {
|
|
94
|
+
populatedItem = await populate(item);
|
|
95
|
+
}
|
|
96
|
+
return [cacheMap, populatedItem];
|
|
97
|
+
};
|
|
98
|
+
const action = async (key, action, body = {}) => {
|
|
99
|
+
logger.default('action', { key, action, body });
|
|
100
|
+
const [cacheMap, item] = await cache.action(key, action, body);
|
|
101
|
+
const populatedItem = await populate(item);
|
|
102
|
+
return [cacheMap, populatedItem];
|
|
103
|
+
};
|
|
104
|
+
const allAction = async (action, body = {}, locations = []) => {
|
|
105
|
+
logger.default('action', { action, body, locations });
|
|
106
|
+
const [cacheMap, items] = await cache.allAction(action, body, locations);
|
|
107
|
+
const populatedItems = await Promise.all(items.map(async (item) => populate(item)));
|
|
108
|
+
return [cacheMap, populatedItems];
|
|
109
|
+
};
|
|
110
|
+
const create = async (v, locations = []) => {
|
|
111
|
+
logger.default('create', { v, locations });
|
|
112
|
+
const [cacheMap, item] = await cache.create(v, locations);
|
|
113
|
+
const populatedItem = await populate(item);
|
|
114
|
+
return [cacheMap, populatedItem];
|
|
115
|
+
};
|
|
116
|
+
const get = async (key) => {
|
|
117
|
+
logger.default('get', { key });
|
|
118
|
+
const [cacheMap, item] = await cache.get(key);
|
|
119
|
+
let populatedItem = null;
|
|
120
|
+
if (item) {
|
|
121
|
+
populatedItem = await populate(item);
|
|
122
|
+
}
|
|
123
|
+
return [cacheMap, populatedItem];
|
|
124
|
+
};
|
|
125
|
+
const retrieve = async (key) => {
|
|
126
|
+
logger.default('retrieve', { key });
|
|
127
|
+
const [cacheMap, item] = await cache.retrieve(key);
|
|
128
|
+
let populatedItem = null;
|
|
129
|
+
if (item) {
|
|
130
|
+
populatedItem = await populate(item);
|
|
131
|
+
}
|
|
132
|
+
return [cacheMap, populatedItem];
|
|
133
|
+
};
|
|
134
|
+
const remove = async (key) => {
|
|
135
|
+
logger.default('remove', { key });
|
|
136
|
+
const cacheMap = await cache.remove(key);
|
|
137
|
+
return cacheMap;
|
|
138
|
+
};
|
|
139
|
+
const update = async (key, v) => {
|
|
140
|
+
logger.default('update', { key, v });
|
|
141
|
+
const [cacheMap, item] = await cache.update(key, v);
|
|
142
|
+
const populatedItem = await populate(item);
|
|
143
|
+
return [cacheMap, populatedItem];
|
|
144
|
+
};
|
|
145
|
+
const find = async (finder, finderParams, locations = []) => {
|
|
146
|
+
logger.default('find', { finder, finderParams, locations });
|
|
147
|
+
const [cacheMap, items] = await cache.find(finder, finderParams, locations);
|
|
148
|
+
const populatedItems = await Promise.all(items.map(async (item) => populate(item)));
|
|
149
|
+
return [cacheMap, populatedItems];
|
|
150
|
+
};
|
|
151
|
+
const set = async (key, v) => {
|
|
152
|
+
logger.default('set', { key, v });
|
|
153
|
+
// TODO: There should be some input validation here to ensure a valid item.
|
|
154
|
+
const [cacheMap, item] = await cache.set(key, v);
|
|
155
|
+
const populatedItem = await populate(item);
|
|
156
|
+
return [cacheMap, populatedItem];
|
|
157
|
+
};
|
|
158
|
+
const reset = async () => {
|
|
159
|
+
const cacheMap = await cache.reset();
|
|
160
|
+
return cacheMap;
|
|
161
|
+
};
|
|
162
|
+
return {
|
|
163
|
+
all,
|
|
164
|
+
one,
|
|
165
|
+
action,
|
|
166
|
+
allAction,
|
|
167
|
+
create,
|
|
168
|
+
get,
|
|
169
|
+
retrieve,
|
|
170
|
+
remove,
|
|
171
|
+
update,
|
|
172
|
+
find,
|
|
173
|
+
reset,
|
|
174
|
+
set,
|
|
175
|
+
pkTypes: cache.pkTypes,
|
|
176
|
+
cacheMap: cache.cacheMap,
|
|
177
|
+
populate,
|
|
178
|
+
populateAggregate,
|
|
179
|
+
populateEvent
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=Aggregator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Aggregator.js","sourceRoot":"","sources":["../../src/Aggregator.ts"],"names":[],"mappings":"AAWA,OAAO,SAAS,MAAM,UAAU,CAAC;AAEjC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAoB/C,MAAM,CAAC,MAAM,aAAa,GAAG,CAQ3B,MAAqD,EAAe,EAAE;IACtE,IAAI,WAAwB,CAAC;IAC7B,IAAK,MAAsB,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnD,WAAW,GAAG,EAAE,KAAK,EAAE,MAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,MAAqB,CAAC;IACtC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAS5B,KAAsC,EACtC,EAAE,UAAU,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAI3B,EACmC,EAAE;IAE1C,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAO,EAAc,EAAE;QAC7C,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC,CAAA;IAED,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAW,EAAE,IAAO,EAAE,EAAE;QACvD,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,WAAW,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,6CAA6C,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACnF,MAAM,IAAI,KAAK,CAAC,6CAA6C,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,WAAW,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,0DAA0D;oBACnE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,0DAA0D;oBACtE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAE3B,MAAM,CAAC,OAAO,CAAC,iCAAiC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1D,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC5B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;gBACjB,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;oBACf,GAAG,EAAE,GAAG;oBACR,IAAI,EAAE,OAAe;iBACtB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,sGAAsG;IACtG,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,IAAO,EAAE,EAAE;QACnD,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,WAAW,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,8CAA8C,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChG,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACrG,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE/B,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,CACV,mDAAmD,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC/F,MAAM,IAAI,KAAK,CAAC,qDAAqD,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1G,CAAC;YAED,MAAM,CAAC,OAAO,CAAC,mCAAmC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/D,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,CAAC,GAAG,GAAG,OAAe,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,KAAK,EACf,QAAmB,EAAE,EACrB,YAAkD,EAAE,EAED,EAAE;QACrD,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACpC,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,KAAK,EACf,QAAmB,EAAE,EACrB,YAAkD,EAAE,EAEI,EAAE;QAC1D,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC3D,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,EAAE,CAAC;YACT,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnC,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,EAClB,GAA8C,EAC9C,MAAc,EACd,OAAY,EAAE,EACoC,EAAE;QACpD,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/D,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnC,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,EACrB,MAAc,EACd,OAAY,EAAE,EACd,YAAkD,EAAE,EACA,EAAE;QACtD,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACzE,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACpC,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,EAClB,CAA4C,EAC5C,YAAkD,EAAE,EACF,EAAE;QACpD,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnC,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,KAAK,EACf,GAA8C,EACW,EAAE;QAC3D,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,EAAE,CAAC;YACT,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnC,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,EACpB,GAA8C,EACkB,EAAE;QAClE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACpC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,EAAE,CAAC;YACT,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnC,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,EAClB,GAA8C,EACD,EAAE;QAC/C,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzC,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,EAClB,GAA8C,EAC9C,CAA4C,EACM,EAAE;QACpD,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnC,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,KAAK,EAChB,MAAc,EACd,YAAwG,EACxG,YAAkD,EAAE,EACA,EAAE;QACtD,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAC5E,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACpC,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,KAAK,EACf,GAA8C,EAC9C,CAAI,EAC8C,EAAE;QACpD,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAElC,2EAA2E;QAC3E,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnC,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,KAAK,IAAmD,EAAE;QACtE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAA;IAED,OAAO;QACL,GAAG;QACH,GAAG;QACH,MAAM;QACN,SAAS;QACT,MAAM;QACN,GAAG;QACH,QAAQ;QACR,MAAM;QACN,MAAM;QACN,IAAI;QACJ,KAAK;QACL,GAAG;QACH,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ;QACR,iBAAiB;QACjB,aAAa;KACd,CAAA;AACH,CAAC,CAAA"}
|
package/dist/src/Cache.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { ComKey, Item, ItemQuery, LocKeyArray, PriKey, TypesProperties } from "@fjell/core";
|
|
1
|
+
import { AllItemTypeArrays, ComKey, Item, ItemQuery, LocKeyArray, PriKey, TypesProperties } from "@fjell/core";
|
|
2
2
|
import { CacheMap } from "./CacheMap";
|
|
3
|
+
import { ClientApi } from "@fjell/client-api";
|
|
3
4
|
export interface Cache<V extends Item<S, L1, L2, L3, L4, L5>, S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> {
|
|
4
5
|
all: (query?: ItemQuery, locations?: LocKeyArray<L1, L2, L3, L4, L5> | []) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V[]]>;
|
|
5
6
|
one: (query?: ItemQuery, locations?: LocKeyArray<L1, L2, L3, L4, L5> | []) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V | null]>;
|
|
@@ -11,4 +12,9 @@ export interface Cache<V extends Item<S, L1, L2, L3, L4, L5>, S extends string,
|
|
|
11
12
|
remove: (key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>) => Promise<CacheMap<V, S, L1, L2, L3, L4, L5>>;
|
|
12
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]>;
|
|
13
14
|
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[]]>;
|
|
15
|
+
set: (key: ComKey<S, L1, L2, L3, L4, L5> | PriKey<S>, v: V) => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>, V]>;
|
|
16
|
+
reset: () => Promise<[CacheMap<V, S, L1, L2, L3, L4, L5>]>;
|
|
17
|
+
pkTypes: AllItemTypeArrays<S, L1, L2, L3, L4, L5>;
|
|
18
|
+
cacheMap: CacheMap<V, S, L1, L2, L3, L4, L5>;
|
|
14
19
|
}
|
|
20
|
+
export declare const createCache: <V extends Item<S, L1, L2, L3, L4, L5>, S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(api: ClientApi<V, S, L1, L2, L3, L4, L5>, pkType: S, parentCache?: Cache<Item<L1, L2, L3, L4, L5>, L1, L2, L3, L4, L5>) => Cache<V, S, L1, L2, L3, L4, L5>;
|
package/dist/src/Cache.js
CHANGED
|
@@ -1,2 +1,223 @@
|
|
|
1
|
-
|
|
1
|
+
import { isItemKeyEqual, isValidItemKey, validatePK } from "@fjell/core";
|
|
2
|
+
import { CacheMap } from "./CacheMap";
|
|
3
|
+
import LibLogger from "./logger";
|
|
4
|
+
import { NotFoundError } from "@fjell/http-api";
|
|
5
|
+
const logger = LibLogger.get('Cache');
|
|
6
|
+
export const createCache = (api, pkType, parentCache) => {
|
|
7
|
+
let pkTypes = [pkType];
|
|
8
|
+
if (parentCache) {
|
|
9
|
+
pkTypes = pkTypes.concat(parentCache.pkTypes);
|
|
10
|
+
}
|
|
11
|
+
let cacheMap = new CacheMap(pkTypes);
|
|
12
|
+
const all = async (query = {}, locations = []) => {
|
|
13
|
+
logger.default('all', { query, locations });
|
|
14
|
+
let ret = [];
|
|
15
|
+
try {
|
|
16
|
+
ret = await api.all(query, {}, locations);
|
|
17
|
+
ret.forEach((v) => {
|
|
18
|
+
cacheMap.set(v.key, v);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
if (e instanceof NotFoundError) {
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
throw e;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return [cacheMap, validatePK(ret, pkType)];
|
|
29
|
+
};
|
|
30
|
+
const one = async (query = {}, locations = []) => {
|
|
31
|
+
logger.default('one', { query, locations });
|
|
32
|
+
let retItem = null;
|
|
33
|
+
try {
|
|
34
|
+
retItem = await api.one(query, {}, locations);
|
|
35
|
+
if (retItem) {
|
|
36
|
+
cacheMap.set(retItem.key, retItem);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
if (e instanceof NotFoundError) {
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw e;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return [
|
|
47
|
+
cacheMap,
|
|
48
|
+
retItem ?
|
|
49
|
+
validatePK(retItem, pkType) :
|
|
50
|
+
null
|
|
51
|
+
];
|
|
52
|
+
};
|
|
53
|
+
const action = async (key, action, body = {}) => {
|
|
54
|
+
logger.default('action', { key, action, body });
|
|
55
|
+
// TODO: This is validating the key, but it doesn't have knowledge of the pkType
|
|
56
|
+
// This should be looking at the parentCaches and calculating an array of pkTypes
|
|
57
|
+
if (!isValidItemKey(key)) {
|
|
58
|
+
logger.error('Key for Action is not a valid ItemKey: %j', key);
|
|
59
|
+
throw new Error('Key for Action is not a valid ItemKey');
|
|
60
|
+
}
|
|
61
|
+
const updated = await api.action(key, action, body, {});
|
|
62
|
+
cacheMap.set(updated.key, updated);
|
|
63
|
+
return [cacheMap, validatePK(updated, pkType)];
|
|
64
|
+
};
|
|
65
|
+
const allAction = async (action, body = {}, locations = []) => {
|
|
66
|
+
logger.default('allAction', { action, body, locations });
|
|
67
|
+
let ret = [];
|
|
68
|
+
try {
|
|
69
|
+
ret = await api.allAction(action, body, {}, locations);
|
|
70
|
+
ret.forEach((v) => {
|
|
71
|
+
cacheMap.set(v.key, v);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
// istanbul ignore next
|
|
76
|
+
if (e instanceof NotFoundError) {
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
throw e;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return [cacheMap, validatePK(ret, pkType)];
|
|
83
|
+
};
|
|
84
|
+
const create = async (v, locations = []) => {
|
|
85
|
+
logger.default('create', { v, locations });
|
|
86
|
+
const created = await api.create(v, {}, locations);
|
|
87
|
+
cacheMap.set(created.key, created);
|
|
88
|
+
return [cacheMap, validatePK(created, pkType)];
|
|
89
|
+
};
|
|
90
|
+
const get = async (key) => {
|
|
91
|
+
logger.default('get', { key });
|
|
92
|
+
// TODO: This is validating the key, but it doesn't have knowledge of the pkType
|
|
93
|
+
// This should be looking at the parentCaches and calculating an array of pkTypes
|
|
94
|
+
if (!isValidItemKey(key)) {
|
|
95
|
+
logger.error('Key for Get is not a valid ItemKey: %j', key);
|
|
96
|
+
throw new Error('Key for Get is not a valid ItemKey');
|
|
97
|
+
}
|
|
98
|
+
let ret;
|
|
99
|
+
try {
|
|
100
|
+
ret = await api.get(key, {});
|
|
101
|
+
if (ret) {
|
|
102
|
+
cacheMap.set(ret.key, ret);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
logger.error("Error getting item for key", { key, message: e.message, stack: e.stack });
|
|
107
|
+
throw e;
|
|
108
|
+
}
|
|
109
|
+
return [
|
|
110
|
+
cacheMap,
|
|
111
|
+
ret ?
|
|
112
|
+
validatePK(ret, pkType) :
|
|
113
|
+
null
|
|
114
|
+
];
|
|
115
|
+
};
|
|
116
|
+
const retrieve = async (key) => {
|
|
117
|
+
logger.default('retrieve', { key });
|
|
118
|
+
if (!isValidItemKey(key)) {
|
|
119
|
+
logger.error('Key for Retrieve is not a valid ItemKey: %j', key);
|
|
120
|
+
throw new Error('Key for Retrieve is not a valid ItemKey');
|
|
121
|
+
}
|
|
122
|
+
const containsItemKey = cacheMap.includesKey(key);
|
|
123
|
+
let retrieved;
|
|
124
|
+
if (containsItemKey) {
|
|
125
|
+
logger.default('Looking for Object in Cache', key);
|
|
126
|
+
retrieved = cacheMap.get(key);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
logger.default('Object Not Found in Cache, Retrieving from Server API', { key });
|
|
130
|
+
[, retrieved] = await get(key);
|
|
131
|
+
}
|
|
132
|
+
const retValue = [
|
|
133
|
+
containsItemKey ? null : cacheMap,
|
|
134
|
+
retrieved ?
|
|
135
|
+
validatePK(retrieved, pkType) :
|
|
136
|
+
null
|
|
137
|
+
];
|
|
138
|
+
// logger.debug('Returning from retrieve', { retValue });
|
|
139
|
+
return retValue;
|
|
140
|
+
};
|
|
141
|
+
const remove = async (key) => {
|
|
142
|
+
logger.default('remove', { key });
|
|
143
|
+
// TODO: This is validating the key, but it doesn't have knowledge of the pkType
|
|
144
|
+
// This should be looking at the parentCaches and calculating an array of pkTypes
|
|
145
|
+
if (!isValidItemKey(key)) {
|
|
146
|
+
logger.error('Key for Remove is not a valid ItemKey: %j', key);
|
|
147
|
+
throw new Error('Key for Remove is not a valid ItemKey');
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
await api.remove(key, {});
|
|
151
|
+
cacheMap.delete(key);
|
|
152
|
+
}
|
|
153
|
+
catch (e) {
|
|
154
|
+
logger.error("Error deleting item", { error: e });
|
|
155
|
+
throw e;
|
|
156
|
+
}
|
|
157
|
+
return cacheMap;
|
|
158
|
+
};
|
|
159
|
+
const update = async (key, v) => {
|
|
160
|
+
logger.default('update', { key, v });
|
|
161
|
+
// TODO: This is validating the key, but it doesn't have knowledge of the pkType
|
|
162
|
+
// This should be looking at the parentCaches and calculating an array of pkTypes
|
|
163
|
+
if (!isValidItemKey(key)) {
|
|
164
|
+
logger.error('Key for Update is not a valid ItemKey: %j', key);
|
|
165
|
+
throw new Error('Key for Update is not a valid ItemKey');
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
const updated = await api.update(key, v, {});
|
|
169
|
+
cacheMap.set(updated.key, updated);
|
|
170
|
+
return [cacheMap, validatePK(updated, pkType)];
|
|
171
|
+
}
|
|
172
|
+
catch (e) {
|
|
173
|
+
logger.error("Error updating chat", { error: e });
|
|
174
|
+
throw e;
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
const find = async (finder, finderParams, locations = []) => {
|
|
178
|
+
logger.default('find', { finder, finderParams, locations });
|
|
179
|
+
const ret = await api.find(finder, finderParams, {}, locations);
|
|
180
|
+
ret.forEach((v) => {
|
|
181
|
+
cacheMap.set(v.key, v);
|
|
182
|
+
});
|
|
183
|
+
return [cacheMap, validatePK(ret, pkType)];
|
|
184
|
+
};
|
|
185
|
+
const reset = async () => {
|
|
186
|
+
cacheMap = new CacheMap(pkTypes);
|
|
187
|
+
return [cacheMap];
|
|
188
|
+
};
|
|
189
|
+
const set = async (key, v) => {
|
|
190
|
+
logger.default('set', { key, v });
|
|
191
|
+
// TODO: This is validating the key, but it doesn't have knowledge of the pkType
|
|
192
|
+
// This should be looking at the parentCaches and calculating an array of pkTypes
|
|
193
|
+
if (!isValidItemKey(key)) {
|
|
194
|
+
logger.error('Key for Update is not a valid ItemKey: %j', key);
|
|
195
|
+
throw new Error('Key for Update is not a valid ItemKey');
|
|
196
|
+
}
|
|
197
|
+
// TODO: This could be merged with the isValidItemKey check, later.
|
|
198
|
+
validatePK(v, pkType);
|
|
199
|
+
if (!isItemKeyEqual(key, v.key)) {
|
|
200
|
+
logger.error('Key does not match item key: %j != %j', key, v.key);
|
|
201
|
+
throw new Error('Key does not match item key');
|
|
202
|
+
}
|
|
203
|
+
cacheMap.set(key, v);
|
|
204
|
+
return [cacheMap, validatePK(v, pkType)];
|
|
205
|
+
};
|
|
206
|
+
return {
|
|
207
|
+
all,
|
|
208
|
+
one,
|
|
209
|
+
action,
|
|
210
|
+
allAction,
|
|
211
|
+
create,
|
|
212
|
+
get,
|
|
213
|
+
retrieve,
|
|
214
|
+
remove,
|
|
215
|
+
update,
|
|
216
|
+
find,
|
|
217
|
+
reset,
|
|
218
|
+
set,
|
|
219
|
+
pkTypes,
|
|
220
|
+
cacheMap
|
|
221
|
+
};
|
|
222
|
+
};
|
|
2
223
|
//# sourceMappingURL=Cache.js.map
|
package/dist/src/Cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EACd,cAAc,EAMd,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,SAAS,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AA2EtC,MAAM,CAAC,MAAM,WAAW,GAAG,CASvB,GAAwC,EACxC,MAAS,EACT,WAAiE,EAChC,EAAE;IAErC,IAAI,OAAO,GAA6C,CAAE,MAAM,CAAE,CAAC;IACnE,IAAI,WAAW,EAAG,CAAC;QACjB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,OAAc,CAAwD,CAAC;IAC9G,CAAC;IAED,IAAI,QAAQ,GACV,IAAI,QAAQ,CAA2B,OAAmD,CAAC,CAAC;IAE9F,MAAM,GAAG,GAAG,KAAK,EACf,QAAmB,EAAE,EACrB,YAAkD,EAAE,EAED,EAAE;QACrD,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5C,IAAI,GAAG,GAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC1C,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC;YACV,CAAC;QAEH,CAAC;QACD,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,MAAM,CAAQ,CAAC,CAAC;IACpD,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,KAAK,EACf,QAAmB,EAAE,EACrB,YAAkD,EAAE,EAEI,EAAE;QAC1D,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5C,IAAI,OAAO,GAAa,IAAI,CAAC;QAC7B,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAC9C,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC;YACV,CAAC;QAEH,CAAC;QACD,OAAO;YACL,QAAQ;YACR,OAAO,CAAC,CAAC;gBACP,UAAU,CAAC,OAAO,EAAE,MAAM,CAAM,CAAC,CAAC;gBAClC,IAAI;SACP,CAAC;IACJ,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,EAClB,GAA8C,EAC9C,MAAc,EACd,OAAY,EAAE,EACoC,EAAE;QACpD,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhD,gFAAgF;QAChF,iFAAiF;QACjF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACxD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAM,CAAC,CAAC;IACtD,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,KAAK,EACrB,MAAc,EACd,OAAY,EAAE,EACd,YAAkD,EAAE,EACA,EAAE;QACtD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACzD,IAAI,GAAG,GAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YACvD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,uBAAuB;YACvB,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,CAAC;YACV,CAAC;QAEH,CAAC;QACD,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,MAAM,CAAQ,CAAC,CAAC;IACpD,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,EAClB,CAA4C,EAC5C,YAAkD,EAAE,EACF,EAAE;QACpD,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;QACnD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAM,CAAC,CAAC;IACtD,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,KAAK,EACf,GAA8C,EACW,EAAE;QAC3D,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/B,gFAAgF;QAChF,iFAAiF;QACjF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,GAAG,EAAE,CAAC;gBACR,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACxF,MAAM,CAAC,CAAC;QACV,CAAC;QACD,OAAO;YACL,QAAQ;YACR,GAAG,CAAC,CAAC;gBACH,UAAU,CAAC,GAAG,EAAE,MAAM,CAAM,CAAC,CAAC;gBAC9B,IAAI;SACP,CAAC;IACJ,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,KAAK,EACpB,GAA8C,EACkB,EAAE;QAClE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,eAAe,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAElD,IAAI,SAAmB,CAAC;QACxB,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YACnD,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,uDAAuD,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACjF,CAAC,EAAE,SAAS,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,QAAQ,GAA0D;YACtE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;YACjC,SAAS,CAAC,CAAC;gBACT,UAAU,CAAC,SAAS,EAAE,MAAM,CAAM,CAAA,CAAC;gBACnC,IAAI;SACP,CAAC;QACF,yDAAyD;QACzD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,EAClB,GAA8C,EACD,EAAE;QAC/C,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,gFAAgF;QAChF,iFAAiF;QACjF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAClD,MAAM,CAAC,CAAC;QACV,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,KAAK,EAClB,GAA8C,EAC9C,CAA4C,EACM,EAAE;QACpD,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAErC,gFAAgF;QAChF,iFAAiF;QACjF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACnC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAM,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAClD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,KAAK,EAChB,MAAc,EACd,YAAwG,EACxG,YAAkD,EAAE,EACA,EAAE;QACtD,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAQ,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;QACrE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,MAAM,CAAQ,CAAC,CAAC;IACpD,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,KAAK,IAAmD,EAAE;QACtE,QAAQ,GAAG,IAAI,QAAQ,CAA2B,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,KAAK,EACf,GAA8C,EAC9C,CAAI,EAC8C,EAAE;QACpD,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAElC,gFAAgF;QAChF,iFAAiF;QACjF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,mEAAmE;QACnE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAEtB,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAM,CAAC,CAAC;IAChD,CAAC,CAAA;IAED,OAAO;QACL,GAAG;QACH,GAAG;QACH,MAAM;QACN,SAAS;QACT,MAAM;QACN,GAAG;QACH,QAAQ;QACR,MAAM;QACN,MAAM;QACN,IAAI;QACJ,KAAK;QACL,GAAG;QACH,OAAO;QACP,QAAQ;KACT,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { Item } from "@fjell/core";
|
|
2
|
-
import {
|
|
3
|
-
import { CItemCache } from "./CItemCache";
|
|
2
|
+
import { Cache } from "./Cache";
|
|
4
3
|
export declare class CacheRegistry {
|
|
5
4
|
private static instance;
|
|
6
5
|
private configured;
|
|
7
6
|
constructor();
|
|
8
7
|
static getInstance(): CacheRegistry;
|
|
9
8
|
private cacheMap;
|
|
10
|
-
registerCache: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(cache:
|
|
9
|
+
registerCache: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(cache: Cache<Item<S, L1, L2, L3, L4, L5>, S, L1, L2, L3, L4, L5>) => void;
|
|
11
10
|
isConfigured: () => boolean;
|
|
12
11
|
markConfigured: () => void;
|
|
13
12
|
getCache: (kts: string[]) => any;
|
|
@@ -15,7 +15,7 @@ export class CacheRegistry {
|
|
|
15
15
|
// TODO: My use of Generics has Boxed me into a corner where I can't reference AbstractCache without the types
|
|
16
16
|
cacheMap = {};
|
|
17
17
|
registerCache = (cache) => {
|
|
18
|
-
this.cacheMap[JSON.stringify(cache.
|
|
18
|
+
this.cacheMap[JSON.stringify(cache.pkTypes)] = cache;
|
|
19
19
|
};
|
|
20
20
|
isConfigured = () => {
|
|
21
21
|
return this.configured;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheRegistry.js","sourceRoot":"","sources":["../../src/CacheRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CacheRegistry.js","sourceRoot":"","sources":["../../src/CacheRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,UAAU,CAAC;AAEjC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAE9C,MAAM,OAAO,aAAa;IAEhB,MAAM,CAAC,QAAQ,CAAgB;IAC/B,UAAU,GAAY,KAAK,CAAC;IAEpC;QACE,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,WAAW;QAEvB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,8GAA8G;IACtG,QAAQ,GAA0B,EAAE,CAAC;IAEtC,aAAa,GAAG,CAOrB,KAAgE,EAAQ,EAAE;QAC1E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;IACvD,CAAC,CAAC;IAEK,YAAY,GAAG,GAAY,EAAE;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC,CAAA;IAEM,cAAc,GAAG,GAAS,EAAE;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACzB,CAAC,CAAA;IAEM,QAAQ,GAAG,CAAC,GAAa,EAAO,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC5D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;CAEH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/
|
|
1
|
+
{"root":["../src/Aggregator.ts","../src/Cache.ts","../src/CacheMap.ts","../src/CacheRegistry.ts","../src/logger.ts","../tests/Aggregator.test.ts","../tests/Cache.test.ts","../tests/CacheMap.test.ts","../tests/CacheRegistry.test.ts","../tests/contained/Cache.test.ts","../tests/primary/Cache.test.ts"],"version":"5.7.3"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fjell/cache",
|
|
3
3
|
"description": "Cache for Fjell",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.5.1",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
|
-
"main": "./dist/src/index.js",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": {
|
|
9
|
-
"require": "./dist/src/index.js",
|
|
10
|
-
"types": "./dist/src/index.d.ts",
|
|
11
|
-
"default": "./dist/src/index.js"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
6
|
"type": "module",
|
|
15
7
|
"scripts": {
|
|
16
8
|
"lint": "eslint .",
|
|
@@ -51,7 +43,7 @@
|
|
|
51
43
|
"tsc-alias": "^1.8.10",
|
|
52
44
|
"typescript": "^5.7.3"
|
|
53
45
|
},
|
|
54
|
-
"packageManager": "yarn@4.
|
|
46
|
+
"packageManager": "yarn@4.7.0",
|
|
55
47
|
"repository": {
|
|
56
48
|
"type": "git",
|
|
57
49
|
"url": "git+https://github.com/getfjell/cache.git"
|