UNPKG

@data-client/core

Version:

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

29 lines 3.87 kB
import { SET_RESPONSE } from '../actionTypes.js'; /** Handling network unauthorized indicators like HTTP 401 * * @see https://dataclient.io/docs/api/LogoutManager */ export default class LogoutManager { constructor({ handleLogout, shouldLogout } = {}) { this.middleware = controller => next => async action => { await next(action); if (action.type === SET_RESPONSE && action.error && this.shouldLogout(action.response)) { this.handleLogout(controller); } }; if (handleLogout) this.handleLogout = handleLogout; if (shouldLogout) this.shouldLogout = shouldLogout; } cleanup() {} shouldLogout(error) { // 401 indicates reauthorization is needed return error.status === 401; } handleLogout(controller) { controller.resetEntireStore(); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfUkVTUE9OU0UiLCJMb2dvdXRNYW5hZ2VyIiwiY29uc3RydWN0b3IiLCJoYW5kbGVMb2dvdXQiLCJzaG91bGRMb2dvdXQiLCJtaWRkbGV3YXJlIiwiY29udHJvbGxlciIsIm5leHQiLCJhY3Rpb24iLCJ0eXBlIiwiZXJyb3IiLCJyZXNwb25zZSIsImNsZWFudXAiLCJzdGF0dXMiLCJyZXNldEVudGlyZVN0b3JlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvTG9nb3V0TWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTRVRfUkVTUE9OU0UgfSBmcm9tICcuLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyIGZyb20gJy4uL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5pbXBvcnQgeyBVbmtub3duRXJyb3IgfSBmcm9tICcuLi9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7IE1hbmFnZXIsIE1pZGRsZXdhcmUgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbi8qKiBIYW5kbGluZyBuZXR3b3JrIHVuYXV0aG9yaXplZCBpbmRpY2F0b3JzIGxpa2UgSFRUUCA0MDFcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9Mb2dvdXRNYW5hZ2VyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ291dE1hbmFnZXIgaW1wbGVtZW50cyBNYW5hZ2VyIHtcbiAgY29uc3RydWN0b3IoeyBoYW5kbGVMb2dvdXQsIHNob3VsZExvZ291dCB9OiBQcm9wcyA9IHt9KSB7XG4gICAgaWYgKGhhbmRsZUxvZ291dCkgdGhpcy5oYW5kbGVMb2dvdXQgPSBoYW5kbGVMb2dvdXQ7XG4gICAgaWYgKHNob3VsZExvZ291dCkgdGhpcy5zaG91bGRMb2dvdXQgPSBzaG91bGRMb2dvdXQ7XG4gIH1cblxuICBtaWRkbGV3YXJlOiBNaWRkbGV3YXJlID0gY29udHJvbGxlciA9PiBuZXh0ID0+IGFzeW5jIGFjdGlvbiA9PiB7XG4gICAgYXdhaXQgbmV4dChhY3Rpb24pO1xuICAgIGlmIChcbiAgICAgIGFjdGlvbi50eXBlID09PSBTRVRfUkVTUE9OU0UgJiZcbiAgICAgIGFjdGlvbi5lcnJvciAmJlxuICAgICAgdGhpcy5zaG91bGRMb2dvdXQoYWN0aW9uLnJlc3BvbnNlKVxuICAgICkge1xuICAgICAgdGhpcy5oYW5kbGVMb2dvdXQoY29udHJvbGxlcik7XG4gICAgfVxuICB9O1xuXG4gIGNsZWFudXAoKSB7fVxuXG4gIHByb3RlY3RlZCBzaG91bGRMb2dvdXQoZXJyb3I6IFVua25vd25FcnJvcikge1xuICAgIC8vIDQwMSBpbmRpY2F0ZXMgcmVhdXRob3JpemF0aW9uIGlzIG5lZWRlZFxuICAgIHJldHVybiBlcnJvci5zdGF0dXMgPT09IDQwMTtcbiAgfVxuXG4gIGhhbmRsZUxvZ291dChjb250cm9sbGVyOiBDb250cm9sbGVyKSB7XG4gICAgY29udHJvbGxlci5yZXNldEVudGlyZVN0b3JlKCk7XG4gIH1cbn1cblxudHlwZSBIYW5kbGVMb2dvdXQgPSAoY29udHJvbGxlcjogQ29udHJvbGxlcikgPT4gdm9pZDtcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgaGFuZGxlTG9nb3V0PzogSGFuZGxlTG9nb3V0O1xuICBzaG91bGRMb2dvdXQ/OiAoZXJyb3I6IFVua25vd25FcnJvcikgPT4gYm9vbGVhbjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsWUFBWSxRQUFRLG1CQUFtQjtBQUtoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsTUFBTUMsYUFBYSxDQUFvQjtFQUNwREMsV0FBV0EsQ0FBQztJQUFFQyxZQUFZO0lBQUVDO0VBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtJQUFBLEtBS3hEQyxVQUFVLEdBQWVDLFVBQVUsSUFBSUMsSUFBSSxJQUFJLE1BQU1DLE1BQU0sSUFBSTtNQUM3RCxNQUFNRCxJQUFJLENBQUNDLE1BQU0sQ0FBQztNQUNsQixJQUNFQSxNQUFNLENBQUNDLElBQUksS0FBS1QsWUFBWSxJQUM1QlEsTUFBTSxDQUFDRSxLQUFLLElBQ1osSUFBSSxDQUFDTixZQUFZLENBQUNJLE1BQU0sQ0FBQ0csUUFBUSxDQUFDLEVBQ2xDO1FBQ0EsSUFBSSxDQUFDUixZQUFZLENBQUNHLFVBQVUsQ0FBQztNQUMvQjtJQUNGLENBQUM7SUFiQyxJQUFJSCxZQUFZLEVBQUUsSUFBSSxDQUFDQSxZQUFZLEdBQUdBLFlBQVk7SUFDbEQsSUFBSUMsWUFBWSxFQUFFLElBQUksQ0FBQ0EsWUFBWSxHQUFHQSxZQUFZO0VBQ3BEO0VBYUFRLE9BQU9BLENBQUEsRUFBRyxDQUFDO0VBRURSLFlBQVlBLENBQUNNLEtBQW1CLEVBQUU7SUFDMUM7SUFDQSxPQUFPQSxLQUFLLENBQUNHLE1BQU0sS0FBSyxHQUFHO0VBQzdCO0VBRUFWLFlBQVlBLENBQUNHLFVBQXNCLEVBQUU7SUFDbkNBLFVBQVUsQ0FBQ1EsZ0JBQWdCLENBQUMsQ0FBQztFQUMvQjtBQUNGIiwiaWdub3JlTGlzdCI6W119