action-names
Version:
Standard actions names for Flux
42 lines (33 loc) • 1.35 kB
JavaScript
var snakeCase = require('lodash.snakecase');
var trim = require('lodash.trim');
function addGroup(resource, actionTypes, group, config) {
var upperResource = snakeCase(resource).toUpperCase();
var upperGroup = group.toUpperCase();
var start = upperResource + '_' + upperGroup + '_START';
var success = upperResource + '_' + upperGroup + '_SUCCESS';
var error = upperResource + '_' + upperGroup + '_ERROR';
var startAlias = group + 'Start';
var successAlias = group + 'Success';
var errorAlias = group + 'Error';
actionTypes[start] = start;
actionTypes[success] = success;
actionTypes[error] = error;
if (config.addAlias) {
actionTypes[startAlias] = start;
actionTypes[successAlias] = success;
actionTypes[errorAlias] = error;
}
}
module.exports = function(resource, config) {
if (resource == null) throw new Error('Expected resource');
config = config || {};
if (config.addAlias == null) config.addAlias = true;
resource = trim(resource);
if (resource == '') throw new Error('Expected resource');
var actionTypes = {};
addGroup(resource, actionTypes, 'fetch', config);
addGroup(resource, actionTypes, 'create', config);
addGroup(resource, actionTypes, 'update', config);
addGroup(resource, actionTypes, 'delete', config);
return actionTypes;
}