feat(api): decouple api from curriculum (#40703)
This commit is contained in:
committed by
GitHub
parent
f4bbe3f34c
commit
c077ffe4b9
@ -1,43 +0,0 @@
|
||||
function isPromiseLike(thing) {
|
||||
return !!thing && typeof thing.then === 'function';
|
||||
}
|
||||
|
||||
function InMemoryCache(initialValue, reportError) {
|
||||
if (typeof reportError !== 'function') {
|
||||
throw new Error(
|
||||
'No reportError function specified for this in-memory-cache'
|
||||
);
|
||||
}
|
||||
const cacheKey = Symbol('cacheKey');
|
||||
const cache = new Map();
|
||||
cache.set(cacheKey, initialValue);
|
||||
|
||||
return {
|
||||
get() {
|
||||
const value = cache.get(cacheKey);
|
||||
return typeof value !== 'undefined' ? value : null;
|
||||
},
|
||||
|
||||
update(fn) {
|
||||
try {
|
||||
const value = fn();
|
||||
if (isPromiseLike(value)) {
|
||||
return value.then(value => cache.set(cacheKey, value));
|
||||
} else {
|
||||
cache.set(cacheKey, value);
|
||||
}
|
||||
} catch (e) {
|
||||
const errMsg = `InMemoryCache > update > caught: ${e.message}`;
|
||||
e.message = errMsg;
|
||||
reportError(e);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
clear() {
|
||||
return cache.delete(cacheKey);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export default InMemoryCache;
|
Reference in New Issue
Block a user