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)

111 lines (110 loc) 8.62 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { ReduxActionDispatcher, ReduxStateDecorator } from '@harmowatch/redux-decorators'; import { AsyncSubject, Observable } from 'rxjs'; import { Inject, Injectable } from '@angular/core'; import { ReduxStore } from '../tokens/redux-store.token'; /** * @record */ export function IRegisterStatePayload() { } /** @type {?} */ IRegisterStatePayload.prototype.initialValue; /** @type {?} */ IRegisterStatePayload.prototype.name; var ReduxRegistry = /** @class */ (function () { function ReduxRegistry(store) { if (store === void 0) { store = null; } ReduxRegistry.reset(); ReduxRegistry.registerStore(store); } /** * @return {?} */ ReduxRegistry.reset = /** * @return {?} */ function () { ReduxRegistry._store = new AsyncSubject(); }; /** * @param {?} store * @return {?} */ ReduxRegistry.registerStore = /** * @param {?} store * @return {?} */ function (store) { ReduxRegistry.reset(); ReduxRegistry._store.next(store); ReduxRegistry._store.complete(); ReduxActionDispatcher.dispatchedActions.subscribe(function (action) { /** @type {?} */ var reduxAction = { type: action.type, payload: action.payload, }; store.dispatch(reduxAction); if (action.onDispatchSuccess) { action.onDispatchSuccess(); } }); }; /** * @param {?} state * @return {?} */ ReduxRegistry.registerState = /** * @param {?} state * @return {?} */ function (state) { ReduxRegistry.getStore().then(function (store) { /** @type {?} */ var stateConfig = ReduxStateDecorator.get(state.constructor); /** @type {?} */ var initialState = state.getInitialState(); Promise .resolve(initialState instanceof Observable ? initialState.toPromise() : initialState) .then(function (initialValue) { store.dispatch({ payload: { initialValue: initialValue, name: stateConfig.name, }, type: ReduxRegistry.ACTION_REGISTER_STATE, }); }); }); }; /** * @return {?} */ ReduxRegistry.getStore = /** * @return {?} */ function () { return new Promise(ReduxRegistry._store.subscribe.bind(ReduxRegistry._store)); }; ReduxRegistry.ACTION_REGISTER_STATE = "@harmowatch/ngx-redux-core/registerState"; ReduxRegistry._store = new AsyncSubject(); ReduxRegistry.decorators = [ { type: Injectable } ]; /** @nocollapse */ ReduxRegistry.ctorParameters = function () { return [ { type: undefined, decorators: [{ type: Inject, args: [ReduxStore,] }] } ]; }; return ReduxRegistry; }()); export { ReduxRegistry }; if (false) { /** @type {?} */ ReduxRegistry.ACTION_REGISTER_STATE; /** @type {?} */ ReduxRegistry._store; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtcmVnaXN0cnkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaGFybW93YXRjaC9uZ3gtcmVkdXgtY29yZS8iLCJzb3VyY2VzIjpbInByb3ZpZGVycy9yZWR1eC1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7O0lBZ0J2RCx1QkFBZ0MsS0FBdUI7UUFBM0Msc0JBQUEsRUFBQSxZQUEyQztRQUNyRCxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNwQzs7OztJQUVhLG1CQUFLOzs7O1FBQ2pCLGFBQWEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQzs7Ozs7O0lBR3pDLDJCQUFhOzs7O2NBQUMsS0FBZ0I7UUFDMUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLGFBQWEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFaEMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFVBQUEsTUFBTTs7WUFFdEQsSUFBTSxXQUFXLEdBQTJCO2dCQUMxQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTzthQUN4QixDQUFDO1lBRUYsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUU1QixJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtnQkFDNUIsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDNUI7U0FFRixDQUFDLENBQUM7Ozs7OztJQUdTLDJCQUFhOzs7O2NBQUMsS0FBeUI7UUFDbkQsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFDLEtBQUs7O1lBRWxDLElBQU0sV0FBVyxHQUFHLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7O1lBQy9ELElBQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUU3QyxPQUFPO2lCQUNKLE9BQU8sQ0FBQyxZQUFZLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztpQkFDckYsSUFBSSxDQUFDLFVBQUEsWUFBWTtnQkFDaEIsS0FBSyxDQUFDLFFBQVEsQ0FBZ0Q7b0JBQzVELE9BQU8sRUFBRTt3QkFDUCxZQUFZLGNBQUE7d0JBQ1osSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJO3FCQUN2QjtvQkFDRCxJQUFJLEVBQUUsYUFBYSxDQUFDLHFCQUFxQjtpQkFDMUMsQ0FBQyxDQUFDO2FBQ0osQ0FBQyxDQUFDO1NBRU4sQ0FBQyxDQUFDOzs7OztJQUdTLHNCQUFROzs7O1FBQ3BCLE9BQU8sSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDOzswQ0F4RGpDLDBDQUEwQzsyQkFFakUsSUFBSSxZQUFZLEVBQWE7O2dCQUx0RCxVQUFVOzs7O2dEQU9JLE1BQU0sU0FBQyxVQUFVOzt3QkF0QmhDOztTQWdCYSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVkdXhBY3Rpb25EaXNwYXRjaGVyLCBSZWR1eFN0YXRlRGVjb3JhdG9yIH0gZnJvbSAnQGhhcm1vd2F0Y2gvcmVkdXgtZGVjb3JhdG9ycyc7XG5cbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAncmVkdXgnO1xuaW1wb3J0IHsgQXN5bmNTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVkdXhTdG9yZSB9IGZyb20gJy4uL3Rva2Vucy9yZWR1eC1zdG9yZS50b2tlbic7XG5pbXBvcnQgeyBSZWR1eEFjdGlvbldpdGhQYXlsb2FkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9yZWR1eC1hY3Rpb24td2l0aC1wYXlsb2FkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZWR1eFN0YXRlUHJvdmlkZXIgfSBmcm9tICcuL3JlZHV4LXN0YXRlLnByb3ZpZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBJUmVnaXN0ZXJTdGF0ZVBheWxvYWQge1xuICBpbml0aWFsVmFsdWU6IHt9O1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZWR1eFJlZ2lzdHJ5IHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTl9SRUdJU1RFUl9TVEFURSA9IGBAaGFybW93YXRjaC9uZ3gtcmVkdXgtY29yZS9yZWdpc3RlclN0YXRlYDtcblxuICBwcml2YXRlIHN0YXRpYyBfc3RvcmUgPSBuZXcgQXN5bmNTdWJqZWN0PFN0b3JlPHt9Pj4oKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFJlZHV4U3RvcmUpIHN0b3JlOiBTdG9yZTx7fT4gPSBudWxsKSB7XG4gICAgUmVkdXhSZWdpc3RyeS5yZXNldCgpO1xuICAgIFJlZHV4UmVnaXN0cnkucmVnaXN0ZXJTdG9yZShzdG9yZSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlc2V0KCkge1xuICAgIFJlZHV4UmVnaXN0cnkuX3N0b3JlID0gbmV3IEFzeW5jU3ViamVjdDxTdG9yZTx7fT4+KCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyU3RvcmUoc3RvcmU6IFN0b3JlPHt9Pikge1xuICAgIFJlZHV4UmVnaXN0cnkucmVzZXQoKTtcbiAgICBSZWR1eFJlZ2lzdHJ5Ll9zdG9yZS5uZXh0KHN0b3JlKTtcbiAgICBSZWR1eFJlZ2lzdHJ5Ll9zdG9yZS5jb21wbGV0ZSgpO1xuXG4gICAgUmVkdXhBY3Rpb25EaXNwYXRjaGVyLmRpc3BhdGNoZWRBY3Rpb25zLnN1YnNjcmliZShhY3Rpb24gPT4ge1xuXG4gICAgICBjb25zdCByZWR1eEFjdGlvbjogUmVkdXhBY3Rpb25XaXRoUGF5bG9hZCA9IHtcbiAgICAgICAgdHlwZTogYWN0aW9uLnR5cGUsXG4gICAgICAgIHBheWxvYWQ6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgfTtcblxuICAgICAgc3RvcmUuZGlzcGF0Y2gocmVkdXhBY3Rpb24pO1xuXG4gICAgICBpZiAoYWN0aW9uLm9uRGlzcGF0Y2hTdWNjZXNzKSB7XG4gICAgICAgIGFjdGlvbi5vbkRpc3BhdGNoU3VjY2VzcygpO1xuICAgICAgfVxuXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlZ2lzdGVyU3RhdGUoc3RhdGU6IFJlZHV4U3RhdGVQcm92aWRlcikge1xuICAgIFJlZHV4UmVnaXN0cnkuZ2V0U3RvcmUoKS50aGVuKChzdG9yZSkgPT4ge1xuXG4gICAgICBjb25zdCBzdGF0ZUNvbmZpZyA9IFJlZHV4U3RhdGVEZWNvcmF0b3IuZ2V0KHN0YXRlLmNvbnN0cnVjdG9yKTtcbiAgICAgIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHN0YXRlLmdldEluaXRpYWxTdGF0ZSgpO1xuXG4gICAgICBQcm9taXNlXG4gICAgICAgIC5yZXNvbHZlKGluaXRpYWxTdGF0ZSBpbnN0YW5jZW9mIE9ic2VydmFibGUgPyBpbml0aWFsU3RhdGUudG9Qcm9taXNlKCkgOiBpbml0aWFsU3RhdGUpXG4gICAgICAgIC50aGVuKGluaXRpYWxWYWx1ZSA9PiB7XG4gICAgICAgICAgc3RvcmUuZGlzcGF0Y2g8UmVkdXhBY3Rpb25XaXRoUGF5bG9hZDxJUmVnaXN0ZXJTdGF0ZVBheWxvYWQ+Pih7XG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIGluaXRpYWxWYWx1ZSxcbiAgICAgICAgICAgICAgbmFtZTogc3RhdGVDb25maWcubmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0eXBlOiBSZWR1eFJlZ2lzdHJ5LkFDVElPTl9SRUdJU1RFUl9TVEFURSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3RvcmUoKTogUHJvbWlzZTxTdG9yZTx7fT4+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoUmVkdXhSZWdpc3RyeS5fc3RvcmUuc3Vic2NyaWJlLmJpbmQoUmVkdXhSZWdpc3RyeS5fc3RvcmUpKTtcbiAgfVxuXG59XG4iXX0=