@nteract/myths
Version:
A redux-observable framework for better locality of dependencies
32 lines • 1.1 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeRootReducer = exports.makeReducer = void 0;
const immutable_1 = __importDefault(require("immutable"));
exports.makeReducer = (reduce, appliesTo) => reduce === undefined
? (state, _action) => state
: (state, action) => {
if (appliesTo(action)) {
return (reduce(state, action) || state);
}
else {
return state;
}
};
exports.makeRootReducer = (myths, initialState) => (state = immutable_1.default.Record(initialState)(), action) => {
const applicableMyths = Object
.values(myths)
.filter(myth => myth.appliesTo(action));
if (applicableMyths.length === 0) {
return state;
}
else if (applicableMyths[0].reduce === undefined) {
return state;
}
else {
return applicableMyths[0].reduce(state, action);
}
};
//# sourceMappingURL=reducer.js.map