{"version":3,"file":"twitch-message.mjs","names":[],"sources":["../../../src/message/parser/twitch-message.ts"],"sourcesContent":["import type { IRCMessage } from \"../irc/irc-message\";\nimport { CapMessage } from \"../twitch-types/cap\";\nimport { ClearchatMessage } from \"../twitch-types/clearchat\";\nimport { ClearmsgMessage } from \"../twitch-types/clearmsg\";\nimport { PingMessage } from \"../twitch-types/connection/ping\";\nimport { PongMessage } from \"../twitch-types/connection/pong\";\nimport { ReconnectMessage } from \"../twitch-types/connection/reconnect\";\nimport { GlobaluserstateMessage } from \"../twitch-types/globaluserstate\";\nimport { HosttargetMessage } from \"../twitch-types/hosttarget\";\nimport { JoinMessage } from \"../twitch-types/membership/join\";\nimport { PartMessage } from \"../twitch-types/membership/part\";\nimport { NoticeMessage } from \"../twitch-types/notice\";\nimport { PrivmsgMessage } from \"../twitch-types/privmsg\";\nimport { RoomstateMessage } from \"../twitch-types/roomstate\";\nimport { UsernoticeMessage } from \"../twitch-types/usernotice\";\nimport { UserstateMessage } from \"../twitch-types/userstate\";\nimport { WhisperMessage } from \"../twitch-types/whisper\";\nimport { parseIRCMessage } from \"./irc-message\";\n\nexport const commandClassMap: {\n  CLEARCHAT: typeof ClearchatMessage;\n  CLEARMSG: typeof ClearmsgMessage;\n  GLOBALUSERSTATE: typeof GlobaluserstateMessage;\n  HOSTTARGET: typeof HosttargetMessage;\n  NOTICE: typeof NoticeMessage;\n  PRIVMSG: typeof PrivmsgMessage;\n  ROOMSTATE: typeof RoomstateMessage;\n  USERNOTICE: typeof UsernoticeMessage;\n  USERSTATE: typeof UserstateMessage;\n  WHISPER: typeof WhisperMessage;\n  JOIN: typeof JoinMessage;\n  PART: typeof PartMessage;\n  RECONNECT: typeof ReconnectMessage;\n  PING: typeof PingMessage;\n  PONG: typeof PongMessage;\n  CAP: typeof CapMessage;\n\n  // these are all other messages that are not mapped to twitch messages specifically, e.g. 001\n  // the weird index signature is for nicer intellisense\n  [key: string & Record<never, never>]: typeof IRCMessage;\n} = {\n  CLEARCHAT: ClearchatMessage,\n  CLEARMSG: ClearmsgMessage,\n  GLOBALUSERSTATE: GlobaluserstateMessage,\n  HOSTTARGET: HosttargetMessage,\n  NOTICE: NoticeMessage,\n  PRIVMSG: PrivmsgMessage,\n  ROOMSTATE: RoomstateMessage,\n  USERNOTICE: UsernoticeMessage,\n  USERSTATE: UserstateMessage,\n  WHISPER: WhisperMessage,\n  JOIN: JoinMessage,\n  PART: PartMessage,\n  RECONNECT: ReconnectMessage,\n  PING: PingMessage,\n  PONG: PongMessage,\n  CAP: CapMessage,\n} as const;\n\nexport type TwitchCommands = typeof commandClassMap;\n\nexport function parseTwitchMessage(messageSource: string): IRCMessage {\n  const ircMessage = parseIRCMessage(messageSource);\n\n  const MessageClass = commandClassMap[ircMessage.ircCommand];\n  return MessageClass == null ? ircMessage : new MessageClass(ircMessage);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAmBA,MAAa,kBAqBT;CACF,WAAW;CACX,UAAU;CACV,iBAAiB;CACjB,YAAY;CACZ,QAAQ;CACR,SAAS;CACT,WAAW;CACX,YAAY;CACZ,WAAW;CACX,SAAS;CACT,MAAM;CACN,MAAM;CACN,WAAW;CACX,MAAM;CACN,MAAM;CACN,KAAK;CACN;AAID,SAAgB,mBAAmB,eAAmC;CACpE,MAAM,aAAa,gBAAgB,cAAc;CAEjD,MAAM,eAAe,gBAAgB,WAAW;AAChD,QAAO,gBAAgB,OAAO,aAAa,IAAI,aAAa,WAAW"}