@modern-js-reduck/store
Advanced tools
Comparing version 1.1.9 to 1.1.10-alpha.0
@@ -0,1 +1,3 @@ | ||
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } | ||
import { applyMiddleware, compose, createStore as createReduxStore } from 'redux'; | ||
@@ -18,3 +20,3 @@ import { createContext } from "./context"; | ||
} = finalProps; | ||
Object.assign(store, createReduxStore(state => state, initialState, compose(...[middlewares ? applyMiddleware(...middlewares) : undefined, ...(enhancers || [])].filter(Boolean)))); | ||
Object.assign(store, createReduxStore(state => state, initialState, compose(...[mergeInitialState(), middlewares ? applyMiddleware(...middlewares) : undefined, ...(enhancers || [])].filter(Boolean)))); | ||
store.use = context.apis.useModel; | ||
@@ -30,3 +32,35 @@ store.unmount = context.apis.unmountModel; | ||
}; | ||
/** | ||
* Merge prev global state when mounting new models | ||
* to avoid to miss the initial state of the mounting models | ||
*/ | ||
function mergeInitialState() { | ||
return createStore => (reducer, initialState) => { | ||
const liftReducer = r => { | ||
if (typeof r !== 'function') { | ||
throw new Error('Expected the reducer to be a function.'); | ||
} | ||
return (state = initialState, action) => { | ||
const nextState = r(state, action); | ||
if (/^@@redux\/REPLACE/.test(action.type)) { | ||
return _extends({}, state, nextState); | ||
} else { | ||
return nextState; | ||
} | ||
}; | ||
}; | ||
const store = createStore(liftReducer(reducer)); | ||
return _extends({}, store, { | ||
replaceReducer: reducer => { | ||
return store.replaceReducer(liftReducer(reducer)); | ||
} | ||
}); | ||
}; | ||
} | ||
export default createStore; |
@@ -12,2 +12,8 @@ "use strict"; | ||
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } | ||
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
const createStore = (props = {}) => { | ||
@@ -27,3 +33,3 @@ var _props$plugins; | ||
} = finalProps; | ||
Object.assign(store, (0, _redux.createStore)(state => state, initialState, (0, _redux.compose)(...[middlewares ? (0, _redux.applyMiddleware)(...middlewares) : undefined, ...(enhancers || [])].filter(Boolean)))); | ||
Object.assign(store, (0, _redux.createStore)(state => state, initialState, (0, _redux.compose)(...[mergeInitialState(), middlewares ? (0, _redux.applyMiddleware)(...middlewares) : undefined, ...(enhancers || [])].filter(Boolean)))); | ||
store.use = context.apis.useModel; | ||
@@ -39,4 +45,36 @@ store.unmount = context.apis.unmountModel; | ||
}; | ||
/** | ||
* Merge prev global state when mounting new models | ||
* to avoid to miss the initial state of the mounting models | ||
*/ | ||
function mergeInitialState() { | ||
return createStore => (reducer, initialState) => { | ||
const liftReducer = r => { | ||
if (typeof r !== 'function') { | ||
throw new Error('Expected the reducer to be a function.'); | ||
} | ||
return (state = initialState, action) => { | ||
const nextState = r(state, action); | ||
if (/^@@redux\/REPLACE/.test(action.type)) { | ||
return _objectSpread(_objectSpread({}, state), nextState); | ||
} else { | ||
return nextState; | ||
} | ||
}; | ||
}; | ||
const store = createStore(liftReducer(reducer)); | ||
return _objectSpread(_objectSpread({}, store), {}, { | ||
replaceReducer: reducer => { | ||
return store.replaceReducer(liftReducer(reducer)); | ||
} | ||
}); | ||
}; | ||
} | ||
var _default = createStore; | ||
exports.default = _default; |
@@ -0,1 +1,2 @@ | ||
import _extends from "@babel/runtime/helpers/esm/extends"; | ||
import { applyMiddleware, compose, createStore as createReduxStore } from 'redux'; | ||
@@ -18,3 +19,3 @@ import { createContext } from "./context"; | ||
} = finalProps; | ||
Object.assign(store, createReduxStore(state => state, initialState, compose(...[middlewares ? applyMiddleware(...middlewares) : undefined, ...(enhancers || [])].filter(Boolean)))); | ||
Object.assign(store, createReduxStore(state => state, initialState, compose(...[mergeInitialState(), middlewares ? applyMiddleware(...middlewares) : undefined, ...(enhancers || [])].filter(Boolean)))); | ||
store.use = context.apis.useModel; | ||
@@ -30,3 +31,35 @@ store.unmount = context.apis.unmountModel; | ||
}; | ||
/** | ||
* Merge prev global state when mounting new models | ||
* to avoid to miss the initial state of the mounting models | ||
*/ | ||
function mergeInitialState() { | ||
return createStore => (reducer, initialState) => { | ||
const liftReducer = r => { | ||
if (typeof r !== 'function') { | ||
throw new Error('Expected the reducer to be a function.'); | ||
} | ||
return (state = initialState, action) => { | ||
const nextState = r(state, action); | ||
if (/^@@redux\/REPLACE/.test(action.type)) { | ||
return _extends({}, state, nextState); | ||
} else { | ||
return nextState; | ||
} | ||
}; | ||
}; | ||
const store = createStore(liftReducer(reducer)); | ||
return _extends({}, store, { | ||
replaceReducer: reducer => { | ||
return store.replaceReducer(liftReducer(reducer)); | ||
} | ||
}); | ||
}; | ||
} | ||
export default createStore; |
{ | ||
"name": "@modern-js-reduck/store", | ||
"version": "1.1.9", | ||
"version": "1.1.10-alpha.0", | ||
"files": [ | ||
@@ -5,0 +5,0 @@ "dist" |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
175930
5326
1