ruddy
Version:
Modularized state-management tools for modern front-end applications. Manage dispatched messages in a clean and predictable way for either small or large scale projects
76 lines (58 loc) • 3.67 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);