attadux
Version:
Implementation of the redux-modular-ducks, forked from the extensible-duck implementation and extended to include spected validators, state machines, helpers, web workers, effect handling, action multipliers, action enhancers, action throttling/debouncing
76 lines (58 loc) • 3.69 kB
JavaScript
;
exports.__esModule = true;
exports.extendDuck = exports.createExtenderForDuck = exports.createDuck = undefined;
var _uncurryN = require('ramda/src/uncurryN');
var _uncurryN2 = _interopRequireDefault(_uncurryN);
var _always = require('ramda/src/always');
var _always2 = _interopRequireDefault(_always);
var _converge = require('ramda/src/converge');
var _converge2 = _interopRequireDefault(_converge);
var _mergeDeepRight = require('ramda/src/mergeDeepRight');
var _mergeDeepRight2 = _interopRequireDefault(_mergeDeepRight);
var _compose = require('ramda/src/compose');
var _compose2 = _interopRequireDefault(_compose);
var _schema = require('./schema');
var _create = require('./create');
var _extend = require('./extend');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/**
* Builds a duck from a set of options (whose keys are validated against
* a whitelist and corresponding schema), including selectors, action creators,
* state machines, validators, a reducer and basic metadata
* (including the required 'namespace' and 'store' name).
*
* @func
* @sig {k: v} -> {k: v}
* @param {Object} options A set of functions, objects (of various schema types)
* and basic metadata which will go into the finished duck.
* @returns {Object} A fully built duck, complete with types, action creators,
* a reducer, selectors, state machines, validators and some basic metadata.
*/
var createDuck = exports.createDuck = (0, _compose2['default'])(Object.freeze, _create.createDuckReducer, _create.createDuckEffects, _create.createDuckWorkers, _create.createValidationMiddlewareHelpers, _create.createDuckActionMultipliers, _create.createDuckActionEnhancers, _create.createDuckActionCreators, _create.createDuckDebouncers, _create.createDuckThrottlers, _create.createDuckSelectors, _create.createDuckInitialState, _create.createDuckMachines, _create.createDuckValidators, _create.createDuckQueries, _create.createDuckMetadata, (0, _mergeDeepRight2['default'])(_schema.duxDefaults));
/**
* Builds a function that will extend a duck with options to be supplied at a later time.
* Those options (supplied later) may include selectors, action creators, state machines,
* validators, a reducer and basic metadata (including the required 'namespace' and 'store' name).
*
* @func
* @sig {k: v} -> ({k: v} -> {k: v})
* @param {Object} duck A 'parent' duck whose own options will be merged with those supplied for the new (child) duck.
* @returns {Object} An extender function, ready to be supplied a set of options to extend the original duck.
*/
var createExtenderForDuck = exports.createExtenderForDuck = (0, _converge2['default'])(_compose2['default'], [(0, _always2['default'])(createDuck), _extend.createDuckExtender]);
/**
* Builds a duck from an existing duck _and_ a set of options for a new duck.
* This function is meant to be invoked when both the duck and the child options
* are available together (not a curried function).
*
* @func
* @sig {k: v} -> {k: v} -> {k: v}
* @param {Object} duck A 'parent' duck whose own options will be merged with
* those supplied for the new (child) duck.
* @param {Object} options A set of functions, objects (of various schema types)
* and basic metadata which will go into the finished duck, merged with the parent duck.
* @returns {Object} A fully built duck, complete with types, action creators,
* a reducer, selectors, state machines, validators and some basic metadata,
* merged from the parent duck along with the options supplied for the new duck.
*/
var extendDuck = exports.extendDuck = (0, _uncurryN2['default'])(2, createExtenderForDuck);