UNPKG

redux-dispatcher

Version:

All-in-one simple solution to manage actions with less code

44 lines (34 loc) 1.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.withResult = exports.injectResult = void 0; const withResult = dispatcher => { return (...args) => { const action = typeof dispatcher === "function" ? dispatcher(...args) : dispatcher || {}; return injectResult(action); }; }; exports.withResult = withResult; const injectResult = action => { let callback; const $result = () => { const promise = new Promise(resolve => callback = resolve); /** * provide an alternative way to set result when action is destructured: * const { $result } = withResult(...)(...) * $result.value = something */ Object.defineProperty(promise, "value", { set: setResult }); return promise; }; // `callback` is actually `resolve` (from Promise) at the time setter is called const setResult = data => callback(data); Object.defineProperty(action, "$result", { get: $result, set: setResult }); return action; }; exports.injectResult = injectResult;