@angular-redux/store
Version:
Angular bindings for Redux
117 lines • 10.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ReplaySubject } from 'rxjs';
import { distinctUntilChanged } from 'rxjs/operators';
/**
* @hidden
* @record
*/
export function SelectorStubRecord() { }
if (false) {
/** @type {?} */
SelectorStubRecord.prototype.subject;
/** @type {?} */
SelectorStubRecord.prototype.comparator;
}
/**
* @hidden
* @record
*/
export function SelectorStubMap() { }
/**
* @hidden
* @record
*/
export function SubStoreStubMap() { }
/**
* @hidden
* @template State
*/
export class MockObservableStore {
constructor() {
this.selections = {};
this.subStores = {};
this.getSelectorStub = (selector, comparator) => this.initSelectorStub(selector, comparator).subject;
this.reset = () => {
Object.keys(this.subStores).forEach(k => this.subStores[k].reset());
this.selections = {};
this.subStores = {};
};
this.dispatch = action => action;
this.replaceReducer = () => null;
this.getState = () => ({});
this.subscribe = () => () => null;
this.select = (selector, comparator) => {
/** @type {?} */
const stub = this.initSelectorStub(selector, comparator);
return stub.comparator
? stub.subject.pipe(distinctUntilChanged(stub.comparator))
: stub.subject;
};
this.configureSubStore = (basePath, _) => this.initSubStore(basePath);
this.getSubStore = (...pathSelectors) => {
const [first, ...rest] = pathSelectors;
return (/** @type {?} */ ((first
? this.initSubStore(first).getSubStore(...rest)
: this)));
};
}
/**
* @private
* @template SubState
* @param {?} basePath
* @return {?}
*/
initSubStore(basePath) {
/** @type {?} */
const result = this.subStores[JSON.stringify(basePath)] ||
new MockObservableStore();
this.subStores[JSON.stringify(basePath)] = result;
return result;
}
/**
* @private
* @template SelectedState
* @param {?=} selector
* @param {?=} comparator
* @return {?}
*/
initSelectorStub(selector, comparator) {
/** @type {?} */
const key = selector ? selector.toString() : '';
/** @type {?} */
const record = this.selections[key] || {
subject: new ReplaySubject(),
comparator,
};
this.selections[key] = record;
return record;
}
}
if (false) {
/** @type {?} */
MockObservableStore.prototype.selections;
/** @type {?} */
MockObservableStore.prototype.subStores;
/** @type {?} */
MockObservableStore.prototype.getSelectorStub;
/** @type {?} */
MockObservableStore.prototype.reset;
/** @type {?} */
MockObservableStore.prototype.dispatch;
/** @type {?} */
MockObservableStore.prototype.replaceReducer;
/** @type {?} */
MockObservableStore.prototype.getState;
/** @type {?} */
MockObservableStore.prototype.subscribe;
/** @type {?} */
MockObservableStore.prototype.select;
/** @type {?} */
MockObservableStore.prototype.configureSubStore;
/** @type {?} */
MockObservableStore.prototype.getSubStore;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS1zdG9yZS5tb2NrLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFuZ3VsYXItcmVkdXgvc3RvcmUvdGVzdGluZy8iLCJzb3VyY2VzIjpbIm9ic2VydmFibGUtc3RvcmUubW9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBSUEsT0FBTyxFQUFjLGFBQWEsRUFBVyxNQUFNLE1BQU0sQ0FBQztBQUMxRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFHdEQsd0NBR0M7OztJQUZDLHFDQUFzQjs7SUFDdEIsd0NBQXVCOzs7Ozs7QUFJekIscUNBRUM7Ozs7O0FBR0QscUNBRUM7Ozs7O0FBR0QsTUFBTSxPQUFPLG1CQUFtQjtJQUFoQztRQUNFLGVBQVUsR0FBb0IsRUFBRSxDQUFDO1FBQ2pDLGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRWhDLG9CQUFlLEdBQUcsQ0FDaEIsUUFBeUMsRUFDekMsVUFBdUIsRUFDQyxFQUFFLENBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBZ0IsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUVyRSxVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQztRQUVGLGFBQVEsR0FBd0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDakQsbUJBQWMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDNUIsYUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsY0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztRQUU3QixXQUFNLEdBQUcsQ0FDUCxRQUF1QyxFQUN2QyxVQUF1QixFQUNOLEVBQUU7O2tCQUNiLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQWdCLFFBQVEsRUFBRSxVQUFVLENBQUM7WUFDdkUsT0FBTyxJQUFJLENBQUMsVUFBVTtnQkFDcEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDMUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDbkIsQ0FBQyxDQUFDO1FBRUYsc0JBQWlCLEdBQUcsQ0FDbEIsUUFBc0IsRUFDdEIsQ0FBK0IsRUFDQSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBVyxRQUFRLENBQUMsQ0FBQztRQUUxRSxnQkFBVyxHQUFHLENBQ1osR0FBRyxhQUE2QixFQUNOLEVBQUU7a0JBQ3RCLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsYUFBYTtZQUN0QyxPQUFPLG1CQUFBLENBQUMsS0FBSztnQkFDWCxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBaUMsQ0FBQztRQUM3QyxDQUFDLENBQUM7SUF1QkosQ0FBQzs7Ozs7OztJQXJCUyxZQUFZLENBQVcsUUFBc0I7O2NBQzdDLE1BQU0sR0FDVixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEMsSUFBSSxtQkFBbUIsRUFBWTtRQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDbEQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7Ozs7Ozs7SUFFTyxnQkFBZ0IsQ0FDdEIsUUFBeUMsRUFDekMsVUFBdUI7O2NBRWpCLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTs7Y0FDekMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUk7WUFDckMsT0FBTyxFQUFFLElBQUksYUFBYSxFQUFpQjtZQUMzQyxVQUFVO1NBQ1g7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUM5QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7OztJQWpFQyx5Q0FBaUM7O0lBQ2pDLHdDQUFnQzs7SUFFaEMsOENBSXFFOztJQUVyRSxvQ0FJRTs7SUFFRix1Q0FBaUQ7O0lBQ2pELDZDQUE0Qjs7SUFDNUIsdUNBQXNCOztJQUN0Qix3Q0FBNkI7O0lBRTdCLHFDQVFFOztJQUVGLGdEQUcwRTs7SUFFMUUsMENBT0UiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPOiBTZWUgaWYgdGhpcyBsaW50aW5nIHJ1bGUgY2FuIGJlIGVuYWJsZWQgd2l0aCBuZXcgYnVpbGQgcHJvY2VzcyAobmctcGFja2Fncilcbi8vIHRzbGludDpkaXNhYmxlOm5vLWltcGxpY2l0LWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgQ29tcGFyYXRvciwgUGF0aFNlbGVjdG9yLCBTZWxlY3RvciB9IGZyb20gJ0Bhbmd1bGFyLXJlZHV4L3N0b3JlJztcbmltcG9ydCB7IEFueUFjdGlvbiwgRGlzcGF0Y2gsIFJlZHVjZXIgfSBmcm9tICdyZWR1eCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0b3JTdHViUmVjb3JkIHtcbiAgc3ViamVjdDogU3ViamVjdDxhbnk+O1xuICBjb21wYXJhdG9yOiBDb21wYXJhdG9yO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RvclN0dWJNYXAge1xuICBbc2VsZWN0b3I6IHN0cmluZ106IFNlbGVjdG9yU3R1YlJlY29yZDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3ViU3RvcmVTdHViTWFwIHtcbiAgW2Jhc2VQYXRoOiBzdHJpbmddOiBNb2NrT2JzZXJ2YWJsZVN0b3JlPGFueT47XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgY2xhc3MgTW9ja09ic2VydmFibGVTdG9yZTxTdGF0ZT4ge1xuICBzZWxlY3Rpb25zOiBTZWxlY3RvclN0dWJNYXAgPSB7fTtcbiAgc3ViU3RvcmVzOiBTdWJTdG9yZVN0dWJNYXAgPSB7fTtcblxuICBnZXRTZWxlY3RvclN0dWIgPSA8U2VsZWN0ZWRTdGF0ZT4oXG4gICAgc2VsZWN0b3I/OiBTZWxlY3RvcjxTdGF0ZSwgU2VsZWN0ZWRTdGF0ZT4sXG4gICAgY29tcGFyYXRvcj86IENvbXBhcmF0b3IsXG4gICk6IFN1YmplY3Q8U2VsZWN0ZWRTdGF0ZT4gPT5cbiAgICB0aGlzLmluaXRTZWxlY3RvclN0dWI8U2VsZWN0ZWRTdGF0ZT4oc2VsZWN0b3IsIGNvbXBhcmF0b3IpLnN1YmplY3Q7XG5cbiAgcmVzZXQgPSAoKSA9PiB7XG4gICAgT2JqZWN0LmtleXModGhpcy5zdWJTdG9yZXMpLmZvckVhY2goayA9PiB0aGlzLnN1YlN0b3Jlc1trXS5yZXNldCgpKTtcbiAgICB0aGlzLnNlbGVjdGlvbnMgPSB7fTtcbiAgICB0aGlzLnN1YlN0b3JlcyA9IHt9O1xuICB9O1xuXG4gIGRpc3BhdGNoOiBEaXNwYXRjaDxBbnlBY3Rpb24+ID0gYWN0aW9uID0+IGFjdGlvbjtcbiAgcmVwbGFjZVJlZHVjZXIgPSAoKSA9PiBudWxsO1xuICBnZXRTdGF0ZSA9ICgpID0+ICh7fSk7XG4gIHN1YnNjcmliZSA9ICgpID0+ICgpID0+IG51bGw7XG5cbiAgc2VsZWN0ID0gPFNlbGVjdGVkU3RhdGU+KFxuICAgIHNlbGVjdG9yPzogU2VsZWN0b3I8YW55LCBTZWxlY3RlZFN0YXRlPixcbiAgICBjb21wYXJhdG9yPzogQ29tcGFyYXRvcixcbiAgKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcbiAgICBjb25zdCBzdHViID0gdGhpcy5pbml0U2VsZWN0b3JTdHViPFNlbGVjdGVkU3RhdGU+KHNlbGVjdG9yLCBjb21wYXJhdG9yKTtcbiAgICByZXR1cm4gc3R1Yi5jb21wYXJhdG9yXG4gICAgICA/IHN0dWIuc3ViamVjdC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKHN0dWIuY29tcGFyYXRvcikpXG4gICAgICA6IHN0dWIuc3ViamVjdDtcbiAgfTtcblxuICBjb25maWd1cmVTdWJTdG9yZSA9IDxTdWJTdGF0ZT4oXG4gICAgYmFzZVBhdGg6IFBhdGhTZWxlY3RvcixcbiAgICBfOiBSZWR1Y2VyPFN1YlN0YXRlLCBBbnlBY3Rpb24+LFxuICApOiBNb2NrT2JzZXJ2YWJsZVN0b3JlPFN1YlN0YXRlPiA9PiB0aGlzLmluaXRTdWJTdG9yZTxTdWJTdGF0ZT4oYmFzZVBhdGgpO1xuXG4gIGdldFN1YlN0b3JlID0gPFN1YlN0YXRlPihcbiAgICAuLi5wYXRoU2VsZWN0b3JzOiBQYXRoU2VsZWN0b3JbXVxuICApOiBNb2NrT2JzZXJ2YWJsZVN0b3JlPGFueT4gPT4ge1xuICAgIGNvbnN0IFtmaXJzdCwgLi4ucmVzdF0gPSBwYXRoU2VsZWN0b3JzO1xuICAgIHJldHVybiAoZmlyc3RcbiAgICAgID8gdGhpcy5pbml0U3ViU3RvcmUoZmlyc3QpLmdldFN1YlN0b3JlKC4uLnJlc3QpXG4gICAgICA6IHRoaXMpIGFzIE1vY2tPYnNlcnZhYmxlU3RvcmU8U3ViU3RhdGU+O1xuICB9O1xuXG4gIHByaXZhdGUgaW5pdFN1YlN0b3JlPFN1YlN0YXRlPihiYXNlUGF0aDogUGF0aFNlbGVjdG9yKSB7XG4gICAgY29uc3QgcmVzdWx0ID1cbiAgICAgIHRoaXMuc3ViU3RvcmVzW0pTT04uc3RyaW5naWZ5KGJhc2VQYXRoKV0gfHxcbiAgICAgIG5ldyBNb2NrT2JzZXJ2YWJsZVN0b3JlPFN1YlN0YXRlPigpO1xuICAgIHRoaXMuc3ViU3RvcmVzW0pTT04uc3RyaW5naWZ5KGJhc2VQYXRoKV0gPSByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFNlbGVjdG9yU3R1YjxTZWxlY3RlZFN0YXRlPihcbiAgICBzZWxlY3Rvcj86IFNlbGVjdG9yPFN0YXRlLCBTZWxlY3RlZFN0YXRlPixcbiAgICBjb21wYXJhdG9yPzogQ29tcGFyYXRvcixcbiAgKTogU2VsZWN0b3JTdHViUmVjb3JkIHtcbiAgICBjb25zdCBrZXkgPSBzZWxlY3RvciA/IHNlbGVjdG9yLnRvU3RyaW5nKCkgOiAnJztcbiAgICBjb25zdCByZWNvcmQgPSB0aGlzLnNlbGVjdGlvbnNba2V5XSB8fCB7XG4gICAgICBzdWJqZWN0OiBuZXcgUmVwbGF5U3ViamVjdDxTZWxlY3RlZFN0YXRlPigpLFxuICAgICAgY29tcGFyYXRvcixcbiAgICB9O1xuXG4gICAgdGhpcy5zZWxlY3Rpb25zW2tleV0gPSByZWNvcmQ7XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfVxufVxuIl19