pretur.redux
Version:
34 lines • 6.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function buildReducibleFactory(builder) {
var factory = function reducibleFactory(data) {
var previousReducibleMap = builder(data);
var properties = Object.keys(previousReducibleMap);
function reduce(action) {
var newReducibleMap = {};
var modified = false;
for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {
var property = properties_1[_i];
var newReducible = previousReducibleMap[property].reduce(action);
if (newReducible !== previousReducibleMap[property]) {
modified = true;
}
newReducibleMap[property] = newReducible;
}
if (modified) {
newReducibleMap.reduce = reduce;
previousReducibleMap = newReducibleMap;
}
return previousReducibleMap;
}
previousReducibleMap.reduce = reduce;
return previousReducibleMap;
};
factory.buildReducer = function buildReducer(data) {
var reducible = factory(data);
return function (state, action) { return (state || reducible).reduce(action); };
};
return factory;
}
exports.buildReducibleFactory = buildReducibleFactory;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUNBLCtCQUNFLE9BQW1DO0lBR25DLElBQU0sT0FBTyxHQUFxQywwQkFBMEIsSUFBSTtRQUM5RSxJQUFJLG9CQUFvQixHQUFxQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFM0QsSUFBTSxVQUFVLEdBQWdCLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUVsRSxnQkFBZ0IsTUFBd0I7WUFDdEMsSUFBTSxlQUFlLEdBQXFCLEVBQUUsQ0FBQztZQUM3QyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFFckIsR0FBRyxDQUFDLENBQW1CLFVBQVUsRUFBVix5QkFBVSxFQUFWLHdCQUFVLEVBQVYsSUFBVTtnQkFBNUIsSUFBTSxRQUFRLG1CQUFBO2dCQUNqQixJQUFNLFlBQVksR0FBa0Isb0JBQW9CLENBQUMsUUFBUSxDQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuRixFQUFFLENBQUMsQ0FBQyxZQUFZLEtBQUssb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwRCxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixDQUFDO2dCQUNELGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxZQUFZLENBQUM7YUFDMUM7WUFFRCxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUNiLGVBQWUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2dCQUNoQyxvQkFBb0IsR0FBRyxlQUFlLENBQUM7WUFDekMsQ0FBQztZQUVELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztRQUM5QixDQUFDO1FBRUQsb0JBQW9CLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQyxNQUFNLENBQUMsb0JBQW9CLENBQUM7SUFDOUIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxDQUFDLFlBQVksR0FBRyxzQkFBc0IsSUFBTztRQUNsRCxJQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEMsTUFBTSxDQUFDLFVBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSyxPQUFBLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBbkMsQ0FBbUMsQ0FBQztJQUNoRSxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUF6Q0Qsc0RBeUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWR1Y2VyPFQ+IHtcclxuICAoc3RhdGU6IFQgfCB1bmRlZmluZWQsIGFjdGlvbjogQWN0aW9uPGFueSwgYW55Pik6IFQ7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFJlZHVjaWJsZTxUIGV4dGVuZHMgUmVkdWNpYmxlPGFueT4+ID0gVCAmIHtcclxuICByZWR1Y2UoYWN0aW9uOiBBY3Rpb248YW55LCBhbnk+KTogUmVkdWNpYmxlPFQ+O1xyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgUmVkdWNpYmxlczxUIGV4dGVuZHMgb2JqZWN0ID0gYW55PiA9IHtcclxuICBbUCBpbiBrZXlvZiBUXTogUmVkdWNpYmxlPFRbUF0+O1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQYXJhbWV0cmljUmVkdWNpYmxlRmFjdG9yeTxELCBUIGV4dGVuZHMgUmVkdWNpYmxlcz4ge1xyXG4gIGRhdGE6IEQ7XHJcbiAgdHlwZTogVCAmIFJlZHVjaWJsZTxUPjtcclxuICBidWlsZFJlZHVjZXI6IChkYXRhOiBEKSA9PiBSZWR1Y2VyPFQ+O1xyXG4gIChkYXRhOiBEKTogVCAmIFJlZHVjaWJsZTxUPjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWR1Y2libGVGYWN0b3J5PFQgZXh0ZW5kcyBSZWR1Y2libGVzPiB7XHJcbiAgdHlwZTogUmVkdWNpYmxlPFQ+O1xyXG4gIGJ1aWxkUmVkdWNlcjogKCkgPT4gUmVkdWNlcjxUPjtcclxuICAoKTogUmVkdWNpYmxlPFQ+O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSZWR1Y2libGVGYWN0b3J5PFQgZXh0ZW5kcyBSZWR1Y2libGVzID0gb2JqZWN0PihcclxuICBidWlsZGVyOiAoKSA9PiBULFxyXG4pOiBSZWR1Y2libGVGYWN0b3J5PFQ+O1xyXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSZWR1Y2libGVGYWN0b3J5PEQgPSBhbnksIFQgZXh0ZW5kcyBSZWR1Y2libGVzID0gb2JqZWN0PihcclxuICBidWlsZGVyOiAoZGF0YTogRCkgPT4gVCxcclxuKTogUGFyYW1ldHJpY1JlZHVjaWJsZUZhY3Rvcnk8RCwgVD47XHJcbmV4cG9ydCBmdW5jdGlvbiBidWlsZFJlZHVjaWJsZUZhY3Rvcnk8RCA9IHVuZGVmaW5lZCwgVCBleHRlbmRzIFJlZHVjaWJsZXMgPSBvYmplY3Q+KFxyXG4gIGJ1aWxkZXI6IChkYXRhOiBEIHwgdW5kZWZpbmVkKSA9PiBULFxyXG4pOiBQYXJhbWV0cmljUmVkdWNpYmxlRmFjdG9yeTxELCBUPiB8IFJlZHVjaWJsZUZhY3Rvcnk8VD4ge1xyXG5cclxuICBjb25zdCBmYWN0b3J5ID0gPFBhcmFtZXRyaWNSZWR1Y2libGVGYWN0b3J5PEQsIFQ+PmZ1bmN0aW9uIHJlZHVjaWJsZUZhY3RvcnkoZGF0YSkge1xyXG4gICAgbGV0IHByZXZpb3VzUmVkdWNpYmxlTWFwID0gPFQgJiBSZWR1Y2libGU8VD4+YnVpbGRlcihkYXRhKTtcclxuXHJcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gPChrZXlvZiBUKVtdPk9iamVjdC5rZXlzKHByZXZpb3VzUmVkdWNpYmxlTWFwKTtcclxuXHJcbiAgICBmdW5jdGlvbiByZWR1Y2UoYWN0aW9uOiBBY3Rpb248YW55LCBhbnk+KTogVCAmIFJlZHVjaWJsZTxUPiB7XHJcbiAgICAgIGNvbnN0IG5ld1JlZHVjaWJsZU1hcCA9IDxUICYgUmVkdWNpYmxlPFQ+Pnt9O1xyXG4gICAgICBsZXQgbW9kaWZpZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllcykge1xyXG4gICAgICAgIGNvbnN0IG5ld1JlZHVjaWJsZSA9ICg8UmVkdWNpYmxlPFQ+PnByZXZpb3VzUmVkdWNpYmxlTWFwW3Byb3BlcnR5XSkucmVkdWNlKGFjdGlvbik7XHJcbiAgICAgICAgaWYgKG5ld1JlZHVjaWJsZSAhPT0gcHJldmlvdXNSZWR1Y2libGVNYXBbcHJvcGVydHldKSB7XHJcbiAgICAgICAgICBtb2RpZmllZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5ld1JlZHVjaWJsZU1hcFtwcm9wZXJ0eV0gPSBuZXdSZWR1Y2libGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtb2RpZmllZCkge1xyXG4gICAgICAgIG5ld1JlZHVjaWJsZU1hcC5yZWR1Y2UgPSByZWR1Y2U7XHJcbiAgICAgICAgcHJldmlvdXNSZWR1Y2libGVNYXAgPSBuZXdSZWR1Y2libGVNYXA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBwcmV2aW91c1JlZHVjaWJsZU1hcDtcclxuICAgIH1cclxuXHJcbiAgICBwcmV2aW91c1JlZHVjaWJsZU1hcC5yZWR1Y2UgPSByZWR1Y2U7XHJcblxyXG4gICAgcmV0dXJuIHByZXZpb3VzUmVkdWNpYmxlTWFwO1xyXG4gIH07XHJcblxyXG4gIGZhY3RvcnkuYnVpbGRSZWR1Y2VyID0gZnVuY3Rpb24gYnVpbGRSZWR1Y2VyKGRhdGE6IEQpOiBSZWR1Y2VyPFQ+IHtcclxuICAgIGNvbnN0IHJlZHVjaWJsZSA9IGZhY3RvcnkoZGF0YSk7XHJcblxyXG4gICAgcmV0dXJuIChzdGF0ZSwgYWN0aW9uKSA9PiAoc3RhdGUgfHwgcmVkdWNpYmxlKS5yZWR1Y2UoYWN0aW9uKTtcclxuICB9O1xyXG5cclxuICByZXR1cm4gZmFjdG9yeTtcclxufVxyXG4iXX0=