redux-vertical
Version:
Build redux vertically
34 lines • 1.46 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const invariant_1 = __importDefault(require("invariant"));
const toString_1 = __importDefault(require("./utils/toString"));
const identity = (x) => x;
function createAction(_type, payloadCreator = identity, metaCreator) {
invariant_1.default(_type, 'type cannot be undefined or null');
invariant_1.default(typeof payloadCreator === 'function' || payloadCreator === null, 'Expected payloadCreator to be a function, undefined or null');
const finalPayloadCreator = payloadCreator === null || payloadCreator === identity
? identity
: (head, ...args) => head instanceof Error ? head : payloadCreator(head, ...args);
const hasMeta = typeof metaCreator === 'function';
const type = toString_1.default(_type);
const actionCreator = (...args) => {
const payload = finalPayloadCreator(...args);
const action = { type };
if (payload instanceof Error) {
action.error = true;
}
if (payload !== undefined) {
action.payload = payload;
}
if (hasMeta) {
action.meta = metaCreator(...args);
}
return action;
};
return actionCreator;
}
exports.default = createAction;
//# sourceMappingURL=create-action.js.map