diff --git a/package.json b/package.json index 78b477cfe2..1a3ac750b7 100644 --- a/package.json +++ b/package.json @@ -151,6 +151,7 @@ "karma-sourcemap-loader": "^0.3.7", "karma-webdriver-launcher": "^1.0.4", "karma-webpack": "1.8.0", + "ngrx-store-freeze": "^0.1.9", "node-sass": "4.0.0", "nodemon": "1.11.0", "npm-run-all": "4.0.2", diff --git a/src/app/app.reducers.ts b/src/app/app.reducers.ts index 407a334144..2b9e121c38 100644 --- a/src/app/app.reducers.ts +++ b/src/app/app.reducers.ts @@ -3,8 +3,12 @@ import { routerReducer, RouterState } from "@ngrx/router-store"; import { headerReducer, HeaderState } from './header/header.reducer'; import { hostWindowReducer, HostWindowState } from "./shared/host-window.reducer"; import { CoreState, coreReducer } from "./core/core.reducers"; +import { storeFreeze } from 'ngrx-store-freeze'; +import { compose } from "@ngrx/core"; import { StoreActionTypes } from "./store.actions"; +import { EnvConfig } from '../config'; + export interface AppState { core: CoreState; router: RouterState; @@ -20,10 +24,16 @@ export const reducers = { }; export function rootReducer(state: any, action: any) { + let output; if (action.type === StoreActionTypes.REHYDRATE) { state = action.payload; } - return combineReducers(reducers)(state, action); + if (EnvConfig.production) { + output = combineReducers(reducers)(state, action); + } else { + output = compose(storeFreeze, combineReducers)(reducers)(state, action); + } + return output; } export const NGRX_CACHE_KEY = "NGRX_STORE"; diff --git a/yarn.lock b/yarn.lock index 23052b1210..eac42106d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1455,6 +1455,10 @@ deep-extend@~0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" +deep-freeze-strict@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-freeze-strict/-/deep-freeze-strict-1.1.1.tgz#77d0583ca24a69be4bbd9ac2fae415d55523e5b0" + deep-freeze@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/deep-freeze/-/deep-freeze-0.0.1.tgz#3a0b0005de18672819dfd38cd31f91179c893e84" @@ -3656,6 +3660,12 @@ ng2-translate@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/ng2-translate/-/ng2-translate-4.2.0.tgz#83bc8feca329b5fc56a636e36073241c6280c659" +ngrx-store-freeze@^0.1.9: + version "0.1.9" + resolved "https://registry.yarnpkg.com/ngrx-store-freeze/-/ngrx-store-freeze-0.1.9.tgz#b20f18f21fd5efc4e1b1e05f6f279674d0f70c81" + dependencies: + deep-freeze-strict "^1.1.1" + no-case@^2.2.0: version "2.3.1" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.1.tgz#7aeba1c73a52184265554b7dc03baf720df80081"