@harmowatch/ngx-redux-core
Version:
[](https://gitter.im/harmowatch/ngx-redux-core?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
71 lines (70 loc) • 5.04 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { BehaviorSubject } from 'rxjs';
import { takeWhile } from 'rxjs/operators';
import { Injectable } from '@angular/core';
import { ReduxStateDecorator } from '@harmowatch/redux-decorators';
export class ReduxTestingStore {
constructor() {
this.state = new BehaviorSubject(null);
}
/**
* @return {?}
*/
static factory() {
return new ReduxTestingStore();
}
/**
* @template S
* @param {?} state
* @param {?} value
* @return {?}
*/
setState(state, value) {
const { name } = ReduxStateDecorator.get(state);
/** @type {?} */
const nextState = Object.assign({}, this.state.getValue(), {
[name]: value,
});
this.state.next(nextState);
return this.state
.pipe(takeWhile(currentState => currentState !== nextState))
.toPromise().then(() => this.state.getValue());
}
/**
* @return {?}
*/
getState() {
return this.state.getValue();
}
/**
* @param {?} listener
* @return {?}
*/
subscribe(listener) {
return this.state.subscribe.call(this.state, listener);
}
/**
* @return {?}
*/
replaceReducer() {
}
/**
* @template T
* @param {?} action
* @return {?}
*/
dispatch(action) {
return action;
}
}
ReduxTestingStore.decorators = [
{ type: Injectable }
];
if (false) {
/** @type {?} */
ReduxTestingStore.prototype.state;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaGFybW93YXRjaC9uZ3gtcmVkdXgtY29yZS8iLCJzb3VyY2VzIjpbInRlc3Rpbmcvc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQVEsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFJbkUsTUFBTTs7cUJBRVksSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDOzs7OztJQUVsQyxNQUFNLENBQUMsT0FBTztRQUNuQixPQUFPLElBQUksaUJBQWlCLEVBQUUsQ0FBQzs7Ozs7Ozs7SUFHMUIsUUFBUSxDQUFJLEtBQStCLEVBQUUsS0FBUTtRQUMxRCxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDOztRQUU5QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3pELENBQUUsSUFBSSxDQUFFLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUUzQixPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFlBQVksS0FBSyxTQUFTLENBQUMsQ0FBQzthQUMzRCxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDOzs7OztJQUc1QyxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDOzs7Ozs7SUFHeEIsU0FBUyxDQUFDLFFBQW9CO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Ozs7O0lBR2xELGNBQWM7Ozs7Ozs7SUFHZCxRQUFRLENBQW1CLE1BQVM7UUFDekMsT0FBTyxNQUFNLENBQUM7Ozs7WUFuQ2pCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24sIFN0b3JlLCBVbnN1YnNjcmliZSB9IGZyb20gJ3JlZHV4JztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVkdXhSb290U3RhdGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3JlZHV4LXJvb3Qtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlZHV4U3RhdGVEZWNvcmF0b3IgfSBmcm9tICdAaGFybW93YXRjaC9yZWR1eC1kZWNvcmF0b3JzJztcbmltcG9ydCB7IFJlZHV4U3RhdGVQcm92aWRlciB9IGZyb20gJy4uL3Byb3ZpZGVycy9yZWR1eC1zdGF0ZS5wcm92aWRlcic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZWR1eFRlc3RpbmdTdG9yZSBpbXBsZW1lbnRzIFN0b3JlPHt9PiB7XG5cbiAgcHJpdmF0ZSBzdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cbiAgcHVibGljIHN0YXRpYyBmYWN0b3J5KCk6IFJlZHV4VGVzdGluZ1N0b3JlIHtcbiAgICByZXR1cm4gbmV3IFJlZHV4VGVzdGluZ1N0b3JlKCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdGU8Uz4oc3RhdGU6IFR5cGU8UmVkdXhTdGF0ZVByb3ZpZGVyPiwgdmFsdWU6IFMpOiBQcm9taXNlPFJlZHV4Um9vdFN0YXRlPiB7XG4gICAgY29uc3Qge25hbWV9ID0gUmVkdXhTdGF0ZURlY29yYXRvci5nZXQoc3RhdGUpO1xuXG4gICAgY29uc3QgbmV4dFN0YXRlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5zdGF0ZS5nZXRWYWx1ZSgpLCB7XG4gICAgICBbIG5hbWUgXTogdmFsdWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLnN0YXRlLm5leHQobmV4dFN0YXRlKTtcblxuICAgIHJldHVybiB0aGlzLnN0YXRlXG4gICAgICAucGlwZSh0YWtlV2hpbGUoY3VycmVudFN0YXRlID0+IGN1cnJlbnRTdGF0ZSAhPT0gbmV4dFN0YXRlKSlcbiAgICAgIC50b1Byb21pc2UoKS50aGVuKCgpID0+IHRoaXMuc3RhdGUuZ2V0VmFsdWUoKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhdGUoKToge30ge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgc3Vic2NyaWJlKGxpc3RlbmVyOiAoKSA9PiB2b2lkKTogVW5zdWJzY3JpYmUge1xuICAgIHJldHVybiB0aGlzLnN0YXRlLnN1YnNjcmliZS5jYWxsKHRoaXMuc3RhdGUsIGxpc3RlbmVyKTtcbiAgfVxuXG4gIHB1YmxpYyByZXBsYWNlUmVkdWNlcigpIHtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwYXRjaDxUIGV4dGVuZHMgQWN0aW9uPihhY3Rpb246IFQpOiBUIHtcbiAgICByZXR1cm4gYWN0aW9uO1xuICB9XG5cbn1cbiJdfQ==