@rematch/core
Advanced tools
Comparing version 2.1.1 to 2.2.0
@@ -46,2 +46,4 @@ 'use strict'; | ||
function createReduxStore(bag) { | ||
var _bag$reduxConfig; | ||
bag.models.forEach(function (model) { | ||
@@ -52,3 +54,3 @@ return createModelReducer(bag, model); | ||
var middlewares = Redux__namespace.applyMiddleware.apply(Redux__namespace, bag.reduxConfig.middlewares); | ||
var enhancers = composeEnhancersWithDevtools(bag.reduxConfig.devtoolOptions).apply(void 0, bag.reduxConfig.enhancers.concat([middlewares])); | ||
var enhancers = bag.reduxConfig.devtoolComposer ? (_bag$reduxConfig = bag.reduxConfig).devtoolComposer.apply(_bag$reduxConfig, bag.reduxConfig.enhancers.concat([middlewares])) : composeEnhancersWithDevtools(bag.reduxConfig.devtoolOptions).apply(void 0, bag.reduxConfig.enhancers.concat([middlewares])); | ||
var createStore = bag.reduxConfig.createStore || Redux__namespace.createStore; | ||
@@ -211,3 +213,3 @@ var bagInitialState = bag.reduxConfig.initialState; | ||
var createDispatcher = function createDispatcher(rematch, bag, model) { | ||
var createReducerDispatcher = function createReducerDispatcher(rematch, model) { | ||
var modelDispatcher = rematch.dispatch[model.name]; | ||
@@ -219,2 +221,5 @@ var modelReducersKeys = Object.keys(model.reducers); | ||
}); | ||
}; | ||
var createEffectDispatcher = function createEffectDispatcher(rematch, bag, model) { | ||
var modelDispatcher = rematch.dispatch[model.name]; | ||
var effects = {}; | ||
@@ -277,3 +282,4 @@ | ||
createModelReducer(bag, model); | ||
prepareModel(rematchStore, bag, model); | ||
prepareModel(rematchStore, model); | ||
enhanceModel(rematchStore, bag, model); | ||
reduxStore.replaceReducer(createRootReducer(bag)); | ||
@@ -288,4 +294,7 @@ reduxStore.dispatch({ | ||
bag.models.forEach(function (model) { | ||
return prepareModel(rematchStore, bag, model); | ||
return prepareModel(rematchStore, model); | ||
}); | ||
bag.models.forEach(function (model) { | ||
return enhanceModel(rematchStore, bag, model); | ||
}); | ||
bag.forEachPlugin('onStoreCreated', function (onStoreCreated) { | ||
@@ -312,6 +321,10 @@ rematchStore = onStoreCreated(rematchStore, bag) || rematchStore; | ||
function prepareModel(rematchStore, bag, model) { | ||
function prepareModel(rematchStore, model) { | ||
var modelDispatcher = {}; | ||
rematchStore.dispatch["" + model.name] = modelDispatcher; | ||
createDispatcher(rematchStore, bag, model); | ||
createReducerDispatcher(rematchStore, model); | ||
} | ||
function enhanceModel(rematchStore, bag, model) { | ||
createEffectDispatcher(rematchStore, bag, model); | ||
bag.forEachPlugin('onModel', function (onModel) { | ||
@@ -318,0 +331,0 @@ onModel(model, rematchStore); |
@@ -1,2 +0,2 @@ | ||
"use strict";function e(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,t.get?t:{enumerable:!0,get:function(){return e[n]}})}})),r.default=e,r}Object.defineProperty(exports,"__esModule",{value:!0});var r=e(require("redux"));function n(){return n=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},n.apply(this,arguments)}function t(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,u=o?function(e,n){return void 0===e&&(e=r.state),t(o(e,n),n)}:t;e.forEachPlugin("onReducer",(function(n){u=n(u,r.name,e)||u})),e.reduxConfig.reducers[r.name]=u}function o(e){var n,t,o=e.reduxConfig.rootReducers,u=(t=(n=e.reduxConfig).combineReducers||r.combineReducers,Object.keys(n.reducers).length?t(n.reducers):function(e){return e}),c=u;return o&&Object.keys(o).length&&(c=function(e,r){var n=o[r.type];return u(n?n(e,r):e,r)}),e.forEachPlugin("onRootReducer",(function(r){c=r(c,e)||c})),c}var u=function(e,r,n,t){return Object.assign((function(t,o){var u={type:r+"/"+n};return void 0!==t&&(u.payload=t),void 0!==o&&(u.meta=o),e.dispatch(u)}),{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]=u(e,n.name,r,!1)}));var o={};n.effects&&(o="function"==typeof n.effects?n.effects(e.dispatch):n.effects),Object.keys(o).forEach((function(c){r.effects[n.name+"/"+c]=o[c].bind(t),t[c]=u(e,n.name,c,!0)}))}(e,r,n),r.forEachPlugin("onModel",(function(r){r(n,e)}))}var i=0;function d(e,r){return r?n({},r,e):e}var a=function(e){var u=function(e){var r,t,o,u=null!=(r=e.name)?r:"Rematch Store "+i;i+=1;var c={name:u,models:e.models||{},plugins:e.plugins||[],redux:n({reducers:{},rootReducers:{},enhancers:[],middlewares:[]},e.redux,{devtoolOptions:n({name:u},null!=(t=null==(o=e.redux)?void 0:o.devtoolOptions)?t:{})})};return c.plugins.forEach((function(e){e.config&&(c.models=d(c.models,e.config.models),e.config.redux&&(c.redux.initialState=d(c.redux.initialState,e.config.redux.initialState),c.redux.reducers=d(c.redux.reducers,e.config.redux.reducers),c.redux.rootReducers=d(c.redux.rootReducers,e.config.redux.reducers),c.redux.enhancers=[].concat(c.redux.enhancers,e.config.redux.enhancers||[]),c.redux.middlewares=[].concat(c.redux.middlewares,e.config.redux.middlewares||[]),c.redux.combineReducers=c.redux.combineReducers||e.config.redux.combineReducers,c.redux.createStore=c.redux.createStore||e.config.redux.createStore))})),c}(e||{});return function(e){var u=function(e){return{models:(r=e.models,Object.keys(r).map((function(e){return n({name:e,reducers:{}},r[e])}))),reduxConfig:e.redux,forEachPlugin:function(r,n){e.plugins.forEach((function(e){e[r]&&n(e[r])}))},effects:{}};var r}(e);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(e){e.models.forEach((function(r){return t(e,r)}));var n,u=o(e),c=r.applyMiddleware.apply(r,e.reduxConfig.middlewares),i=(n=e.reduxConfig.devtoolOptions,void 0===n&&(n={}),!n.disabled&&"object"==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__(n):r.compose).apply(void 0,e.reduxConfig.enhancers.concat([c])),d=e.reduxConfig.initialState;return(e.reduxConfig.createStore||r.createStore)(u,void 0===d?{}:d,i)}(u),a=n({},d,{name:e.name,addModel:function(e){t(u,e),c(a,u,e),d.replaceReducer(o(u)),d.dispatch({type:"@@redux/REPLACE"})}});return i=a,e.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])}}))})),u.models.forEach((function(e){return c(a,u,e)})),u.forEachPlugin("onStoreCreated",(function(e){a=e(a,u)||a})),a}(u)},f=function(){return function(e){return e}},s={init:a,createModel:f};exports.createModel=f,exports.default=s,exports.init=a; | ||
"use strict";function e(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,t.get?t:{enumerable:!0,get:function(){return e[n]}})}})),r.default=e,r}Object.defineProperty(exports,"__esModule",{value:!0});var r=e(require("redux"));function n(){return n=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},n.apply(this,arguments)}function t(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,u=o?function(e,n){return void 0===e&&(e=r.state),t(o(e,n),n)}:t;e.forEachPlugin("onReducer",(function(n){u=n(u,r.name,e)||u})),e.reduxConfig.reducers[r.name]=u}function o(e){var n,t,o=e.reduxConfig.rootReducers,u=(t=(n=e.reduxConfig).combineReducers||r.combineReducers,Object.keys(n.reducers).length?t(n.reducers):function(e){return e}),c=u;return o&&Object.keys(o).length&&(c=function(e,r){var n=o[r.type];return u(n?n(e,r):e,r)}),e.forEachPlugin("onRootReducer",(function(r){c=r(c,e)||c})),c}var u=function(e,r,n,t){return Object.assign((function(t,o){var u={type:r+"/"+n};return void 0!==t&&(u.payload=t),void 0!==o&&(u.meta=o),e.dispatch(u)}),{isEffect:t})};function c(e,r){e.dispatch[""+r.name]={},function(e,r){var n=e.dispatch[r.name];Object.keys(r.reducers).forEach((function(t){n[t]=u(e,r.name,t,!1)}))}(e,r)}function i(e,r,n){!function(e,r,n){var t=e.dispatch[n.name],o={};n.effects&&(o="function"==typeof n.effects?n.effects(e.dispatch):n.effects),Object.keys(o).forEach((function(c){r.effects[n.name+"/"+c]=o[c].bind(t),t[c]=u(e,n.name,c,!0)}))}(e,r,n),r.forEachPlugin("onModel",(function(r){r(n,e)}))}var d=0;function a(e,r){return r?n({},r,e):e}var f=function(e){var u=function(e){var r,t,o,u=null!=(r=e.name)?r:"Rematch Store "+d;d+=1;var c={name:u,models:e.models||{},plugins:e.plugins||[],redux:n({reducers:{},rootReducers:{},enhancers:[],middlewares:[]},e.redux,{devtoolOptions:n({name:u},null!=(t=null==(o=e.redux)?void 0:o.devtoolOptions)?t:{})})};return c.plugins.forEach((function(e){e.config&&(c.models=a(c.models,e.config.models),e.config.redux&&(c.redux.initialState=a(c.redux.initialState,e.config.redux.initialState),c.redux.reducers=a(c.redux.reducers,e.config.redux.reducers),c.redux.rootReducers=a(c.redux.rootReducers,e.config.redux.reducers),c.redux.enhancers=[].concat(c.redux.enhancers,e.config.redux.enhancers||[]),c.redux.middlewares=[].concat(c.redux.middlewares,e.config.redux.middlewares||[]),c.redux.combineReducers=c.redux.combineReducers||e.config.redux.combineReducers,c.redux.createStore=c.redux.createStore||e.config.redux.createStore))})),c}(e||{});return function(e){var u=function(e){return{models:(r=e.models,Object.keys(r).map((function(e){return n({name:e,reducers:{}},r[e])}))),reduxConfig:e.redux,forEachPlugin:function(r,n){e.plugins.forEach((function(e){e[r]&&n(e[r])}))},effects:{}};var r}(e);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 d,a=function(e){var n;e.models.forEach((function(r){return t(e,r)}));var u,c=o(e),i=r.applyMiddleware.apply(r,e.reduxConfig.middlewares),d=e.reduxConfig.devtoolComposer?(n=e.reduxConfig).devtoolComposer.apply(n,e.reduxConfig.enhancers.concat([i])):(u=e.reduxConfig.devtoolOptions,void 0===u&&(u={}),!u.disabled&&"object"==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__(u):r.compose).apply(void 0,e.reduxConfig.enhancers.concat([i])),a=e.reduxConfig.initialState;return(e.reduxConfig.createStore||r.createStore)(c,void 0===a?{}:a,d)}(u),f=n({},a,{name:e.name,addModel:function(e){t(u,e),c(f,e),i(f,u,e),a.replaceReducer(o(u)),a.dispatch({type:"@@redux/REPLACE"})}});return d=f,e.plugins.forEach((function(e){e.exposed&&Object.keys(e.exposed).forEach((function(r){if(e.exposed){var n=e.exposed[r];d[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,[d].concat(r))}:Object.create(e.exposed[r])}}))})),u.models.forEach((function(e){return c(f,e)})),u.models.forEach((function(e){return i(f,u,e)})),u.forEachPlugin("onStoreCreated",(function(e){f=e(f,u)||f})),f}(u)},s=function(){return function(e){return e}},l={init:f,createModel:s};exports.createModel=s,exports.default=l,exports.init=f; | ||
//# sourceMappingURL=core.cjs.production.min.js.map |
@@ -22,2 +22,4 @@ import * as Redux from 'redux'; | ||
function createReduxStore(bag) { | ||
var _bag$reduxConfig; | ||
bag.models.forEach(function (model) { | ||
@@ -28,3 +30,3 @@ return createModelReducer(bag, model); | ||
var middlewares = Redux.applyMiddleware.apply(Redux, bag.reduxConfig.middlewares); | ||
var enhancers = composeEnhancersWithDevtools(bag.reduxConfig.devtoolOptions).apply(void 0, bag.reduxConfig.enhancers.concat([middlewares])); | ||
var enhancers = bag.reduxConfig.devtoolComposer ? (_bag$reduxConfig = bag.reduxConfig).devtoolComposer.apply(_bag$reduxConfig, bag.reduxConfig.enhancers.concat([middlewares])) : composeEnhancersWithDevtools(bag.reduxConfig.devtoolOptions).apply(void 0, bag.reduxConfig.enhancers.concat([middlewares])); | ||
var createStore = bag.reduxConfig.createStore || Redux.createStore; | ||
@@ -187,3 +189,3 @@ var bagInitialState = bag.reduxConfig.initialState; | ||
var createDispatcher = function createDispatcher(rematch, bag, model) { | ||
var createReducerDispatcher = function createReducerDispatcher(rematch, model) { | ||
var modelDispatcher = rematch.dispatch[model.name]; | ||
@@ -195,2 +197,5 @@ var modelReducersKeys = Object.keys(model.reducers); | ||
}); | ||
}; | ||
var createEffectDispatcher = function createEffectDispatcher(rematch, bag, model) { | ||
var modelDispatcher = rematch.dispatch[model.name]; | ||
var effects = {}; | ||
@@ -253,3 +258,4 @@ | ||
createModelReducer(bag, model); | ||
prepareModel(rematchStore, bag, model); | ||
prepareModel(rematchStore, model); | ||
enhanceModel(rematchStore, bag, model); | ||
reduxStore.replaceReducer(createRootReducer(bag)); | ||
@@ -264,4 +270,7 @@ reduxStore.dispatch({ | ||
bag.models.forEach(function (model) { | ||
return prepareModel(rematchStore, bag, model); | ||
return prepareModel(rematchStore, model); | ||
}); | ||
bag.models.forEach(function (model) { | ||
return enhanceModel(rematchStore, bag, model); | ||
}); | ||
bag.forEachPlugin('onStoreCreated', function (onStoreCreated) { | ||
@@ -288,6 +297,10 @@ rematchStore = onStoreCreated(rematchStore, bag) || rematchStore; | ||
function prepareModel(rematchStore, bag, model) { | ||
function prepareModel(rematchStore, model) { | ||
var modelDispatcher = {}; | ||
rematchStore.dispatch["" + model.name] = modelDispatcher; | ||
createDispatcher(rematchStore, bag, model); | ||
createReducerDispatcher(rematchStore, model); | ||
} | ||
function enhanceModel(rematchStore, bag, model) { | ||
createEffectDispatcher(rematchStore, bag, model); | ||
bag.forEachPlugin('onModel', function (onModel) { | ||
@@ -294,0 +307,0 @@ onModel(model, rematchStore); |
@@ -46,2 +46,4 @@ (function (global, factory) { | ||
function createReduxStore(bag) { | ||
var _bag$reduxConfig; | ||
bag.models.forEach(function (model) { | ||
@@ -52,3 +54,3 @@ return createModelReducer(bag, model); | ||
var middlewares = Redux__namespace.applyMiddleware.apply(Redux__namespace, bag.reduxConfig.middlewares); | ||
var enhancers = composeEnhancersWithDevtools(bag.reduxConfig.devtoolOptions).apply(void 0, bag.reduxConfig.enhancers.concat([middlewares])); | ||
var enhancers = bag.reduxConfig.devtoolComposer ? (_bag$reduxConfig = bag.reduxConfig).devtoolComposer.apply(_bag$reduxConfig, bag.reduxConfig.enhancers.concat([middlewares])) : composeEnhancersWithDevtools(bag.reduxConfig.devtoolOptions).apply(void 0, bag.reduxConfig.enhancers.concat([middlewares])); | ||
var createStore = bag.reduxConfig.createStore || Redux__namespace.createStore; | ||
@@ -211,3 +213,3 @@ var bagInitialState = bag.reduxConfig.initialState; | ||
var createDispatcher = function createDispatcher(rematch, bag, model) { | ||
var createReducerDispatcher = function createReducerDispatcher(rematch, model) { | ||
var modelDispatcher = rematch.dispatch[model.name]; | ||
@@ -219,2 +221,5 @@ var modelReducersKeys = Object.keys(model.reducers); | ||
}); | ||
}; | ||
var createEffectDispatcher = function createEffectDispatcher(rematch, bag, model) { | ||
var modelDispatcher = rematch.dispatch[model.name]; | ||
var effects = {}; | ||
@@ -277,3 +282,4 @@ | ||
createModelReducer(bag, model); | ||
prepareModel(rematchStore, bag, model); | ||
prepareModel(rematchStore, model); | ||
enhanceModel(rematchStore, bag, model); | ||
reduxStore.replaceReducer(createRootReducer(bag)); | ||
@@ -288,4 +294,7 @@ reduxStore.dispatch({ | ||
bag.models.forEach(function (model) { | ||
return prepareModel(rematchStore, bag, model); | ||
return prepareModel(rematchStore, model); | ||
}); | ||
bag.models.forEach(function (model) { | ||
return enhanceModel(rematchStore, bag, model); | ||
}); | ||
bag.forEachPlugin('onStoreCreated', function (onStoreCreated) { | ||
@@ -312,6 +321,10 @@ rematchStore = onStoreCreated(rematchStore, bag) || rematchStore; | ||
function prepareModel(rematchStore, bag, model) { | ||
function prepareModel(rematchStore, model) { | ||
var modelDispatcher = {}; | ||
rematchStore.dispatch["" + model.name] = modelDispatcher; | ||
createDispatcher(rematchStore, bag, model); | ||
createReducerDispatcher(rematchStore, model); | ||
} | ||
function enhanceModel(rematchStore, bag, model) { | ||
createEffectDispatcher(rematchStore, bag, model); | ||
bag.forEachPlugin('onModel', function (onModel) { | ||
@@ -318,0 +331,0 @@ onModel(model, rematchStore); |
@@ -1,2 +0,2 @@ | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("redux")):"function"==typeof define&&define.amd?define(["exports","redux"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self)["@rematch/core"]={},e.Redux)}(this,(function(e,n){"use strict";function r(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,t.get?t:{enumerable:!0,get:function(){return e[r]}})}})),n.default=e,n}var t=r(n);function o(){return o=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},o.apply(this,arguments)}function u(e,n){var r={};Object.keys(n.reducers).forEach((function(e){var t=function(e){return e.indexOf("/")>-1}(e)?e:n.name+"/"+e;r[t]=n.reducers[e]}));var t=function(e,t){return void 0===e&&(e=n.state),t.type in r?r[t.type](e,t.payload,t.meta):e},o=n.baseReducer,u=o?function(e,r){return void 0===e&&(e=n.state),t(o(e,r),r)}:t;e.forEachPlugin("onReducer",(function(r){u=r(u,n.name,e)||u})),e.reduxConfig.reducers[n.name]=u}function c(e){var n,r,o=e.reduxConfig.rootReducers,u=(r=(n=e.reduxConfig).combineReducers||t.combineReducers,Object.keys(n.reducers).length?r(n.reducers):function(e){return e}),c=u;return o&&Object.keys(o).length&&(c=function(e,n){var r=o[n.type];return u(r?r(e,n):e,n)}),e.forEachPlugin("onRootReducer",(function(n){c=n(c,e)||c})),c}var i=function(e,n,r,t){return Object.assign((function(t,o){var u={type:n+"/"+r};return void 0!==t&&(u.payload=t),void 0!==o&&(u.meta=o),e.dispatch(u)}),{isEffect:t})};function d(e,n,r){e.dispatch[""+r.name]={},function(e,n,r){var t=e.dispatch[r.name];Object.keys(r.reducers).forEach((function(n){t[n]=i(e,r.name,n,!1)}));var o={};r.effects&&(o="function"==typeof r.effects?r.effects(e.dispatch):r.effects),Object.keys(o).forEach((function(u){n.effects[r.name+"/"+u]=o[u].bind(t),t[u]=i(e,r.name,u,!0)}))}(e,n,r),n.forEachPlugin("onModel",(function(n){n(r,e)}))}var a=0;function f(e,n){return n?o({},n,e):e}var s=function(e){var n=function(e){var n,r,t,u=null!=(n=e.name)?n:"Rematch Store "+a;a+=1;var c={name:u,models:e.models||{},plugins:e.plugins||[],redux:o({reducers:{},rootReducers:{},enhancers:[],middlewares:[]},e.redux,{devtoolOptions:o({name:u},null!=(r=null==(t=e.redux)?void 0:t.devtoolOptions)?r:{})})};return c.plugins.forEach((function(e){e.config&&(c.models=f(c.models,e.config.models),e.config.redux&&(c.redux.initialState=f(c.redux.initialState,e.config.redux.initialState),c.redux.reducers=f(c.redux.reducers,e.config.redux.reducers),c.redux.rootReducers=f(c.redux.rootReducers,e.config.redux.reducers),c.redux.enhancers=[].concat(c.redux.enhancers,e.config.redux.enhancers||[]),c.redux.middlewares=[].concat(c.redux.middlewares,e.config.redux.middlewares||[]),c.redux.combineReducers=c.redux.combineReducers||e.config.redux.combineReducers,c.redux.createStore=c.redux.createStore||e.config.redux.createStore))})),c}(e||{});return function(e){var n=function(e){return{models:(n=e.models,Object.keys(n).map((function(e){return o({name:e,reducers:{}},n[e])}))),reduxConfig:e.redux,forEachPlugin:function(n,r){e.plugins.forEach((function(e){e[n]&&r(e[n])}))},effects:{}};var n}(e);n.reduxConfig.middlewares.push(function(e){return function(n){return function(r){return function(t){return t.type in e.effects?(r(t),e.effects[t.type](t.payload,n.getState(),t.meta)):r(t)}}}}(n)),n.forEachPlugin("createMiddleware",(function(e){n.reduxConfig.middlewares.push(e(n))}));var r,i=function(e){e.models.forEach((function(n){return u(e,n)}));var n,r=c(e),o=t.applyMiddleware.apply(t,e.reduxConfig.middlewares),i=(n=e.reduxConfig.devtoolOptions,void 0===n&&(n={}),!n.disabled&&"object"==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__(n):t.compose).apply(void 0,e.reduxConfig.enhancers.concat([o])),d=e.reduxConfig.initialState;return(e.reduxConfig.createStore||t.createStore)(r,void 0===d?{}:d,i)}(n),a=o({},i,{name:e.name,addModel:function(e){u(n,e),d(a,n,e),i.replaceReducer(c(n)),i.dispatch({type:"@@redux/REPLACE"})}});return r=a,e.plugins.forEach((function(e){e.exposed&&Object.keys(e.exposed).forEach((function(n){if(e.exposed){var t=e.exposed[n];r[n]="function"==typeof t?function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];return t.apply(void 0,[r].concat(n))}:Object.create(e.exposed[n])}}))})),n.models.forEach((function(e){return d(a,n,e)})),n.forEachPlugin("onStoreCreated",(function(e){a=e(a,n)||a})),a}(n)},l=function(){return function(e){return e}},p={init:s,createModel:l};e.createModel=l,e.default=p,e.init=s,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("redux")):"function"==typeof define&&define.amd?define(["exports","redux"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self)["@rematch/core"]={},e.Redux)}(this,(function(e,n){"use strict";function r(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,t.get?t:{enumerable:!0,get:function(){return e[r]}})}})),n.default=e,n}var t=r(n);function o(){return o=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},o.apply(this,arguments)}function u(e,n){var r={};Object.keys(n.reducers).forEach((function(e){var t=function(e){return e.indexOf("/")>-1}(e)?e:n.name+"/"+e;r[t]=n.reducers[e]}));var t=function(e,t){return void 0===e&&(e=n.state),t.type in r?r[t.type](e,t.payload,t.meta):e},o=n.baseReducer,u=o?function(e,r){return void 0===e&&(e=n.state),t(o(e,r),r)}:t;e.forEachPlugin("onReducer",(function(r){u=r(u,n.name,e)||u})),e.reduxConfig.reducers[n.name]=u}function c(e){var n,r,o=e.reduxConfig.rootReducers,u=(r=(n=e.reduxConfig).combineReducers||t.combineReducers,Object.keys(n.reducers).length?r(n.reducers):function(e){return e}),c=u;return o&&Object.keys(o).length&&(c=function(e,n){var r=o[n.type];return u(r?r(e,n):e,n)}),e.forEachPlugin("onRootReducer",(function(n){c=n(c,e)||c})),c}var i=function(e,n,r,t){return Object.assign((function(t,o){var u={type:n+"/"+r};return void 0!==t&&(u.payload=t),void 0!==o&&(u.meta=o),e.dispatch(u)}),{isEffect:t})};function d(e,n){e.dispatch[""+n.name]={},function(e,n){var r=e.dispatch[n.name];Object.keys(n.reducers).forEach((function(t){r[t]=i(e,n.name,t,!1)}))}(e,n)}function a(e,n,r){!function(e,n,r){var t=e.dispatch[r.name],o={};r.effects&&(o="function"==typeof r.effects?r.effects(e.dispatch):r.effects),Object.keys(o).forEach((function(u){n.effects[r.name+"/"+u]=o[u].bind(t),t[u]=i(e,r.name,u,!0)}))}(e,n,r),n.forEachPlugin("onModel",(function(n){n(r,e)}))}var f=0;function s(e,n){return n?o({},n,e):e}var l=function(e){var n=function(e){var n,r,t,u=null!=(n=e.name)?n:"Rematch Store "+f;f+=1;var c={name:u,models:e.models||{},plugins:e.plugins||[],redux:o({reducers:{},rootReducers:{},enhancers:[],middlewares:[]},e.redux,{devtoolOptions:o({name:u},null!=(r=null==(t=e.redux)?void 0:t.devtoolOptions)?r:{})})};return c.plugins.forEach((function(e){e.config&&(c.models=s(c.models,e.config.models),e.config.redux&&(c.redux.initialState=s(c.redux.initialState,e.config.redux.initialState),c.redux.reducers=s(c.redux.reducers,e.config.redux.reducers),c.redux.rootReducers=s(c.redux.rootReducers,e.config.redux.reducers),c.redux.enhancers=[].concat(c.redux.enhancers,e.config.redux.enhancers||[]),c.redux.middlewares=[].concat(c.redux.middlewares,e.config.redux.middlewares||[]),c.redux.combineReducers=c.redux.combineReducers||e.config.redux.combineReducers,c.redux.createStore=c.redux.createStore||e.config.redux.createStore))})),c}(e||{});return function(e){var n=function(e){return{models:(n=e.models,Object.keys(n).map((function(e){return o({name:e,reducers:{}},n[e])}))),reduxConfig:e.redux,forEachPlugin:function(n,r){e.plugins.forEach((function(e){e[n]&&r(e[n])}))},effects:{}};var n}(e);n.reduxConfig.middlewares.push(function(e){return function(n){return function(r){return function(t){return t.type in e.effects?(r(t),e.effects[t.type](t.payload,n.getState(),t.meta)):r(t)}}}}(n)),n.forEachPlugin("createMiddleware",(function(e){n.reduxConfig.middlewares.push(e(n))}));var r,i=function(e){var n;e.models.forEach((function(n){return u(e,n)}));var r,o=c(e),i=t.applyMiddleware.apply(t,e.reduxConfig.middlewares),d=e.reduxConfig.devtoolComposer?(n=e.reduxConfig).devtoolComposer.apply(n,e.reduxConfig.enhancers.concat([i])):(r=e.reduxConfig.devtoolOptions,void 0===r&&(r={}),!r.disabled&&"object"==typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__(r):t.compose).apply(void 0,e.reduxConfig.enhancers.concat([i])),a=e.reduxConfig.initialState;return(e.reduxConfig.createStore||t.createStore)(o,void 0===a?{}:a,d)}(n),f=o({},i,{name:e.name,addModel:function(e){u(n,e),d(f,e),a(f,n,e),i.replaceReducer(c(n)),i.dispatch({type:"@@redux/REPLACE"})}});return r=f,e.plugins.forEach((function(e){e.exposed&&Object.keys(e.exposed).forEach((function(n){if(e.exposed){var t=e.exposed[n];r[n]="function"==typeof t?function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];return t.apply(void 0,[r].concat(n))}:Object.create(e.exposed[n])}}))})),n.models.forEach((function(e){return d(f,e)})),n.models.forEach((function(e){return a(f,n,e)})),n.forEachPlugin("onStoreCreated",(function(e){f=e(f,n)||f})),f}(n)},p=function(){return function(e){return e}},x={init:l,createModel:p};e.createModel=p,e.default=x,e.init=l,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=core.umd.production.min.js.map |
import { Models, NamedModel, RematchBag, RematchStore } from './types'; | ||
declare const createDispatcher: <TModels extends Models<TModels>, TExtraModels extends Models<TModels>, TModel extends NamedModel<TModels, any, any>>(rematch: RematchStore<TModels, TExtraModels>, bag: RematchBag<TModels, TExtraModels>, model: TModel) => void; | ||
export default createDispatcher; | ||
export declare const createReducerDispatcher: <TModels extends Models<TModels>, TExtraModels extends Models<TModels>, TModel extends NamedModel<TModels, any, any>>(rematch: RematchStore<TModels, TExtraModels>, model: TModel) => void; | ||
export declare const createEffectDispatcher: <TModels extends Models<TModels>, TExtraModels extends Models<TModels>, TModel extends NamedModel<TModels, any, any>>(rematch: RematchStore<TModels, TExtraModels>, bag: RematchBag<TModels, TExtraModels>, model: TModel) => void; | ||
//# sourceMappingURL=dispatcher.d.ts.map |
@@ -86,3 +86,3 @@ import { Action as ReduxAction, Reducer as ReduxReducer, Dispatch as ReduxDispatch, ReducersMapObject, Middleware, StoreEnhancer, StoreCreator, Store as ReduxStore, ActionCreator } from 'redux'; | ||
} | ||
export interface InitConfigRedux<TRootState = any> { | ||
export interface InitConfigRedux<TRootState = any, DevtoolComposerGeneric = any> { | ||
initialState?: TRootState; | ||
@@ -96,2 +96,3 @@ reducers?: ModelReducers<TRootState>; | ||
devtoolOptions?: DevtoolOptions; | ||
devtoolComposer?: DevtoolComposerGeneric; | ||
} | ||
@@ -98,0 +99,0 @@ export interface ConfigRedux<TRootState = any> extends InitConfigRedux<TRootState> { |
{ | ||
"name": "@rematch/core", | ||
"version": "2.1.1", | ||
"version": "2.2.0", | ||
"description": "A Redux Framework", | ||
@@ -26,3 +26,3 @@ "homepage": "https://rematchjs.org", | ||
"src", | ||
"README.md" | ||
"../../README.md" | ||
], | ||
@@ -58,3 +58,3 @@ "engines": { | ||
}, | ||
"gitHead": "1bba6cf12529d18819a03a9ab298412606364fbf" | ||
"gitHead": "af5f67a9ae4b6c2e6ec3a4c6055b63e9eaebd583" | ||
} |
@@ -50,6 +50,5 @@ import { | ||
* Creates a dispatcher object for a model - it contains a mapping from all | ||
* reducers and effects *names* to functions which dispatch their corresponding | ||
* actions. | ||
* reducers to functions which dispatch their corresponding actions. | ||
*/ | ||
const createDispatcher = < | ||
export const createReducerDispatcher = < | ||
TModels extends Models<TModels>, | ||
@@ -60,3 +59,2 @@ TExtraModels extends Models<TModels>, | ||
rematch: RematchStore<TModels, TExtraModels>, | ||
bag: RematchBag<TModels, TExtraModels>, | ||
model: TModel | ||
@@ -78,3 +76,18 @@ ): void => { | ||
}) | ||
} | ||
/** | ||
* Creates effects dispatcher for a model - it contains a mapping from all | ||
* effects *names* to functions which dispatch their corresponding actions. | ||
*/ | ||
export const createEffectDispatcher = < | ||
TModels extends Models<TModels>, | ||
TExtraModels extends Models<TModels>, | ||
TModel extends NamedModel<TModels> | ||
>( | ||
rematch: RematchStore<TModels, TExtraModels>, | ||
bag: RematchBag<TModels, TExtraModels>, | ||
model: TModel | ||
): void => { | ||
const modelDispatcher = rematch.dispatch[model.name] | ||
let effects: ModelEffects<TModels> = {} | ||
@@ -106,3 +119,1 @@ | ||
} | ||
export default createDispatcher |
@@ -28,5 +28,8 @@ import * as Redux from 'redux' | ||
const middlewares = Redux.applyMiddleware(...bag.reduxConfig.middlewares) | ||
const enhancers = composeEnhancersWithDevtools( | ||
bag.reduxConfig.devtoolOptions | ||
)(...bag.reduxConfig.enhancers, middlewares) | ||
const enhancers = bag.reduxConfig.devtoolComposer | ||
? bag.reduxConfig.devtoolComposer(...bag.reduxConfig.enhancers, middlewares) | ||
: composeEnhancersWithDevtools(bag.reduxConfig.devtoolOptions)( | ||
...bag.reduxConfig.enhancers, | ||
middlewares | ||
) | ||
@@ -33,0 +36,0 @@ const createStore = bag.reduxConfig.createStore || Redux.createStore |
@@ -19,3 +19,3 @@ import { Middleware } from 'redux' | ||
} from './reduxStore' | ||
import createDispatcher from './dispatcher' | ||
import { createReducerDispatcher, createEffectDispatcher } from './dispatcher' | ||
import { validateModel } from './validate' | ||
@@ -47,3 +47,4 @@ import createRematchBag from './bag' | ||
createModelReducer(bag, model) | ||
prepareModel(rematchStore, bag, model) | ||
prepareModel(rematchStore, model) | ||
enhanceModel(rematchStore, bag, model) | ||
reduxStore.replaceReducer(createRootReducer(bag)) | ||
@@ -56,4 +57,11 @@ reduxStore.dispatch({ type: '@@redux/REPLACE' }) | ||
// generate dispatch[modelName][actionName] for all reducers and effects | ||
bag.models.forEach((model) => prepareModel(rematchStore, bag, model)) | ||
/** | ||
* generate dispatch[modelName][actionName] for all reducers and effects | ||
* | ||
* Note: To have circular models accessible in effects method with destructing, | ||
* ensure that model generation and effects generation execute in | ||
* different steps. | ||
*/ | ||
bag.models.forEach((model) => prepareModel(rematchStore, model)) | ||
bag.models.forEach((model) => enhanceModel(rematchStore, bag, model)) | ||
@@ -94,7 +102,3 @@ bag.forEachPlugin('onStoreCreated', (onStoreCreated) => { | ||
TModel extends NamedModel<TModels> | ||
>( | ||
rematchStore: RematchStore<TModels, TExtraModels>, | ||
bag: RematchBag<TModels, TExtraModels>, | ||
model: TModel | ||
): void { | ||
>(rematchStore: RematchStore<TModels, TExtraModels>, model: TModel): void { | ||
const modelDispatcher = {} as ModelDispatcher<TModel, TModels> | ||
@@ -106,4 +110,16 @@ | ||
createDispatcher(rematchStore, bag, model) | ||
createReducerDispatcher(rematchStore, model) | ||
} | ||
function enhanceModel< | ||
TModels extends Models<TModels>, | ||
TExtraModels extends Models<TModels>, | ||
TModel extends NamedModel<TModels> | ||
>( | ||
rematchStore: RematchStore<TModels, TExtraModels>, | ||
bag: RematchBag<TModels, TExtraModels>, | ||
model: TModel | ||
): void { | ||
createEffectDispatcher(rematchStore, bag, model) | ||
bag.forEachPlugin('onModel', (onModel) => { | ||
@@ -110,0 +126,0 @@ onModel(model, rematchStore) |
@@ -271,3 +271,6 @@ /* | ||
*/ | ||
export interface InitConfigRedux<TRootState = any> { | ||
export interface InitConfigRedux< | ||
TRootState = any, | ||
DevtoolComposerGeneric = any | ||
> { | ||
initialState?: TRootState | ||
@@ -285,2 +288,3 @@ reducers?: ModelReducers<TRootState> | ||
devtoolOptions?: DevtoolOptions | ||
devtoolComposer?: DevtoolComposerGeneric | ||
} | ||
@@ -287,0 +291,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
311787
2867
37
1
0