@rematch/immer
Version:
Redux-Immer v6 plugin for Rematch. Provides immutable ability for rematch.
38 lines (29 loc) • 1.41 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('immer')) :
typeof define === 'function' && define.amd ? define(['exports', 'immer'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@rematch/immer"] = {}, global.produce));
})(this, (function (exports, produce) { 'use strict';
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var produce__default = /*#__PURE__*/_interopDefaultLegacy(produce);
function wrapReducerWithImmer(reducer) {
return function (state, payload) {
if (state === undefined) return reducer(state, payload);
return produce__default["default"](state, function (draft) {
return reducer(draft, payload);
});
};
}
var immerPlugin = function immerPlugin(config) {
return {
onReducer: function onReducer(reducer, model) {
if (!config || !config.whitelist && !config.blacklist || config.whitelist && config.whitelist.includes(model) || config.blacklist && !config.blacklist.includes(model)) {
return wrapReducerWithImmer(reducer);
}
return undefined;
}
};
};
exports["default"] = immerPlugin;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=immer.umd.development.js.map