feat(StoreDevtools): Add support for ActionSanitizer and StateSanitizer #795
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Continuing the work from #544 and requested by #604, this PR actually adds the sanitization functionality to @ngrx/store-devtools.
Unfortunately, simply passing
actionSanitizer
andstateSanitizer
to the Redux Devtools Extension does not work, since thesend(action, state)
function exposed by its API does not sanitize anything if theaction
passed in isnull
, which is the current behaviour. As a result, it is necessary to sanitize within ngrx Devtools itself, and then pass that into the extension.This implementation deliberately avoids mutating the lifted state's
actionsByIds
andcomputedStates
properties, but instead creates a sanitized copy of them. This prevents the possibility of a sanitized action from changing the store state if, for example, its sanitized type coincided with a real action's type within the application.Testing
In
app.module.ts
:Open Chrome, confirm that it appears, while app and time travel seem to work fine.