UNPKG

@swtc/serializer

Version:
56 lines 1.67 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SerializedType = void 0; const extend_1 = __importDefault(require("extend")); class SerializedType { constructor(methods) { extend_1.default(this, methods); } static serialize_varint(so, val) { if (val < 0) { throw new Error("Variable integers are unsigned."); } if (val <= 192) { so.append([val]); } else if (val <= 12480) { val -= 193; so.append([193 + (val >>> 8), val & 0xff]); } else if (val <= 918744) { val -= 12481; so.append([241 + (val >>> 16), (val >>> 8) & 0xff, val & 0xff]); } else { throw new Error("Variable integer overflow."); } } parse_varint(so) { const b1 = so.read(1)[0]; let b2; let b3; let result; if (b1 > 254) { throw new Error("Invalid varint length indicator"); } if (b1 <= 192) { result = b1; } else if (b1 <= 240) { b2 = so.read(1)[0]; result = 193 + (b1 - 193) * 256 + b2; } else if (b1 <= 254) { b2 = so.read(1)[0]; b3 = so.read(1)[0]; result = 12481 + (b1 - 241) * 65536 + b2 * 256 + b3; } return result; } } exports.SerializedType = SerializedType; exports.default = SerializedType; //# sourceMappingURL=SerializedType.js.map