{"version":3,"file":"send-pings.mjs","names":[],"sources":["../../src/functionalities/send-pings.ts"],"sourcesContent":["import type { SingleConnection } from \"~/client/connection\";\nimport { sendPing } from \"~/operations/ping\";\nimport { setDefaults } from \"~/utils/set-defaults\";\n\nexport interface ClientPingConfig {\n  /**\n   * send interval in milliseconds\n   */\n  interval: number;\n\n  /**\n   * timeout in milliseconds\n   */\n  timeout: number;\n}\n\nconst configDefaults: ClientPingConfig = {\n  interval: 60 * 1000,\n  timeout: 2 * 1000,\n};\n\nexport function sendClientPings(\n  conn: SingleConnection,\n  config: Partial<ClientPingConfig> = {},\n): void {\n  const { interval, timeout } = setDefaults(config, configDefaults);\n\n  let pingIdCounter = 0;\n  const runAutomaticPing = async (): Promise<void> => {\n    const pingIdentifier = `dank-twitch-irc:automatic:${pingIdCounter++}`;\n    try {\n      await sendPing(conn, pingIdentifier, timeout);\n    } catch {\n      // ignored\n    }\n  };\n\n  const registeredInterval = setInterval(\n    () => void runAutomaticPing(),\n    interval,\n  );\n  conn.once(\"close\", () => clearInterval(registeredInterval));\n}\n"],"mappings":";;;AAgBA,MAAM,iBAAmC;CACvC,UAAU,KAAK;CACf,SAAS,IAAI;CACd;AAED,SAAgB,gBACd,MACA,SAAoC,EAAE,EAChC;CACN,MAAM,EAAE,UAAU,YAAY,YAAY,QAAQ,eAAe;CAEjE,IAAI,gBAAgB;CACpB,MAAM,mBAAmB,YAA2B;EAClD,MAAM,iBAAiB,6BAA6B;AACpD,MAAI;AACF,SAAM,SAAS,MAAM,gBAAgB,QAAQ;UACvC;;CAKV,MAAM,qBAAqB,kBACnB,KAAK,kBAAkB,EAC7B,SACD;AACD,MAAK,KAAK,eAAe,cAAc,mBAAmB,CAAC"}