{"version":3,"file":"messages-protocol-Ss4bZWiG.cjs","names":["data: string","message: TextMessageRequest","binaryData: ArrayBuffer | ArrayBufferView | Uint8Array","uint8Array: Uint8Array","message: BinaryMessageRequest","jsonData: string","base64Data: string","message: MessageRequest"],"sources":["../src/messages-protocol.ts"],"sourcesContent":["/**\n * Protocol definitions for /messages POST endpoint\n * Handles both text and binary message transmission from client to server\n */\n\n// Message request types sent to /messages endpoint\nexport interface TextMessageRequest {\n  type: 'text'\n  data: string\n}\n\nexport interface BinaryMessageRequest {\n  type: 'binary'\n  data: string // base64 encoded binary data\n}\n\nexport type MessageRequest = TextMessageRequest | BinaryMessageRequest\n\n// Encoding functions for different message types\nexport function encodeTextMessageRequest(data: string): string {\n  const message: TextMessageRequest = {\n    type: 'text',\n    data,\n  }\n  return JSON.stringify(message)\n}\n\nexport function encodeBinaryMessageRequest(binaryData: ArrayBuffer | ArrayBufferView | Uint8Array): string {\n  // Convert to Uint8Array if needed\n  let uint8Array: Uint8Array\n  if (binaryData instanceof ArrayBuffer) {\n    uint8Array = new Uint8Array(binaryData)\n  } else if (binaryData instanceof Uint8Array) {\n    uint8Array = binaryData\n  } else {\n    // ArrayBufferView (like DataView, typed arrays)\n    uint8Array = new Uint8Array(binaryData.buffer, binaryData.byteOffset, binaryData.byteLength)\n  }\n\n  // Convert to base64\n  const base64Data = Buffer.from(uint8Array).toString('base64')\n\n  const message: BinaryMessageRequest = {\n    type: 'binary',\n    data: base64Data,\n  }\n  return JSON.stringify(message)\n}\n\n// Decoding function with validation\nexport function decodeMessageRequest(jsonData: string): MessageRequest {\n  try {\n    const parsed = JSON.parse(jsonData)\n\n    if (!parsed || typeof parsed !== 'object' || typeof parsed.type !== 'string') {\n      throw new Error('Invalid message request format')\n    }\n\n    if (parsed.type === 'text') {\n      if (typeof parsed.data !== 'string') {\n        throw new Error('Text message data must be a string')\n      }\n      return parsed as TextMessageRequest\n    } else if (parsed.type === 'binary') {\n      if (typeof parsed.data !== 'string') {\n        throw new Error('Binary message data must be a base64 string')\n      }\n      return parsed as BinaryMessageRequest\n    } else {\n      throw new Error(`Unknown message type: ${parsed.type}`)\n    }\n  } catch (error) {\n    throw new Error(`Failed to decode message request: ${error instanceof Error ? error.message : 'Unknown error'}`)\n  }\n}\n\n// Utility function to decode base64 binary data back to Buffer (Node.js only)\nexport function decodeBinaryData(base64Data: string): Buffer {\n  try {\n    return Buffer.from(base64Data, 'base64')\n  } catch (error) {\n    throw new Error(`Failed to decode base64 data: ${error instanceof Error ? error.message : 'Unknown error'}`)\n  }\n}\n\n// Type guards for runtime checking\nexport function isTextMessageRequest(message: MessageRequest): message is TextMessageRequest {\n  return message.type === 'text'\n}\n\nexport function isBinaryMessageRequest(message: MessageRequest): message is BinaryMessageRequest {\n  return message.type === 'binary'\n}\n"],"mappings":";;AAmBA,SAAgB,yBAAyBA,MAAsB;CAC7D,MAAMC,UAA8B;EAClC,MAAM;EACN;CACD;AACD,QAAO,KAAK,UAAU,QAAQ;AAC/B;AAED,SAAgB,2BAA2BC,YAAgE;CAEzG,IAAIC;AACJ,KAAI,sBAAsB,YACxB,cAAa,IAAI,WAAW;UACnB,sBAAsB,WAC/B,cAAa;KAGb,cAAa,IAAI,WAAW,WAAW,QAAQ,WAAW,YAAY,WAAW;CAInF,MAAM,aAAa,OAAO,KAAK,WAAW,CAAC,SAAS,SAAS;CAE7D,MAAMC,UAAgC;EACpC,MAAM;EACN,MAAM;CACP;AACD,QAAO,KAAK,UAAU,QAAQ;AAC/B;AAGD,SAAgB,qBAAqBC,UAAkC;AACrE,KAAI;EACF,MAAM,SAAS,KAAK,MAAM,SAAS;AAEnC,OAAK,iBAAiB,WAAW,mBAAmB,OAAO,SAAS,SAClE,OAAM,IAAI,MAAM;AAGlB,MAAI,OAAO,SAAS,QAAQ;AAC1B,cAAW,OAAO,SAAS,SACzB,OAAM,IAAI,MAAM;AAElB,UAAO;EACR,WAAU,OAAO,SAAS,UAAU;AACnC,cAAW,OAAO,SAAS,SACzB,OAAM,IAAI,MAAM;AAElB,UAAO;EACR,MACC,OAAM,IAAI,OAAO,wBAAwB,OAAO,KAAK;CAExD,SAAQ,OAAO;AACd,QAAM,IAAI,OAAO,oCAAoC,iBAAiB,QAAQ,MAAM,UAAU,gBAAgB;CAC/G;AACF;AAGD,SAAgB,iBAAiBC,YAA4B;AAC3D,KAAI;AACF,SAAO,OAAO,KAAK,YAAY,SAAS;CACzC,SAAQ,OAAO;AACd,QAAM,IAAI,OAAO,gCAAgC,iBAAiB,QAAQ,MAAM,UAAU,gBAAgB;CAC3G;AACF;AAGD,SAAgB,qBAAqBC,SAAwD;AAC3F,QAAO,QAAQ,SAAS;AACzB;AAED,SAAgB,uBAAuBA,SAA0D;AAC/F,QAAO,QAAQ,SAAS;AACzB"}