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)

97 lines (96 loc) 8.2 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; export class ReduxRegistry { /** * @param {?=} store */ constructor(store = null) { ReduxRegistry.reset(); ReduxRegistry.registerStore(store); } /** * @return {?} */ static reset() { ReduxRegistry._store = new AsyncSubject(); } /** * @param {?} store * @return {?} */ static registerStore(store) { ReduxRegistry.reset(); ReduxRegistry._store.next(store); ReduxRegistry._store.complete(); ReduxActionDispatcher.dispatchedActions.subscribe(action => { /** @type {?} */ const reduxAction = { type: action.type, payload: action.payload, }; store.dispatch(reduxAction); if (action.onDispatchSuccess) { action.onDispatchSuccess(); } }); } /** * @param {?} state * @return {?} */ static registerState(state) { ReduxRegistry.getStore().then((store) => { /** @type {?} */ const stateConfig = ReduxStateDecorator.get(state.constructor); /** @type {?} */ const initialState = state.getInitialState(); Promise .resolve(initialState instanceof Observable ? initialState.toPromise() : initialState) .then(initialValue => { store.dispatch({ payload: { initialValue, name: stateConfig.name, }, type: ReduxRegistry.ACTION_REGISTER_STATE, }); }); }); } /** * @return {?} */ static getStore() { 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 = () => [ { type: undefined, decorators: [{ type: Inject, args: [ReduxStore,] }] } ]; if (false) { /** @type {?} */ ReduxRegistry.ACTION_REGISTER_STATE; /** @type {?} */ ReduxRegistry._store; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtcmVnaXN0cnkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaGFybW93YXRjaC9uZ3gtcmVkdXgtY29yZS8iLCJzb3VyY2VzIjpbInByb3ZpZGVycy9yZWR1eC1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHMUYsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7QUFVekQsTUFBTTs7OztJQU1KLFlBQWdDLFFBQW1CLElBQUk7UUFDckQsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDcEM7Ozs7SUFFTSxNQUFNLENBQUMsS0FBSztRQUNqQixhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7Ozs7OztJQUdoRCxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWdCO1FBQzFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTs7WUFFekQsTUFBTSxXQUFXLEdBQTJCO2dCQUMxQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTzthQUN4QixDQUFDO1lBRUYsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUU1QixJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRTtnQkFDNUIsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDNUI7U0FFRixDQUFDLENBQUM7Ozs7OztJQUdFLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBeUI7UUFDbkQsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFOztZQUV0QyxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDOztZQUMvRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFN0MsT0FBTztpQkFDSixPQUFPLENBQUMsWUFBWSxZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7aUJBQ3JGLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDbkIsS0FBSyxDQUFDLFFBQVEsQ0FBZ0Q7b0JBQzVELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSTtxQkFDdkI7b0JBQ0QsSUFBSSxFQUFFLGFBQWEsQ0FBQyxxQkFBcUI7aUJBQzFDLENBQUMsQ0FBQzthQUNKLENBQUMsQ0FBQztTQUVOLENBQUMsQ0FBQzs7Ozs7SUFHRSxNQUFNLENBQUMsUUFBUTtRQUNwQixPQUFPLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQzs7O3NDQXhEakMsMENBQTBDO3VCQUVqRSxJQUFJLFlBQVksRUFBYTs7WUFMdEQsVUFBVTs7Ozs0Q0FPSSxNQUFNLFNBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZHV4QWN0aW9uRGlzcGF0Y2hlciwgUmVkdXhTdGF0ZURlY29yYXRvciB9IGZyb20gJ0BoYXJtb3dhdGNoL3JlZHV4LWRlY29yYXRvcnMnO1xuXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ3JlZHV4JztcbmltcG9ydCB7IEFzeW5jU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlZHV4U3RvcmUgfSBmcm9tICcuLi90b2tlbnMvcmVkdXgtc3RvcmUudG9rZW4nO1xuaW1wb3J0IHsgUmVkdXhBY3Rpb25XaXRoUGF5bG9hZCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVkdXgtYWN0aW9uLXdpdGgtcGF5bG9hZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVkdXhTdGF0ZVByb3ZpZGVyIH0gZnJvbSAnLi9yZWR1eC1zdGF0ZS5wcm92aWRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlZ2lzdGVyU3RhdGVQYXlsb2FkIHtcbiAgaW5pdGlhbFZhbHVlOiB7fTtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVkdXhSZWdpc3RyeSB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT05fUkVHSVNURVJfU1RBVEUgPSBgQGhhcm1vd2F0Y2gvbmd4LXJlZHV4LWNvcmUvcmVnaXN0ZXJTdGF0ZWA7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX3N0b3JlID0gbmV3IEFzeW5jU3ViamVjdDxTdG9yZTx7fT4+KCk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChSZWR1eFN0b3JlKSBzdG9yZTogU3RvcmU8e30+ID0gbnVsbCkge1xuICAgIFJlZHV4UmVnaXN0cnkucmVzZXQoKTtcbiAgICBSZWR1eFJlZ2lzdHJ5LnJlZ2lzdGVyU3RvcmUoc3RvcmUpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyByZXNldCgpIHtcbiAgICBSZWR1eFJlZ2lzdHJ5Ll9zdG9yZSA9IG5ldyBBc3luY1N1YmplY3Q8U3RvcmU8e30+PigpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyByZWdpc3RlclN0b3JlKHN0b3JlOiBTdG9yZTx7fT4pIHtcbiAgICBSZWR1eFJlZ2lzdHJ5LnJlc2V0KCk7XG4gICAgUmVkdXhSZWdpc3RyeS5fc3RvcmUubmV4dChzdG9yZSk7XG4gICAgUmVkdXhSZWdpc3RyeS5fc3RvcmUuY29tcGxldGUoKTtcblxuICAgIFJlZHV4QWN0aW9uRGlzcGF0Y2hlci5kaXNwYXRjaGVkQWN0aW9ucy5zdWJzY3JpYmUoYWN0aW9uID0+IHtcblxuICAgICAgY29uc3QgcmVkdXhBY3Rpb246IFJlZHV4QWN0aW9uV2l0aFBheWxvYWQgPSB7XG4gICAgICAgIHR5cGU6IGFjdGlvbi50eXBlLFxuICAgICAgICBwYXlsb2FkOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgIH07XG5cbiAgICAgIHN0b3JlLmRpc3BhdGNoKHJlZHV4QWN0aW9uKTtcblxuICAgICAgaWYgKGFjdGlvbi5vbkRpc3BhdGNoU3VjY2Vzcykge1xuICAgICAgICBhY3Rpb24ub25EaXNwYXRjaFN1Y2Nlc3MoKTtcbiAgICAgIH1cblxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyByZWdpc3RlclN0YXRlKHN0YXRlOiBSZWR1eFN0YXRlUHJvdmlkZXIpIHtcbiAgICBSZWR1eFJlZ2lzdHJ5LmdldFN0b3JlKCkudGhlbigoc3RvcmUpID0+IHtcblxuICAgICAgY29uc3Qgc3RhdGVDb25maWcgPSBSZWR1eFN0YXRlRGVjb3JhdG9yLmdldChzdGF0ZS5jb25zdHJ1Y3Rvcik7XG4gICAgICBjb25zdCBpbml0aWFsU3RhdGUgPSBzdGF0ZS5nZXRJbml0aWFsU3RhdGUoKTtcblxuICAgICAgUHJvbWlzZVxuICAgICAgICAucmVzb2x2ZShpbml0aWFsU3RhdGUgaW5zdGFuY2VvZiBPYnNlcnZhYmxlID8gaW5pdGlhbFN0YXRlLnRvUHJvbWlzZSgpIDogaW5pdGlhbFN0YXRlKVxuICAgICAgICAudGhlbihpbml0aWFsVmFsdWUgPT4ge1xuICAgICAgICAgIHN0b3JlLmRpc3BhdGNoPFJlZHV4QWN0aW9uV2l0aFBheWxvYWQ8SVJlZ2lzdGVyU3RhdGVQYXlsb2FkPj4oe1xuICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICBpbml0aWFsVmFsdWUsXG4gICAgICAgICAgICAgIG5hbWU6IHN0YXRlQ29uZmlnLm5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHlwZTogUmVkdXhSZWdpc3RyeS5BQ1RJT05fUkVHSVNURVJfU1RBVEUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldFN0b3JlKCk6IFByb21pc2U8U3RvcmU8e30+PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKFJlZHV4UmVnaXN0cnkuX3N0b3JlLnN1YnNjcmliZS5iaW5kKFJlZHV4UmVnaXN0cnkuX3N0b3JlKSk7XG4gIH1cblxufVxuIl19