UNPKG

edo

Version:
312 lines (256 loc) 43.2 kB
"use strict";var _symbol = require("babel-runtime/core-js/symbol");var _symbol2 = _interopRequireDefault(_symbol);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };} /*; @submodule-license: The MIT License (MIT) @mit-license Copyright (@c) 2017 Richeve Siodina Bebedor @email: richeve.bebedor@gmail.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @end-submodule-license @submodule-configuration: { "package": "edo", "path": "edo/listener.module.js", "file": "listener.module.js", "module": "edo", "author": "Richeve S. Bebedor", "eMail": "richeve.bebedor@gmail.com", "contributors": [ "John Lenon Maghanoy <johnlenonmaghanoy@gmail.com>", "Vinse Vinalon <vinsevinalon@gmail.com>" ], "repository": "https://github.com/volkovasystems/edo.git", "test": "edo-test.js", "global": false, "internal": true } @end-submodule-configuration @submodule-documentation: Handler class factory. @end-submodule-documentation @include: { "arkount": "arkount", "called": "called", "clazof": "clazof", "diatom": "diatom", "doubt": "doubt", "execd": "execd", "exorcise": "exorcise", "falzy": "falzy", "filled": "filled", "harden": "harden", "idntty": "idntty", "kurse": "kurse", "mrkd": "mrkd", "ntrprt": "ntrprt", "posp": "posp", "protype": "protype", "raze": "raze", "statis": "statis", "zelf": "zelf" } @end-include */ var arkount = require("arkount"); var called = require("called"); var clazof = require("clazof"); var diatom = require("diatom"); var doubt = require("doubt"); var execd = require("execd"); var falzy = require("falzy"); var filled = require("filled"); var harden = require("harden"); var idntty = require("idntty"); var kurse = require("kurse"); var mrkd = require("mrkd"); var ntrprt = require("ntrprt"); var posp = require("posp"); var protype = require("protype"); var raze = require("raze"); var statis = require("statis"); var zelf = require("zelf"); var CONTEXT = (0, _symbol2.default)("context"); var EVENT = (0, _symbol2.default)("event"); var ID = (0, _symbol2.default)("id"); var LINK = (0, _symbol2.default)("link"); var HANDLER = (0, _symbol2.default)("handler"); var OWNER = (0, _symbol2.default)("owner"); var listener = function listener() { var Handler = diatom("Handler"); statis(Handler). attach(HANDLER, []). implement("push", function push(handler) {var _this = this; /*; @meta-configuration: { "handler:required": [ "function", "[function]" ] } @end-meta-configuration */ if (doubt(handler, AS_ARRAY)) { raze(handler).forEach(function (handler) {return _this.push(handler);}); return this; } if (!protype(handler, FUNCTION)) { throw new Error("invalid handler function"); } this[HANDLER].push(kurse(handler)); statis(handler). implement("ownedBy", function ownedBy(owner) { /*; @meta-configuration: { "owner:required": "Event" } @end-meta-configuration */ if (falzy(owner) || !clazof(owner, "Event")) { throw new Error("invalid owner"); } if (mrkd(OWNER, this)) { return this; } harden(OWNER, idntty(owner), this); return this; }). implement("linkedTo", function linkedTo(link) { /*; @meta-configuration: { "link:required": "Event" } @end-meta-configuration */ if (falzy(link) || !clazof(link, "Event")) { throw new Error("invalid link"); } if (mrkd(LINK, this)) { return this; } harden(LINK, idntty(link), this); return this; }). implement("getOwner", function getOwner() { return this[OWNER]; }). implement("getLink", function getLink() { return this[LINK]; }); handler.ownedBy(this[EVENT]); return this; }). implement("merge", function merge(handler) {var _this2 = this; /*; @meta-configuration: { "handler:required": "function" } @end-meta-configuration */ if (!protype(handler, FUNCTION)) { throw new Error("invalid handler function"); } if (clazof(handler, "Handler")) { handler.list().forEach(function (handler) {return _this2.push(handler);}); } return this; }). implement("context", function context(self) { /*; @meta-configuration: { "self:required": "*" } @end-meta-configuration */ this[CONTEXT] = zelf(self); return this; }). implement("register", function register(event) { /*; @meta-configuration: { "event:required": "Event" } @end-meta-configuration */ if (falzy(event) || !clazof(event, "Event")) { throw new Error("invalid event"); } this[EVENT] = event; return this; }). implement("count", function count() { return arkount(this[HANDLER]); }). implement("flush", function flush() { while (filled(this[HANDLER])) {this[HANDLER].pop();} return this; }). implement("list", function list() { return raze(this[HANDLER]); }). implement("lock", function lock() {var _this3 = this; this[HANDLER].forEach(function (handler, index) { _this3[HANDLER][index] = called.bind(_this3[CONTEXT])(handler); }); return this; }); Handler.prototype.initialize = function initialize(parameter) { /*; @meta-configuration: { "parameter": "..." } @end-meta-configuration */ parameter = raze(arguments); this.context = Handler[CONTEXT]; this.event = Handler[EVENT]; this.handler = Handler[HANDLER]; this.execute.apply(this, parameter); return this; }; Handler.prototype.execute = function execute(parameter) {var _this4 = this; /*; @meta-configuration: { "parameter": "..." } @end-meta-configuration */ parameter = raze(arguments); this.handler.reverse().forEach(function (handler) { try { handler.apply(_this4.context, parameter); } catch (error) { _this4.event.emit("error", error); } if (execd(handler)) { posp(_this4.handler, handler); } }); return this; }; return Handler; }; module.exports = listener; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpc3RlbmVyLnN1cHBvcnQuanMiXSwibmFtZXMiOlsiYXJrb3VudCIsInJlcXVpcmUiLCJjYWxsZWQiLCJjbGF6b2YiLCJkaWF0b20iLCJkb3VidCIsImV4ZWNkIiwiZmFsenkiLCJmaWxsZWQiLCJoYXJkZW4iLCJpZG50dHkiLCJrdXJzZSIsIm1ya2QiLCJudHJwcnQiLCJwb3NwIiwicHJvdHlwZSIsInJhemUiLCJzdGF0aXMiLCJ6ZWxmIiwiQ09OVEVYVCIsIkVWRU5UIiwiSUQiLCJMSU5LIiwiSEFORExFUiIsIk9XTkVSIiwibGlzdGVuZXIiLCJIYW5kbGVyIiwiYXR0YWNoIiwiaW1wbGVtZW50IiwicHVzaCIsImhhbmRsZXIiLCJBU19BUlJBWSIsImZvckVhY2giLCJGVU5DVElPTiIsIkVycm9yIiwib3duZWRCeSIsIm93bmVyIiwibGlua2VkVG8iLCJsaW5rIiwiZ2V0T3duZXIiLCJnZXRMaW5rIiwibWVyZ2UiLCJsaXN0IiwiY29udGV4dCIsInNlbGYiLCJyZWdpc3RlciIsImV2ZW50IiwiY291bnQiLCJmbHVzaCIsInBvcCIsImxvY2siLCJpbmRleCIsImJpbmQiLCJwcm90b3R5cGUiLCJpbml0aWFsaXplIiwicGFyYW1ldGVyIiwiYXJndW1lbnRzIiwiZXhlY3V0ZSIsImFwcGx5IiwicmV2ZXJzZSIsImVycm9yIiwiZW1pdCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJnTkFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkVBLElBQU1BLFVBQVVDLFFBQVMsU0FBVCxDQUFoQjtBQUNBLElBQU1DLFNBQVNELFFBQVMsUUFBVCxDQUFmO0FBQ0EsSUFBTUUsU0FBU0YsUUFBUyxRQUFULENBQWY7QUFDQSxJQUFNRyxTQUFTSCxRQUFTLFFBQVQsQ0FBZjtBQUNBLElBQU1JLFFBQVFKLFFBQVMsT0FBVCxDQUFkO0FBQ0EsSUFBTUssUUFBUUws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QUFMLENBQWFDLEtBQWIsQ0FBb0IsSUFBcEIsRUFBMEJILFNBQTFCOztBQUVBLFNBQU8sSUFBUDtBQUNBLEVBbEJEOztBQW9CQTdCLFNBQVEyQixTQUFSLENBQWtCSSxPQUFsQixHQUE0QixTQUFTQSxPQUFULENBQWtCRixTQUFsQixFQUE2QjtBQUN4RDs7Ozs7Ozs7QUFRQUEsY0FBWXZDLEtBQU13QyxTQUFOLENBQVo7O0FBRUEsT0FBSzFCLE9BQUwsQ0FBYTZCLE9BQWIsR0FBd0IzQixPQUF4QixDQUFpQyxVQUFFRixPQUFGLEVBQWU7QUFDL0MsT0FBRztBQUNGQSxZQUFRNEIsS0FBUixDQUFlLE9BQUtmLE9BQXBCLEVBQTZCWSxTQUE3Qjs7QUFFQSxJQUhELENBR0MsT0FBT0ssS0FBUCxFQUFjO0FBQ2QsV0FBS2QsS0FBTCxDQUFXZSxJQUFYLENBQWlCLE9BQWpCLEVBQTBCRCxLQUExQjtBQUNBOztBQUVELE9BQUl0RCxNQUFPd0IsT0FBUCxDQUFKLEVBQXNCO0FBQ3JCaEIsU0FBTSxPQUFLZ0IsT0FBWCxFQUFvQkEsT0FBcEI7QUFDQTtBQUNELEdBWEQ7O0FBYUEsU0FBTyxJQUFQO0FBQ0EsRUF6QkQ7O0FBMkJBLFFBQU9KLE9BQVA7QUFDQSxDQTNNRDs7QUE2TUFvQyxPQUFPQyxPQUFQLEdBQWlCdEMsUUFBakIiLCJmaWxlIjoibGlzdGVuZXIuc3VwcG9ydC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qO1xuXHRAc3VibW9kdWxlLWxpY2Vuc2U6XG5cdFx0VGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cdFx0QG1pdC1saWNlbnNlXG5cblx0XHRDb3B5cmlnaHQgKEBjKSAyMDE3IFJpY2hldmUgU2lvZGluYSBCZWJlZG9yXG5cdFx0QGVtYWlsOiByaWNoZXZlLmJlYmVkb3JAZ21haWwuY29tXG5cblx0XHRQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG5cdFx0b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuXHRcdGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcblx0XHR0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG5cdFx0Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG5cdFx0ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuXHRcdFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuXHRcdGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cblx0XHRUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG5cdFx0SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG5cdFx0RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG5cdFx0QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuXHRcdExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG5cdFx0T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcblx0XHRTT0ZUV0FSRS5cblx0QGVuZC1zdWJtb2R1bGUtbGljZW5zZVxuXG5cdEBzdWJtb2R1bGUtY29uZmlndXJhdGlvbjpcblx0XHR7XG5cdFx0XHRcInBhY2thZ2VcIjogXCJlZG9cIixcblx0XHRcdFwicGF0aFwiOiBcImVkby9saXN0ZW5lci5tb2R1bGUuanNcIixcblx0XHRcdFwiZmlsZVwiOiBcImxpc3RlbmVyLm1vZHVsZS5qc1wiLFxuXHRcdFx0XCJtb2R1bGVcIjogXCJlZG9cIixcblx0XHRcdFwiYXV0aG9yXCI6IFwiUmljaGV2ZSBTLiBCZWJlZG9yXCIsXG5cdFx0XHRcImVNYWlsXCI6IFwicmljaGV2ZS5iZWJlZG9yQGdtYWlsLmNvbVwiLFxuXHRcdFx0XCJjb250cmlidXRvcnNcIjogW1xuXHRcdFx0XHRcIkpvaG4gTGVub24gTWFnaGFub3kgPGpvaG5sZW5vbm1hZ2hhbm95QGdtYWlsLmNvbT5cIixcblx0XHRcdFx0XCJWaW5zZSBWaW5hbG9uIDx2aW5zZXZpbmFsb25AZ21haWwuY29tPlwiXG5cdFx0XHRdLFxuXHRcdFx0XCJyZXBvc2l0b3J5XCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL3ZvbGtvdmFzeXN0ZW1zL2Vkby5naXRcIixcblx0XHRcdFwidGVzdFwiOiBcImVkby10ZXN0LmpzXCIsXG5cdFx0XHRcImdsb2JhbFwiOiBmYWxzZSxcblx0XHRcdFwiaW50ZXJuYWxcIjogdHJ1ZVxuXHRcdH1cblx0QGVuZC1zdWJtb2R1bGUtY29uZmlndXJhdGlvblxuXG5cdEBzdWJtb2R1bGUtZG9jdW1lbnRhdGlvbjpcblx0XHRIYW5kbGVyIGNsYXNzIGZhY3RvcnkuXG5cdEBlbmQtc3VibW9kdWxlLWRvY3VtZW50YXRpb25cblxuXHRAaW5jbHVkZTpcblx0XHR7XG5cdFx0XHRcImFya291bnRcIjogXCJhcmtvdW50XCIsXG5cdFx0XHRcImNhbGxlZFwiOiBcImNhbGxlZFwiLFxuXHRcdFx0XCJjbGF6b2ZcIjogXCJjbGF6b2ZcIixcblx0XHRcdFwiZGlhdG9tXCI6IFwiZGlhdG9tXCIsXG5cdFx0XHRcImRvdWJ0XCI6IFwiZG91YnRcIixcblx0XHRcdFwiZXhlY2RcIjogXCJleGVjZFwiLFxuXHRcdFx0XCJleG9yY2lzZVwiOiBcImV4b3JjaXNlXCIsXG5cdFx0XHRcImZhbHp5XCI6IFwiZmFsenlcIixcblx0XHRcdFwiZmlsbGVkXCI6IFwiZmlsbGVkXCIsXG5cdFx0XHRcImhhcmRlblwiOiBcImhhcmRlblwiLFxuXHRcdFx0XCJpZG50dHlcIjogXCJpZG50dHlcIixcblx0XHRcdFwia3Vyc2VcIjogXCJrdXJzZVwiLFxuXHRcdFx0XCJtcmtkXCI6IFwibXJrZFwiLFxuXHRcdFx0XCJudHJwcnRcIjogXCJudHJwcnRcIixcblx0XHRcdFwicG9zcFwiOiBcInBvc3BcIixcblx0XHRcdFwicHJvdHlwZVwiOiBcInByb3R5cGVcIixcblx0XHRcdFwicmF6ZVwiOiBcInJhemVcIixcblx0XHRcdFwic3RhdGlzXCI6IFwic3RhdGlzXCIsXG5cdFx0XHRcInplbGZcIjogXCJ6ZWxmXCJcblx0XHR9XG5cdEBlbmQtaW5jbHVkZVxuKi9cblxuY29uc3QgYXJrb3VudCA9IHJlcXVpcmUoIFwiYXJrb3VudFwiICk7XG5jb25zdCBjYWxsZWQgPSByZXF1aXJlKCBcImNhbGxlZFwiICk7XG5jb25zdCBjbGF6b2YgPSByZXF1aXJlKCBcImNsYXpvZlwiICk7XG5jb25zdCBkaWF0b20gPSByZXF1aXJlKCBcImRpYXRvbVwiICk7XG5jb25zdCBkb3VidCA9IHJlcXVpcmUoIFwiZG91YnRcIiApO1xuY29uc3QgZXhlY2QgPSByZXF1aXJlKCBcImV4ZWNkXCIgKTtcbmNvbnN0IGZhbHp5ID0gcmVxdWlyZSggXCJmYWx6eVwiICk7XG5jb25zdCBmaWxsZWQgPSByZXF1aXJlKCBcImZpbGxlZFwiICk7XG5jb25zdCBoYXJkZW4gPSByZXF1aXJlKCBcImhhcmRlblwiICk7XG5jb25zdCBpZG50dHkgPSByZXF1aXJlKCBcImlkbnR0eVwiICk7XG5jb25zdCBrdXJzZSA9IHJlcXVpcmUoIFwia3Vyc2VcIiApO1xuY29uc3QgbXJrZCA9IHJlcXVpcmUoIFwibXJrZFwiICk7XG5jb25zdCBudHJwcnQgPSByZXF1aXJlKCBcIm50cnBydFwiICk7XG5jb25zdCBwb3NwID0gcmVxdWlyZSggXCJwb3NwXCIgKTtcbmNvbnN0IHByb3R5cGUgPSByZXF1aXJlKCBcInByb3R5cGVcIiApO1xuY29uc3QgcmF6ZSA9IHJlcXVpcmUoIFwicmF6ZVwiICk7XG5jb25zdCBzdGF0aXMgPSByZXF1aXJlKCBcInN0YXRpc1wiICk7XG5jb25zdCB6ZWxmID0gcmVxdWlyZSggXCJ6ZWxmXCIgKTtcblxuXG5cbmNvbnN0IENPTlRFWFQgPSBTeW1ib2woIFwiY29udGV4dFwiICk7XG5jb25zdCBFVkVOVCA9IFN5bWJvbCggXCJldmVudFwiICk7XG5jb25zdCBJRCA9IFN5bWJvbCggXCJpZFwiICk7XG5jb25zdCBMSU5LID0gU3ltYm9sKCBcImxpbmtcIiApO1xuY29uc3QgSEFORExFUiA9IFN5bWJvbCggXCJoYW5kbGVyXCIgKTtcbmNvbnN0IE9XTkVSID0gU3ltYm9sKCBcIm93bmVyXCIgKTtcblxuY29uc3QgbGlzdGVuZXIgPSBmdW5jdGlvbiBsaXN0ZW5lciggKXtcblx0bGV0IEhhbmRsZXIgPSBkaWF0b20oIFwiSGFuZGxlclwiICk7XG5cblx0XG5cblx0c3RhdGlzKCBIYW5kbGVyIClcblx0XHQuYXR0YWNoKCBIQU5ETEVSLCBbIF0gKVxuXHRcdC5pbXBsZW1lbnQoIFwicHVzaFwiLCBmdW5jdGlvbiBwdXNoKCBoYW5kbGVyICl7XG5cdFx0XHQvKjtcblx0XHRcdFx0QG1ldGEtY29uZmlndXJhdGlvbjpcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcImhhbmRsZXI6cmVxdWlyZWRcIjogW1xuXHRcdFx0XHRcdFx0XHRcImZ1bmN0aW9uXCIsXG5cdFx0XHRcdFx0XHRcdFwiW2Z1bmN0aW9uXVwiXG5cdFx0XHRcdFx0XHRdXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRAZW5kLW1ldGEtY29uZmlndXJhdGlvblxuXHRcdFx0Ki9cblxuXHRcdFx0aWYoIGRvdWJ0KCBoYW5kbGVyLCBBU19BUlJBWSApICl7XG5cdFx0XHRcdHJhemUoIGhhbmRsZXIgKS5mb3JFYWNoKCAoIGhhbmRsZXIgKSA9PiB0aGlzLnB1c2goIGhhbmRsZXIgKSApO1xuXG5cdFx0XHRcdHJldHVybiB0aGlzO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiggIXByb3R5cGUoIGhhbmRsZXIsIEZVTkNUSU9OICkgKXtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKCBcImludmFsaWQgaGFuZGxlciBmdW5jdGlvblwiICk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXNbIEhBTkRMRVIgXS5wdXNoKCBrdXJzZSggaGFuZGxlciApICk7XG5cblx0XHRcdHN0YXRpcyggaGFuZGxlciApXG5cdFx0XHRcdC5pbXBsZW1lbnQoIFwib3duZWRCeVwiLCBmdW5jdGlvbiBvd25lZEJ5KCBvd25lciApe1xuXHRcdFx0XHRcdC8qO1xuXHRcdFx0XHRcdFx0QG1ldGEtY29uZmlndXJhdGlvbjpcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFwib3duZXI6cmVxdWlyZWRcIjogXCJFdmVudFwiXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBlbmQtbWV0YS1jb25maWd1cmF0aW9uXG5cdFx0XHRcdFx0Ki9cblxuXHRcdFx0XHRcdGlmKCBmYWx6eSggb3duZXIgKSB8fCAhY2xhem9mKCBvd25lciwgXCJFdmVudFwiICkgKXtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvciggXCJpbnZhbGlkIG93bmVyXCIgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiggbXJrZCggT1dORVIsIHRoaXMgKSApe1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aGFyZGVuKCBPV05FUiwgaWRudHR5KCBvd25lciApLCB0aGlzICk7XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSApXG5cdFx0XHRcdC5pbXBsZW1lbnQoIFwibGlua2VkVG9cIiwgZnVuY3Rpb24gbGlua2VkVG8oIGxpbmsgKXtcblx0XHRcdFx0XHQvKjtcblx0XHRcdFx0XHRcdEBtZXRhLWNvbmZpZ3VyYXRpb246XG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcImxpbms6cmVxdWlyZWRcIjogXCJFdmVudFwiXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdEBlbmQtbWV0YS1jb25maWd1cmF0aW9uXG5cdFx0XHRcdFx0Ki9cblxuXHRcdFx0XHRcdGlmKCBmYWx6eSggbGluayApIHx8ICFjbGF6b2YoIGxpbmssIFwiRXZlbnRcIiApICl7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoIFwiaW52YWxpZCBsaW5rXCIgKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiggbXJrZCggTElOSywgdGhpcyApICl7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRoYXJkZW4oIExJTkssIGlkbnR0eSggbGluayApLCB0aGlzICk7XG5cblx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0fSApXG5cdFx0XHRcdC5pbXBsZW1lbnQoIFwiZ2V0T3duZXJcIiwgZnVuY3Rpb24gZ2V0T3duZXIoICl7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXNbIE9XTkVSIF07XG5cdFx0XHRcdH0gKVxuXHRcdFx0XHQuaW1wbGVtZW50KCBcImdldExpbmtcIiwgZnVuY3Rpb24gZ2V0TGluayggKXtcblx0XHRcdFx0XHRyZXR1cm4gdGhpc1sgTElOSyBdO1xuXHRcdFx0XHR9ICk7XG5cblx0XHRcdGhhbmRsZXIub3duZWRCeSggdGhpc1sgRVZFTlQgXSApO1xuXG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9IClcblx0XHQuaW1wbGVtZW50KCBcIm1lcmdlXCIsIGZ1bmN0aW9uIG1lcmdlKCBoYW5kbGVyICl7XG5cdFx0XHQvKjtcblx0XHRcdFx0QG1ldGEtY29uZmlndXJhdGlvbjpcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcImhhbmRsZXI6cmVxdWlyZWRcIjogXCJmdW5jdGlvblwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRAZW5kLW1ldGEtY29uZmlndXJhdGlvblxuXHRcdFx0Ki9cblxuXHRcdFx0aWYoICFwcm90eXBlKCBoYW5kbGVyLCBGVU5DVElPTiApICl7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvciggXCJpbnZhbGlkIGhhbmRsZXIgZnVuY3Rpb25cIiApO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiggY2xhem9mKCBoYW5kbGVyLCBcIkhhbmRsZXJcIiApICl7XG5cdFx0XHRcdGhhbmRsZXIubGlzdCggKS5mb3JFYWNoKCAoIGhhbmRsZXIgKSA9PiB0aGlzLnB1c2goIGhhbmRsZXIgKSApO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9IClcblx0XHQuaW1wbGVtZW50KCBcImNvbnRleHRcIiwgZnVuY3Rpb24gY29udGV4dCggc2VsZiApe1xuXHRcdFx0Lyo7XG5cdFx0XHRcdEBtZXRhLWNvbmZpZ3VyYXRpb246XG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XCJzZWxmOnJlcXVpcmVkXCI6IFwiKlwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRAZW5kLW1ldGEtY29uZmlndXJhdGlvblxuXHRcdFx0Ki9cblxuXHRcdFx0dGhpc1sgQ09OVEVYVCBdID0gemVsZiggc2VsZiApO1xuXG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9IClcblx0XHQuaW1wbGVtZW50KCBcInJlZ2lzdGVyXCIsIGZ1bmN0aW9uIHJlZ2lzdGVyKCBldmVudCApe1xuXHRcdFx0Lyo7XG5cdFx0XHRcdEBtZXRhLWNvbmZpZ3VyYXRpb246XG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XCJldmVudDpyZXF1aXJlZFwiOiBcIkV2ZW50XCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdEBlbmQtbWV0YS1jb25maWd1cmF0aW9uXG5cdFx0XHQqL1xuXG5cdFx0XHRpZiggZmFsenkoIGV2ZW50ICkgfHwgIWNsYXpvZiggZXZlbnQsIFwiRXZlbnRcIiApICl7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvciggXCJpbnZhbGlkIGV2ZW50XCIgKTtcblx0XHRcdH1cblxuXHRcdFx0dGhpc1sgRVZFTlQgXSA9IGV2ZW50O1xuXG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9IClcblx0XHQuaW1wbGVtZW50KCBcImNvdW50XCIsIGZ1bmN0aW9uIGNvdW50KCApe1xuXHRcdFx0cmV0dXJuIGFya291bnQoIHRoaXNbIEhBTkRMRVIgXSApO1xuXHRcdH0gKVxuXHRcdC5pbXBsZW1lbnQoIFwiZmx1c2hcIiwgZnVuY3Rpb24gZmx1c2goICl7XG5cdFx0XHR3aGlsZSggZmlsbGVkKCB0aGlzWyBIQU5ETEVSIF0gKSApIHRoaXNbIEhBTkRMRVIgXS5wb3AoICk7XG5cblx0XHRcdFxuXG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9IClcblx0XHQuaW1wbGVtZW50KCBcImxpc3RcIiwgZnVuY3Rpb24gbGlzdCggKXtcblx0XHRcdHJldHVybiByYXplKCB0aGlzWyBIQU5ETEVSIF0gKTtcblx0XHR9IClcblx0XHQuaW1wbGVtZW50KCBcImxvY2tcIiwgZnVuY3Rpb24gbG9jayggKXtcblx0XHRcdHRoaXNbIEhBTkRMRVIgXS5mb3JFYWNoKCAoIGhhbmRsZXIsIGluZGV4ICkgPT4ge1xuXHRcdFx0XHR0aGlzWyBIQU5ETEVSIF1bIGluZGV4IF0gPSBjYWxsZWQuYmluZCggdGhpc1sgQ09OVEVYVCBdICkoIGhhbmRsZXIgKTtcblx0XHRcdH0gKTtcblxuXHRcdFx0cmV0dXJuIHRoaXM7XG5cdFx0fSApO1xuXG5cdEhhbmRsZXIucHJvdG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbiBpbml0aWFsaXplKCBwYXJhbWV0ZXIgKXtcblx0XHQvKjtcblx0XHRcdEBtZXRhLWNvbmZpZ3VyYXRpb246XG5cdFx0XHRcdHtcblx0XHRcdFx0XHRcInBhcmFtZXRlclwiOiBcIi4uLlwiXG5cdFx0XHRcdH1cblx0XHRcdEBlbmQtbWV0YS1jb25maWd1cmF0aW9uXG5cdFx0Ki9cblxuXHRcdHBhcmFtZXRlciA9IHJhemUoIGFyZ3VtZW50cyApO1xuXG5cdFx0dGhpcy5jb250ZXh0ID0gSGFuZGxlclsgQ09OVEVYVCBdO1xuXHRcdHRoaXMuZXZlbnQgPSBIYW5kbGVyWyBFVkVOVCBdO1xuXHRcdHRoaXMuaGFuZGxlciA9IEhhbmRsZXJbIEhBTkRMRVIgXTtcblxuXHRcdHRoaXMuZXhlY3V0ZS5hcHBseSggdGhpcywgcGFyYW1ldGVyICk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fTtcblxuXHRIYW5kbGVyLnByb3RvdHlwZS5leGVjdXRlID0gZnVuY3Rpb24gZXhlY3V0ZSggcGFyYW1ldGVyICl7XG5cdFx0Lyo7XG5cdFx0XHRAbWV0YS1jb25maWd1cmF0aW9uOlxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0XCJwYXJhbWV0ZXJcIjogXCIuLi5cIlxuXHRcdFx0XHR9XG5cdFx0XHRAZW5kLW1ldGEtY29uZmlndXJhdGlvblxuXHRcdCovXG5cblx0XHRwYXJhbWV0ZXIgPSByYXplKCBhcmd1bWVudHMgKTtcblxuXHRcdHRoaXMuaGFuZGxlci5yZXZlcnNlKCApLmZvckVhY2goICggaGFuZGxlciApID0+IHtcblx0XHRcdHRyeXtcblx0XHRcdFx0aGFuZGxlci5hcHBseSggdGhpcy5jb250ZXh0LCBwYXJhbWV0ZXIgKTtcblxuXHRcdFx0fWNhdGNoKCBlcnJvciApe1xuXHRcdFx0XHR0aGlzLmV2ZW50LmVtaXQoIFwiZXJyb3JcIiwgZXJyb3IgKTtcblx0XHRcdH1cblxuXHRcdFx0aWYoIGV4ZWNkKCBoYW5kbGVyICkgKXtcblx0XHRcdFx0cG9zcCggdGhpcy5oYW5kbGVyLCBoYW5kbGVyICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH07XG5cblx0cmV0dXJuIEhhbmRsZXI7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RlbmVyO1xuIl19 //# sourceMappingURL=listener.support.js.map