@data-client/core
Version:
Async State Management without the Management. REST, GraphQL, SSE, Websockets, Fetch
34 lines • 3.31 kB
JavaScript
import { INVALIDATE } from '../../actionTypes.js';
export function invalidateReducer(state, action) {
const endpoints = {
...state.endpoints
};
const meta = {
...state.meta
};
const invalidateKey = key => {
delete endpoints[key];
const itemMeta = {
...meta[key],
expiresAt: 0,
invalidated: true
};
delete itemMeta.error;
meta[key] = itemMeta;
};
if (action.type === INVALIDATE) {
invalidateKey(action.key);
} else {
Object.keys(endpoints).forEach(key => {
if (action.testKey(key)) {
invalidateKey(key);
}
});
}
return {
...state,
endpoints,
meta
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlZBTElEQVRFIiwiaW52YWxpZGF0ZVJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsImVuZHBvaW50cyIsIm1ldGEiLCJpbnZhbGlkYXRlS2V5Iiwia2V5IiwiaXRlbU1ldGEiLCJleHBpcmVzQXQiLCJpbnZhbGlkYXRlZCIsImVycm9yIiwidHlwZSIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwidGVzdEtleSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zdGF0ZS9yZWR1Y2VyL2ludmFsaWRhdGVSZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElOVkFMSURBVEUgfSBmcm9tICcuLi8uLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIFN0YXRlLFxuICBJbnZhbGlkYXRlQWxsQWN0aW9uLFxuICBJbnZhbGlkYXRlQWN0aW9uLFxufSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlUmVkdWNlcihcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICBhY3Rpb246IEludmFsaWRhdGVBY3Rpb24gfCBJbnZhbGlkYXRlQWxsQWN0aW9uLFxuKSB7XG4gIGNvbnN0IGVuZHBvaW50cyA9IHsgLi4uc3RhdGUuZW5kcG9pbnRzIH07XG4gIGNvbnN0IG1ldGEgPSB7IC4uLnN0YXRlLm1ldGEgfTtcbiAgY29uc3QgaW52YWxpZGF0ZUtleSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgIGRlbGV0ZSBlbmRwb2ludHNba2V5XTtcbiAgICBjb25zdCBpdGVtTWV0YSA9IHtcbiAgICAgIC4uLm1ldGFba2V5XSxcbiAgICAgIGV4cGlyZXNBdDogMCxcbiAgICAgIGludmFsaWRhdGVkOiB0cnVlLFxuICAgIH07XG4gICAgZGVsZXRlIGl0ZW1NZXRhLmVycm9yO1xuICAgIG1ldGFba2V5XSA9IGl0ZW1NZXRhO1xuICB9O1xuICBpZiAoYWN0aW9uLnR5cGUgPT09IElOVkFMSURBVEUpIHtcbiAgICBpbnZhbGlkYXRlS2V5KGFjdGlvbi5rZXkpO1xuICB9IGVsc2Uge1xuICAgIE9iamVjdC5rZXlzKGVuZHBvaW50cykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKGFjdGlvbi50ZXN0S2V5KGtleSkpIHtcbiAgICAgICAgaW52YWxpZGF0ZUtleShrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBlbmRwb2ludHMsXG4gICAgbWV0YSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxRQUFRLHNCQUFzQjtBQU9qRCxPQUFPLFNBQVNDLGlCQUFpQkEsQ0FDL0JDLEtBQXFCLEVBQ3JCQyxNQUE4QyxFQUM5QztFQUNBLE1BQU1DLFNBQVMsR0FBRztJQUFFLEdBQUdGLEtBQUssQ0FBQ0U7RUFBVSxDQUFDO0VBQ3hDLE1BQU1DLElBQUksR0FBRztJQUFFLEdBQUdILEtBQUssQ0FBQ0c7RUFBSyxDQUFDO0VBQzlCLE1BQU1DLGFBQWEsR0FBSUMsR0FBVyxJQUFLO0lBQ3JDLE9BQU9ILFNBQVMsQ0FBQ0csR0FBRyxDQUFDO0lBQ3JCLE1BQU1DLFFBQVEsR0FBRztNQUNmLEdBQUdILElBQUksQ0FBQ0UsR0FBRyxDQUFDO01BQ1pFLFNBQVMsRUFBRSxDQUFDO01BQ1pDLFdBQVcsRUFBRTtJQUNmLENBQUM7SUFDRCxPQUFPRixRQUFRLENBQUNHLEtBQUs7SUFDckJOLElBQUksQ0FBQ0UsR0FBRyxDQUFDLEdBQUdDLFFBQVE7RUFDdEIsQ0FBQztFQUNELElBQUlMLE1BQU0sQ0FBQ1MsSUFBSSxLQUFLWixVQUFVLEVBQUU7SUFDOUJNLGFBQWEsQ0FBQ0gsTUFBTSxDQUFDSSxHQUFHLENBQUM7RUFDM0IsQ0FBQyxNQUFNO0lBQ0xNLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDVixTQUFTLENBQUMsQ0FBQ1csT0FBTyxDQUFDUixHQUFHLElBQUk7TUFDcEMsSUFBSUosTUFBTSxDQUFDYSxPQUFPLENBQUNULEdBQUcsQ0FBQyxFQUFFO1FBQ3ZCRCxhQUFhLENBQUNDLEdBQUcsQ0FBQztNQUNwQjtJQUNGLENBQUMsQ0FBQztFQUNKO0VBRUEsT0FBTztJQUNMLEdBQUdMLEtBQUs7SUFDUkUsU0FBUztJQUNUQztFQUNGLENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==