redux-motive
Version:
Simplify writing action creators, reducers and effects - without breaking redux.
2 lines (1 loc) • 3.43 kB
JavaScript
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(t=t||self).ReduxMotive=n()}(this,function(){"use strict";var n=function(t){if(Array.isArray(t)){for(var n=0,e=new Array(t.length);n<t.length;n++)e[n]=t[n];return e}};var e=function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)};var r=function(){throw new TypeError("Invalid attempt to spread non-iterable instance")};var g=function(t){return n(t)||e(t)||r()};var t,a,R=function(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t},c="progressing",o="error",p="@@MOTIVE",T="effect",i="@@motiveasync",E="@@motiveargs",A={START:"START",END:"END",ERROR:"ERROR"},l={PROGRESSING:(t={},R(t,c,!0),R(t,o,null),t),INITIAL:(a={},R(a,c,!1),R(a,o,null),a)},h={start:function(t){return Object.assign({},t,l.PROGRESSING)},end:function(t){return Object.assign({},t,l.INITIAL)},error:function(t,n){var e;return Object.assign({},t,(R(e={},c,!1),R(e,o,n),e))}};function I(t){return t.replace(/\W/g,"_").replace(/(?!^.)[A-Z]/g,function(t){return"_"+t.toUpperCase()}).replace(/\w/g,function(t){return t.toUpperCase()})}function j(t,n,e){var r={type:t,meta:n};return e&&(r.payload=e),r}function m(){var t=j.apply(void 0,arguments);return t.meta[i]=!0,t}function N(t,n,e){var r,a,c,o={};return Object.defineProperty(o,"dispatch",{value:n}),Object.defineProperty(o,"getState",{value:e}),r=o,a=t,c=n,Object.keys(a).reduce(function(t,n){var e,r;return t[n]=(e=a[n],r=c,function(){return r(e.apply(null,arguments))}),t},r)}return function t(n){if(!(this instanceof t))return new t(n);var e=n.config,r=void 0===e?{}:e,a=n.sync,s=n.async;if(!a&&!s)throw new Error("Expected props 'sync' or 'async' to be defined for the Motive.");var c,o,i,v={},y={},d=(c=r.prefix||"","".concat(p).concat(c?"/":"").concat(I(c))),O=r&&r.handlers||h,b=(o=N,i=new WeakMap,function(t){return i.has(t)||i.set(t,o.apply(null,arguments)),i.get(t)});a&&Object.keys(a).forEach(function(t){var n="".concat(d,"/").concat(I(t)),e=a[t];function r(){return j(n,R({},E,Array.prototype.slice.call(arguments)))}r.ACTION_TYPE=n,v[t]=r,y[n]=function(t,n){return e.apply(void 0,[t].concat(g(n.meta[E])))}}),s&&Object.keys(s).forEach(function(t){var n,c,e="".concat(d,"/").concat(I(t)),o="".concat(e,"/").concat(A.START),i="".concat(e,"/").concat(A.END),u="".concat(e,"/").concat(A.ERROR),r=s[t],a=O,f=!(r instanceof Function);function p(){var a=Array.prototype.slice.call(arguments);return function(n,t){var e=R({},E,a);n(m(o,e));var r=b(v,n,t);c.apply(void 0,[r].concat(g(a))).then(function(){n(m(i,e))}).catch(function(t){n(m(u,e,t))})}}c=f?(a=r.handlers||a,r[T]):r,p.ACTION_TYPE_START=o,p.ACTION_TYPE_END=i,p.ACTION_TYPE_ERROR=u;var l=(R(n={},o,function(t,n){var e;return(e=a).start.apply(e,[t].concat(g(n.meta[E])))}),R(n,i,function(t,n){var e;return(e=a).end.apply(e,[t].concat(g(n.meta[E])))}),R(n,u,function(t,n){var e;return(e=a).error.apply(e,[t,n.payload].concat(g(n.meta[E])))}),n);v[t]=p,y[o]=l[o],y[i]=l[i],y[u]=l[u]});var u=O===h?Object.assign({},l.INITIAL,r.initialState):r.initialState;var f=Object.assign({},v);return Object.defineProperty(f,"reducer",{value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:u,n=1<arguments.length?arguments[1]:void 0;return y[n.type]?y[n.type](t,n):t}}),f}});