ngrx-run
Version:
Return side-effects as data from your NgRx reducers
19 lines • 3.96 kB
JavaScript
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