UNPKG

@data-client/core

Version:

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

36 lines 4.63 kB
import { normalize } from '@data-client/normalizr'; export function setReducer(state, action, controller) { let value; if (typeof action.value === 'function') { const previousValue = controller.get(action.schema, ...action.args, state); if (previousValue === undefined) return state; value = action.value(previousValue); } else { value = action.value; } try { const { entities, indexes, entitiesMeta } = normalize(action.schema, value, action.args, state, action.meta); return { entities, endpoints: state.endpoints, indexes, meta: state.meta, entitiesMeta, optimistic: state.optimistic, lastReset: state.lastReset }; // reducer must update the state, so in case of processing errors we simply compute the endpoints inline } catch (error) { // this is not always bubbled up, so let's double sure this doesn't fail silently /* istanbul ignore else */ if (process.env.NODE_ENV !== 'production') { console.error(error); } return state; } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJzZXRSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJjb250cm9sbGVyIiwidmFsdWUiLCJwcmV2aW91c1ZhbHVlIiwiZ2V0Iiwic2NoZW1hIiwiYXJncyIsInVuZGVmaW5lZCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0aWVzTWV0YSIsIm1ldGEiLCJlbmRwb2ludHMiLCJvcHRpbWlzdGljIiwibGFzdFJlc2V0IiwiZXJyb3IiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRlL3JlZHVjZXIvc2V0UmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi4vLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhdGUsIFNldEFjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlZHVjZXIoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPixcbiAgYWN0aW9uOiBTZXRBY3Rpb24sXG4gIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsXG4pOiBTdGF0ZTx1bmtub3duPiB7XG4gIGxldCB2YWx1ZTogYW55O1xuICBpZiAodHlwZW9mIGFjdGlvbi52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBjb250cm9sbGVyLmdldChhY3Rpb24uc2NoZW1hLCAuLi5hY3Rpb24uYXJncywgc3RhdGUpO1xuICAgIGlmIChwcmV2aW91c1ZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBzdGF0ZTtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZShwcmV2aW91c1ZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHsgZW50aXRpZXMsIGluZGV4ZXMsIGVudGl0aWVzTWV0YSB9ID0gbm9ybWFsaXplKFxuICAgICAgYWN0aW9uLnNjaGVtYSxcbiAgICAgIHZhbHVlLFxuICAgICAgYWN0aW9uLmFyZ3MsXG4gICAgICBzdGF0ZSxcbiAgICAgIGFjdGlvbi5tZXRhLFxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudGl0aWVzLFxuICAgICAgZW5kcG9pbnRzOiBzdGF0ZS5lbmRwb2ludHMsXG4gICAgICBpbmRleGVzLFxuICAgICAgbWV0YTogc3RhdGUubWV0YSxcbiAgICAgIGVudGl0aWVzTWV0YSxcbiAgICAgIG9wdGltaXN0aWM6IHN0YXRlLm9wdGltaXN0aWMsXG4gICAgICBsYXN0UmVzZXQ6IHN0YXRlLmxhc3RSZXNldCxcbiAgICB9O1xuICAgIC8vIHJlZHVjZXIgbXVzdCB1cGRhdGUgdGhlIHN0YXRlLCBzbyBpbiBjYXNlIG9mIHByb2Nlc3NpbmcgZXJyb3JzIHdlIHNpbXBseSBjb21wdXRlIHRoZSBlbmRwb2ludHMgaW5saW5lXG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAvLyB0aGlzIGlzIG5vdCBhbHdheXMgYnViYmxlZCB1cCwgc28gbGV0J3MgZG91YmxlIHN1cmUgdGhpcyBkb2Vzbid0IGZhaWwgc2lsZW50bHlcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFNBQVMsUUFBUSx3QkFBd0I7QUFLbEQsT0FBTyxTQUFTQyxVQUFVQSxDQUN4QkMsS0FBcUIsRUFDckJDLE1BQWlCLEVBQ2pCQyxVQUFzQixFQUNOO0VBQ2hCLElBQUlDLEtBQVU7RUFDZCxJQUFJLE9BQU9GLE1BQU0sQ0FBQ0UsS0FBSyxLQUFLLFVBQVUsRUFBRTtJQUN0QyxNQUFNQyxhQUFhLEdBQUdGLFVBQVUsQ0FBQ0csR0FBRyxDQUFDSixNQUFNLENBQUNLLE1BQU0sRUFBRSxHQUFHTCxNQUFNLENBQUNNLElBQUksRUFBRVAsS0FBSyxDQUFDO0lBQzFFLElBQUlJLGFBQWEsS0FBS0ksU0FBUyxFQUFFLE9BQU9SLEtBQUs7SUFDN0NHLEtBQUssR0FBR0YsTUFBTSxDQUFDRSxLQUFLLENBQUNDLGFBQWEsQ0FBQztFQUNyQyxDQUFDLE1BQU07SUFDTEQsS0FBSyxHQUFHRixNQUFNLENBQUNFLEtBQUs7RUFDdEI7RUFDQSxJQUFJO0lBQ0YsTUFBTTtNQUFFTSxRQUFRO01BQUVDLE9BQU87TUFBRUM7SUFBYSxDQUFDLEdBQUdiLFNBQVMsQ0FDbkRHLE1BQU0sQ0FBQ0ssTUFBTSxFQUNiSCxLQUFLLEVBQ0xGLE1BQU0sQ0FBQ00sSUFBSSxFQUNYUCxLQUFLLEVBQ0xDLE1BQU0sQ0FBQ1csSUFDVCxDQUFDO0lBQ0QsT0FBTztNQUNMSCxRQUFRO01BQ1JJLFNBQVMsRUFBRWIsS0FBSyxDQUFDYSxTQUFTO01BQzFCSCxPQUFPO01BQ1BFLElBQUksRUFBRVosS0FBSyxDQUFDWSxJQUFJO01BQ2hCRCxZQUFZO01BQ1pHLFVBQVUsRUFBRWQsS0FBSyxDQUFDYyxVQUFVO01BQzVCQyxTQUFTLEVBQUVmLEtBQUssQ0FBQ2U7SUFDbkIsQ0FBQztJQUNEO0VBQ0YsQ0FBQyxDQUFDLE9BQU9DLEtBQVUsRUFBRTtJQUNuQjtJQUNBO0lBQ0EsSUFBSUMsT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxZQUFZLEVBQUU7TUFDekNDLE9BQU8sQ0FBQ0osS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFDdEI7SUFDQSxPQUFPaEIsS0FBSztFQUNkO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=