UNPKG

@harmowatch/ngx-redux-core

Version:

[![Join the chat at https://gitter.im/harmowatch/ngx-redux-core](https://badges.gitter.im/harmowatch/ngx-redux-core.svg)](https://gitter.im/harmowatch/ngx-redux-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

56 lines (55 loc) 5.42 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { ReduxRegistry } from './redux-registry'; export class ReduxReducerProvider { constructor() { this.stateProviders = {}; } /** * @return {?} */ get rootReducer() { return this.reduce.bind(this); } /** * @param {?} provider * @return {?} */ addStateProvider(provider) { if (!this.stateProviders[provider.name]) { ReduxRegistry.registerState(provider); this.stateProviders[provider.name] = provider; } else { throw new Error(`State "${provider.name}" is registered twice! Make sure your state name is unique!`); } } /** * @param {?} rootState * @param {?} action * @return {?} */ reduce(rootState, action) { if (action.type === ReduxRegistry.ACTION_REGISTER_STATE) { /** @type {?} */ const regAction = (/** @type {?} */ ((action))); return Object.assign({}, rootState, { [regAction.payload.name]: regAction.payload.initialValue }); } return Object.values(this.stateProviders).reduce((stateToReduce, provider) => { return Object.assign({}, stateToReduce, { [provider.name]: provider.reduce(stateToReduce[provider.name], action), }); }, rootState); } } ReduxReducerProvider.decorators = [ { type: Injectable } ]; if (false) { /** @type {?} */ ReduxReducerProvider.prototype.stateProviders; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtcmVkdWNlci5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BoYXJtb3dhdGNoL25neC1yZWR1eC1jb3JlLyIsInNvdXJjZXMiOlsicHJvdmlkZXJzL3JlZHV4LXJlZHVjZXIucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsT0FBTyxFQUF5QixhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUt4RSxNQUFNOzs4QkFJQSxFQUFFOzs7OztRQUVLLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7Ozs7O0lBR3pCLGdCQUFnQixDQUFDLFFBQTRCO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUUsRUFBRTtZQUN6QyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUUsUUFBUSxDQUFDLElBQUksQ0FBRSxHQUFHLFFBQVEsQ0FBQztTQUNqRDthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLFFBQVEsQ0FBQyxJQUFJLDZEQUE2RCxDQUFDLENBQUM7U0FDdkc7Ozs7Ozs7SUFHSSxNQUFNLENBQUMsU0FBeUIsRUFBRSxNQUFtQztRQUUxRSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLHFCQUFxQixFQUFFOztZQUN2RCxNQUFNLFNBQVMsR0FBRyxvQkFBQyxNQUFZLEdBQWtELENBQUM7WUFFbEYseUJBQ0ssU0FBUyxJQUNaLENBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUUsRUFBRSxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksSUFDMUQ7U0FDSDtRQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzNFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFO2dCQUN0QyxDQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUUsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBRSxRQUFRLENBQUMsSUFBSSxDQUFFLEVBQUUsTUFBTSxDQUFDO2FBQzNFLENBQUMsQ0FBQztTQUNKLEVBQUUsU0FBUyxDQUFDLENBQUM7Ozs7WUFuQ2pCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFJlZHVjZXIgfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgeyBSZWR1eFN0YXRlUHJvdmlkZXIgfSBmcm9tICcuL3JlZHV4LXN0YXRlLnByb3ZpZGVyJztcbmltcG9ydCB7IElSZWdpc3RlclN0YXRlUGF5bG9hZCwgUmVkdXhSZWdpc3RyeSB9IGZyb20gJy4vcmVkdXgtcmVnaXN0cnknO1xuaW1wb3J0IHsgUmVkdXhSb290U3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlZHV4LXJvb3Qtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlZHV4QWN0aW9uV2l0aFBheWxvYWQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlZHV4LWFjdGlvbi13aXRoLXBheWxvYWQuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJlZHV4UmVkdWNlclByb3ZpZGVyIHtcblxuICBwcml2YXRlIHN0YXRlUHJvdmlkZXJzOiB7XG4gICAgW25hbWU6IHN0cmluZ106IFJlZHV4U3RhdGVQcm92aWRlcixcbiAgfSA9IHt9O1xuXG4gIHB1YmxpYyBnZXQgcm9vdFJlZHVjZXIoKTogUmVkdWNlcjxSZWR1eFJvb3RTdGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnJlZHVjZS5iaW5kKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIGFkZFN0YXRlUHJvdmlkZXIocHJvdmlkZXI6IFJlZHV4U3RhdGVQcm92aWRlcikge1xuICAgIGlmICghdGhpcy5zdGF0ZVByb3ZpZGVyc1sgcHJvdmlkZXIubmFtZSBdKSB7XG4gICAgICBSZWR1eFJlZ2lzdHJ5LnJlZ2lzdGVyU3RhdGUocHJvdmlkZXIpO1xuICAgICAgdGhpcy5zdGF0ZVByb3ZpZGVyc1sgcHJvdmlkZXIubmFtZSBdID0gcHJvdmlkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3RhdGUgXCIke3Byb3ZpZGVyLm5hbWV9XCIgaXMgcmVnaXN0ZXJlZCB0d2ljZSEgTWFrZSBzdXJlIHlvdXIgc3RhdGUgbmFtZSBpcyB1bmlxdWUhYCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZHVjZShyb290U3RhdGU6IFJlZHV4Um9vdFN0YXRlLCBhY3Rpb246IFJlZHV4QWN0aW9uV2l0aFBheWxvYWQ8YW55Pik6IFJlZHV4Um9vdFN0YXRlIHtcblxuICAgIGlmIChhY3Rpb24udHlwZSA9PT0gUmVkdXhSZWdpc3RyeS5BQ1RJT05fUkVHSVNURVJfU1RBVEUpIHtcbiAgICAgIGNvbnN0IHJlZ0FjdGlvbiA9IChhY3Rpb24gYXMge30gYXMgUmVkdXhBY3Rpb25XaXRoUGF5bG9hZDxJUmVnaXN0ZXJTdGF0ZVBheWxvYWQ+KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucm9vdFN0YXRlLFxuICAgICAgICBbIHJlZ0FjdGlvbi5wYXlsb2FkLm5hbWUgXTogcmVnQWN0aW9uLnBheWxvYWQuaW5pdGlhbFZhbHVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnN0YXRlUHJvdmlkZXJzKS5yZWR1Y2UoKHN0YXRlVG9SZWR1Y2UsIHByb3ZpZGVyKSA9PiB7XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGVUb1JlZHVjZSwge1xuICAgICAgICBbIHByb3ZpZGVyLm5hbWUgXTogcHJvdmlkZXIucmVkdWNlKHN0YXRlVG9SZWR1Y2VbIHByb3ZpZGVyLm5hbWUgXSwgYWN0aW9uKSxcbiAgICAgIH0pO1xuICAgIH0sIHJvb3RTdGF0ZSk7XG4gIH1cblxufVxuIl19