apeman-react-mixins
Version:
React mixin set of apeman.
72 lines (57 loc) • 4.29 kB
JavaScript
/**
* Mixin for cycle.
* @mixin ApCycleMixin
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _defaults = require('defaults');
var _defaults2 = _interopRequireDefault(_defaults);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var noop = function noop(values) {
return values;
};
var reject = function reject(err) {
return Promise.reject(err);
};
/** @lends ApCycleMixin */
var ApCycleMixin = {
// --------------------
// Custom
// --------------------
$apCycleMixed: true,
/**
* Execute something with cycle.
* @param {string|number|object} params - Parameters.
* @param {object} handlers - Fetch handlers.
*/
cycle: function cycle(params, handlers) {
var s = this;
(0, _defaults2.default)(handlers, {
will: noop,
do: noop,
did: noop,
catch: reject
});
return Promise.resolve(params).then(function (params) {
return handlers.will(params);
}).then(function (params) {
return handlers.do(params);
}).then(function (result) {
return handlers.did(result);
}).catch(function (err) {
return handlers.catch(err);
});
}
// --------------------
// Specs
// --------------------
// --------------------
// Lifecycle
// --------------------
};
exports.default = Object.freeze(ApCycleMixin);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX2N5Y2xlX21peGluLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBOzs7Ozs7QUFFQTs7OztBQUNBOzs7Ozs7QUFFQSxJQUFJLE9BQU8sU0FBUCxJQUFPLENBQUMsTUFBRDtBQUFBLFNBQVksTUFBWjtBQUFBLENBQVg7QUFDQSxJQUFJLFNBQVMsU0FBVCxNQUFTLENBQUMsR0FBRDtBQUFBLFNBQVMsUUFBUSxNQUFSLENBQWUsR0FBZixDQUFUO0FBQUEsQ0FBYjs7O0FBR0EsSUFBSSxlQUFlOzs7OztBQUtqQixpQkFBZSxJQUxFOzs7Ozs7O0FBWWpCLE9BWmlCLGlCQVlWLE1BWlUsRUFZRixRQVpFLEVBWVE7QUFDdkIsUUFBTSxJQUFJLElBQVY7QUFDQSw0QkFBUyxRQUFULEVBQW1CO0FBQ2pCLFlBQU0sSUFEVztBQUVqQixVQUFJLElBRmE7QUFHakIsV0FBSyxJQUhZO0FBSWpCLGFBQU87QUFKVSxLQUFuQjtBQU1BLFdBQU8sUUFDSixPQURJLENBQ0ksTUFESixFQUVKLElBRkksQ0FFQyxVQUFDLE1BQUQ7QUFBQSxhQUFZLFNBQVMsSUFBVCxDQUFjLE1BQWQsQ0FBWjtBQUFBLEtBRkQsRUFHSixJQUhJLENBR0MsVUFBQyxNQUFEO0FBQUEsYUFBWSxTQUFTLEVBQVQsQ0FBWSxNQUFaLENBQVo7QUFBQSxLQUhELEVBSUosSUFKSSxDQUlDLFVBQUMsTUFBRDtBQUFBLGFBQVksU0FBUyxHQUFULENBQWEsTUFBYixDQUFaO0FBQUEsS0FKRCxFQUtKLEtBTEksQ0FLRSxVQUFDLEdBQUQ7QUFBQSxhQUFTLFNBQVMsS0FBVCxDQUFlLEdBQWYsQ0FBVDtBQUFBLEtBTEYsQ0FBUDtBQU1EOzs7Ozs7Ozs7O0FBMUJnQixDQUFuQjs7a0JBc0NlLE9BQU8sTUFBUCxDQUFjLFlBQWQsQyIsImZpbGUiOiJhcF9jeWNsZV9taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LW1peGlucy9saWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1peGluIGZvciBjeWNsZS5cbiAqIEBtaXhpbiBBcEN5Y2xlTWl4aW5cbiAqL1xuXG4ndXNlIHN0cmljdCdcblxuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzIGFzIHR5cGVzfSBmcm9tICdyZWFjdCdcbmltcG9ydCBkZWZhdWx0cyBmcm9tICdkZWZhdWx0cydcblxubGV0IG5vb3AgPSAodmFsdWVzKSA9PiB2YWx1ZXNcbmxldCByZWplY3QgPSAoZXJyKSA9PiBQcm9taXNlLnJlamVjdChlcnIpXG5cbi8qKiBAbGVuZHMgQXBDeWNsZU1peGluICovXG5sZXQgQXBDeWNsZU1peGluID0ge1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEN1c3RvbVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAkYXBDeWNsZU1peGVkOiB0cnVlLFxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHNvbWV0aGluZyB3aXRoIGN5Y2xlLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8b2JqZWN0fSBwYXJhbXMgLSBQYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gaGFuZGxlcnMgLSBGZXRjaCBoYW5kbGVycy5cbiAgICovXG4gIGN5Y2xlIChwYXJhbXMsIGhhbmRsZXJzKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBkZWZhdWx0cyhoYW5kbGVycywge1xuICAgICAgd2lsbDogbm9vcCxcbiAgICAgIGRvOiBub29wLFxuICAgICAgZGlkOiBub29wLFxuICAgICAgY2F0Y2g6IHJlamVjdFxuICAgIH0pXG4gICAgcmV0dXJuIFByb21pc2VcbiAgICAgIC5yZXNvbHZlKHBhcmFtcylcbiAgICAgIC50aGVuKChwYXJhbXMpID0+IGhhbmRsZXJzLndpbGwocGFyYW1zKSlcbiAgICAgIC50aGVuKChwYXJhbXMpID0+IGhhbmRsZXJzLmRvKHBhcmFtcykpXG4gICAgICAudGhlbigocmVzdWx0KSA9PiBoYW5kbGVycy5kaWQocmVzdWx0KSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiBoYW5kbGVycy5jYXRjaChlcnIpKVxuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gU3BlY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBMaWZlY3ljbGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBPYmplY3QuZnJlZXplKEFwQ3ljbGVNaXhpbilcbiJdfQ==