@eventmsg/core
Version:
EventMsgV3 TypeScript library - Core protocol implementation with transport abstraction
91 lines (89 loc) • 2.57 kB
text/typescript
import { EventMsgConfig } from "./types/config.cjs";
import { MessageHeader } from "./types/message.cjs";
//#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.cts.map