diff --git a/index.d.ts b/index.d.ts index eef58b9..efe95ff 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,4 +1,4 @@ -import { Action, AnyAction, Reducer } from 'redux'; +import { Action, AnyAction, Reducer, ReducersMapObject } from 'redux'; declare const REMEMBER_REHYDRATED = "@@REMEMBER_REHYDRATED"; declare const REMEMBER_PERSISTED = "@@REMEMBER_PERSISTED"; type SerializeFunction = (data: any, key: string) => any; @@ -14,6 +14,6 @@ type Options = { persistThrottle: number; persistWholeStore: boolean; }; -declare const rememberReducer: = AnyAction>(reducers: Reducer) => Reducer; +declare const rememberReducer: = AnyAction>(reducer: Reducer | ReducersMapObject) => Reducer; declare const rememberEnhancer: (driver: Driver, rememberedKeys: string[], { prefix, serialize, unserialize, persistThrottle, persistWholeStore }?: Partial) => any; export { rememberReducer, rememberEnhancer, REMEMBER_REHYDRATED, REMEMBER_PERSISTED }; diff --git a/package-lock.json b/package-lock.json index 17a90b5..9e38ddd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "redux-remember", - "version": "3.1.4", + "version": "3.1.5", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index fe618fd..42d4fbd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "redux-remember", - "version": "3.1.4", + "version": "3.1.5", "description": "Saves and loads your redux state from a key-value store of your choice", "main": "lib/index.js", "module": "es/index.js", diff --git a/rollup.config.mjs b/rollup.config.mjs index ddeb49e..32009be 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -12,7 +12,10 @@ const config = { sourcemap: true, format: 'umd', esModule: false, - strict: false + strict: false, + globals: { + 'redux': 'Redux' + } }, external: ['redux'], plugins: [ diff --git a/src/index.ts b/src/index.ts index 9381099..6888106 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,11 +8,13 @@ import { StoreEnhancer, Reducer, Store, - StoreCreator + StoreCreator, + ReducersMapObject, + combineReducers } from 'redux'; const rememberReducer = ( - reducers: Reducer + reducer: Reducer | ReducersMapObject ): Reducer => { const data: any = { state: {} @@ -26,9 +28,13 @@ const rememberReducer = ( data.state = { ...state }; } + const rootReducer = typeof reducer === 'function' + ? reducer + : combineReducers(reducer) as Reducer; + switch (action.type) { case REMEMBER_REHYDRATED: - data.state = reducers( + data.state = rootReducer( { ...data.state, ...(action.payload || {}) @@ -39,7 +45,7 @@ const rememberReducer = ( return data.state; default: - return reducers( + return rootReducer( state, action );