@devgrid/netron
Version:
A powerful TypeScript library for building distributed systems with event bus, streaming capabilities, and remote object invocation. Features WebSocket-based bidirectional communication between Node.js and browser environments, service discovery, and type
40 lines • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.serializer = void 0;
const messagepack_1 = require("@devgrid/messagepack");
const reference_1 = require("../reference");
const definition_1 = require("../definition");
const stream_reference_1 = require("../stream-reference");
exports.serializer = new messagepack_1.Serializer();
(0, messagepack_1.registerCommonTypesFor)(exports.serializer);
exports.serializer
.register(109, definition_1.Definition, (obj, buf) => {
exports.serializer.encode(obj.id, buf);
exports.serializer.encode(obj.parentId, buf);
exports.serializer.encode(obj.peerId, buf);
exports.serializer.encode(obj.meta, buf);
}, (buf) => {
const id = exports.serializer.decode(buf);
const parentId = exports.serializer.decode(buf);
const peerId = exports.serializer.decode(buf);
const meta = exports.serializer.decode(buf);
const def = new definition_1.Definition(id, peerId, meta);
def.parentId = parentId;
return def;
})
.register(108, reference_1.Reference, (obj, buf) => {
exports.serializer.encode(obj.defId, buf);
}, (buf) => new reference_1.Reference(exports.serializer.decode(buf)))
.register(107, stream_reference_1.StreamReference, (obj, buf) => {
exports.serializer.encode(obj.streamId.toString(), buf);
buf.writeUInt8(obj.type === 'writable' ? 1 : 0);
buf.writeUInt8(obj.isLive ? 1 : 0);
exports.serializer.encode(obj.peerId, buf);
}, (buf) => {
const streamId = Number(exports.serializer.decode(buf));
const streamType = buf.readUInt8() === 1 ? 'writable' : 'readable';
const isLive = buf.readUInt8() === 1;
const peerId = exports.serializer.decode(buf);
return new stream_reference_1.StreamReference(streamId, streamType, isLive, peerId);
});
//# sourceMappingURL=serializer.js.map