k-ramel
Version:
State manager for you components apps, the safe and easy way.
2 lines (1 loc) • 9.04 kB
JavaScript
import{combineReducers,applyMiddleware,compose,createStore as createStore$1}from"redux";export{applyMiddleware,compose}from"redux";import{factory}from"k-redux-factory";function _defineProperty(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){_defineProperty(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_nonIterableRest()}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_nonIterableSpread()}function _arrayWithoutHoles(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _iterableToArray(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}function _iterableToArrayLimit(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,o=!1,i=void 0;try{for(var c,a=e[Symbol.iterator]();!(n=(c=a.next()).done)&&(r.push(c.value),!t||r.length!==t);n=!0);}catch(e){o=!0,i=e}finally{try{n||null==a.return||a.return()}finally{if(o)throw i}}return r}}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance")}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var array=function(e){return _objectSpread2({},e,{type:"simple.array"})},bool=function(e){return _objectSpread2({},e,{type:"simple.bool"})},string=function(e){return _objectSpread2({},e,{type:"simple.string"})},object=function(e){return _objectSpread2({},e,{type:"simple.object"})},number=function(e){return _objectSpread2({},e,{type:"simple.number"})},keyValue=function(e){return _objectSpread2({},e,{type:"keyValue"})},types=Object.freeze({__proto__:null,array:array,bool:bool,string:string,object:object,number:number,keyValue:keyValue}),getFromPath=function(e,t){return t.split(".").reduce(function(e,t){return e&&e[t]},e)},reduxFactory=function(e){return function t(r,n){if(void 0===r)return Object.keys(e).map(function(e){return _defineProperty({},e,t(e,""))}).reduce(function(e,t){return _objectSpread2({},e,{},t)},{});var o="".concat(n?"".concat(n,"."):"").concat(r),i=getFromPath(e,o);return i.type?factory(_objectSpread2({name:r,path:n,prefix:n&&n.replace(/\./g,"_")||""},i)):"function"==typeof i?i:Object.keys(i).map(function(e){return _defineProperty({},e,t(e,o))}).reduce(function(e,t){return _objectSpread2({},e,{},t)},{})}()},withParams=["get","getBy","hasKey"],keysConfig={keyValue:[["set","add","update","addOrUpdate","remove"],["get","getBy","getKeys","getAsArray","getLength","isInitialized","getState","hasKey"]],simple:[["set","update"],["get","isInitialized"]]};keysConfig.simpleObject=keysConfig.simple,keysConfig["simple.object"]=keysConfig.simple,keysConfig["simple.array"]=keysConfig.simple,keysConfig["simple.bool"]=keysConfig.simple,keysConfig["simple.string"]=keysConfig.simple,keysConfig["simple.number"]=keysConfig.simple;var toContext=function(e,t){return function r(n,o){if(void 0===n)return Object.keys(e).map(function(e){return _defineProperty({},e,r(e,""))}).reduce(function(e,t){return _objectSpread2({},e,{},t)},{});var i="".concat(o?"".concat(o,"."):"").concat(n),c=getFromPath(e,i);if("RESET"===n)return c;if("function"==typeof c&&void 0===c.krfType)return c;if(void 0!==c.krfType){var a=_slicedToArray(keysConfig[c.krfType],2),u=a[0],s=a[1],f=u.map(function(e){var r=c[e];return _defineProperty({},e,function(){return t.dispatch(r.apply(void 0,arguments))})}).reduce(function(e,t){return _objectSpread2({},e,{},t)},{}),p=s.map(function(e){var r=c[e];return _defineProperty({},e,function(){return withParams.includes(e)?r.apply(void 0,arguments)(t.getState()):r(t.getState())})}).reduce(function(e,t){return _objectSpread2({},e,{},t)},{});return Object.assign(c,f,p)}return Object.keys(c).map(function(e){return _defineProperty({},e,r(e,i))}).reduce(function(e,t){return _objectSpread2({},e,{},t)},{})}()},TYPE="@@krml/RESET",resetFactory=function(e){return function(){return{type:TYPE,payload:e}}},addResetFactory=function(e,t){return function(r,n){var o=resetFactory(n);if(e.hideRedux){var i=o;o=function(){return t(i())}}return r.reset=o,r.RESET=TYPE,r}},addReset=function(e){return function(t,r){var n=addResetFactory(e,r.dispatch);return function e(r,o){if(void 0!==r){var i="".concat(o?"".concat(o,"."):"").concat(r),c=getFromPath(t,i);"function"!=typeof c&&"RESET"!==r&&Object.keys(c).forEach(function(t){e(t,i)}),n(c,i)}else Object.keys(t).forEach(function(t){e(t,"")})}(),n(t)}},reseter=function(e,t){return function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};switch(n.type){case TYPE:return t.startsWith(n.payload||"")?e(void 0,{}):r;default:return e(r,n)}}},combine=function(e){return function e(t,r){var n=Object.keys(t).map(function(n){var o=t[n],i="".concat(r?"".concat(r,"."):"").concat(n);return _defineProperty({},n,"function"==typeof o?reseter(o,i):e(o,i))}).reduce(function(e,t){return _objectSpread2({},e,{},t)},{});return combineReducers(n)}(e,"")},getReduxDevToolsEnhancer=function(e){if("undefined"!=typeof window){var t=e.name,r=e.trace,n=e.traceLimit;return window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__({name:t,trace:r,traceLimit:n}):void 0}},getDevTools=function(e){var t=e.devtools;if(!1!==t&&(void 0!==t||"undefined"==typeof process||!process.env||"production"!==process.env.NODE_ENV))return getReduxDevToolsEnhancer(e)},listenFactory=function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],r=arguments.length>2?arguments[2]:void 0,n=[t];return{setStore:function(t){e=t},addListeners:function(e){n=[].concat(_toConsumableArray(n),[e])},removeListeners:function(e){n=n.filter(function(t){return t!==e})},enhancer:applyMiddleware(function(){return function(t){return function(o){var i=r&&o.action||o,c=t(o);return n.forEach(function(t){try{t.forEach(function(t){t(i,e,e.drivers)})}catch(t){e.dispatch({type:"@@krml/EXCEPTION",payload:{from:o,exception:t,message:t.message}})}}),c}}})}},enhanceRedux=function(e){var t=e.listeners,r=e.drivers,n=e.enhancer,o=getDevTools(e),i=listenFactory(t,r,!!o),c=[n,o,i.enhancer].filter(Boolean);return{enhancer:compose.apply(void 0,_toConsumableArray(c)),listen:i}},defaultOptions={hideRedux:!0,enhancer:void 0,init:{},listeners:void 0,devtools:void 0,trace:!1,traceLimit:25,name:"store",drivers:{}},createStore=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:defaultOptions,r=_objectSpread2({},defaultOptions,{},t,{drivers:_objectSpread2({},defaultOptions.drivers,{},t.drivers)}),n=r.init,o=r.hideRedux,i=r.drivers,c=_objectSpread2({},e),a=[],u=[];Object.values(i).forEach(function(e){if(e.getReducer){var t=e.getReducer(),r=t.reducer,n=t.path;if(n.length)for(var o=n.split("."),i=c,s=0;s<o.length;s+=1){var f=o[s];if(s===o.length-1){i[f]=r;break}i[f]||(i[f]={}),i=i[f]}}e.getEnhancer&&a.push(e.getEnhancer()),e.init&&u.push(e.init)}),r.enhancer&&a.push(r.enhancer),r.enhancer=compose.apply(void 0,a);var s=reduxFactory(c),f=enhanceRedux(r),p=f.enhancer,d=f.listen,y=createStore$1(combine(s),n,p);s=addReset(r)(s,y),o&&(s=toContext(s,y));var l=_objectSpread2({},s,{},y,{listeners:{add:d.addListeners,remove:d.removeListeners}});l.drivers=Object.keys(i).reduce(function(e,t){return _objectSpread2({},e,_defineProperty({},t,i[t].getDriver(l)))},{});var b=l.dispatch;return l.dispatch=function(e){if("string"==typeof e)return b({type:e});for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return b.apply(void 0,[e].concat(r))},d.setStore(l),l.dispatch("@@krml/INIT"),u.forEach(function(e){return e(l)}),l},isMatching=function(e,t){return function(r){return("string"==typeof r||r instanceof String)&&e.type===r||("function"==typeof r||r instanceof Function)&&r(e,t)||r instanceof RegExp&&e.type.match(r)}},_when=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e){return function(r,n,o){return!!t.reduce(function(e,t){return e&&isMatching(r,n)(t)},!0)&&e(r,n,o)}}},reaction=function(e){return Object.assign(e,{when:function(){return _when.apply(void 0,arguments)(e)}})},reactions=function(e){return Object.keys(e).reduce(function(t,r){return _objectSpread2({},t,_defineProperty({},r,reaction(e[r])))},{})};export{createStore,reaction,reactions,types,_when as when};