Home Reference Source

src/handlerFactory.js

import createActions from './createActions';
import {createLogger} from './utils/logging';

export default function handlerFactory(action, {
    namespace='global',
    logger=createLogger(action.id || action)
}={}) {
    const name = action.id || action;
    action = typeof action === 'string' ? createActions(namespace, action)[action] : action;
    return {
        create: (createDefinition) => {
            const definition = {
                name,
                action,
                namespace,
                logger
            };
            if (typeof createDefinition === 'function') {
                return Object.assign(definition, createDefinition({namespace, logger}));
            }
            else {
                return Object.assign(definition, createDefinition);
            }
        }
    };
}