{"version":3,"file":"part.mjs","names":[],"sources":["../../src/operations/part.ts"],"sourcesContent":["import type { SingleConnection } from \"~/client/connection\";\nimport { awaitResponse } from \"~/await/await-response\";\nimport { MessageError } from \"~/client/errors\";\nimport { PartMessage } from \"~/message/twitch-types/membership/part\";\n\nexport class PartError extends MessageError {\n  public failedChannelName: string;\n\n  public constructor(\n    failedChannelName: string,\n    message: string,\n    cause?: Error,\n  ) {\n    super(message, cause);\n    this.failedChannelName = failedChannelName;\n  }\n}\n\nexport async function awaitPartResponse(\n  conn: SingleConnection,\n  channelName: string,\n): Promise<PartMessage> {\n  return awaitResponse(conn, {\n    // :justinfan12345!justinfan12345@justinfan12345.tmi.twitch.tv PART #pajlada\n    success: (message): message is PartMessage =>\n      message instanceof PartMessage &&\n      message.channel.login === channelName &&\n      message.partedUsername === conn.configuration.username,\n    errorType: (message, cause) => new PartError(channelName, message, cause),\n    errorMessage: `Failed to part channel ${channelName}`,\n  });\n}\n\nexport function partNothingToDo(\n  conn: SingleConnection,\n  channelName: string,\n): boolean {\n  return (\n    !conn.wantedChannels.has(channelName) &&\n    !conn.joinedChannels.has(channelName)\n  );\n}\n\nexport async function partChannel(\n  conn: SingleConnection,\n  channelName: string,\n): Promise<PartMessage | undefined> {\n  if (partNothingToDo(conn, channelName)) {\n    // nothing to do (already parted)\n    return;\n  }\n\n  conn.sendRaw(`PART #${channelName}`);\n\n  conn.wantedChannels.delete(channelName);\n  const response = await awaitPartResponse(conn, channelName);\n  conn.joinedChannels.delete(channelName);\n  return response;\n}\n"],"mappings":";;;;AAKA,IAAa,YAAb,cAA+B,aAAa;CAC1C;CAEA,YACE,mBACA,SACA,OACA;AACA,QAAM,SAAS,MAAM;AACrB,OAAK,oBAAoB;;;AAI7B,eAAsB,kBACpB,MACA,aACsB;AACtB,QAAO,cAAc,MAAM;EAEzB,UAAU,YACR,mBAAmB,eACnB,QAAQ,QAAQ,UAAU,eAC1B,QAAQ,mBAAmB,KAAK,cAAc;EAChD,YAAY,SAAS,UAAU,IAAI,UAAU,aAAa,SAAS,MAAM;EACzE,cAAc,0BAA0B;EACzC,CAAC;;AAGJ,SAAgB,gBACd,MACA,aACS;AACT,QACE,CAAC,KAAK,eAAe,IAAI,YAAY,IACrC,CAAC,KAAK,eAAe,IAAI,YAAY;;AAIzC,eAAsB,YACpB,MACA,aACkC;AAClC,KAAI,gBAAgB,MAAM,YAAY,CAEpC;AAGF,MAAK,QAAQ,SAAS,cAAc;AAEpC,MAAK,eAAe,OAAO,YAAY;CACvC,MAAM,WAAW,MAAM,kBAAkB,MAAM,YAAY;AAC3D,MAAK,eAAe,OAAO,YAAY;AACvC,QAAO"}