UNPKG

@syntropylog/adapters

Version:
63 lines 2.13 kB
/** * Utility class for handling payload serialization/deserialization * across different broker adapters. */ export class PayloadSerializer { /** * Serializes a BrokerMessage payload for sending to a broker. * Handles Buffer objects by extracting their JSON content. */ static serializeForBroker(message) { let payloadToSend; if (Buffer.isBuffer(message.payload)) { // If it's already a Buffer, decode it as JSON and re-encode try { const jsonString = message.payload.toString(); payloadToSend = JSON.parse(jsonString); } catch { // If it's not valid JSON, send as string payloadToSend = message.payload.toString(); } } else { payloadToSend = message.payload; } return JSON.stringify(payloadToSend); } /** * Deserializes a payload received from a broker into a Buffer * that the SyntropyLog framework expects. */ static deserializeFromBroker(brokerPayload) { if (!brokerPayload) { return Buffer.alloc(0); } try { // Convert to string if it's a Buffer const jsonString = Buffer.isBuffer(brokerPayload) ? brokerPayload.toString() : brokerPayload; // Parse the JSON const parsedPayload = JSON.parse(jsonString); // Return as Buffer with JSON stringified content return Buffer.from(JSON.stringify(parsedPayload)); } catch { // If it's not valid JSON, return as Buffer return Buffer.isBuffer(brokerPayload) ? brokerPayload : Buffer.from(brokerPayload); } } /** * Creates a BrokerMessage with properly deserialized payload */ static createBrokerMessage(brokerPayload, headers) { return { payload: this.deserializeFromBroker(brokerPayload), headers: headers || {}, }; } } //# sourceMappingURL=PayloadSerializer.js.map