UNPKG

redux-promise-middleware-actions

Version:

Redux action creator for making async actions with redux-promise-middleware

55 lines 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createAsyncAction = exports.createAction = exports.onRejected = exports.onFulfilled = exports.onPending = void 0; var tslib_1 = require("tslib"); var onPending = function (type, delimiter) { if (delimiter === void 0) { delimiter = '_'; } return "" + type + delimiter + "PENDING"; }; exports.onPending = onPending; var onFulfilled = function (type, delimiter) { if (delimiter === void 0) { delimiter = '_'; } return "" + type + delimiter + "FULFILLED"; }; exports.onFulfilled = onFulfilled; var onRejected = function (type, delimiter) { if (delimiter === void 0) { delimiter = '_'; } return "" + type + delimiter + "REJECTED"; }; exports.onRejected = onRejected; /** * Standard action creator factory. * @param type Action type. * @example * const addTodo = createAction('TODO_ADD', (name) => ({ name })); */ function createAction(type, payloadCreator, metadataCreator) { return Object.assign(function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return (tslib_1.__assign(tslib_1.__assign({ type: type }, (payloadCreator && { payload: payloadCreator.apply(void 0, args) })), (metadataCreator && { meta: metadataCreator.apply(void 0, args) }))); }, { toString: function () { return type; } }); } exports.createAction = createAction; /** * Asynchronous action creator factory. * @param type Action type. * @example * const getTodos = createAsyncAction('TODOS_GET', () => fetch('https://todos.com/todos')); */ function createAsyncAction(type, payloadCreator, metadataCreator, _a) { var _b = _a === void 0 ? {} : _a, delimiter = _b.promiseTypeDelimiter; return Object.assign(createAction(type, payloadCreator, metadataCreator), { toString: function () { throw new Error("Async action " + type + " must be handled with pending, fulfilled or rejected"); }, }, { pending: createAction(exports.onPending(type, delimiter)), fulfilled: createAction(exports.onFulfilled(type, delimiter), function (payload) { return payload; }), rejected: createAction(exports.onRejected(type, delimiter), function (payload) { return payload; }), }); } exports.createAsyncAction = createAsyncAction; //# sourceMappingURL=actions.js.map