UNPKG

redux-boost

Version:
142 lines (107 loc) 6.28 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.createRequestMiddleware = undefined; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray'); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _actions = require('../requests/actions'); var _utils = require('../utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function applyMethodToExecutor(executor, payload, method) { return executor.get ? executor[method.toLowerCase()] : executor; } var defaultConfig = { method: 'get', serialize: _utils.identity, serializeError: _utils.identity, executor: global.fetch, prepareExecutor: applyMethodToExecutor, onError: _utils.identity, onSuccess: _utils.identity, saveRequestResult: true, logError: true /* * config: { * name, * payload, * method: 'get' * serialize: identity, * executor: global.fetch, * prepareExecutor: fn, * onSuccess: noop, * onError: noop, * } */ };var createRequestMiddleware = exports.createRequestMiddleware = function createRequestMiddleware(customConfig) { return function (_ref) { var dispatch = _ref.dispatch; // Apply default values to the custom config var config = Object.assign(defaultConfig, customConfig); return function (next) { return function () { var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(action) { var _action$payload, name, payload, _action$payload$metho, method, _action$payload$seria, serialize, _action$payload$seria2, serializeError, _action$payload$execu, executor, _action$payload$prepa, prepareExecutor, _action$payload$saveR, saveRequestResult, _action$payload$onErr, onError, _action$payload$onSuc, onSuccess, _action$meta, _action$meta$resolve, resolve, _action$meta$reject, reject, args, fetch, response, data, serialized, error; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!(action.type !== _actions.requestActions.fetchStart.type)) { _context.next = 2; break; } return _context.abrupt('return', next(action)); case 2: next(action); _action$payload = action.payload; _action$payload = _action$payload === undefined ? {} : _action$payload; name = _action$payload.name, payload = _action$payload.payload, _action$payload$metho = _action$payload.method, method = _action$payload$metho === undefined ? config.method : _action$payload$metho, _action$payload$seria = _action$payload.serialize, serialize = _action$payload$seria === undefined ? config.serialize : _action$payload$seria, _action$payload$seria2 = _action$payload.serializeError, serializeError = _action$payload$seria2 === undefined ? config.serializeError : _action$payload$seria2, _action$payload$execu = _action$payload.executor, executor = _action$payload$execu === undefined ? config.executor : _action$payload$execu, _action$payload$prepa = _action$payload.prepareExecutor, prepareExecutor = _action$payload$prepa === undefined ? config.prepareExecutor : _action$payload$prepa, _action$payload$saveR = _action$payload.saveRequestResult, saveRequestResult = _action$payload$saveR === undefined ? config.saveRequestResult : _action$payload$saveR, _action$payload$onErr = _action$payload.onError, onError = _action$payload$onErr === undefined ? config.onError : _action$payload$onErr, _action$payload$onSuc = _action$payload.onSuccess, onSuccess = _action$payload$onSuc === undefined ? config.onSuccess : _action$payload$onSuc, _action$meta = action.meta; _action$meta = _action$meta === undefined ? {} : _action$meta; _action$meta$resolve = _action$meta.resolve, resolve = _action$meta$resolve === undefined ? _utils.noop : _action$meta$resolve, _action$meta$reject = _action$meta.reject, reject = _action$meta$reject === undefined ? _utils.noop : _action$meta$reject; args = Array.isArray(payload) ? payload : [payload]; fetch = prepareExecutor(executor, action.payload, method); _context.prev = 10; _context.next = 13; return fetch.apply(undefined, (0, _toConsumableArray3.default)(args)); case 13: response = _context.sent; data = response.data || response; serialized = serialize(data); resolve(serialized); dispatch(_actions.requestActions.fetchSuccess({ name: name, result: serialized, saveRequestResult: saveRequestResult })); onSuccess({ name: name, result: serialized }); return _context.abrupt('return', serialized); case 22: _context.prev = 22; _context.t0 = _context['catch'](10); error = serializeError(_context.t0); reject(error); dispatch(_actions.requestActions.fetchFail({ name: name, error: error })); onError({ name: name, error: error }); if (config.logError) { // eslint-disable-next-line no-console console.error(error); } return _context.abrupt('return', error); case 30: case 'end': return _context.stop(); } } }, _callee, undefined, [[10, 22]]); })); return function (_x) { return _ref2.apply(this, arguments); }; }(); }; }; };