UNPKG

@devgrid/messagepack

Version:
108 lines 3.94 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.tryDecode = exports.decode = exports.encode = exports.serializer = exports.Serializer = exports.registerCommonTypesFor = void 0; const long_1 = __importDefault(require("long")); const serializer_1 = __importDefault(require("./serializer")); exports.Serializer = serializer_1.default; const errors_1 = require("./errors"); const registerCommonTypesFor = (s) => { s.register(126, Error, (obj, buf) => { buf.writeUInt16BE((0, errors_1.getStdErrorId)(obj)); s.encode(obj.name, buf); s.encode(obj.stack, buf); s.encode(obj.message, buf); const customFields = Object.keys(obj).filter((key) => !['stack', 'message', 'name'].includes(key) && obj[key] !== undefined); buf.writeUInt16BE(customFields.length); for (const key of customFields) { s.encode(key, buf); s.encode(obj[key], buf); } }, (buf) => { const id = buf.readUInt16BE(); const name = s.decode(buf); const stack = s.decode(buf); const message = s.decode(buf); const error = (0, errors_1.createError)(id, message, stack); error.name = name; const customFieldsCount = buf.readUInt16BE(); for (let i = 0; i < customFieldsCount; i++) { const key = s.decode(buf); const value = s.decode(buf); error[key] = value; } return error; }); s.register(125, Date, (obj, buf) => { buf.writeUInt64BE(obj.getTime()); }, (buf) => new Date(buf.readUInt64BE().toNumber())); s.register(124, Map, (obj, buf) => { buf.writeUInt32BE(obj.size); for (const [key, val] of obj.entries()) { s.encode(key, buf); s.encode(val, buf); } }, (buf) => { const map = new Map(); const size = buf.readUInt32BE(); for (let i = 0; i < size; i++) { const key = s.decode(buf); const val = s.decode(buf); map.set(key, val); } return map; }); s.register(123, Set, (obj, buf) => { buf.writeUInt32BE(obj.size); for (const val of obj.values()) { s.encode(val, buf); } }, (buf) => { const set = new Set(); const size = buf.readUInt32BE(); for (let i = 0; i < size; i++) { const val = s.decode(buf); set.add(val); } return set; }); s.register(121, RegExp, (obj, buf) => { s.encode(obj.source, buf); s.encode(obj.flags, buf); }, (buf) => { const source = s.decode(buf); const flags = s.decode(buf); return new RegExp(source, flags); }); s.register(120, BigInt, (obj, buf) => { const str = obj.toString(); s.encode(str, buf); }, (buf) => { const str = s.decode(buf); return BigInt(str); }); s.register(119, long_1.default, (obj, buf) => { buf.writeInt8(obj.unsigned ? 1 : 0); if (obj.unsigned) { buf.writeUInt64BE(obj); } else { buf.writeInt64BE(obj); } }, (buf) => { const unsigned = Boolean(buf.readInt8()); return unsigned ? buf.readUInt64BE() : buf.readInt64BE(); }); }; exports.registerCommonTypesFor = registerCommonTypesFor; exports.serializer = new serializer_1.default(); (0, exports.registerCommonTypesFor)(exports.serializer); const encode = (obj) => exports.serializer.encode(obj).toBuffer(); exports.encode = encode; const decode = (buf) => exports.serializer.decode(buf); exports.decode = decode; const tryDecode = (buf) => exports.serializer.decoder.tryDecode(buf); exports.tryDecode = tryDecode; //# sourceMappingURL=index.js.map