{"version":3,"file":"Protocol.mjs","sources":["../../src/Protocol.ts"],"sourcesContent":["// Use codes between 0~127 for lesser throughput (1 byte)\n\nexport enum Protocol {\n    // Room-related (10~19)\n    HANDSHAKE = 9,\n    JOIN_ROOM = 10,\n    ERROR = 11,\n    LEAVE_ROOM = 12,\n    ROOM_DATA = 13,\n    ROOM_STATE = 14,\n    ROOM_STATE_PATCH = 15,\n    ROOM_DATA_SCHEMA = 16,\n}\n\nexport enum ErrorCode {\n    MATCHMAKE_NO_HANDLER = 4210,\n    MATCHMAKE_INVALID_CRITERIA = 4211,\n    MATCHMAKE_INVALID_ROOM_ID = 4212,\n    MATCHMAKE_UNHANDLED = 4213,\n    MATCHMAKE_EXPIRED = 4214,\n\n    AUTH_FAILED = 4215,\n    APPLICATION_ERROR = 4216,\n}\n\nexport function utf8Read(view: number[], offset: number) {\n  const length = view[offset++];\n\n  var string = '', chr = 0;\n  for (var i = offset, end = offset + length; i < end; i++) {\n    var byte = view[i];\n    if ((byte & 0x80) === 0x00) {\n      string += String.fromCharCode(byte);\n      continue;\n    }\n    if ((byte & 0xe0) === 0xc0) {\n      string += String.fromCharCode(\n        ((byte & 0x1f) << 6) |\n        (view[++i] & 0x3f)\n      );\n      continue;\n    }\n    if ((byte & 0xf0) === 0xe0) {\n      string += String.fromCharCode(\n        ((byte & 0x0f) << 12) |\n        ((view[++i] & 0x3f) << 6) |\n        ((view[++i] & 0x3f) << 0)\n      );\n      continue;\n    }\n    if ((byte & 0xf8) === 0xf0) {\n      chr = ((byte & 0x07) << 18) |\n        ((view[++i] & 0x3f) << 12) |\n        ((view[++i] & 0x3f) << 6) |\n        ((view[++i] & 0x3f) << 0);\n      if (chr >= 0x010000) { // surrogate pair\n        chr -= 0x010000;\n        string += String.fromCharCode((chr >>> 10) + 0xD800, (chr & 0x3FF) + 0xDC00);\n      } else {\n        string += String.fromCharCode(chr);\n      }\n      continue;\n    }\n    throw new Error('Invalid byte ' + byte.toString(16));\n  }\n  return string;\n}\n\n// Faster for short strings than Buffer.byteLength\nexport function utf8Length(str: string = '') {\n  let c = 0;\n  let length = 0;\n  for (let i = 0, l = str.length; i < l; i++) {\n    c = str.charCodeAt(i);\n    if (c < 0x80) {\n      length += 1;\n    } else if (c < 0x800) {\n      length += 2;\n    } else if (c < 0xd800 || c >= 0xe000) {\n      length += 3;\n    } else {\n      i++;\n      length += 4;\n    }\n  }\n  return length + 1;\n}\n"],"names":[],"mappings":"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"}