UNPKG

@webex/common

Version:

Common utilities for Cisco Webex

71 lines (65 loc) 2.21 kB
"use strict"; var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property"); var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault"); _Object$defineProperty(exports, "__esModule", { value: true }); exports.proxyEvents = proxyEvents; exports.transferEvents = transferEvents; var _apply = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/apply")); var _lodash = require("lodash"); /*! * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file. */ /** * Proxies the event binding methods of emitter onto proxy * @param {EventEmitter|EventEmitterProxy} emitter * @param {mixed} proxy (probably a promise) * @returns {EventEmitter} Returns the source emitter to ease use in promise chains */ function proxyEvents(emitter, proxy) { ['on', 'once'].forEach(function (key) { proxy[key] = function () { emitter[key].apply(emitter, arguments); return proxy; }; }); return emitter; } /** * Given a list of events, fires them on drain when they're emitted from source * @param {Array|string} events * @param {EventEmitter} source * @param {EventEmitter} drain * @returns {undefined} */ function transferEvents(events, source, drain) { events = (0, _lodash.isArray)(events) ? events : [events]; events.forEach(function (event) { if (source.on) { source.on(event, function () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return emit.apply(void 0, [drain, event].concat(args)); }); } }); } /** * Emits an event * @param {EventEmitter} target The EventEmitter from which to emit an event * @returns {mixed} */ function emit(target) { var method = target.trigger || target.emit; /* istanbul ignore if */ if (!method) { throw new Error('count not determine emit method'); } for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { rest[_key2 - 1] = arguments[_key2]; } return (0, _apply.default)(method, target, rest); } //# sourceMappingURL=events.js.map