ngrx-reducer-effects
Version:
Return side-effects as data from your NgRx reducers
47 lines • 8.4 kB
JavaScript
const handler = {
get() {
return proxy;
}
};
const target = {};
const proxy = new Proxy(target, handler);
export function addEffectDescriptions(state, effects) {
const effectDescriptions = effects.map((effect) => ({
type: effect.type,
params: effect.params,
nextAction: hasNextAction(effect) ? effect.next(proxy).type : undefined,
errorAction: hasErrorAction(effect) ? effect.error(proxy).type : undefined,
completeAction: hasCompleteAction(effect) ? effect.complete().type : undefined,
subscribeAction: hasSubscribeAction(effect)
? effect.subscribe(0).type
: undefined,
resolveAction: hasResolveAction(effect) ? effect.resolve(proxy).type : undefined,
rejectAction: hasRejectAction(effect) ? effect.reject(proxy).type : undefined,
unsubscribeAction: hasUnsubscribeAction(effect)
? effect.unsubscribe(0).type
: undefined
}));
return Object.assign(state, { __effects__: effectDescriptions });
}
function hasNextAction(effect) {
return effect.next !== undefined;
}
function hasErrorAction(effect) {
return effect.error !== undefined;
}
function hasCompleteAction(effect) {
return effect.complete !== undefined;
}
function hasSubscribeAction(effect) {
return effect.subscribe !== undefined;
}
function hasResolveAction(effect) {
return effect.resolve !== undefined;
}
function hasRejectAction(effect) {
return effect.reject !== undefined;
}
function hasUnsubscribeAction(effect) {
return effect.unsubscribe !== undefined;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LWRlc2NyaXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbW9kdWxlcy9saWIvc3JjL2VmZmVjdC1kZXNjcmlwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxNQUFNLE9BQU8sR0FBRztJQUNkLEdBQUc7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRixDQUFDO0FBRUYsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUV6QyxNQUFNLFVBQVUscUJBQXFCLENBQWtCLEtBQWEsRUFBRSxPQUE0QjtJQUNoRyxNQUFNLGtCQUFrQixHQUF3QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtRQUNqQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsVUFBVSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDdkUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDMUUsY0FBYyxFQUFFLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzlFLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDekMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBc0IsQ0FBQyxDQUFDLElBQUk7WUFDL0MsQ0FBQyxDQUFDLFNBQVM7UUFDYixhQUFhLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ2hGLFlBQVksRUFBRSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzdFLGlCQUFpQixFQUFFLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztZQUM3QyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFzQixDQUFDLENBQUMsSUFBSTtZQUNqRCxDQUFDLENBQUMsU0FBUztLQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0osT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFDLFdBQVcsRUFBRSxrQkFBa0IsRUFBQyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNwQixNQUFTO0lBRVQsT0FBUSxNQUE4QixDQUFDLElBQUksS0FBSyxTQUFTLENBQUM7QUFDNUQsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUNyQixNQUFTO0lBRVQsT0FBUSxNQUE4QixDQUFDLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDN0QsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQ3hCLE1BQVM7SUFFVCxPQUFRLE1BQThCLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQztBQUNoRSxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FDekIsTUFBUztJQUVULE9BQVEsTUFBOEIsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUN2QixNQUFTO0lBRVQsT0FBUSxNQUEyQixDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUM7QUFDNUQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUN0QixNQUFTO0lBRVQsT0FBUSxNQUEyQixDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUM7QUFDM0QsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQzNCLE1BQVM7SUFFVCxPQUFRLE1BQWtDLENBQUMsV0FBVyxLQUFLLFNBQVMsQ0FBQztBQUN2RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYW5jZWxsYXRpb25Ub2tlbiwgT2JzZXJ2YWJsZUVmZmVjdCwgUHJvbWlzZUVmZmVjdCwgU3Vic2NyaXB0aW9uVG9rZW4sIFVuc3Vic2NyaXB0aW9uRWZmZWN0fSBmcm9tICcuL2VmZmVjdCc7XG5pbXBvcnQge0VmZmVjdENvbmZpZ30gZnJvbSAnLi9lZmZlY3QtY29uZmlnJztcblxuaW50ZXJmYWNlIEVmZmVjdERlc2NyaXB0aW9uIHtcbiAgdHlwZT86IHN0cmluZztcbiAgcGFyYW1zPzogYW55O1xuICBuZXh0QWN0aW9uPzogc3RyaW5nO1xuICBlcnJvckFjdGlvbj86IHN0cmluZztcbiAgY29tcGxldGVBY3Rpb24/OiBzdHJpbmc7XG4gIHJlc29sdmVBY3Rpb24/OiBzdHJpbmc7XG4gIHJlamVjdEFjdGlvbj86IHN0cmluZztcbiAgc3Vic2NyaWJlQWN0aW9uPzogc3RyaW5nO1xuICB1bnN1YnNjcmliZUFjdGlvbj86IHN0cmluZztcbn1cblxuY29uc3QgaGFuZGxlciA9IHtcbiAgZ2V0KCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHByb3h5O1xuICB9XG59O1xuXG5jb25zdCB0YXJnZXQgPSB7fTtcbmNvbnN0IHByb3h5ID0gbmV3IFByb3h5KHRhcmdldCwgaGFuZGxlcik7XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRFZmZlY3REZXNjcmlwdGlvbnM8VFN0YXRlLCBURWZmZWN0PihzdGF0ZTogVFN0YXRlLCBlZmZlY3RzOiBFZmZlY3RDb25maWc8YW55PltdKTogYW55IHtcbiAgY29uc3QgZWZmZWN0RGVzY3JpcHRpb25zOiBFZmZlY3REZXNjcmlwdGlvbltdID0gZWZmZWN0cy5tYXAoKGVmZmVjdCkgPT4gKHtcbiAgICB0eXBlOiBlZmZlY3QudHlwZSxcbiAgICBwYXJhbXM6IGVmZmVjdC5wYXJhbXMsXG4gICAgbmV4dEFjdGlvbjogaGFzTmV4dEFjdGlvbihlZmZlY3QpID8gZWZmZWN0Lm5leHQocHJveHkpLnR5cGUgOiB1bmRlZmluZWQsXG4gICAgZXJyb3JBY3Rpb246IGhhc0Vycm9yQWN0aW9uKGVmZmVjdCkgPyBlZmZlY3QuZXJyb3IocHJveHkpLnR5cGUgOiB1bmRlZmluZWQsXG4gICAgY29tcGxldGVBY3Rpb246IGhhc0NvbXBsZXRlQWN0aW9uKGVmZmVjdCkgPyBlZmZlY3QuY29tcGxldGUoKS50eXBlIDogdW5kZWZpbmVkLFxuICAgIHN1YnNjcmliZUFjdGlvbjogaGFzU3Vic2NyaWJlQWN0aW9uKGVmZmVjdClcbiAgICAgID8gZWZmZWN0LnN1YnNjcmliZSgwIGFzIFN1YnNjcmlwdGlvblRva2VuKS50eXBlXG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICByZXNvbHZlQWN0aW9uOiBoYXNSZXNvbHZlQWN0aW9uKGVmZmVjdCkgPyBlZmZlY3QucmVzb2x2ZShwcm94eSkudHlwZSA6IHVuZGVmaW5lZCxcbiAgICByZWplY3RBY3Rpb246IGhhc1JlamVjdEFjdGlvbihlZmZlY3QpID8gZWZmZWN0LnJlamVjdChwcm94eSkudHlwZSA6IHVuZGVmaW5lZCxcbiAgICB1bnN1YnNjcmliZUFjdGlvbjogaGFzVW5zdWJzY3JpYmVBY3Rpb24oZWZmZWN0KVxuICAgICAgPyBlZmZlY3QudW5zdWJzY3JpYmUoMCBhcyBDYW5jZWxsYXRpb25Ub2tlbikudHlwZVxuICAgICAgOiB1bmRlZmluZWRcbiAgfSkpO1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdGF0ZSwge19fZWZmZWN0c19fOiBlZmZlY3REZXNjcmlwdGlvbnN9KTtcbn1cblxuZnVuY3Rpb24gaGFzTmV4dEFjdGlvbjxULCBFIGV4dGVuZHMgRWZmZWN0Q29uZmlnPFQ+PihcbiAgZWZmZWN0OiBFXG4pOiBlZmZlY3QgaXMgRSAmIHsgbmV4dDogTm9uTnVsbGFibGU8T2JzZXJ2YWJsZUVmZmVjdDxUPlsnbmV4dCddPiB9IHtcbiAgcmV0dXJuIChlZmZlY3QgYXMgT2JzZXJ2YWJsZUVmZmVjdDxUPikubmV4dCAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYXNFcnJvckFjdGlvbjxULCBFIGV4dGVuZHMgRWZmZWN0Q29uZmlnPFQ+PihcbiAgZWZmZWN0OiBFXG4pOiBlZmZlY3QgaXMgRSAmIHsgZXJyb3I6IE5vbk51bGxhYmxlPE9ic2VydmFibGVFZmZlY3Q8VD5bJ2Vycm9yJ10+IH0ge1xuICByZXR1cm4gKGVmZmVjdCBhcyBPYnNlcnZhYmxlRWZmZWN0PFQ+KS5lcnJvciAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYXNDb21wbGV0ZUFjdGlvbjxULCBFIGV4dGVuZHMgRWZmZWN0Q29uZmlnPFQ+PihcbiAgZWZmZWN0OiBFXG4pOiBlZmZlY3QgaXMgRSAmIHsgY29tcGxldGU6IE5vbk51bGxhYmxlPE9ic2VydmFibGVFZmZlY3Q8VD5bJ2NvbXBsZXRlJ10+IH0ge1xuICByZXR1cm4gKGVmZmVjdCBhcyBPYnNlcnZhYmxlRWZmZWN0PFQ+KS5jb21wbGV0ZSAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYXNTdWJzY3JpYmVBY3Rpb248VCwgRSBleHRlbmRzIEVmZmVjdENvbmZpZzxUPj4oXG4gIGVmZmVjdDogRVxuKTogZWZmZWN0IGlzIEUgJiB7IHN1YnNjcmliZTogTm9uTnVsbGFibGU8T2JzZXJ2YWJsZUVmZmVjdDxUPlsnc3Vic2NyaWJlJ10+IH0ge1xuICByZXR1cm4gKGVmZmVjdCBhcyBPYnNlcnZhYmxlRWZmZWN0PFQ+KS5zdWJzY3JpYmUgIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaGFzUmVzb2x2ZUFjdGlvbjxULCBFIGV4dGVuZHMgRWZmZWN0Q29uZmlnPFQ+PihcbiAgZWZmZWN0OiBFXG4pOiBlZmZlY3QgaXMgRSAmIHsgcmVzb2x2ZTogTm9uTnVsbGFibGU8UHJvbWlzZUVmZmVjdDxUPlsncmVzb2x2ZSddPiB9IHtcbiAgcmV0dXJuIChlZmZlY3QgYXMgUHJvbWlzZUVmZmVjdDxUPikucmVzb2x2ZSAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYXNSZWplY3RBY3Rpb248VCwgRSBleHRlbmRzIEVmZmVjdENvbmZpZzxUPj4oXG4gIGVmZmVjdDogRVxuKTogZWZmZWN0IGlzIEUgJiB7IHJlamVjdDogTm9uTnVsbGFibGU8UHJvbWlzZUVmZmVjdDxUPlsncmVqZWN0J10+IH0ge1xuICByZXR1cm4gKGVmZmVjdCBhcyBQcm9taXNlRWZmZWN0PFQ+KS5yZWplY3QgIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaGFzVW5zdWJzY3JpYmVBY3Rpb248VCwgRSBleHRlbmRzIEVmZmVjdENvbmZpZzxUPj4oXG4gIGVmZmVjdDogRVxuKTogZWZmZWN0IGlzIEUgJiB7IHVuc3Vic2NyaWJlOiBOb25OdWxsYWJsZTxVbnN1YnNjcmlwdGlvbkVmZmVjdDxUPlsndW5zdWJzY3JpYmUnXT4gfSB7XG4gIHJldHVybiAoZWZmZWN0IGFzIFVuc3Vic2NyaXB0aW9uRWZmZWN0PFQ+KS51bnN1YnNjcmliZSAhPT0gdW5kZWZpbmVkO1xufVxuIl19