UNPKG

@rematch/core

Version:
3 lines (2 loc) 4.45 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("redux");function r(){return(r=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e}).apply(this,arguments)}function n(e,r){var n={};Object.keys(r.reducers).forEach((function(e){var t=function(e){return e.indexOf("/")>-1}(e)?e:r.name+"/"+e;n[t]=r.reducers[e]}));var t=function(e,t){return void 0===e&&(e=r.state),t.type in n?n[t.type](e,t.payload,t.meta):e},o=r.baseReducer,c=o?function(e,n){return void 0===e&&(e=r.state),t(o(e,n),n)}:t;e.forEachPlugin("onReducer",(function(n){c=n(c,r.name,e)||c})),e.reduxConfig.reducers[r.name]=c}function t(r){var n,t,o=r.reduxConfig.rootReducers,c=(t=(n=r.reduxConfig).combineReducers||e.combineReducers,Object.keys(n.reducers).length?t(n.reducers):function(e){return e}),u=c;return o&&Object.keys(o).length&&(u=function(e,r){var n=o[r.type];return c(n?n(e,r):e,r)}),r.forEachPlugin("onRootReducer",(function(e){u=e(u,r)||u})),u}var o=function(e,r,n,t){return Object.assign((function(t,o){var c={type:r+"/"+n};return void 0!==t&&(c.payload=t),void 0!==o&&(c.meta=o),e.dispatch(c)}),{isEffect:t})};function c(e,r,n){e.dispatch[""+n.name]={},function(e,r,n){var t=e.dispatch[n.name];Object.keys(n.reducers).forEach((function(r){t[r]=o(e,n.name,r,!1)}));var c={};n.effects&&(c="function"==typeof n.effects?n.effects(e.dispatch):n.effects),Object.keys(c).forEach((function(u){r.effects[n.name+"/"+u]=c[u].bind(t),t[u]=o(e,n.name,u,!0)}))}(e,r,n),r.forEachPlugin("onModel",(function(r){r(n,e)}))}var u=0;function i(e,n){return n?r({},n,e):e}var d=function(o){return function(o){var u=function(e){return{models:(n=e.models,Object.keys(n).map((function(e){return r({name:e,reducers:{}},n[e])}))),reduxConfig:e.redux,forEachPlugin:function(r,n){e.plugins.forEach((function(e){e[r]&&n(e[r])}))},effects:{}};var n}(o);u.reduxConfig.middlewares.push(function(e){return function(r){return function(n){return function(t){return t.type in e.effects?(n(t),e.effects[t.type](t.payload,r.getState(),t.meta)):n(t)}}}}(u)),u.forEachPlugin("createMiddleware",(function(e){u.reduxConfig.middlewares.push(e(u))}));var i,d=function(r){r.models.forEach((function(e){return n(r,e)}));var o,c=t(r),u=e.applyMiddleware.apply(e,r.reduxConfig.middlewares),i=(o=r.reduxConfig.devtoolOptions,void 0===o&&(o={}),!o.disabled&&"object"==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__(o):e.compose).apply(void 0,r.reduxConfig.enhancers.concat([u])),d=r.reduxConfig.initialState;return(r.reduxConfig.createStore||e.createStore)(c,void 0===d?{}:d,i)}(u),a=r({},d,{name:o.name,addModel:function(e){n(u,e),c(this,u,e),this.replaceReducer(t(u)),d.dispatch({type:"@@redux/REPLACE"})}});return i=a,o.plugins.forEach((function(e){e.exposed&&Object.keys(e.exposed).forEach((function(r){if(e.exposed){var n=e.exposed[r];i[r]="function"==typeof n?function(){for(var e=arguments.length,r=new Array(e),t=0;t<e;t++)r[t]=arguments[t];return n.apply(void 0,[i].concat(r))}:Object.create(e.exposed[r])}}))})),a.addModel.bind(a),u.models.forEach((function(e){return c(a,u,e)})),u.forEachPlugin("onStoreCreated",(function(e){a=e(a,u)||a})),a}(function(e){var n,t,o,c=null!=(n=e.name)?n:"Rematch Store "+u;u+=1;var d={name:c,models:e.models||{},plugins:e.plugins||[],redux:r({reducers:{},rootReducers:{},enhancers:[],middlewares:[]},e.redux,{devtoolOptions:r({name:c},null!=(t=null==(o=e.redux)?void 0:o.devtoolOptions)?t:{})})};return d.plugins.forEach((function(e){e.config&&(d.models=i(d.models,e.config.models),e.config.redux&&(d.redux.initialState=i(d.redux.initialState,e.config.redux.initialState),d.redux.reducers=i(d.redux.reducers,e.config.redux.reducers),d.redux.rootReducers=i(d.redux.rootReducers,e.config.redux.reducers),d.redux.enhancers=[].concat(d.redux.enhancers,e.config.redux.enhancers||[]),d.redux.middlewares=[].concat(d.redux.middlewares,e.config.redux.middlewares||[]),d.redux.combineReducers=d.redux.combineReducers||e.config.redux.combineReducers,d.redux.createStore=d.redux.createStore||e.config.redux.createStore))})),d}(o||{}))},a=function(){return function(e){var n=e.reducers,t=e.effects;return r({},e,{reducers:void 0===n?{}:n,effects:void 0===t?{}:t})}},f={init:d,createModel:a};exports.createModel=a,exports.default=f,exports.init=d; //# sourceMappingURL=core.cjs.production.min.js.map