@data-client/core
Version:
Async State Management without the Management. REST, GraphQL, SSE, Websockets, Fetch
29 lines • 3.4 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import { INVALIDATE } from '../../actionTypes.js';
export function invalidateReducer(state, action) {
const endpoints = _extends({}, state.endpoints);
const meta = _extends({}, state.meta);
const invalidateKey = key => {
delete endpoints[key];
const itemMeta = _extends({}, 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 _extends({}, state, {
endpoints,
meta
});
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlZBTElEQVRFIiwiaW52YWxpZGF0ZVJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsImVuZHBvaW50cyIsIl9leHRlbmRzIiwibWV0YSIsImludmFsaWRhdGVLZXkiLCJrZXkiLCJpdGVtTWV0YSIsImV4cGlyZXNBdCIsImludmFsaWRhdGVkIiwiZXJyb3IiLCJ0eXBlIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJ0ZXN0S2V5Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRlL3JlZHVjZXIvaW52YWxpZGF0ZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU5WQUxJREFURSB9IGZyb20gJy4uLy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgU3RhdGUsXG4gIEludmFsaWRhdGVBbGxBY3Rpb24sXG4gIEludmFsaWRhdGVBY3Rpb24sXG59IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGVSZWR1Y2VyKFxuICBzdGF0ZTogU3RhdGU8dW5rbm93bj4sXG4gIGFjdGlvbjogSW52YWxpZGF0ZUFjdGlvbiB8IEludmFsaWRhdGVBbGxBY3Rpb24sXG4pIHtcbiAgY29uc3QgZW5kcG9pbnRzID0geyAuLi5zdGF0ZS5lbmRwb2ludHMgfTtcbiAgY29uc3QgbWV0YSA9IHsgLi4uc3RhdGUubWV0YSB9O1xuICBjb25zdCBpbnZhbGlkYXRlS2V5ID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgZGVsZXRlIGVuZHBvaW50c1trZXldO1xuICAgIGNvbnN0IGl0ZW1NZXRhID0ge1xuICAgICAgLi4ubWV0YVtrZXldLFxuICAgICAgZXhwaXJlc0F0OiAwLFxuICAgICAgaW52YWxpZGF0ZWQ6IHRydWUsXG4gICAgfTtcbiAgICBkZWxldGUgaXRlbU1ldGEuZXJyb3I7XG4gICAgbWV0YVtrZXldID0gaXRlbU1ldGE7XG4gIH07XG4gIGlmIChhY3Rpb24udHlwZSA9PT0gSU5WQUxJREFURSkge1xuICAgIGludmFsaWRhdGVLZXkoYWN0aW9uLmtleSk7XG4gIH0gZWxzZSB7XG4gICAgT2JqZWN0LmtleXMoZW5kcG9pbnRzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBpZiAoYWN0aW9uLnRlc3RLZXkoa2V5KSkge1xuICAgICAgICBpbnZhbGlkYXRlS2V5KGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGVuZHBvaW50cyxcbiAgICBtZXRhLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBU0EsVUFBVSxRQUFRLHNCQUFzQjtBQU9qRCxPQUFPLFNBQVNDLGlCQUFpQkEsQ0FDL0JDLEtBQXFCLEVBQ3JCQyxNQUE4QyxFQUM5QztFQUNBLE1BQU1DLFNBQVMsR0FBQUMsUUFBQSxLQUFRSCxLQUFLLENBQUNFLFNBQVMsQ0FBRTtFQUN4QyxNQUFNRSxJQUFJLEdBQUFELFFBQUEsS0FBUUgsS0FBSyxDQUFDSSxJQUFJLENBQUU7RUFDOUIsTUFBTUMsYUFBYSxHQUFJQyxHQUFXLElBQUs7SUFDckMsT0FBT0osU0FBUyxDQUFDSSxHQUFHLENBQUM7SUFDckIsTUFBTUMsUUFBUSxHQUFBSixRQUFBLEtBQ1RDLElBQUksQ0FBQ0UsR0FBRyxDQUFDO01BQ1pFLFNBQVMsRUFBRSxDQUFDO01BQ1pDLFdBQVcsRUFBRTtJQUFJLEVBQ2xCO0lBQ0QsT0FBT0YsUUFBUSxDQUFDRyxLQUFLO0lBQ3JCTixJQUFJLENBQUNFLEdBQUcsQ0FBQyxHQUFHQyxRQUFRO0VBQ3RCLENBQUM7RUFDRCxJQUFJTixNQUFNLENBQUNVLElBQUksS0FBS2IsVUFBVSxFQUFFO0lBQzlCTyxhQUFhLENBQUNKLE1BQU0sQ0FBQ0ssR0FBRyxDQUFDO0VBQzNCLENBQUMsTUFBTTtJQUNMTSxNQUFNLENBQUNDLElBQUksQ0FBQ1gsU0FBUyxDQUFDLENBQUNZLE9BQU8sQ0FBQ1IsR0FBRyxJQUFJO01BQ3BDLElBQUlMLE1BQU0sQ0FBQ2MsT0FBTyxDQUFDVCxHQUFHLENBQUMsRUFBRTtRQUN2QkQsYUFBYSxDQUFDQyxHQUFHLENBQUM7TUFDcEI7SUFDRixDQUFDLENBQUM7RUFDSjtFQUVBLE9BQUFILFFBQUEsS0FDS0gsS0FBSztJQUNSRSxTQUFTO0lBQ1RFO0VBQUk7QUFFUiIsImlnbm9yZUxpc3QiOltdfQ==