{"ast":null,"code":"\"use strict\";\n\nvar _createForOfIteratorHelper = require(\"C:/laragon/www/iot.mksolusi/DriverOPCDA/frontend/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createForOfIteratorHelper\");\n\nvar _classCallCheck = require(\"C:/laragon/www/iot.mksolusi/DriverOPCDA/frontend/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/classCallCheck\");\n\nvar _createClass = require(\"C:/laragon/www/iot.mksolusi/DriverOPCDA/frontend/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createClass\");\n\nvar _get = require(\"C:/laragon/www/iot.mksolusi/DriverOPCDA/frontend/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/get\");\n\nvar _getPrototypeOf = require(\"C:/laragon/www/iot.mksolusi/DriverOPCDA/frontend/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/getPrototypeOf\");\n\nvar _inherits = require(\"C:/laragon/www/iot.mksolusi/DriverOPCDA/frontend/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/inherits\");\n\nvar _createSuper = require(\"C:/laragon/www/iot.mksolusi/DriverOPCDA/frontend/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createSuper\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Socket = void 0;\n\nvar socket_io_parser_1 = require(\"socket.io-parser\");\n\nvar on_1 = require(\"./on\");\n\nvar typed_events_1 = require(\"./typed-events\");\n\nvar debug = require(\"debug\")(\"socket.io-client:socket\");\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\n\n\nvar RESERVED_EVENTS = Object.freeze({\n  connect: 1,\n  connect_error: 1,\n  disconnect: 1,\n  disconnecting: 1,\n  // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n  newListener: 1,\n  removeListener: 1\n});\n\nvar Socket = /*#__PURE__*/function (_typed_events_1$Stric) {\n  _inherits(Socket, _typed_events_1$Stric);\n\n  var _super = _createSuper(Socket);\n\n  /**\n   * `Socket` constructor.\n   *\n   * @public\n   */\n  function Socket(io, nsp, opts) {\n    var _this;\n\n    _classCallCheck(this, Socket);\n\n    _this = _super.call(this);\n    _this.receiveBuffer = [];\n    _this.sendBuffer = [];\n    _this.ids = 0;\n    _this.acks = {};\n    _this.flags = {};\n    _this.io = io;\n    _this.nsp = nsp;\n    _this.ids = 0;\n    _this.acks = {};\n    _this.receiveBuffer = [];\n    _this.sendBuffer = [];\n    _this.connected = false;\n    _this.disconnected = true;\n    _this.flags = {};\n\n    if (opts && opts.auth) {\n      _this.auth = opts.auth;\n    }\n\n    if (_this.io._autoConnect) _this.open();\n    return _this;\n  }\n  /**\n   * Subscribe to open, close and packet events\n   *\n   * @private\n   */\n\n\n  _createClass(Socket, [{\n    key: \"subEvents\",\n    value: function subEvents() {\n      if (this.subs) return;\n      var io = this.io;\n      this.subs = [on_1.on(io, \"open\", this.onopen.bind(this)), on_1.on(io, \"packet\", this.onpacket.bind(this)), on_1.on(io, \"error\", this.onerror.bind(this)), on_1.on(io, \"close\", this.onclose.bind(this))];\n    }\n    /**\n     * Whether the Socket will try to reconnect when its Manager connects or reconnects\n     */\n\n  }, {\n    key: \"active\",\n    get: function get() {\n      return !!this.subs;\n    }\n    /**\n     * \"Opens\" the socket.\n     *\n     * @public\n     */\n\n  }, {\n    key: \"connect\",\n    value: function connect() {\n      if (this.connected) return this;\n      this.subEvents();\n      if (!this.io[\"_reconnecting\"]) this.io.open(); // ensure open\n\n      if (\"open\" === this.io._readyState) this.onopen();\n      return this;\n    }\n    /**\n     * Alias for connect()\n     */\n\n  }, {\n    key: \"open\",\n    value: function open() {\n      return this.connect();\n    }\n    /**\n     * Sends a `message` event.\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"send\",\n    value: function send() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      args.unshift(\"message\");\n      this.emit.apply(this, args);\n      return this;\n    }\n    /**\n     * Override `emit`.\n     * If the event is in `events`, it's emitted normally.\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"emit\",\n    value: function emit(ev) {\n      if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n        throw new Error('\"' + ev + '\" is a reserved event name');\n      }\n\n      for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n        args[_key2 - 1] = arguments[_key2];\n      }\n\n      args.unshift(ev);\n      var packet = {\n        type: socket_io_parser_1.PacketType.EVENT,\n        data: args\n      };\n      packet.options = {};\n      packet.options.compress = this.flags.compress !== false; // event ack callback\n\n      if (\"function\" === typeof args[args.length - 1]) {\n        debug(\"emitting packet with ack id %d\", this.ids);\n        this.acks[this.ids] = args.pop();\n        packet.id = this.ids++;\n      }\n\n      var isTransportWritable = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable;\n      var discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n\n      if (discardPacket) {\n        debug(\"discard packet as the transport is not currently writable\");\n      } else if (this.connected) {\n        this.packet(packet);\n      } else {\n        this.sendBuffer.push(packet);\n      }\n\n      this.flags = {};\n      return this;\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"packet\",\n    value: function packet(_packet) {\n      _packet.nsp = this.nsp;\n\n      this.io._packet(_packet);\n    }\n    /**\n     * Called upon engine `open`.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onopen\",\n    value: function onopen() {\n      var _this2 = this;\n\n      debug(\"transport is open - connecting\");\n\n      if (typeof this.auth == \"function\") {\n        this.auth(function (data) {\n          _this2.packet({\n            type: socket_io_parser_1.PacketType.CONNECT,\n            data: data\n          });\n        });\n      } else {\n        this.packet({\n          type: socket_io_parser_1.PacketType.CONNECT,\n          data: this.auth\n        });\n      }\n    }\n    /**\n     * Called upon engine or manager `error`.\n     *\n     * @param err\n     * @private\n     */\n\n  }, {\n    key: \"onerror\",\n    value: function onerror(err) {\n      if (!this.connected) {\n        this.emitReserved(\"connect_error\", err);\n      }\n    }\n    /**\n     * Called upon engine `close`.\n     *\n     * @param reason\n     * @private\n     */\n\n  }, {\n    key: \"onclose\",\n    value: function onclose(reason) {\n      debug(\"close (%s)\", reason);\n      this.connected = false;\n      this.disconnected = true;\n      delete this.id;\n      this.emitReserved(\"disconnect\", reason);\n    }\n    /**\n     * Called with socket packet.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"onpacket\",\n    value: function onpacket(packet) {\n      var sameNamespace = packet.nsp === this.nsp;\n      if (!sameNamespace) return;\n\n      switch (packet.type) {\n        case socket_io_parser_1.PacketType.CONNECT:\n          if (packet.data && packet.data.sid) {\n            var id = packet.data.sid;\n            this.onconnect(id);\n          } else {\n            this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n          }\n\n          break;\n\n        case socket_io_parser_1.PacketType.EVENT:\n          this.onevent(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.BINARY_EVENT:\n          this.onevent(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.ACK:\n          this.onack(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.BINARY_ACK:\n          this.onack(packet);\n          break;\n\n        case socket_io_parser_1.PacketType.DISCONNECT:\n          this.ondisconnect();\n          break;\n\n        case socket_io_parser_1.PacketType.CONNECT_ERROR:\n          var err = new Error(packet.data.message); // @ts-ignore\n\n          err.data = packet.data.data;\n          this.emitReserved(\"connect_error\", err);\n          break;\n      }\n    }\n    /**\n     * Called upon a server event.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"onevent\",\n    value: function onevent(packet) {\n      var args = packet.data || [];\n      debug(\"emitting event %j\", args);\n\n      if (null != packet.id) {\n        debug(\"attaching ack callback to event\");\n        args.push(this.ack(packet.id));\n      }\n\n      if (this.connected) {\n        this.emitEvent(args);\n      } else {\n        this.receiveBuffer.push(Object.freeze(args));\n      }\n    }\n  }, {\n    key: \"emitEvent\",\n    value: function emitEvent(args) {\n      if (this._anyListeners && this._anyListeners.length) {\n        var listeners = this._anyListeners.slice();\n\n        var _iterator = _createForOfIteratorHelper(listeners),\n            _step;\n\n        try {\n          for (_iterator.s(); !(_step = _iterator.n()).done;) {\n            var listener = _step.value;\n            listener.apply(this, args);\n          }\n        } catch (err) {\n          _iterator.e(err);\n        } finally {\n          _iterator.f();\n        }\n      }\n\n      _get(_getPrototypeOf(Socket.prototype), \"emit\", this).apply(this, args);\n    }\n    /**\n     * Produces an ack callback to emit with an event.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"ack\",\n    value: function ack(id) {\n      var self = this;\n      var sent = false;\n      return function () {\n        // prevent double callbacks\n        if (sent) return;\n        sent = true;\n\n        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n          args[_key3] = arguments[_key3];\n        }\n\n        debug(\"sending ack %j\", args);\n        self.packet({\n          type: socket_io_parser_1.PacketType.ACK,\n          id: id,\n          data: args\n        });\n      };\n    }\n    /**\n     * Called upon a server acknowlegement.\n     *\n     * @param packet\n     * @private\n     */\n\n  }, {\n    key: \"onack\",\n    value: function onack(packet) {\n      var ack = this.acks[packet.id];\n\n      if (\"function\" === typeof ack) {\n        debug(\"calling ack %s with %j\", packet.id, packet.data);\n        ack.apply(this, packet.data);\n        delete this.acks[packet.id];\n      } else {\n        debug(\"bad ack %s\", packet.id);\n      }\n    }\n    /**\n     * Called upon server connect.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"onconnect\",\n    value: function onconnect(id) {\n      debug(\"socket connected with id %s\", id);\n      this.id = id;\n      this.connected = true;\n      this.disconnected = false;\n      this.emitReserved(\"connect\");\n      this.emitBuffered();\n    }\n    /**\n     * Emit buffered events (received and emitted).\n     *\n     * @private\n     */\n\n  }, {\n    key: \"emitBuffered\",\n    value: function emitBuffered() {\n      var _this3 = this;\n\n      this.receiveBuffer.forEach(function (args) {\n        return _this3.emitEvent(args);\n      });\n      this.receiveBuffer = [];\n      this.sendBuffer.forEach(function (packet) {\n        return _this3.packet(packet);\n      });\n      this.sendBuffer = [];\n    }\n    /**\n     * Called upon server disconnect.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"ondisconnect\",\n    value: function ondisconnect() {\n      debug(\"server disconnect (%s)\", this.nsp);\n      this.destroy();\n      this.onclose(\"io server disconnect\");\n    }\n    /**\n     * Called upon forced client/server side disconnections,\n     * this method ensures the manager stops tracking us and\n     * that reconnections don't get triggered for this.\n     *\n     * @private\n     */\n\n  }, {\n    key: \"destroy\",\n    value: function destroy() {\n      if (this.subs) {\n        // clean subscriptions to avoid reconnections\n        this.subs.forEach(function (subDestroy) {\n          return subDestroy();\n        });\n        this.subs = undefined;\n      }\n\n      this.io[\"_destroy\"](this);\n    }\n    /**\n     * Disconnects the socket manually.\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"disconnect\",\n    value: function disconnect() {\n      if (this.connected) {\n        debug(\"performing disconnect (%s)\", this.nsp);\n        this.packet({\n          type: socket_io_parser_1.PacketType.DISCONNECT\n        });\n      } // remove socket from pool\n\n\n      this.destroy();\n\n      if (this.connected) {\n        // fire events\n        this.onclose(\"io client disconnect\");\n      }\n\n      return this;\n    }\n    /**\n     * Alias for disconnect()\n     *\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"close\",\n    value: function close() {\n      return this.disconnect();\n    }\n    /**\n     * Sets the compress flag.\n     *\n     * @param compress - if `true`, compresses the sending data\n     * @return self\n     * @public\n     */\n\n  }, {\n    key: \"compress\",\n    value: function compress(_compress) {\n      this.flags.compress = _compress;\n      return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n     * ready to send messages.\n     *\n     * @returns self\n     * @public\n     */\n\n  }, {\n    key: \"volatile\",\n    get: function get() {\n      this.flags.volatile = true;\n      return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback.\n     *\n     * @param listener\n     * @public\n     */\n\n  }, {\n    key: \"onAny\",\n    value: function onAny(listener) {\n      this._anyListeners = this._anyListeners || [];\n\n      this._anyListeners.push(listener);\n\n      return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback. The listener is added to the beginning of the listeners array.\n     *\n     * @param listener\n     * @public\n     */\n\n  }, {\n    key: \"prependAny\",\n    value: function prependAny(listener) {\n      this._anyListeners = this._anyListeners || [];\n\n      this._anyListeners.unshift(listener);\n\n      return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is emitted.\n     *\n     * @param listener\n     * @public\n     */\n\n  }, {\n    key: \"offAny\",\n    value: function offAny(listener) {\n      if (!this._anyListeners) {\n        return this;\n      }\n\n      if (listener) {\n        var listeners = this._anyListeners;\n\n        for (var i = 0; i < listeners.length; i++) {\n          if (listener === listeners[i]) {\n            listeners.splice(i, 1);\n            return this;\n          }\n        }\n      } else {\n        this._anyListeners = [];\n      }\n\n      return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     *\n     * @public\n     */\n\n  }, {\n    key: \"listenersAny\",\n    value: function listenersAny() {\n      return this._anyListeners || [];\n    }\n  }]);\n\n  return Socket;\n}(typed_events_1.StrictEventEmitter);\n\nexports.Socket = Socket;","map":{"version":3,"sources":["C:/laragon/www/iot.mksolusi/DriverOPCDA/frontend/node_modules/socket.io-client/build/socket.js"],"names":["Object","defineProperty","exports","value","Socket","socket_io_parser_1","require","on_1","typed_events_1","debug","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","removeListener","io","nsp","opts","receiveBuffer","sendBuffer","ids","acks","flags","connected","disconnected","auth","_autoConnect","open","subs","on","onopen","bind","onpacket","onerror","onclose","subEvents","_readyState","args","unshift","emit","apply","ev","hasOwnProperty","Error","packet","type","PacketType","EVENT","data","options","compress","length","pop","id","isTransportWritable","engine","transport","writable","discardPacket","volatile","push","_packet","CONNECT","err","emitReserved","reason","sameNamespace","sid","onconnect","onevent","BINARY_EVENT","ACK","onack","BINARY_ACK","DISCONNECT","ondisconnect","CONNECT_ERROR","message","ack","emitEvent","_anyListeners","listeners","slice","listener","self","sent","emitBuffered","forEach","destroy","subDestroy","undefined","i","splice","StrictEventEmitter"],"mappings":"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","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Socket = void 0;\nconst socket_io_parser_1 = require(\"socket.io-parser\");\nconst on_1 = require(\"./on\");\nconst typed_events_1 = require(\"./typed-events\");\nconst debug = require(\"debug\")(\"socket.io-client:socket\");\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n    connect: 1,\n    connect_error: 1,\n    disconnect: 1,\n    disconnecting: 1,\n    // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n    newListener: 1,\n    removeListener: 1,\n});\nclass Socket extends typed_events_1.StrictEventEmitter {\n    /**\n     * `Socket` constructor.\n     *\n     * @public\n     */\n    constructor(io, nsp, opts) {\n        super();\n        this.receiveBuffer = [];\n        this.sendBuffer = [];\n        this.ids = 0;\n        this.acks = {};\n        this.flags = {};\n        this.io = io;\n        this.nsp = nsp;\n        this.ids = 0;\n        this.acks = {};\n        this.receiveBuffer = [];\n        this.sendBuffer = [];\n        this.connected = false;\n        this.disconnected = true;\n        this.flags = {};\n        if (opts && opts.auth) {\n            this.auth = opts.auth;\n        }\n        if (this.io._autoConnect)\n            this.open();\n    }\n    /**\n     * Subscribe to open, close and packet events\n     *\n     * @private\n     */\n    subEvents() {\n        if (this.subs)\n            return;\n        const io = this.io;\n        this.subs = [\n            on_1.on(io, \"open\", this.onopen.bind(this)),\n            on_1.on(io, \"packet\", this.onpacket.bind(this)),\n            on_1.on(io, \"error\", this.onerror.bind(this)),\n            on_1.on(io, \"close\", this.onclose.bind(this)),\n        ];\n    }\n    /**\n     * Whether the Socket will try to reconnect when its Manager connects or reconnects\n     */\n    get active() {\n        return !!this.subs;\n    }\n    /**\n     * \"Opens\" the socket.\n     *\n     * @public\n     */\n    connect() {\n        if (this.connected)\n            return this;\n        this.subEvents();\n        if (!this.io[\"_reconnecting\"])\n            this.io.open(); // ensure open\n        if (\"open\" === this.io._readyState)\n            this.onopen();\n        return this;\n    }\n    /**\n     * Alias for connect()\n     */\n    open() {\n        return this.connect();\n    }\n    /**\n     * Sends a `message` event.\n     *\n     * @return self\n     * @public\n     */\n    send(...args) {\n        args.unshift(\"message\");\n        this.emit.apply(this, args);\n        return this;\n    }\n    /**\n     * Override `emit`.\n     * If the event is in `events`, it's emitted normally.\n     *\n     * @return self\n     * @public\n     */\n    emit(ev, ...args) {\n        if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n            throw new Error('\"' + ev + '\" is a reserved event name');\n        }\n        args.unshift(ev);\n        const packet = {\n            type: socket_io_parser_1.PacketType.EVENT,\n            data: args,\n        };\n        packet.options = {};\n        packet.options.compress = this.flags.compress !== false;\n        // event ack callback\n        if (\"function\" === typeof args[args.length - 1]) {\n            debug(\"emitting packet with ack id %d\", this.ids);\n            this.acks[this.ids] = args.pop();\n            packet.id = this.ids++;\n        }\n        const isTransportWritable = this.io.engine &&\n            this.io.engine.transport &&\n            this.io.engine.transport.writable;\n        const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);\n        if (discardPacket) {\n            debug(\"discard packet as the transport is not currently writable\");\n        }\n        else if (this.connected) {\n            this.packet(packet);\n        }\n        else {\n            this.sendBuffer.push(packet);\n        }\n        this.flags = {};\n        return this;\n    }\n    /**\n     * Sends a packet.\n     *\n     * @param packet\n     * @private\n     */\n    packet(packet) {\n        packet.nsp = this.nsp;\n        this.io._packet(packet);\n    }\n    /**\n     * Called upon engine `open`.\n     *\n     * @private\n     */\n    onopen() {\n        debug(\"transport is open - connecting\");\n        if (typeof this.auth == \"function\") {\n            this.auth((data) => {\n                this.packet({ type: socket_io_parser_1.PacketType.CONNECT, data });\n            });\n        }\n        else {\n            this.packet({ type: socket_io_parser_1.PacketType.CONNECT, data: this.auth });\n        }\n    }\n    /**\n     * Called upon engine or manager `error`.\n     *\n     * @param err\n     * @private\n     */\n    onerror(err) {\n        if (!this.connected) {\n            this.emitReserved(\"connect_error\", err);\n        }\n    }\n    /**\n     * Called upon engine `close`.\n     *\n     * @param reason\n     * @private\n     */\n    onclose(reason) {\n        debug(\"close (%s)\", reason);\n        this.connected = false;\n        this.disconnected = true;\n        delete this.id;\n        this.emitReserved(\"disconnect\", reason);\n    }\n    /**\n     * Called with socket packet.\n     *\n     * @param packet\n     * @private\n     */\n    onpacket(packet) {\n        const sameNamespace = packet.nsp === this.nsp;\n        if (!sameNamespace)\n            return;\n        switch (packet.type) {\n            case socket_io_parser_1.PacketType.CONNECT:\n                if (packet.data && packet.data.sid) {\n                    const id = packet.data.sid;\n                    this.onconnect(id);\n                }\n                else {\n                    this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n                }\n                break;\n            case socket_io_parser_1.PacketType.EVENT:\n                this.onevent(packet);\n                break;\n            case socket_io_parser_1.PacketType.BINARY_EVENT:\n                this.onevent(packet);\n                break;\n            case socket_io_parser_1.PacketType.ACK:\n                this.onack(packet);\n                break;\n            case socket_io_parser_1.PacketType.BINARY_ACK:\n                this.onack(packet);\n                break;\n            case socket_io_parser_1.PacketType.DISCONNECT:\n                this.ondisconnect();\n                break;\n            case socket_io_parser_1.PacketType.CONNECT_ERROR:\n                const err = new Error(packet.data.message);\n                // @ts-ignore\n                err.data = packet.data.data;\n                this.emitReserved(\"connect_error\", err);\n                break;\n        }\n    }\n    /**\n     * Called upon a server event.\n     *\n     * @param packet\n     * @private\n     */\n    onevent(packet) {\n        const args = packet.data || [];\n        debug(\"emitting event %j\", args);\n        if (null != packet.id) {\n            debug(\"attaching ack callback to event\");\n            args.push(this.ack(packet.id));\n        }\n        if (this.connected) {\n            this.emitEvent(args);\n        }\n        else {\n            this.receiveBuffer.push(Object.freeze(args));\n        }\n    }\n    emitEvent(args) {\n        if (this._anyListeners && this._anyListeners.length) {\n            const listeners = this._anyListeners.slice();\n            for (const listener of listeners) {\n                listener.apply(this, args);\n            }\n        }\n        super.emit.apply(this, args);\n    }\n    /**\n     * Produces an ack callback to emit with an event.\n     *\n     * @private\n     */\n    ack(id) {\n        const self = this;\n        let sent = false;\n        return function (...args) {\n            // prevent double callbacks\n            if (sent)\n                return;\n            sent = true;\n            debug(\"sending ack %j\", args);\n            self.packet({\n                type: socket_io_parser_1.PacketType.ACK,\n                id: id,\n                data: args,\n            });\n        };\n    }\n    /**\n     * Called upon a server acknowlegement.\n     *\n     * @param packet\n     * @private\n     */\n    onack(packet) {\n        const ack = this.acks[packet.id];\n        if (\"function\" === typeof ack) {\n            debug(\"calling ack %s with %j\", packet.id, packet.data);\n            ack.apply(this, packet.data);\n            delete this.acks[packet.id];\n        }\n        else {\n            debug(\"bad ack %s\", packet.id);\n        }\n    }\n    /**\n     * Called upon server connect.\n     *\n     * @private\n     */\n    onconnect(id) {\n        debug(\"socket connected with id %s\", id);\n        this.id = id;\n        this.connected = true;\n        this.disconnected = false;\n        this.emitReserved(\"connect\");\n        this.emitBuffered();\n    }\n    /**\n     * Emit buffered events (received and emitted).\n     *\n     * @private\n     */\n    emitBuffered() {\n        this.receiveBuffer.forEach((args) => this.emitEvent(args));\n        this.receiveBuffer = [];\n        this.sendBuffer.forEach((packet) => this.packet(packet));\n        this.sendBuffer = [];\n    }\n    /**\n     * Called upon server disconnect.\n     *\n     * @private\n     */\n    ondisconnect() {\n        debug(\"server disconnect (%s)\", this.nsp);\n        this.destroy();\n        this.onclose(\"io server disconnect\");\n    }\n    /**\n     * Called upon forced client/server side disconnections,\n     * this method ensures the manager stops tracking us and\n     * that reconnections don't get triggered for this.\n     *\n     * @private\n     */\n    destroy() {\n        if (this.subs) {\n            // clean subscriptions to avoid reconnections\n            this.subs.forEach((subDestroy) => subDestroy());\n            this.subs = undefined;\n        }\n        this.io[\"_destroy\"](this);\n    }\n    /**\n     * Disconnects the socket manually.\n     *\n     * @return self\n     * @public\n     */\n    disconnect() {\n        if (this.connected) {\n            debug(\"performing disconnect (%s)\", this.nsp);\n            this.packet({ type: socket_io_parser_1.PacketType.DISCONNECT });\n        }\n        // remove socket from pool\n        this.destroy();\n        if (this.connected) {\n            // fire events\n            this.onclose(\"io client disconnect\");\n        }\n        return this;\n    }\n    /**\n     * Alias for disconnect()\n     *\n     * @return self\n     * @public\n     */\n    close() {\n        return this.disconnect();\n    }\n    /**\n     * Sets the compress flag.\n     *\n     * @param compress - if `true`, compresses the sending data\n     * @return self\n     * @public\n     */\n    compress(compress) {\n        this.flags.compress = compress;\n        return this;\n    }\n    /**\n     * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n     * ready to send messages.\n     *\n     * @returns self\n     * @public\n     */\n    get volatile() {\n        this.flags.volatile = true;\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback.\n     *\n     * @param listener\n     * @public\n     */\n    onAny(listener) {\n        this._anyListeners = this._anyListeners || [];\n        this._anyListeners.push(listener);\n        return this;\n    }\n    /**\n     * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n     * callback. The listener is added to the beginning of the listeners array.\n     *\n     * @param listener\n     * @public\n     */\n    prependAny(listener) {\n        this._anyListeners = this._anyListeners || [];\n        this._anyListeners.unshift(listener);\n        return this;\n    }\n    /**\n     * Removes the listener that will be fired when any event is emitted.\n     *\n     * @param listener\n     * @public\n     */\n    offAny(listener) {\n        if (!this._anyListeners) {\n            return this;\n        }\n        if (listener) {\n            const listeners = this._anyListeners;\n            for (let i = 0; i < listeners.length; i++) {\n                if (listener === listeners[i]) {\n                    listeners.splice(i, 1);\n                    return this;\n                }\n            }\n        }\n        else {\n            this._anyListeners = [];\n        }\n        return this;\n    }\n    /**\n     * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n     * e.g. to remove listeners.\n     *\n     * @public\n     */\n    listenersAny() {\n        return this._anyListeners || [];\n    }\n}\nexports.Socket = Socket;\n"]},"metadata":{},"sourceType":"script"}