{"ast":null,"code":"\"use strict\";\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\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\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;\n\nvar Emitter = require(\"component-emitter\");\n\nvar binary_1 = require(\"./binary\");\n\nvar is_binary_1 = require(\"./is-binary\");\n\nvar debug = require(\"debug\")(\"socket.io-parser\");\n/**\n * Protocol version.\n *\n * @public\n */\n\n\nexports.protocol = 5;\nvar PacketType;\n\n(function (PacketType) {\n  PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n  PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n  PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n  PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n  PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n  PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n  PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType = exports.PacketType || (exports.PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\n\n\nvar Encoder = /*#__PURE__*/function () {\n  function Encoder() {\n    _classCallCheck(this, Encoder);\n  }\n\n  _createClass(Encoder, [{\n    key: \"encode\",\n    value:\n    /**\n     * Encode a packet as a single string if non-binary, or as a\n     * buffer sequence, depending on packet type.\n     *\n     * @param {Object} obj - packet object\n     */\n    function encode(obj) {\n      debug(\"encoding packet %j\", obj);\n\n      if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n        if (is_binary_1.hasBinary(obj)) {\n          obj.type = obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK;\n          return this.encodeAsBinary(obj);\n        }\n      }\n\n      return [this.encodeAsString(obj)];\n    }\n    /**\n     * Encode packet as string.\n     */\n\n  }, {\n    key: \"encodeAsString\",\n    value: function encodeAsString(obj) {\n      // first is type\n      var str = \"\" + obj.type; // attachments if we have them\n\n      if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {\n        str += obj.attachments + \"-\";\n      } // if we have a namespace other than `/`\n      // we append it followed by a comma `,`\n\n\n      if (obj.nsp && \"/\" !== obj.nsp) {\n        str += obj.nsp + \",\";\n      } // immediately followed by the id\n\n\n      if (null != obj.id) {\n        str += obj.id;\n      } // json data\n\n\n      if (null != obj.data) {\n        str += JSON.stringify(obj.data);\n      }\n\n      debug(\"encoded %j as %s\", obj, str);\n      return str;\n    }\n    /**\n     * Encode packet as 'buffer sequence' by removing blobs, and\n     * deconstructing packet into object with placeholders and\n     * a list of buffers.\n     */\n\n  }, {\n    key: \"encodeAsBinary\",\n    value: function encodeAsBinary(obj) {\n      var deconstruction = binary_1.deconstructPacket(obj);\n      var pack = this.encodeAsString(deconstruction.packet);\n      var buffers = deconstruction.buffers;\n      buffers.unshift(pack); // add packet info to beginning of data list\n\n      return buffers; // write all the buffers\n    }\n  }]);\n\n  return Encoder;\n}();\n\nexports.Encoder = Encoder;\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\n\nvar Decoder = /*#__PURE__*/function (_Emitter) {\n  _inherits(Decoder, _Emitter);\n\n  var _super = _createSuper(Decoder);\n\n  function Decoder() {\n    _classCallCheck(this, Decoder);\n\n    return _super.call(this);\n  }\n  /**\n   * Decodes an encoded packet string into packet JSON.\n   *\n   * @param {String} obj - encoded packet\n   */\n\n\n  _createClass(Decoder, [{\n    key: \"add\",\n    value: function add(obj) {\n      var packet;\n\n      if (typeof obj === \"string\") {\n        packet = this.decodeString(obj);\n\n        if (packet.type === PacketType.BINARY_EVENT || packet.type === PacketType.BINARY_ACK) {\n          // binary packet's json\n          this.reconstructor = new BinaryReconstructor(packet); // no attachments, labeled binary but no binary data to follow\n\n          if (packet.attachments === 0) {\n            _get(_getPrototypeOf(Decoder.prototype), \"emit\", this).call(this, \"decoded\", packet);\n          }\n        } else {\n          // non-binary full packet\n          _get(_getPrototypeOf(Decoder.prototype), \"emit\", this).call(this, \"decoded\", packet);\n        }\n      } else if (is_binary_1.isBinary(obj) || obj.base64) {\n        // raw binary data\n        if (!this.reconstructor) {\n          throw new Error(\"got binary data when not reconstructing a packet\");\n        } else {\n          packet = this.reconstructor.takeBinaryData(obj);\n\n          if (packet) {\n            // received final buffer\n            this.reconstructor = null;\n\n            _get(_getPrototypeOf(Decoder.prototype), \"emit\", this).call(this, \"decoded\", packet);\n          }\n        }\n      } else {\n        throw new Error(\"Unknown type: \" + obj);\n      }\n    }\n    /**\n     * Decode a packet String (JSON data)\n     *\n     * @param {String} str\n     * @return {Object} packet\n     */\n\n  }, {\n    key: \"decodeString\",\n    value: function decodeString(str) {\n      var i = 0; // look up type\n\n      var p = {\n        type: Number(str.charAt(0))\n      };\n\n      if (PacketType[p.type] === undefined) {\n        throw new Error(\"unknown packet type \" + p.type);\n      } // look up attachments if type binary\n\n\n      if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) {\n        var start = i + 1;\n\n        while (str.charAt(++i) !== \"-\" && i != str.length) {}\n\n        var buf = str.substring(start, i);\n\n        if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n          throw new Error(\"Illegal attachments\");\n        }\n\n        p.attachments = Number(buf);\n      } // look up namespace (if any)\n\n\n      if (\"/\" === str.charAt(i + 1)) {\n        var _start = i + 1;\n\n        while (++i) {\n          var c = str.charAt(i);\n          if (\",\" === c) break;\n          if (i === str.length) break;\n        }\n\n        p.nsp = str.substring(_start, i);\n      } else {\n        p.nsp = \"/\";\n      } // look up id\n\n\n      var next = str.charAt(i + 1);\n\n      if (\"\" !== next && Number(next) == next) {\n        var _start2 = i + 1;\n\n        while (++i) {\n          var _c = str.charAt(i);\n\n          if (null == _c || Number(_c) != _c) {\n            --i;\n            break;\n          }\n\n          if (i === str.length) break;\n        }\n\n        p.id = Number(str.substring(_start2, i + 1));\n      } // look up json data\n\n\n      if (str.charAt(++i)) {\n        var payload = tryParse(str.substr(i));\n\n        if (Decoder.isPayloadValid(p.type, payload)) {\n          p.data = payload;\n        } else {\n          throw new Error(\"invalid payload\");\n        }\n      }\n\n      debug(\"decoded %s as %j\", str, p);\n      return p;\n    }\n  }, {\n    key: \"destroy\",\n    value:\n    /**\n     * Deallocates a parser's resources\n     */\n    function destroy() {\n      if (this.reconstructor) {\n        this.reconstructor.finishedReconstruction();\n      }\n    }\n  }], [{\n    key: \"isPayloadValid\",\n    value: function isPayloadValid(type, payload) {\n      switch (type) {\n        case PacketType.CONNECT:\n          return typeof payload === \"object\";\n\n        case PacketType.DISCONNECT:\n          return payload === undefined;\n\n        case PacketType.CONNECT_ERROR:\n          return typeof payload === \"string\" || typeof payload === \"object\";\n\n        case PacketType.EVENT:\n        case PacketType.BINARY_EVENT:\n          return Array.isArray(payload) && payload.length > 0;\n\n        case PacketType.ACK:\n        case PacketType.BINARY_ACK:\n          return Array.isArray(payload);\n      }\n    }\n  }]);\n\n  return Decoder;\n}(Emitter);\n\nexports.Decoder = Decoder;\n\nfunction tryParse(str) {\n  try {\n    return JSON.parse(str);\n  } catch (e) {\n    return false;\n  }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\n\n\nvar BinaryReconstructor = /*#__PURE__*/function () {\n  function BinaryReconstructor(packet) {\n    _classCallCheck(this, BinaryReconstructor);\n\n    this.packet = packet;\n    this.buffers = [];\n    this.reconPack = packet;\n  }\n  /**\n   * Method to be called when binary data received from connection\n   * after a BINARY_EVENT packet.\n   *\n   * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n   * @return {null | Object} returns null if more binary data is expected or\n   *   a reconstructed packet object if all buffers have been received.\n   */\n\n\n  _createClass(BinaryReconstructor, [{\n    key: \"takeBinaryData\",\n    value: function takeBinaryData(binData) {\n      this.buffers.push(binData);\n\n      if (this.buffers.length === this.reconPack.attachments) {\n        // done with buffer list\n        var packet = binary_1.reconstructPacket(this.reconPack, this.buffers);\n        this.finishedReconstruction();\n        return packet;\n      }\n\n      return null;\n    }\n    /**\n     * Cleans up binary packet reconstruction variables.\n     */\n\n  }, {\n    key: \"finishedReconstruction\",\n    value: function finishedReconstruction() {\n      this.reconPack = null;\n      this.buffers = [];\n    }\n  }]);\n\n  return BinaryReconstructor;\n}();","map":{"version":3,"sources":["C:/laragon/www/iot.mksolusi/DriverOPCDA/frontend/node_modules/socket.io-parser/dist/index.js"],"names":["Object","defineProperty","exports","value","Decoder","Encoder","PacketType","protocol","Emitter","require","binary_1","is_binary_1","debug","obj","type","EVENT","ACK","hasBinary","BINARY_EVENT","BINARY_ACK","encodeAsBinary","encodeAsString","str","attachments","nsp","id","data","JSON","stringify","deconstruction","deconstructPacket","pack","packet","buffers","unshift","decodeString","reconstructor","BinaryReconstructor","isBinary","base64","Error","takeBinaryData","i","p","Number","charAt","undefined","start","length","buf","substring","c","next","payload","tryParse","substr","isPayloadValid","finishedReconstruction","CONNECT","DISCONNECT","CONNECT_ERROR","Array","isArray","parse","e","reconPack","binData","push","reconstructPacket"],"mappings":"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","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;\nconst Emitter = require(\"component-emitter\");\nconst binary_1 = require(\"./binary\");\nconst is_binary_1 = require(\"./is-binary\");\nconst debug = require(\"debug\")(\"socket.io-parser\");\n/**\n * Protocol version.\n *\n * @public\n */\nexports.protocol = 5;\nvar PacketType;\n(function (PacketType) {\n    PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n    PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n    PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n    PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n    PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n    PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n    PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType = exports.PacketType || (exports.PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nclass Encoder {\n    /**\n     * Encode a packet as a single string if non-binary, or as a\n     * buffer sequence, depending on packet type.\n     *\n     * @param {Object} obj - packet object\n     */\n    encode(obj) {\n        debug(\"encoding packet %j\", obj);\n        if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n            if (is_binary_1.hasBinary(obj)) {\n                obj.type =\n                    obj.type === PacketType.EVENT\n                        ? PacketType.BINARY_EVENT\n                        : PacketType.BINARY_ACK;\n                return this.encodeAsBinary(obj);\n            }\n        }\n        return [this.encodeAsString(obj)];\n    }\n    /**\n     * Encode packet as string.\n     */\n    encodeAsString(obj) {\n        // first is type\n        let str = \"\" + obj.type;\n        // attachments if we have them\n        if (obj.type === PacketType.BINARY_EVENT ||\n            obj.type === PacketType.BINARY_ACK) {\n            str += obj.attachments + \"-\";\n        }\n        // if we have a namespace other than `/`\n        // we append it followed by a comma `,`\n        if (obj.nsp && \"/\" !== obj.nsp) {\n            str += obj.nsp + \",\";\n        }\n        // immediately followed by the id\n        if (null != obj.id) {\n            str += obj.id;\n        }\n        // json data\n        if (null != obj.data) {\n            str += JSON.stringify(obj.data);\n        }\n        debug(\"encoded %j as %s\", obj, str);\n        return str;\n    }\n    /**\n     * Encode packet as 'buffer sequence' by removing blobs, and\n     * deconstructing packet into object with placeholders and\n     * a list of buffers.\n     */\n    encodeAsBinary(obj) {\n        const deconstruction = binary_1.deconstructPacket(obj);\n        const pack = this.encodeAsString(deconstruction.packet);\n        const buffers = deconstruction.buffers;\n        buffers.unshift(pack); // add packet info to beginning of data list\n        return buffers; // write all the buffers\n    }\n}\nexports.Encoder = Encoder;\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nclass Decoder extends Emitter {\n    constructor() {\n        super();\n    }\n    /**\n     * Decodes an encoded packet string into packet JSON.\n     *\n     * @param {String} obj - encoded packet\n     */\n    add(obj) {\n        let packet;\n        if (typeof obj === \"string\") {\n            packet = this.decodeString(obj);\n            if (packet.type === PacketType.BINARY_EVENT ||\n                packet.type === PacketType.BINARY_ACK) {\n                // binary packet's json\n                this.reconstructor = new BinaryReconstructor(packet);\n                // no attachments, labeled binary but no binary data to follow\n                if (packet.attachments === 0) {\n                    super.emit(\"decoded\", packet);\n                }\n            }\n            else {\n                // non-binary full packet\n                super.emit(\"decoded\", packet);\n            }\n        }\n        else if (is_binary_1.isBinary(obj) || obj.base64) {\n            // raw binary data\n            if (!this.reconstructor) {\n                throw new Error(\"got binary data when not reconstructing a packet\");\n            }\n            else {\n                packet = this.reconstructor.takeBinaryData(obj);\n                if (packet) {\n                    // received final buffer\n                    this.reconstructor = null;\n                    super.emit(\"decoded\", packet);\n                }\n            }\n        }\n        else {\n            throw new Error(\"Unknown type: \" + obj);\n        }\n    }\n    /**\n     * Decode a packet String (JSON data)\n     *\n     * @param {String} str\n     * @return {Object} packet\n     */\n    decodeString(str) {\n        let i = 0;\n        // look up type\n        const p = {\n            type: Number(str.charAt(0)),\n        };\n        if (PacketType[p.type] === undefined) {\n            throw new Error(\"unknown packet type \" + p.type);\n        }\n        // look up attachments if type binary\n        if (p.type === PacketType.BINARY_EVENT ||\n            p.type === PacketType.BINARY_ACK) {\n            const start = i + 1;\n            while (str.charAt(++i) !== \"-\" && i != str.length) { }\n            const buf = str.substring(start, i);\n            if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n                throw new Error(\"Illegal attachments\");\n            }\n            p.attachments = Number(buf);\n        }\n        // look up namespace (if any)\n        if (\"/\" === str.charAt(i + 1)) {\n            const start = i + 1;\n            while (++i) {\n                const c = str.charAt(i);\n                if (\",\" === c)\n                    break;\n                if (i === str.length)\n                    break;\n            }\n            p.nsp = str.substring(start, i);\n        }\n        else {\n            p.nsp = \"/\";\n        }\n        // look up id\n        const next = str.charAt(i + 1);\n        if (\"\" !== next && Number(next) == next) {\n            const start = i + 1;\n            while (++i) {\n                const c = str.charAt(i);\n                if (null == c || Number(c) != c) {\n                    --i;\n                    break;\n                }\n                if (i === str.length)\n                    break;\n            }\n            p.id = Number(str.substring(start, i + 1));\n        }\n        // look up json data\n        if (str.charAt(++i)) {\n            const payload = tryParse(str.substr(i));\n            if (Decoder.isPayloadValid(p.type, payload)) {\n                p.data = payload;\n            }\n            else {\n                throw new Error(\"invalid payload\");\n            }\n        }\n        debug(\"decoded %s as %j\", str, p);\n        return p;\n    }\n    static isPayloadValid(type, payload) {\n        switch (type) {\n            case PacketType.CONNECT:\n                return typeof payload === \"object\";\n            case PacketType.DISCONNECT:\n                return payload === undefined;\n            case PacketType.CONNECT_ERROR:\n                return typeof payload === \"string\" || typeof payload === \"object\";\n            case PacketType.EVENT:\n            case PacketType.BINARY_EVENT:\n                return Array.isArray(payload) && payload.length > 0;\n            case PacketType.ACK:\n            case PacketType.BINARY_ACK:\n                return Array.isArray(payload);\n        }\n    }\n    /**\n     * Deallocates a parser's resources\n     */\n    destroy() {\n        if (this.reconstructor) {\n            this.reconstructor.finishedReconstruction();\n        }\n    }\n}\nexports.Decoder = Decoder;\nfunction tryParse(str) {\n    try {\n        return JSON.parse(str);\n    }\n    catch (e) {\n        return false;\n    }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n    constructor(packet) {\n        this.packet = packet;\n        this.buffers = [];\n        this.reconPack = packet;\n    }\n    /**\n     * Method to be called when binary data received from connection\n     * after a BINARY_EVENT packet.\n     *\n     * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n     * @return {null | Object} returns null if more binary data is expected or\n     *   a reconstructed packet object if all buffers have been received.\n     */\n    takeBinaryData(binData) {\n        this.buffers.push(binData);\n        if (this.buffers.length === this.reconPack.attachments) {\n            // done with buffer list\n            const packet = binary_1.reconstructPacket(this.reconPack, this.buffers);\n            this.finishedReconstruction();\n            return packet;\n        }\n        return null;\n    }\n    /**\n     * Cleans up binary packet reconstruction variables.\n     */\n    finishedReconstruction() {\n        this.reconPack = null;\n        this.buffers = [];\n    }\n}\n"]},"metadata":{},"sourceType":"script"}