27 lines
648 B
JavaScript
27 lines
648 B
JavaScript
export function isActionGen(action) {
|
|
return typeof action === 'function' && action.type;
|
|
}
|
|
|
|
export function action(type, payloadFunction, transformer) {
|
|
let generator = function (...payloadArg) {
|
|
const result = { type };
|
|
|
|
if (payloadFunction) {
|
|
result.payload = payloadFunction(...payloadArg);
|
|
} else {
|
|
if (payloadArg[0] !== undefined) result.payload = payloadArg[0];
|
|
}
|
|
|
|
return result;
|
|
};
|
|
|
|
if (transformer) {
|
|
const orig = generator;
|
|
generator = (...args) => transformer(orig(...args), args);
|
|
}
|
|
|
|
generator.type = type;
|
|
|
|
return generator;
|
|
}
|