UNPKG

fluorine-lib

Version:

Reactive state and side effect management for React using a single stream of actions

70 lines (50 loc) 2.57 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; exports.default = wrapActions; var _assert = require('./assert'); var assert = _interopRequireDefault(_assert).default; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function wrapActions(observer, arg) { var wrapRecursively = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; assert((typeof observer === 'undefined' ? 'undefined' : _typeof(observer)) === 'object' && typeof observer.next === 'function', 'Expected observer to be an object containing at least a next method.'); var transform = function transform(fn) { return function () { return observer.next(fn.apply(undefined, arguments)); }; }; var wrap = function wrap(input) { var keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; if (typeof input === 'function') { return transform(input); } if (Array.isArray(input)) { return input.map(function (x, key) { if (wrapRecursively) { return wrap(x, keys.concat(key)); } assert(typeof x === 'function', 'wrapActions: Expected a `function`' + (keys.length ? ' in ' + keys.toString() : '') + ' but got `' + (typeof x === 'undefined' ? 'undefined' : _typeof(x)) + '`.'); return transform(x); }); } if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object') { return Object.keys(input).reduce(function (prev, key) { if (input.hasOwnProperty(key)) { var _x3 = input[key]; if (wrapRecursively) { prev[key] = wrap(_x3, keys.concat(key)); } else { assert(typeof _x3 === 'function', 'wrapActions: Expected a `function`' + (keys.length ? ' in ' + keys.toString() : '') + ' but got `' + (typeof _x3 === 'undefined' ? 'undefined' : _typeof(_x3)) + '`.'); prev[key] = transform(_x3); } } return prev; }, {}); } throw new Error('wrapActions: Expected a `function`' + (keys.length ? ' in ' + keys.toString() : '') + ' but got `' + (typeof x === 'undefined' ? 'undefined' : _typeof(x)) + '`.'); }; return wrap(arg); } module.exports = exports['default'];