UNPKG

ngrx-run

Version:

Return side-effects as data from your NgRx reducers

19 lines 3.96 kB
import { compose } from '@ngrx/store'; import { handleEffects } from './handle-effects'; import { Subscription } from 'rxjs'; export function createRuntimeReducerFactory(reducerFactory, injector, metaReducers) { const runtime = new Map(); // TODO: Set default counter value runtime.set(31415, new Subscription()); if (Array.isArray(metaReducers) && metaReducers.length > 0) { reducerFactory = compose.apply(null, [...metaReducers, reducerFactory]); } return (reducers, initialState) => { const reducer = reducerFactory(reducers); return (state, action) => { state = state === undefined ? initialState : state; return handleEffects(injector, runtime)(reducer(state, action)); }; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlci1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9saWIvc3JjL3JlZHVjZXItZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsT0FBTyxFQUVSLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBTXBDLE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsY0FBMEMsRUFDMUMsUUFBa0IsRUFDbEIsWUFBa0M7SUFLbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQXVDLENBQUM7SUFDL0Qsa0NBQWtDO0lBQ2xDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBMEIsRUFBRSxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUM7SUFFNUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3pELGNBQXNCLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0tBQ2xGO0lBQ0QsT0FBTyxDQUFDLFFBQWdDLEVBQUUsWUFBOEIsRUFBRSxFQUFFO1FBQzFFLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6QyxPQUFPLENBQUMsS0FBb0IsRUFBRSxNQUFTLEVBQUUsRUFBRTtZQUN6QyxLQUFLLEdBQUcsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUUsWUFBa0IsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1lBQzFELE9BQU8sYUFBYSxDQUFJLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFjdGlvbixcbiAgQWN0aW9uUmVkdWNlckZhY3RvcnksXG4gIEFjdGlvblJlZHVjZXJNYXAsXG4gIGNvbXBvc2UsXG4gIE1ldGFSZWR1Y2VyXG59IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGhhbmRsZUVmZmVjdHMgfSBmcm9tICcuL2hhbmRsZS1lZmZlY3RzJztcbmltcG9ydCB7IEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2FuY2VsbGFibGUsIFN1YnNjcmlwdGlvblRva2VufSBmcm9tICcuL2VmZmVjdCc7XG5cbnR5cGUgVHlwZUlkPFQ+ID0gKCkgPT4gVDtcbnR5cGUgSW5pdGlhbFN0YXRlPFQ+ID0gUGFydGlhbDxUPiB8IFR5cGVJZDxQYXJ0aWFsPFQ+PiB8IHZvaWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSdW50aW1lUmVkdWNlckZhY3Rvcnk8VCwgViBleHRlbmRzIEFjdGlvbiA9IEFjdGlvbj4oXG4gIHJlZHVjZXJGYWN0b3J5OiBBY3Rpb25SZWR1Y2VyRmFjdG9yeTxULCBWPixcbiAgaW5qZWN0b3I6IEluamVjdG9yLFxuICBtZXRhUmVkdWNlcnM/OiBNZXRhUmVkdWNlcjxULCBWPltdXG4pOiAoXG4gIHJlZHVjZXJzOiBBY3Rpb25SZWR1Y2VyTWFwPFQsIFY+LFxuICBpbml0aWFsU3RhdGU/OiBJbml0aWFsU3RhdGU8VD5cbikgPT4gKHN0YXRlOiBUIHwgdW5kZWZpbmVkLCBhY3Rpb246IFYpID0+IFQge1xuICBjb25zdCBydW50aW1lID0gbmV3IE1hcDxTdWJzY3JpcHRpb25Ub2tlbiwgQ2FuY2VsbGFibGU8YW55Pj4oKTtcbiAgLy8gVE9ETzogU2V0IGRlZmF1bHQgY291bnRlciB2YWx1ZVxuICBydW50aW1lLnNldCgzMTQxNSBhcyBTdWJzY3JpcHRpb25Ub2tlbiwgbmV3IFN1YnNjcmlwdGlvbigpKTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShtZXRhUmVkdWNlcnMpICYmIG1ldGFSZWR1Y2Vycy5sZW5ndGggPiAwKSB7XG4gICAgKHJlZHVjZXJGYWN0b3J5IGFzIGFueSkgPSBjb21wb3NlLmFwcGx5KG51bGwsIFsuLi5tZXRhUmVkdWNlcnMsIHJlZHVjZXJGYWN0b3J5XSk7XG4gIH1cbiAgcmV0dXJuIChyZWR1Y2VyczogQWN0aW9uUmVkdWNlck1hcDxULCBWPiwgaW5pdGlhbFN0YXRlPzogSW5pdGlhbFN0YXRlPFQ+KSA9PiB7XG4gICAgY29uc3QgcmVkdWNlciA9IHJlZHVjZXJGYWN0b3J5KHJlZHVjZXJzKTtcbiAgICByZXR1cm4gKHN0YXRlOiBUIHwgdW5kZWZpbmVkLCBhY3Rpb246IFYpID0+IHtcbiAgICAgIHN0YXRlID0gc3RhdGUgPT09IHVuZGVmaW5lZCA/IChpbml0aWFsU3RhdGUgYXMgVCkgOiBzdGF0ZTtcbiAgICAgIHJldHVybiBoYW5kbGVFZmZlY3RzPFQ+KGluamVjdG9yLCBydW50aW1lKShyZWR1Y2VyKHN0YXRlLCBhY3Rpb24pKTtcbiAgICB9O1xuICB9O1xufVxuIl19