{"version":3,"file":"clearchat.mjs","names":[],"sources":["../../../src/message/twitch-types/clearchat.ts"],"sourcesContent":["import { ChannelIRCMessage } from \"../irc/channel-irc-message\";\nimport { type IRCMessageData, getParameter } from \"../irc/irc-message\";\nimport { tagParserFor } from \"../parser/tag-values\";\n\nexport interface ClearchatTarget {\n  readonly login: string | undefined;\n}\n\nexport class ClearchatMessage extends ChannelIRCMessage {\n  private readonly _targetLogin: string | undefined;\n  private readonly _banDuration: number | undefined;\n\n  public get target(): ClearchatTarget {\n    return {\n      login: this._targetLogin,\n    };\n  }\n\n  /**\n   * length in seconds (integer), undefined if permanent ban\n   */\n  public get banDuration(): number | undefined {\n    return this._banDuration;\n  }\n\n  // ---- Deprecated aliases ----\n\n  /** @deprecated Use {@link target.login} instead. */\n  public get targetUsername(): string | undefined {\n    return this._targetLogin;\n  }\n\n  public constructor(message: IRCMessageData) {\n    super(message);\n\n    const tagParser = tagParserFor(this.ircTags);\n    this._targetLogin = getParameter(this, 1);\n    this._banDuration = tagParser.getInt(\"ban-duration\");\n  }\n\n  public wasChatCleared(): this is ClearChatClearchatMessage {\n    return this._targetLogin == null && this._banDuration == null;\n  }\n\n  public isTimeout(): this is TimeoutClearchatMessage {\n    return this._targetLogin != null && this._banDuration != null;\n  }\n\n  public isPermaban(): this is PermabanClearchatMessage {\n    return this._targetLogin != null && this._banDuration == null;\n  }\n}\n\nexport interface ClearChatClearchatMessage extends ClearchatMessage {\n  target: ClearchatTarget & { login: undefined };\n  banDuration: undefined;\n}\n\nexport interface TimeoutClearchatMessage extends ClearchatMessage {\n  target: ClearchatTarget & { login: string };\n  banDuration: number;\n}\n\nexport interface PermabanClearchatMessage extends ClearchatMessage {\n  target: ClearchatTarget & { login: string };\n  banDuration: undefined;\n}\n"],"mappings":";;;;AAQA,IAAa,mBAAb,cAAsC,kBAAkB;CACtD;CACA;CAEA,IAAW,SAA0B;AACnC,SAAO,EACL,OAAO,KAAK,cACb;;;;;CAMH,IAAW,cAAkC;AAC3C,SAAO,KAAK;;;CAMd,IAAW,iBAAqC;AAC9C,SAAO,KAAK;;CAGd,YAAmB,SAAyB;AAC1C,QAAM,QAAQ;EAEd,MAAM,YAAY,aAAa,KAAK,QAAQ;AAC5C,OAAK,eAAe,aAAa,MAAM,EAAE;AACzC,OAAK,eAAe,UAAU,OAAO,eAAe;;CAGtD,iBAA2D;AACzD,SAAO,KAAK,gBAAgB,QAAQ,KAAK,gBAAgB;;CAG3D,YAAoD;AAClD,SAAO,KAAK,gBAAgB,QAAQ,KAAK,gBAAgB;;CAG3D,aAAsD;AACpD,SAAO,KAAK,gBAAgB,QAAQ,KAAK,gBAAgB"}