UNPKG

@data-client/core

Version:

Async State Management without the Management. REST, GraphQL, SSE, Websockets, Fetch

34 lines 3.31 kB
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==