{"version":3,"sources":["jsdelivr-header.js","/npm/discord-inviter@0.9.3/src/util.js"],"names":[],"mappings":"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","file":"/npm/discord-inviter@0.9.3/src/util.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/discord-inviter@0.9.3/src/util.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","var Event = require(\"events\");\n///// Error log /////\nvar error = (err) => {\n  throw new Error(err);\n};\n\n/////\nclass inviteTracker extends Event {\n  ////\n  constructor(client) {\n    if (!client || typeof client != \"object\")\n      return error(\"can't create tracker without discord client!\");\n    try {\n      super();\n      this.client = client;\n      this.invites = new Map();\n      this.invitesVanity = new Map();\n      this.client.on(\"ready\", () => this.ready());\n      this.client.on(\"guildCreate\", async (guild) => this.guildCreate(guild));\n      this.client.on(\"guildDelete\", async (guild) => this.guildDelete(guild));\n      this.client.on(\"inviteCreate\", async (invite) =>\n        this.inviteUpdate(invite)\n      );\n      this.client.on(\"inviteDelete\", async (invite) =>\n        this.inviteUpdate(invite)\n      );\n      this.client.on(\"guildMemberAdd\", async (member) =>\n        this.memberAdd(member)\n      );\n    } catch (e) {\n      try {\n        this.emit(\"error\", null, e);\n      } catch { }\n    }\n  }\n\n  ////\n  static async getMemberInvites(member) {\n    try {\n      if (!member?.guild || !member?.user)\n        return error(\"can't find guild member !\");\n      var guildInvites = await (member.guild?.invites\n        ? member.guild.invites.fetch()\n        : member.guild.fetchInvites()),\n        invite = guildInvites\n          ?.filter((i) => i?.inviter?.id == member?.user?.id)\n          ?.map((i) => {\n            return {\n              code: i.code,\n              uses: i.uses,\n            };\n          });\n      return {\n        count: invite?.reduce((p, v) => p + v.uses, 0),\n        codes: invite?.map((i) => i.code),\n      };\n    } catch (e) {\n      return error(e);\n    }\n  }\n\n  ////\n  static async getTopInvites(guild) {\n    if (!guild?.id) return error(\"can't find the guild !\");\n    try {\n      var guildInvites = await (guild?.invites\n        ? guild.invites.fetch()\n        : guild.fetchInvites()),\n        memberInvites = [...new Set(guildInvites?.map((i) => i?.inviter?.id))],\n        top = memberInvites\n          .map((inv) => {\n            var invite = guildInvites\n              ?.filter((i) => i?.inviter?.id == inv)\n              ?.map((i) => {\n                return {\n                  code: i.code,\n                  uses: i.uses,\n                  inviter: i.inviter,\n                };\n              });\n\n            return {\n              user: invite[0]?.inviter,\n              count: invite?.reduce((p, v) => p + v.uses, 0),\n              codes: invite?.map((i) => i.code),\n            };\n          })\n          ?.sort((a, b) => b.count - a.count);\n      return top;\n    } catch (e) {\n      return error(e);\n    }\n  }\n\n  ////\n  static async getInfo(client, code) {\n    if (!client || typeof client != \"object\")\n      return error(\"can't get info without discord client!\");\n    if (!code) return error(\"Invite url/code required\");\n    try {\n      var invite = await client.fetchInvite(code);\n      invite.url = `https://discord.gg/${invite.code}`;\n      if (invite.inviter)\n        invite.inviter.tag = `${invite.inviter.username}#${invite.inviter.discriminator}`;\n      return invite;\n    } catch (e) {\n      return null;\n    }\n  }\n\n  ////\n  async resolveInvites(guild, invites) {\n    try {\n      if (invites) {\n        invites = invites.map((i) => this.tempInvites(i));\n        this.invites.set(guild.id, invites);\n      }\n      if (guild.features.includes(\"VANITY_URL\") || guild.features.includes(\"VanityURL\")) {\n        var vanityData = await guild.fetchVanityData();\n        if (vanityData?.code)\n          this.invitesVanity.set(guild.id, {\n            code: vanityData.code,\n            uses: vanityData.uses,\n          });\n      }\n    } catch (e) {\n      try {\n        this.emit(\"error\", guild, e);\n      } catch { }\n    }\n  }\n\n  ////\n  tempInvites(invite) {\n    return {\n      code: invite.code,\n      url: invite.url,\n      uses: invite.uses,\n      inviter: invite.inviter,\n    };\n  }\n\n  ////\n  async ready() {\n    this.client.guilds.cache.map(async (g) => {\n      try {\n        var invites = await (g?.invites ? g.invites.fetch() : g.fetchInvites());\n        this.resolveInvites(g, invites);\n      } catch (e) {\n        try {\n          this.emit(\"error\", g, e);\n        } catch { }\n      }\n    });\n  }\n\n  ////\n  async inviteUpdate(invite) {\n    try {\n      var invites = await (invite.guild?.invites\n        ? invite.guild.invites.fetch()\n        : invite.guild.fetchInvites());\n      this.resolveInvites(invite.guild, invites);\n    } catch (e) {\n      try {\n        this.emit(\"error\", invite.guild, e);\n      } catch { }\n    }\n  }\n\n  ////\n  async guildCreate(guild) {\n    try {\n      var invites = await (guild?.invites\n        ? guild.invites.fetch()\n        : guild.fetchInvites());\n      this.resolveInvites(guild, invites);\n    } catch (e) {\n      try {\n        this.emit(\"error\", guild, e);\n      } catch { }\n    }\n  }\n\n  ////\n  async guildDelete(guild) {\n    return this.invites.delete(guild.id);\n  }\n\n  ////\n  async memberAdd(member) {\n    var resData;\n    try {\n      if (member.user.bot) {\n        var log = await member.guild\n          .fetchAuditLogs({ type: 28 })\n          .then((audit) => audit.entries.first()),\n          user = log?.executor,\n          bot = log?.target;\n        if (bot?.id == member?.user?.id) {\n          resData = {\n            invite: {\n              code: \"Unknown\",\n              url: \"Unknown\",\n              count: \"Unknown\",\n            },\n            inviter: user,\n            member: member,\n          };\n        }\n      } else {\n        var guildInvites = await (member.guild?.invites\n          ? member.guild.invites.fetch()\n          : member.guild.fetchInvites()),\n          tempInvites = this.invites.get(member.guild.id),\n          ///\n\n          findInvite = await guildInvites?.find((invite) =>\n            tempInvites?.find(\n              (inv) => inv.code == invite.code && invite.uses > inv.uses\n            )\n          );\n        ///\n        if (!findInvite) {\n          var current = await guildInvites.filter(\n            (inv) => !tempInvites.find((c) => c.code == inv.code)\n          ),\n            res = await current.filter((c) =>\n              guildInvites.find((inv) => inv.code == c.code)\n            );\n          findInvite = res.find((inv) => inv.uses == 1);\n        }\n        ///\n        if (findInvite) {\n          resData = {\n            invite: {\n              code: findInvite?.code,\n              url: findInvite.url,\n              count: guildInvites\n                ?.filter((i) => i?.inviter?.id == findInvite?.inviter?.id)\n                ?.reduce((p, v) => p + v.uses, 0),\n            },\n            inviter: findInvite.inviter,\n            member: member,\n          };\n        } else if (\n          !findInvite &&\n          (member.guild.features.includes(\"VANITY_URL\") || member.guild.features.includes(\"VanityURL\"))\n        ) {\n          var ownerId = member.guild?.ownerId ?? member.guild?.ownerID,\n            owner = await member.guild.members.fetch(ownerId);\n          findInvite = this.invitesVanity.get(member.guild.id);\n          var vanityData = await member.guild.fetchVanityData();\n          if (findInvite?.uses < vanityData?.uses) {\n            this.invitesVanity.set(member.guild.id, {\n              code: vanityData.code,\n              uses: vanityData.uses,\n            });\n            resData = {\n              invite: {\n                code: vanityData?.code,\n                url: `https://discord.gg/${vanityData?.code}`,\n                count: vanityData?.uses,\n                isVanity: true,\n              },\n              inviter: owner.user,\n              member: member,\n            };\n          }\n        }\n        this.resolveInvites(member.guild, guildInvites);\n      }\n      if (!resData) {\n        var ownerId = member.guild?.ownerId ?? member.guild?.ownerID,\n          owner = await member.guild.members.fetch(ownerId);\n        resData = {\n          invite: {\n            code: \"Unknown\",\n            url: \"Unknown\",\n            count: guildInvites\n              ?.filter((i) => i?.inviter?.id == owner?.user.id)\n              ?.reduce((p, v) => p + v.uses, 0),\n          },\n          inviter: owner.user,\n          member: member,\n        };\n      }\n\n      resData.inviter.member = await member.guild.members.fetch(resData.inviter.id)\n\n      this.emit(\n        \"guildMemberAdd\",\n        resData.member,\n        resData.inviter,\n        resData.invite,\n        false\n      );\n      return;\n    } catch (e) {\n      this.emit(\"guildMemberAdd\", member, null, null, e);\n      try {\n        this.emit(\"error\", member.guild, e);\n      } catch { }\n    }\n  }\n}\n\nmodule.exports = {\n  inviteTracker,\n};\n"]}