UNPKG

@eventmsg/core

Version:

EventMsgV3 TypeScript library - Core protocol implementation with transport abstraction

91 lines (89 loc) 2.57 kB
import { EventMsgConfig } from "./types/config.js"; import { MessageHeader } from "./types/message.js"; //#region src/protocol.d.ts /** * Decoded message structure */ interface DecodedMessage { header: MessageHeader; eventName: string; eventData: string; } /** * EventMsgV3 Protocol Implementation * * Handles encoding and decoding of EventMsgV3 binary protocol messages. * Message format: [SOH][StuffedHeader][STX][StuffedEventName][US][StuffedEventData][EOT] */ declare class Protocol { private readonly options; private readonly encoding; private readonly logger; constructor(config: EventMsgConfig); /** * Encode a message into EventMsgV3 binary format * * @param header Message header (7 bytes) * @param eventName Event name string * @param eventData Event data string (JSON) * @returns Encoded binary message * @throws {EncodingError} If encoding fails * @throws {MessageSizeError} If message exceeds size limits */ encode(header: MessageHeader, eventName: string, eventData: string): Uint8Array; /** * Encode a message with binary data into EventMsgV3 format * * @param header Message header (7 bytes) * @param eventName Event name string * @param eventData Binary event data * @returns Encoded binary message * @throws {EncodingError} If encoding fails * @throws {MessageSizeError} If message exceeds size limits */ encodeBinary(header: MessageHeader, eventName: string, eventData: Uint8Array): Uint8Array; /** * Decode a binary message into EventMsgV3 components * * @param data Binary message data * @returns Decoded message components * @throws {DecodingError} If decoding fails * @throws {InvalidMessageError} If message format is invalid */ decode(data: Uint8Array): DecodedMessage; /** * Find a control character in data, skipping escaped instances */ private findControlChar; /** * Serialize message header to 7 bytes (big-endian messageId) */ private serializeHeader; /** * Deserialize 7 bytes to message header (big-endian messageId) */ private deserializeHeader; /** * Convert string to bytes using configured encoding */ private stringToBytes; /** * Convert bytes to string using configured encoding */ private bytesToString; /** * Validate message header fields */ private validateHeader; /** * Validate event name length */ private validateEventName; /** * Validate event data length */ private validateEventData; } //#endregion export { DecodedMessage, Protocol }; //# sourceMappingURL=protocol.d.ts.map