UNPKG

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
'use strict'; 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);