{"version":3,"file":"irc-message.mjs","names":[],"sources":["../../../src/message/irc/irc-message.ts"],"sourcesContent":["import type { IRCMessagePrefix } from \"./prefix\";\nimport type { IRCMessageTags } from \"./tags\";\nimport { MissingDataError } from \"../parser/missing-data-error\";\n\nexport interface IRCMessageData {\n  readonly rawSource: string;\n\n  readonly ircPrefixRaw: string | undefined;\n  readonly ircPrefix: IRCMessagePrefix | undefined;\n\n  /**\n   * The parser ensures this is always uppercase\n   */\n  readonly ircCommand: string;\n  readonly ircParameters: string[];\n  readonly ircTags: IRCMessageTags;\n}\n\nexport class IRCMessage implements IRCMessageData {\n  public readonly rawSource: string;\n\n  public readonly ircPrefixRaw: string | undefined;\n  public readonly ircPrefix: IRCMessagePrefix | undefined;\n\n  /**\n   * The parser ensures this is always uppercase\n   */\n  public readonly ircCommand: string;\n  public readonly ircParameters: string[];\n  public readonly ircTags: IRCMessageTags;\n\n  public constructor(messageData: IRCMessageData) {\n    this.rawSource = messageData.rawSource;\n    this.ircPrefixRaw = messageData.ircPrefixRaw;\n    this.ircPrefix = messageData.ircPrefix;\n    this.ircCommand = messageData.ircCommand;\n    this.ircParameters = messageData.ircParameters;\n    this.ircTags = messageData.ircTags;\n  }\n}\n\nexport function getParameter(\n  message: Pick<IRCMessage, \"ircParameters\">,\n  index: number,\n): string {\n  // TODO: check where this may result in undefined\n  return message.ircParameters[index]!;\n}\n\nexport function requireParameter(\n  message: Pick<IRCMessage, \"ircParameters\">,\n  index: number,\n): string {\n  if (message.ircParameters.length <= index) {\n    throw new MissingDataError(`Parameter at index ${index} missing`);\n  }\n\n  return message.ircParameters[index]!;\n}\n\nexport function requireNickname(\n  message: Pick<IRCMessage, \"ircPrefix\">,\n): string {\n  if (message.ircPrefix?.nickname == null) {\n    throw new MissingDataError(\"Missing prefix or missing nickname in prefix\");\n  }\n\n  return message.ircPrefix.nickname;\n}\n"],"mappings":";;AAkBA,IAAa,aAAb,MAAkD;CAChD;CAEA;CACA;;;;CAKA;CACA;CACA;CAEA,YAAmB,aAA6B;AAC9C,OAAK,YAAY,YAAY;AAC7B,OAAK,eAAe,YAAY;AAChC,OAAK,YAAY,YAAY;AAC7B,OAAK,aAAa,YAAY;AAC9B,OAAK,gBAAgB,YAAY;AACjC,OAAK,UAAU,YAAY;;;AAI/B,SAAgB,aACd,SACA,OACQ;AAER,QAAO,QAAQ,cAAc;;AAG/B,SAAgB,iBACd,SACA,OACQ;AACR,KAAI,QAAQ,cAAc,UAAU,MAClC,OAAM,IAAI,iBAAiB,sBAAsB,MAAM,UAAU;AAGnE,QAAO,QAAQ,cAAc;;AAG/B,SAAgB,gBACd,SACQ;AACR,KAAI,QAAQ,WAAW,YAAY,KACjC,OAAM,IAAI,iBAAiB,+CAA+C;AAG5E,QAAO,QAAQ,UAAU"}