@ngrx-traits/core 18.4.2 → 19.0.0-beta.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.
- package/cache/cache.actions.d.ts +4 -4
- package/fesm2022/ngrx-traits-core-testing.mjs.map +1 -1
- package/fesm2022/ngrx-traits-core.mjs +10 -10
- package/fesm2022/ngrx-traits-core.mjs.map +1 -1
- package/package.json +5 -9
- package/esm2022/cache/cache.actions.mjs +0 -6
- package/esm2022/cache/cache.models.mjs +0 -30
- package/esm2022/cache/cache.module.mjs +0 -18
- package/esm2022/cache/cache.reducer.mjs +0 -138
- package/esm2022/cache/cache.selectors.mjs +0 -5
- package/esm2022/cache/cache.service.mjs +0 -72
- package/esm2022/cache/index.mjs +0 -7
- package/esm2022/create-entity-feature.mjs +0 -428
- package/esm2022/index.mjs +0 -7
- package/esm2022/local-store/disable-local-trait-effects.token.mjs +0 -7
- package/esm2022/local-store/index.mjs +0 -3
- package/esm2022/local-store/traits-local-store.mjs +0 -147
- package/esm2022/model.mjs +0 -2
- package/esm2022/ngrx-traits-core.mjs +0 -5
- package/esm2022/testing/index.mjs +0 -2
- package/esm2022/testing/ngrx-traits-core-testing.mjs +0 -5
- package/esm2022/testing/provide-mock-local-traits.mjs +0 -36
- package/esm2022/trait-effect.mjs +0 -30
- package/esm2022/util.mjs +0 -70
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { createReducer, on } from '@ngrx/store';
|
|
2
|
-
import { hashKey, isCacheValid, } from './cache.models';
|
|
3
|
-
import * as CacheActions from './cache.actions';
|
|
4
|
-
export const initialState = {
|
|
5
|
-
keys: {},
|
|
6
|
-
};
|
|
7
|
-
export const cacheReducer = createReducer(initialState, on(CacheActions.cache, (state, { key, value, date, maxCacheSize }) => setCacheValue(hashKey(key), { value, date, invalid: false }, state, maxCacheSize)), on(CacheActions.invalidateCache, (state, { key }) => {
|
|
8
|
-
const k = hashKey(key);
|
|
9
|
-
return invalidateCache(k, state);
|
|
10
|
-
}), on(CacheActions.deleteCache, (state, { key }) => {
|
|
11
|
-
const k = hashKey(key);
|
|
12
|
-
return deleteCacheValue(k, state);
|
|
13
|
-
}), on(CacheActions.hitCache, (state, { key }) => {
|
|
14
|
-
const k = hashKey(key);
|
|
15
|
-
return increaseCacheHitCount(k, state);
|
|
16
|
-
}));
|
|
17
|
-
function setCacheValue(keys, value, state, maxCacheSize, expires) {
|
|
18
|
-
const newState = { ...state };
|
|
19
|
-
let cache = newState;
|
|
20
|
-
let lastCache = undefined;
|
|
21
|
-
for (let i = 0; i < keys.length; i++) {
|
|
22
|
-
const key = keys[i];
|
|
23
|
-
cache.keys = cache?.keys ? { ...cache?.keys } : {};
|
|
24
|
-
let v = cache.keys[key];
|
|
25
|
-
v = v ? { ...v } : {};
|
|
26
|
-
cache.keys[key] = v;
|
|
27
|
-
lastCache = cache;
|
|
28
|
-
cache = v;
|
|
29
|
-
}
|
|
30
|
-
cache.data = cache.data
|
|
31
|
-
? { ...value, hitCount: cache.data.hitCount + 1 }
|
|
32
|
-
: { ...value, hitCount: 1 };
|
|
33
|
-
if (maxCacheSize &&
|
|
34
|
-
lastCache?.keys &&
|
|
35
|
-
Object.keys(lastCache.keys).length > maxCacheSize) {
|
|
36
|
-
const entries = findLessHitOrOldestCacheEntries(lastCache, expires ?? Infinity, maxCacheSize);
|
|
37
|
-
if (entries && entries.length) {
|
|
38
|
-
for (const [key] of entries) {
|
|
39
|
-
delete lastCache.keys[key];
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return newState;
|
|
44
|
-
}
|
|
45
|
-
function findLessHitOrOldestCacheEntries(state, expires, maxCacheSize) {
|
|
46
|
-
if (!state.keys)
|
|
47
|
-
return undefined;
|
|
48
|
-
const entries = Object.entries(state.keys);
|
|
49
|
-
// find the newest key;
|
|
50
|
-
const [newestKey] = entries.reduce((a, b) => {
|
|
51
|
-
const aDate = a[1].data?.date ?? 0;
|
|
52
|
-
const bDate = b[1].data?.date ?? 0;
|
|
53
|
-
return aDate > bDate ? a : b;
|
|
54
|
-
});
|
|
55
|
-
const sorted = entries.sort(([aKey, aValue], [bKey, bValue]) => {
|
|
56
|
-
// ensures the newest key always wins
|
|
57
|
-
if (aKey === newestKey)
|
|
58
|
-
return -1;
|
|
59
|
-
if (bKey === newestKey)
|
|
60
|
-
return 1;
|
|
61
|
-
const aValid = aValue.data && isCacheValid(aValue.data, expires) ? 1 : 0;
|
|
62
|
-
const bValid = bValue.data && isCacheValid(bValue.data, expires) ? 1 : 0;
|
|
63
|
-
const diffValid = aValid - bValid;
|
|
64
|
-
const diffHit = (aValue.data?.hitCount ?? 0) - (bValue.data?.hitCount ?? 0);
|
|
65
|
-
const diffDate = (aValue.data?.date ?? 0) - (bValue.data?.date ?? 0);
|
|
66
|
-
return (-1 * (diffValid === 0 ? (diffHit === 0 ? diffDate : diffHit) : diffValid));
|
|
67
|
-
});
|
|
68
|
-
return sorted.slice(maxCacheSize);
|
|
69
|
-
}
|
|
70
|
-
function deleteCacheValue(keys, state) {
|
|
71
|
-
const newState = { ...state };
|
|
72
|
-
let cache = newState;
|
|
73
|
-
for (const key of keys) {
|
|
74
|
-
if (!cache.keys)
|
|
75
|
-
return state;
|
|
76
|
-
cache.keys = { ...cache?.keys };
|
|
77
|
-
let v = cache.keys[key];
|
|
78
|
-
if (!v)
|
|
79
|
-
return state;
|
|
80
|
-
v = { ...v };
|
|
81
|
-
cache.keys[key] = v;
|
|
82
|
-
cache = v;
|
|
83
|
-
}
|
|
84
|
-
if (cache.data)
|
|
85
|
-
delete cache.data;
|
|
86
|
-
else if (cache.keys)
|
|
87
|
-
delete cache.keys;
|
|
88
|
-
return newState;
|
|
89
|
-
}
|
|
90
|
-
function invalidateCache(keys, state) {
|
|
91
|
-
const newState = { ...state };
|
|
92
|
-
let cache = newState;
|
|
93
|
-
for (const key of keys) {
|
|
94
|
-
if (!cache?.keys)
|
|
95
|
-
return state;
|
|
96
|
-
cache.keys = { ...cache?.keys };
|
|
97
|
-
let v = cache?.keys?.[key];
|
|
98
|
-
if (!v)
|
|
99
|
-
return state;
|
|
100
|
-
v = { ...v };
|
|
101
|
-
cache.keys[key] = v;
|
|
102
|
-
cache = v;
|
|
103
|
-
}
|
|
104
|
-
cache && invalidaSubKeys(cache);
|
|
105
|
-
return newState;
|
|
106
|
-
}
|
|
107
|
-
function increaseCacheHitCount(keys, state) {
|
|
108
|
-
const newState = { ...state };
|
|
109
|
-
let cache = newState;
|
|
110
|
-
for (const key of keys) {
|
|
111
|
-
if (!cache?.keys)
|
|
112
|
-
return state;
|
|
113
|
-
cache.keys = { ...cache?.keys };
|
|
114
|
-
let v = cache?.keys?.[key];
|
|
115
|
-
if (!v)
|
|
116
|
-
return state;
|
|
117
|
-
v = { ...v };
|
|
118
|
-
cache.keys[key] = v;
|
|
119
|
-
cache = v;
|
|
120
|
-
}
|
|
121
|
-
if (!cache.data)
|
|
122
|
-
return state;
|
|
123
|
-
cache.data = { ...cache.data, hitCount: cache.data.hitCount + 1 };
|
|
124
|
-
return newState;
|
|
125
|
-
}
|
|
126
|
-
function invalidaSubKeys(state) {
|
|
127
|
-
if (state.data) {
|
|
128
|
-
state.data = { ...state.data, invalid: true };
|
|
129
|
-
}
|
|
130
|
-
if (state.keys) {
|
|
131
|
-
state.keys = { ...state.keys };
|
|
132
|
-
for (const key in state.keys) {
|
|
133
|
-
state.keys[key] = invalidaSubKeys({ ...state.keys[key] });
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return state;
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29yZS9zcmMvbGliL2NhY2hlL2NhY2hlLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUlMLE9BQU8sRUFDUCxZQUFZLEdBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEtBQUssWUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZTtJQUN0QyxJQUFJLEVBQUUsRUFBRTtDQUNULENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUN2QyxZQUFZLEVBQ1osRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLENBQ25FLGFBQWEsQ0FDWCxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQ1osRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFDL0IsS0FBSyxFQUNMLFlBQVksQ0FDYixDQUNGLEVBQ0QsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQ2xELE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixPQUFPLGVBQWUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLEVBQ0YsRUFBRSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQzlDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixPQUFPLGdCQUFnQixDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUMsRUFDRixFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDM0MsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8scUJBQXFCLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUMsQ0FBQyxDQUNILENBQUM7QUFFRixTQUFTLGFBQWEsQ0FDcEIsSUFBYyxFQUNkLEtBQWtDLEVBQ2xDLEtBQWlCLEVBQ2pCLFlBQXFCLEVBQ3JCLE9BQWdCO0lBRWhCLE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM5QixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUM7SUFDckIsSUFBSSxTQUFTLEdBQTBCLFNBQVMsQ0FBQztJQUNqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFDRCxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJO1FBQ3JCLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUU7UUFDakQsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRTlCLElBQ0UsWUFBWTtRQUNaLFNBQVMsRUFBRSxJQUFJO1FBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLFlBQVksRUFDakQsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLCtCQUErQixDQUM3QyxTQUFTLEVBQ1QsT0FBTyxJQUFJLFFBQVEsRUFDbkIsWUFBWSxDQUNiLENBQUM7UUFDRixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUIsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsU0FBUywrQkFBK0IsQ0FDdEMsS0FBZ0IsRUFDaEIsT0FBZSxFQUNmLFlBQW9CO0lBRXBCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ2xDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNDLHVCQUF1QjtJQUN2QixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMxQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ25DLE9BQU8sS0FBSyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtRQUM3RCxxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLEtBQUssU0FBUztZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBSSxJQUFJLEtBQUssU0FBUztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDbEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNyRSxPQUFPLENBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUMxRSxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsSUFBYyxFQUFFLEtBQWlCO0lBQ3pELE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM5QixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUM7SUFDckIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUM5QixLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3JCLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDYixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLElBQUk7UUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FDN0IsSUFBSSxLQUFLLENBQUMsSUFBSTtRQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztJQUN2QyxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBYyxFQUFFLEtBQWlCO0lBQ3hELE1BQU0sUUFBUSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM5QixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUM7SUFDckIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMvQixLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDckIsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNiLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDWixDQUFDO0lBQ0QsS0FBSyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxJQUFjLEVBQUUsS0FBaUI7SUFDOUQsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQzlCLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQztJQUNyQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQy9CLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNyQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2IsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM5QixLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNsRSxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsS0FBZ0I7SUFDdkMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZixLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZixLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0IsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgb24gfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBDYWNoZURhdGEsXG4gIENhY2hlS2V5cyxcbiAgQ2FjaGVTdGF0ZSxcbiAgaGFzaEtleSxcbiAgaXNDYWNoZVZhbGlkLFxufSBmcm9tICcuL2NhY2hlLm1vZGVscyc7XG5pbXBvcnQgKiBhcyBDYWNoZUFjdGlvbnMgZnJvbSAnLi9jYWNoZS5hY3Rpb25zJztcblxuZXhwb3J0IGNvbnN0IGluaXRpYWxTdGF0ZTogQ2FjaGVTdGF0ZSA9IHtcbiAga2V5czoge30sXG59O1xuXG5leHBvcnQgY29uc3QgY2FjaGVSZWR1Y2VyID0gY3JlYXRlUmVkdWNlcihcbiAgaW5pdGlhbFN0YXRlLFxuICBvbihDYWNoZUFjdGlvbnMuY2FjaGUsIChzdGF0ZSwgeyBrZXksIHZhbHVlLCBkYXRlLCBtYXhDYWNoZVNpemUgfSkgPT5cbiAgICBzZXRDYWNoZVZhbHVlKFxuICAgICAgaGFzaEtleShrZXkpLFxuICAgICAgeyB2YWx1ZSwgZGF0ZSwgaW52YWxpZDogZmFsc2UgfSxcbiAgICAgIHN0YXRlLFxuICAgICAgbWF4Q2FjaGVTaXplXG4gICAgKVxuICApLFxuICBvbihDYWNoZUFjdGlvbnMuaW52YWxpZGF0ZUNhY2hlLCAoc3RhdGUsIHsga2V5IH0pID0+IHtcbiAgICBjb25zdCBrID0gaGFzaEtleShrZXkpO1xuICAgIHJldHVybiBpbnZhbGlkYXRlQ2FjaGUoaywgc3RhdGUpO1xuICB9KSxcbiAgb24oQ2FjaGVBY3Rpb25zLmRlbGV0ZUNhY2hlLCAoc3RhdGUsIHsga2V5IH0pID0+IHtcbiAgICBjb25zdCBrID0gaGFzaEtleShrZXkpO1xuICAgIHJldHVybiBkZWxldGVDYWNoZVZhbHVlKGssIHN0YXRlKTtcbiAgfSksXG4gIG9uKENhY2hlQWN0aW9ucy5oaXRDYWNoZSwgKHN0YXRlLCB7IGtleSB9KSA9PiB7XG4gICAgY29uc3QgayA9IGhhc2hLZXkoa2V5KTtcbiAgICByZXR1cm4gaW5jcmVhc2VDYWNoZUhpdENvdW50KGssIHN0YXRlKTtcbiAgfSlcbik7XG5cbmZ1bmN0aW9uIHNldENhY2hlVmFsdWUoXG4gIGtleXM6IHN0cmluZ1tdLFxuICB2YWx1ZTogT21pdDxDYWNoZURhdGEsICdoaXRDb3VudCc+LFxuICBzdGF0ZTogQ2FjaGVTdGF0ZSxcbiAgbWF4Q2FjaGVTaXplPzogbnVtYmVyLFxuICBleHBpcmVzPzogbnVtYmVyXG4pIHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlIH07XG4gIGxldCBjYWNoZSA9IG5ld1N0YXRlO1xuICBsZXQgbGFzdENhY2hlOiBDYWNoZUtleXMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgY2FjaGUua2V5cyA9IGNhY2hlPy5rZXlzID8geyAuLi5jYWNoZT8ua2V5cyB9IDoge307XG4gICAgbGV0IHYgPSBjYWNoZS5rZXlzW2tleV07XG4gICAgdiA9IHYgPyB7IC4uLnYgfSA6IHt9O1xuICAgIGNhY2hlLmtleXNba2V5XSA9IHY7XG4gICAgbGFzdENhY2hlID0gY2FjaGU7XG4gICAgY2FjaGUgPSB2O1xuICB9XG4gIGNhY2hlLmRhdGEgPSBjYWNoZS5kYXRhXG4gICAgPyB7IC4uLnZhbHVlLCBoaXRDb3VudDogY2FjaGUuZGF0YS5oaXRDb3VudCArIDEgfVxuICAgIDogeyAuLi52YWx1ZSwgaGl0Q291bnQ6IDEgfTtcblxuICBpZiAoXG4gICAgbWF4Q2FjaGVTaXplICYmXG4gICAgbGFzdENhY2hlPy5rZXlzICYmXG4gICAgT2JqZWN0LmtleXMobGFzdENhY2hlLmtleXMpLmxlbmd0aCA+IG1heENhY2hlU2l6ZVxuICApIHtcbiAgICBjb25zdCBlbnRyaWVzID0gZmluZExlc3NIaXRPck9sZGVzdENhY2hlRW50cmllcyhcbiAgICAgIGxhc3RDYWNoZSxcbiAgICAgIGV4cGlyZXMgPz8gSW5maW5pdHksXG4gICAgICBtYXhDYWNoZVNpemVcbiAgICApO1xuICAgIGlmIChlbnRyaWVzICYmIGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXldIG9mIGVudHJpZXMpIHtcbiAgICAgICAgZGVsZXRlIGxhc3RDYWNoZS5rZXlzW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cblxuZnVuY3Rpb24gZmluZExlc3NIaXRPck9sZGVzdENhY2hlRW50cmllcyhcbiAgc3RhdGU6IENhY2hlS2V5cyxcbiAgZXhwaXJlczogbnVtYmVyLFxuICBtYXhDYWNoZVNpemU6IG51bWJlclxuKSB7XG4gIGlmICghc3RhdGUua2V5cykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHN0YXRlLmtleXMpO1xuICAvLyBmaW5kIHRoZSBuZXdlc3Qga2V5O1xuICBjb25zdCBbbmV3ZXN0S2V5XSA9IGVudHJpZXMucmVkdWNlKChhLCBiKSA9PiB7XG4gICAgY29uc3QgYURhdGUgPSBhWzFdLmRhdGE/LmRhdGUgPz8gMDtcbiAgICBjb25zdCBiRGF0ZSA9IGJbMV0uZGF0YT8uZGF0ZSA/PyAwO1xuICAgIHJldHVybiBhRGF0ZSA+IGJEYXRlID8gYSA6IGI7XG4gIH0pO1xuICBjb25zdCBzb3J0ZWQgPSBlbnRyaWVzLnNvcnQoKFthS2V5LCBhVmFsdWVdLCBbYktleSwgYlZhbHVlXSkgPT4ge1xuICAgIC8vIGVuc3VyZXMgdGhlIG5ld2VzdCBrZXkgYWx3YXlzIHdpbnNcbiAgICBpZiAoYUtleSA9PT0gbmV3ZXN0S2V5KSByZXR1cm4gLTE7XG4gICAgaWYgKGJLZXkgPT09IG5ld2VzdEtleSkgcmV0dXJuIDE7XG4gICAgY29uc3QgYVZhbGlkID0gYVZhbHVlLmRhdGEgJiYgaXNDYWNoZVZhbGlkKGFWYWx1ZS5kYXRhLCBleHBpcmVzKSA/IDEgOiAwO1xuICAgIGNvbnN0IGJWYWxpZCA9IGJWYWx1ZS5kYXRhICYmIGlzQ2FjaGVWYWxpZChiVmFsdWUuZGF0YSwgZXhwaXJlcykgPyAxIDogMDtcbiAgICBjb25zdCBkaWZmVmFsaWQgPSBhVmFsaWQgLSBiVmFsaWQ7XG4gICAgY29uc3QgZGlmZkhpdCA9IChhVmFsdWUuZGF0YT8uaGl0Q291bnQgPz8gMCkgLSAoYlZhbHVlLmRhdGE/LmhpdENvdW50ID8/IDApO1xuICAgIGNvbnN0IGRpZmZEYXRlID0gKGFWYWx1ZS5kYXRhPy5kYXRlID8/IDApIC0gKGJWYWx1ZS5kYXRhPy5kYXRlID8/IDApO1xuICAgIHJldHVybiAoXG4gICAgICAtMSAqIChkaWZmVmFsaWQgPT09IDAgPyAoZGlmZkhpdCA9PT0gMCA/IGRpZmZEYXRlIDogZGlmZkhpdCkgOiBkaWZmVmFsaWQpXG4gICAgKTtcbiAgfSk7XG4gIHJldHVybiBzb3J0ZWQuc2xpY2UobWF4Q2FjaGVTaXplKTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlQ2FjaGVWYWx1ZShrZXlzOiBzdHJpbmdbXSwgc3RhdGU6IENhY2hlU3RhdGUpIHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlIH07XG4gIGxldCBjYWNoZSA9IG5ld1N0YXRlO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgaWYgKCFjYWNoZS5rZXlzKSByZXR1cm4gc3RhdGU7XG4gICAgY2FjaGUua2V5cyA9IHsgLi4uY2FjaGU/LmtleXMgfTtcbiAgICBsZXQgdiA9IGNhY2hlLmtleXNba2V5XTtcbiAgICBpZiAoIXYpIHJldHVybiBzdGF0ZTtcbiAgICB2ID0geyAuLi52IH07XG4gICAgY2FjaGUua2V5c1trZXldID0gdjtcbiAgICBjYWNoZSA9IHY7XG4gIH1cbiAgaWYgKGNhY2hlLmRhdGEpIGRlbGV0ZSBjYWNoZS5kYXRhO1xuICBlbHNlIGlmIChjYWNoZS5rZXlzKSBkZWxldGUgY2FjaGUua2V5cztcbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuXG5mdW5jdGlvbiBpbnZhbGlkYXRlQ2FjaGUoa2V5czogc3RyaW5nW10sIHN0YXRlOiBDYWNoZVN0YXRlKSB7XG4gIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9O1xuICBsZXQgY2FjaGUgPSBuZXdTdGF0ZTtcbiAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgIGlmICghY2FjaGU/LmtleXMpIHJldHVybiBzdGF0ZTtcbiAgICBjYWNoZS5rZXlzID0geyAuLi5jYWNoZT8ua2V5cyB9O1xuICAgIGxldCB2ID0gY2FjaGU/LmtleXM/LltrZXldO1xuICAgIGlmICghdikgcmV0dXJuIHN0YXRlO1xuICAgIHYgPSB7IC4uLnYgfTtcbiAgICBjYWNoZS5rZXlzW2tleV0gPSB2O1xuICAgIGNhY2hlID0gdjtcbiAgfVxuICBjYWNoZSAmJiBpbnZhbGlkYVN1YktleXMoY2FjaGUpO1xuICByZXR1cm4gbmV3U3RhdGU7XG59XG5cbmZ1bmN0aW9uIGluY3JlYXNlQ2FjaGVIaXRDb3VudChrZXlzOiBzdHJpbmdbXSwgc3RhdGU6IENhY2hlU3RhdGUpIHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IC4uLnN0YXRlIH07XG4gIGxldCBjYWNoZSA9IG5ld1N0YXRlO1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgaWYgKCFjYWNoZT8ua2V5cykgcmV0dXJuIHN0YXRlO1xuICAgIGNhY2hlLmtleXMgPSB7IC4uLmNhY2hlPy5rZXlzIH07XG4gICAgbGV0IHYgPSBjYWNoZT8ua2V5cz8uW2tleV07XG4gICAgaWYgKCF2KSByZXR1cm4gc3RhdGU7XG4gICAgdiA9IHsgLi4udiB9O1xuICAgIGNhY2hlLmtleXNba2V5XSA9IHY7XG4gICAgY2FjaGUgPSB2O1xuICB9XG4gIGlmICghY2FjaGUuZGF0YSkgcmV0dXJuIHN0YXRlO1xuICBjYWNoZS5kYXRhID0geyAuLi5jYWNoZS5kYXRhLCBoaXRDb3VudDogY2FjaGUuZGF0YS5oaXRDb3VudCArIDEgfTtcbiAgcmV0dXJuIG5ld1N0YXRlO1xufVxuXG5mdW5jdGlvbiBpbnZhbGlkYVN1YktleXMoc3RhdGU6IENhY2hlS2V5cykge1xuICBpZiAoc3RhdGUuZGF0YSkge1xuICAgIHN0YXRlLmRhdGEgPSB7IC4uLnN0YXRlLmRhdGEsIGludmFsaWQ6IHRydWUgfTtcbiAgfVxuICBpZiAoc3RhdGUua2V5cykge1xuICAgIHN0YXRlLmtleXMgPSB7IC4uLnN0YXRlLmtleXMgfTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzdGF0ZS5rZXlzKSB7XG4gICAgICBzdGF0ZS5rZXlzW2tleV0gPSBpbnZhbGlkYVN1YktleXMoeyAuLi5zdGF0ZS5rZXlzW2tleV0gfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdGF0ZTtcbn1cbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { createFeatureSelector, createSelector } from '@ngrx/store';
|
|
2
|
-
import { getCacheValue, hashKey } from './cache.models';
|
|
3
|
-
export const cacheStateSelector = createFeatureSelector('cache');
|
|
4
|
-
export const selectCache = (key) => createSelector(cacheStateSelector, (state) => getCacheValue(hashKey(key), state));
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuc2VsZWN0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3J4LXRyYWl0cy9jb3JlL3NyYy9saWIvY2FjaGUvY2FjaGUuc2VsZWN0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUF3QixhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcscUJBQXFCLENBQWEsT0FBTyxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBYSxFQUFFLEVBQUUsQ0FDM0MsY0FBYyxDQUFDLGtCQUFrQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDM0MsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUZlYXR1cmVTZWxlY3RvciwgY3JlYXRlU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBDYWNoZUtleSwgQ2FjaGVTdGF0ZSwgZ2V0Q2FjaGVWYWx1ZSwgaGFzaEtleSB9IGZyb20gJy4vY2FjaGUubW9kZWxzJztcblxuZXhwb3J0IGNvbnN0IGNhY2hlU3RhdGVTZWxlY3RvciA9IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxDYWNoZVN0YXRlPignY2FjaGUnKTtcblxuZXhwb3J0IGNvbnN0IHNlbGVjdENhY2hlID0gKGtleTogQ2FjaGVLZXkpID0+XG4gIGNyZWF0ZVNlbGVjdG9yKGNhY2hlU3RhdGVTZWxlY3RvciwgKHN0YXRlKSA9PlxuICAgIGdldENhY2hlVmFsdWUoaGFzaEtleShrZXkpLCBzdGF0ZSlcbiAgKTtcbiJdfQ==
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { of } from 'rxjs';
|
|
2
|
-
import { isCacheValid } from './cache.models';
|
|
3
|
-
import { selectCache } from './cache.selectors';
|
|
4
|
-
import { concatMap, first, tap } from 'rxjs/operators';
|
|
5
|
-
import * as CacheActions from './cache.actions';
|
|
6
|
-
/**
|
|
7
|
-
* Cache the result of source parameter using the provided key, when call
|
|
8
|
-
* again if the cache is valid (exist and is not expired or invalidated)
|
|
9
|
-
* it will return the cache value without calling again source
|
|
10
|
-
* @example
|
|
11
|
-
* // cache for 3 min
|
|
12
|
-
* loadStores$ = createEffect(() => {
|
|
13
|
-
* return this.actions$.pipe(
|
|
14
|
-
* ofType(ProductStoreActions.loadStores),
|
|
15
|
-
* exhaustMap(() =>
|
|
16
|
-
* cache({
|
|
17
|
-
* key: ['stores'],
|
|
18
|
-
* store: this.store,
|
|
19
|
-
* source: this.storeService.getStores(),
|
|
20
|
-
* expire: 1000 * 60 * 3 // optional param , cache forever if not present
|
|
21
|
-
* }).pipe(
|
|
22
|
-
* map((res) => ProductStoreActions.loadStoresSuccess({ entities: res })),
|
|
23
|
-
* catchError(() => of(ProductStoreActions.loadStoresFail()))
|
|
24
|
-
* )
|
|
25
|
-
* )
|
|
26
|
-
* );
|
|
27
|
-
* });
|
|
28
|
-
* // cache top 10, for 3 mins
|
|
29
|
-
* loadDepartments$ = createEffect(() => {
|
|
30
|
-
* return this.actions$.pipe(
|
|
31
|
-
* ofType(this.localActions.loadDepartments),
|
|
32
|
-
* concatLatestFrom(() =>
|
|
33
|
-
* this.store.select(this.localSelectors.selectDepartmentsFilter)
|
|
34
|
-
* ),
|
|
35
|
-
* exhaustMap(([_, filters]) =>
|
|
36
|
-
* cache({
|
|
37
|
-
* key: ['stores','departments',{ storeId: filters!.storeId },
|
|
38
|
-
* store: this.store,
|
|
39
|
-
* source: this.storeService.getStoreDepartments(filters!.storeId),
|
|
40
|
-
* expires: 1000 * 60 * 3,
|
|
41
|
-
* maxCacheSize: 10,
|
|
42
|
-
* }).pipe(
|
|
43
|
-
* map((res) =>
|
|
44
|
-
* this.localActions.loadDepartmentsSuccess({
|
|
45
|
-
* entities: res,
|
|
46
|
-
* })
|
|
47
|
-
* ),
|
|
48
|
-
* catchError(() => of(this.localActions.loadDepartmentsFail()))
|
|
49
|
-
* )
|
|
50
|
-
* )
|
|
51
|
-
* );
|
|
52
|
-
* });
|
|
53
|
-
*
|
|
54
|
-
* @param options - configuration
|
|
55
|
-
* @param options.store - required ngrx store
|
|
56
|
-
* @param options.key - key can be string, array of string or array of string with plain objects
|
|
57
|
-
* @param options.source - called when cache is invalid
|
|
58
|
-
* @param options.expires - time to expire the cache valued, if not present is infinite
|
|
59
|
-
* @param options.maxCacheSize - max number of keys to store , only works if last key is variable
|
|
60
|
-
*/
|
|
61
|
-
export function cache({ store, key, source, expires, maxCacheSize, skip, }) {
|
|
62
|
-
const exp = expires ?? Infinity;
|
|
63
|
-
return store.select(selectCache(key)).pipe(first(), concatMap((cache) => cache && !skip && isCacheValid(cache, exp)
|
|
64
|
-
? of(cache.value).pipe(tap(() => store.dispatch(CacheActions.hitCache({ key }))))
|
|
65
|
-
: source.pipe(tap((value) => store.dispatch(CacheActions.cache({
|
|
66
|
-
key,
|
|
67
|
-
date: Date.now(),
|
|
68
|
-
value,
|
|
69
|
-
maxCacheSize,
|
|
70
|
-
}))))));
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdyeC10cmFpdHMvY29yZS9zcmMvbGliL2NhY2hlL2NhY2hlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQXVCLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssWUFBWSxNQUFNLGlCQUFpQixDQUFDO0FBRWhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzREc7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFJLEVBQ3ZCLEtBQUssRUFDTCxHQUFHLEVBQ0gsTUFBTSxFQUNOLE9BQU8sRUFDUCxZQUFZLEVBQ1osSUFBSSxHQVFMO0lBQ0MsTUFBTSxHQUFHLEdBQUcsT0FBTyxJQUFJLFFBQVEsQ0FBQztJQUNoQyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN4QyxLQUFLLEVBQUUsRUFDUCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNsQixLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7UUFDeEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUNsQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzFEO1FBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ1QsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDWixLQUFLLENBQUMsUUFBUSxDQUNaLFlBQVksQ0FBQyxLQUFLLENBQUM7WUFDakIsR0FBRztZQUNILElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2hCLEtBQUs7WUFDTCxZQUFZO1NBQ2IsQ0FBQyxDQUNILENBQ0YsQ0FDRixDQUNOLENBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYWNoZURhdGEsIENhY2hlS2V5LCBpc0NhY2hlVmFsaWQgfSBmcm9tICcuL2NhY2hlLm1vZGVscyc7XG5pbXBvcnQgeyBzZWxlY3RDYWNoZSB9IGZyb20gJy4vY2FjaGUuc2VsZWN0b3JzJztcbmltcG9ydCB7IGNvbmNhdE1hcCwgZmlyc3QsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAqIGFzIENhY2hlQWN0aW9ucyBmcm9tICcuL2NhY2hlLmFjdGlvbnMnO1xuXG4vKipcbiAqIENhY2hlIHRoZSByZXN1bHQgb2Ygc291cmNlIHBhcmFtZXRlciB1c2luZyB0aGUgcHJvdmlkZWQga2V5LCB3aGVuIGNhbGxcbiAqIGFnYWluIGlmIHRoZSBjYWNoZSBpcyB2YWxpZCAoZXhpc3QgYW5kIGlzIG5vdCBleHBpcmVkIG9yIGludmFsaWRhdGVkKVxuICogaXQgd2lsbCByZXR1cm4gdGhlIGNhY2hlIHZhbHVlIHdpdGhvdXQgY2FsbGluZyBhZ2FpbiBzb3VyY2VcbiAqIEBleGFtcGxlXG4gKiAvLyBjYWNoZSBmb3IgMyBtaW5cbiAqIGxvYWRTdG9yZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAqICAgcmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShcbiAqICAgICBvZlR5cGUoUHJvZHVjdFN0b3JlQWN0aW9ucy5sb2FkU3RvcmVzKSxcbiAqICAgICBleGhhdXN0TWFwKCgpID0+XG4gKiAgICAgICBjYWNoZSh7XG4gKiAgICAgICAgIGtleTogWydzdG9yZXMnXSxcbiAqICAgICAgICAgc3RvcmU6IHRoaXMuc3RvcmUsXG4gKiAgICAgICAgIHNvdXJjZTogdGhpcy5zdG9yZVNlcnZpY2UuZ2V0U3RvcmVzKCksXG4gKiAgICAgICAgIGV4cGlyZTogMTAwMCAqIDYwICogMyAvLyBvcHRpb25hbCBwYXJhbSAsIGNhY2hlIGZvcmV2ZXIgaWYgbm90IHByZXNlbnRcbiAqICAgICAgIH0pLnBpcGUoXG4gKiAgICAgICAgIG1hcCgocmVzKSA9PiBQcm9kdWN0U3RvcmVBY3Rpb25zLmxvYWRTdG9yZXNTdWNjZXNzKHsgZW50aXRpZXM6IHJlcyB9KSksXG4gKiAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoUHJvZHVjdFN0b3JlQWN0aW9ucy5sb2FkU3RvcmVzRmFpbCgpKSlcbiAqICAgICAgIClcbiAqICAgICApXG4gKiAgICk7XG4gKiB9KTtcbiAqIC8vIGNhY2hlIHRvcCAxMCwgZm9yIDMgbWluc1xuICogICBsb2FkRGVwYXJ0bWVudHMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHtcbiAqICAgcmV0dXJuIHRoaXMuYWN0aW9ucyQucGlwZShcbiAqICAgICBvZlR5cGUodGhpcy5sb2NhbEFjdGlvbnMubG9hZERlcGFydG1lbnRzKSxcbiAqICAgICBjb25jYXRMYXRlc3RGcm9tKCgpID0+XG4gKiAgICAgICB0aGlzLnN0b3JlLnNlbGVjdCh0aGlzLmxvY2FsU2VsZWN0b3JzLnNlbGVjdERlcGFydG1lbnRzRmlsdGVyKVxuICogICAgICksXG4gKiAgICAgZXhoYXVzdE1hcCgoW18sIGZpbHRlcnNdKSA9PlxuICogICAgICAgY2FjaGUoe1xuICogICAgICAgICBrZXk6IFsnc3RvcmVzJywnZGVwYXJ0bWVudHMnLHsgc3RvcmVJZDogZmlsdGVycyEuc3RvcmVJZCB9LFxuICogICAgICAgICBzdG9yZTogdGhpcy5zdG9yZSxcbiAqICAgICAgICAgc291cmNlOiB0aGlzLnN0b3JlU2VydmljZS5nZXRTdG9yZURlcGFydG1lbnRzKGZpbHRlcnMhLnN0b3JlSWQpLFxuICogICAgICAgICBleHBpcmVzOiAxMDAwICogNjAgKiAzLFxuICogICAgICAgICBtYXhDYWNoZVNpemU6IDEwLFxuICogICAgICAgfSkucGlwZShcbiAqICAgICAgICAgbWFwKChyZXMpID0+XG4gKiAgICAgICAgICAgdGhpcy5sb2NhbEFjdGlvbnMubG9hZERlcGFydG1lbnRzU3VjY2Vzcyh7XG4gKiAgICAgICAgICAgICBlbnRpdGllczogcmVzLFxuICogICAgICAgICAgIH0pXG4gKiAgICAgICAgICksXG4gKiAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YodGhpcy5sb2NhbEFjdGlvbnMubG9hZERlcGFydG1lbnRzRmFpbCgpKSlcbiAqICAgICAgIClcbiAqICAgICApXG4gKiAgICk7XG4gKiB9KTtcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIGNvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSBvcHRpb25zLnN0b3JlIC0gcmVxdWlyZWQgbmdyeCBzdG9yZVxuICogQHBhcmFtIG9wdGlvbnMua2V5IC0ga2V5IGNhbiBiZSBzdHJpbmcsIGFycmF5IG9mIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmcgd2l0aCBwbGFpbiBvYmplY3RzXG4gKiBAcGFyYW0gb3B0aW9ucy5zb3VyY2UgLSBjYWxsZWQgd2hlbiBjYWNoZSBpcyBpbnZhbGlkXG4gKiBAcGFyYW0gb3B0aW9ucy5leHBpcmVzIC0gdGltZSB0byBleHBpcmUgdGhlIGNhY2hlIHZhbHVlZCwgaWYgbm90IHByZXNlbnQgaXMgaW5maW5pdGVcbiAqIEBwYXJhbSBvcHRpb25zLm1heENhY2hlU2l6ZSAtIG1heCBudW1iZXIgb2Yga2V5cyB0byBzdG9yZSAsIG9ubHkgd29ya3MgaWYgbGFzdCBrZXkgaXMgdmFyaWFibGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlPFQ+KHtcbiAgc3RvcmUsXG4gIGtleSxcbiAgc291cmNlLFxuICBleHBpcmVzLFxuICBtYXhDYWNoZVNpemUsXG4gIHNraXAsXG59OiB7XG4gIHN0b3JlOiBTdG9yZTtcbiAga2V5OiBDYWNoZUtleTtcbiAgc291cmNlOiBPYnNlcnZhYmxlPFQ+O1xuICBleHBpcmVzPzogbnVtYmVyO1xuICBtYXhDYWNoZVNpemU/OiBudW1iZXI7XG4gIHNraXA/OiBib29sZWFuO1xufSkge1xuICBjb25zdCBleHAgPSBleHBpcmVzID8/IEluZmluaXR5O1xuICByZXR1cm4gc3RvcmUuc2VsZWN0KHNlbGVjdENhY2hlKGtleSkpLnBpcGUoXG4gICAgZmlyc3QoKSxcbiAgICBjb25jYXRNYXAoKGNhY2hlKSA9PlxuICAgICAgY2FjaGUgJiYgIXNraXAgJiYgaXNDYWNoZVZhbGlkKGNhY2hlLCBleHApXG4gICAgICAgID8gb2YoY2FjaGUudmFsdWUpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4gc3RvcmUuZGlzcGF0Y2goQ2FjaGVBY3Rpb25zLmhpdENhY2hlKHsga2V5IH0pKSlcbiAgICAgICAgICApXG4gICAgICAgIDogc291cmNlLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgICBzdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICAgICAgICBDYWNoZUFjdGlvbnMuY2FjaGUoe1xuICAgICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgICAgZGF0ZTogRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgbWF4Q2FjaGVTaXplLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgKVxuICApO1xufVxuIl19
|
package/esm2022/cache/index.mjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export * from './cache.service';
|
|
2
|
-
export * from './cache.module';
|
|
3
|
-
import { invalidateCache, deleteCache } from './cache.actions';
|
|
4
|
-
import { selectCache } from './cache.selectors';
|
|
5
|
-
export const CacheActions = { invalidateCache, deleteCache };
|
|
6
|
-
export const CacheSelectors = { getCache: selectCache };
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25ncngtdHJhaXRzL2NvcmUvc3JjL2xpYi9jYWNoZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2FjaGUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2NhY2hlLm1vZHVsZSc7XG5pbXBvcnQgeyBpbnZhbGlkYXRlQ2FjaGUsIGRlbGV0ZUNhY2hlIH0gZnJvbSAnLi9jYWNoZS5hY3Rpb25zJztcbmltcG9ydCB7IHNlbGVjdENhY2hlIH0gZnJvbSAnLi9jYWNoZS5zZWxlY3RvcnMnO1xuZXhwb3J0IGNvbnN0IENhY2hlQWN0aW9ucyA9IHsgaW52YWxpZGF0ZUNhY2hlLCBkZWxldGVDYWNoZSB9O1xuZXhwb3J0IGNvbnN0IENhY2hlU2VsZWN0b3JzID0geyBnZXRDYWNoZTogc2VsZWN0Q2FjaGUgfTtcbiJdfQ==
|