freeCodeCamp/common/utils/index.js

17 lines
360 B
JavaScript
Raw Normal View History

2016-01-04 22:26:07 +00:00
export function nameSpacedTransformer(ns, transformer) {
if (!transformer) {
return nameSpacedTransformer.bind(null, ns);
}
return (state) => {
const newState = transformer(state[ns]);
2016-01-05 20:05:01 +00:00
2016-01-04 22:26:07 +00:00
// nothing has changed
2016-01-05 20:05:01 +00:00
// noop
if (!newState || newState === state[ns]) {
return null;
2016-01-04 22:26:07 +00:00
}
2016-01-05 20:05:01 +00:00
2016-01-04 22:26:07 +00:00
return { ...state, [ns]: newState };
};
}