ngrx-immer
Version:
Immer wrappers around NgRx methods createReducer, on, and ComponentStore
11 lines • 1.7 kB
JavaScript
import { produce } from 'immer';
/**
* Helper method that wraps a reducer with the Immer `produce` method
* Kudos to Alex Okrushko {@link https://lookout.dev/rules/simple-immer-base-function-to-be-used-in-ngrx-store-or-componentstore-for-transforming-data-%22mutably%22}
*/
export function immerReducer(callback) {
return (state, next) => {
return produce(state, (draft) => callback(draft, next));
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhcmVkL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFaEM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDM0IsUUFBb0Q7SUFFcEQsT0FBTyxDQUFDLEtBQXdCLEVBQUUsSUFBVSxFQUFFLEVBQUU7UUFDL0MsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBWSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFVLENBQUM7SUFDekUsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb2R1Y2UgfSBmcm9tICdpbW1lcic7XG5cbi8qKlxuICogSGVscGVyIG1ldGhvZCB0aGF0IHdyYXBzIGEgcmVkdWNlciB3aXRoIHRoZSBJbW1lciBgcHJvZHVjZWAgbWV0aG9kXG4gKiBLdWRvcyB0byBBbGV4IE9rcnVzaGtvIHtAbGluayBodHRwczovL2xvb2tvdXQuZGV2L3J1bGVzL3NpbXBsZS1pbW1lci1iYXNlLWZ1bmN0aW9uLXRvLWJlLXVzZWQtaW4tbmdyeC1zdG9yZS1vci1jb21wb25lbnRzdG9yZS1mb3ItdHJhbnNmb3JtaW5nLWRhdGEtJTIybXV0YWJseSUyMn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGltbWVyUmVkdWNlcjxTdGF0ZSwgTmV4dD4oXG5cdGNhbGxiYWNrOiAoc3RhdGU6IFN0YXRlLCBuZXh0OiBOZXh0KSA9PiBTdGF0ZSB8IHZvaWQsXG4pIHtcblx0cmV0dXJuIChzdGF0ZTogU3RhdGUgfCB1bmRlZmluZWQsIG5leHQ6IE5leHQpID0+IHtcblx0XHRyZXR1cm4gcHJvZHVjZShzdGF0ZSwgKGRyYWZ0OiBTdGF0ZSkgPT4gY2FsbGJhY2soZHJhZnQsIG5leHQpKSBhcyBTdGF0ZTtcblx0fTtcbn1cbiJdfQ==