{"version":3,"sources":["jsdelivr-header.js","/npm/discordie@0.11.0/lib/index.js"],"names":[],"mappings":"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","file":"/npm/discordie@0.11.0/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/discordie@0.11.0/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\r\n\r\nconst DiscordieDispatcher = require(\"./core/DiscordieDispatcher\");\r\n\r\nconst events = require(\"events\");\r\nconst request = require(\"./core/ApiRequest\");\r\nconst DiscordieError = require(\"./core/DiscordieError\");\r\nconst Constants = require(\"./Constants\");\r\nconst Events = Constants.Events;\r\nconst GatewaySocket = require(\"./networking/ws/GatewaySocket\");\r\nconst Utils = require(\"./core/Utils\");\r\n\r\nconst GuildCollection = require(\"./collections/GuildCollection\");\r\nconst ChannelCollection = require(\"./collections/ChannelCollection\");\r\nconst UserCollection = require(\"./collections/UserCollection\");\r\nconst GuildMemberCollection = require(\"./collections/GuildMemberCollection\");\r\nconst MessageCollection = require(\"./collections/MessageCollection\");\r\nconst PresenceCollection = require(\"./collections/PresenceCollection\");\r\nconst VoiceStateCollection = require(\"./collections/VoiceStateCollection\");\r\nconst VoiceConnectionCollection = require(\"./collections/VoiceConnectionCollection\");\r\nconst UnavailableGuildCollection = require(\"./collections/UnavailableGuildCollection\");\r\nconst GuildSyncCollection = require(\"./collections/GuildSyncCollection\");\r\nconst CallCollection = require(\"./collections/CallCollection\");\r\nconst User = require(\"./models/User\");\r\nconst AuthenticatedUser = require(\"./models/AuthenticatedUser\");\r\n\r\nconst IGuildCollection = require(\"./interfaces/IGuildCollection\");\r\nconst IChannelCollection = require(\"./interfaces/IChannelCollection\");\r\nconst IAuthenticatedUser = require(\"./interfaces/IAuthenticatedUser\");\r\nconst IUserCollection = require(\"./interfaces/IUserCollection\");\r\nconst IMessageCollection = require(\"./interfaces/IMessageCollection\");\r\nconst IDirectMessageChannelCollection = require(\"./interfaces/IDirectMessageChannelCollection\");\r\nconst IInviteManager = require(\"./interfaces/IInviteManager\");\r\nconst IWebhookManager = require(\"./interfaces/IWebhookManager\");\r\n\r\nconst RequestQueueManager = require(\"./core/ratelimiting/RequestQueueManager\");\r\nconst GatewayReconnectHandler = require(\"./core/GatewayReconnectHandler\");\r\nconst ReadyEventScheduler = require(\"./core/ReadyEventScheduler\");\r\n\r\n\r\nconst MessageHandlerCache = require(\"./core/MessageHandlerCache\");\r\nconst messageHandlerCache = new WeakMap();\r\n\r\nconst rest = require(\"./networking/rest\");\r\n\r\nfunction handleAuthLoginError(e) {\r\n  this.pendingLogin = false;\r\n\r\n  this.Dispatcher.emit(\r\n    Events.DISCONNECTED,\r\n    {error: new DiscordieError(\"Login failed\", e.error)}\r\n  );\r\n}\r\nfunction handleAuthLoginSuccess(e) {\r\n  this.pendingLogin = false;\r\n  this.token = e.token;\r\n  delete e.token;\r\n  delete e.password;\r\n\r\n  rest(this).gateway();\r\n}\r\n\r\nfunction handleGatewayError(e) {\r\n  this.pendingLogin = false;\r\n\r\n  var ev = {error: new DiscordieError(\"Could not get gateway\", e.error)};\r\n  if (this.autoReconnect) this.autoReconnect._disconnected(ev);\r\n  this.Dispatcher.emit(Events.DISCONNECTED, ev);\r\n}\r\nfunction handleGatewaySuccess(e) {\r\n  this.pendingLogin = false;\r\n\r\n  this.gatewayEndpoint = e.gateway;\r\n  this._createPrimaryGateway();\r\n}\r\n\r\nfunction registerGatewayHandlers() {\r\n  this.Dispatcher.on(Events.GATEWAY_DISPATCH, e => {\r\n    if (e.suppress) { delete e.suppress; delete e.handled; return; }\r\n\r\n    const handlers = messageHandlerCache.get(this);\r\n    if (!handlers.processGatewayMessage(e.socket, e.type, e.data) && !e.handled) {\r\n      if (!e.socket.isPrimary) return;\r\n      return this.Dispatcher.emit(\r\n        Events.GATEWAY_UNHANDLED_MESSAGE,\r\n        {type: e.type, data: e.data}\r\n      );\r\n    }\r\n\r\n    if (e.handled) delete e.handled;\r\n  });\r\n\r\n  const onVoiceMessage = (type, e) => {\r\n    if (e.suppress) { delete e.suppress; delete e.handled; return; }\r\n\r\n    const handlers = messageHandlerCache.get(this);\r\n    if (!handlers.processVoiceMessage(e.socket, type, e.data) && !e.handled) {\r\n      return this.Dispatcher.emit(\r\n        Events.VOICESOCKET_UNHANDLED_MESSAGE,\r\n        {type: type, data: e.data}\r\n      );\r\n    }\r\n\r\n    if (e.handled) delete e.handled;\r\n  };\r\n\r\n  this.Dispatcher.on(Events.VOICE_READY, e => {\r\n    onVoiceMessage(\"READY\", e);\r\n  });\r\n  this.Dispatcher.on(Events.VOICE_SESSION_DESCRIPTION, e => {\r\n    onVoiceMessage(\"SESSION_DESCRIPTION\", e);\r\n  });\r\n  this.Dispatcher.on(Events.VOICE_SPEAKING, e => {\r\n    onVoiceMessage(\"SPEAKING\", e);\r\n  });\r\n}\r\n\r\nconst defaultOptions = {\r\n  compressMessages: true,\r\n  messageQueue: true,\r\n};\r\n\r\n/**\r\n * @class\r\n * @classdesc\r\n * Additional constructor options:\r\n *\r\n * ```js\r\n * var client = new Discordie({\r\n *   // Maximum amount of messages to store in channel cache.\r\n *   // Decreasing this will reduce memory usage over time.\r\n *   // With low values (below 50) chances of message invalidation increase:\r\n *   // accessing message properties (ex. `e.message.channel`) in callbacks\r\n *   // of long running tasks (ex. HTTP requests) becomes unsafe.\r\n *   messageCacheLimit: 1000, // < default\r\n *\r\n *   // Guild sharding:\r\n *   // (Note that this is only intended to be used by large bots.)\r\n *   // 'shardId'     is a number starting at 0 and less than 'shardCount'\r\n *   // 'shardCount'  must be a number greater than 1\r\n *   shardId: 0, shardCount: 2, // sharding is disabled by default\r\n *\r\n *   // Gateway auto-reconnect:\r\n *   // If enabled, 'DISCONNECTED' event will also contain properties\r\n *   // 'autoReconnect'  boolean, set to true\r\n *   // 'delay'          delay in milliseconds until next connect attempt\r\n *   autoReconnect: false, // < default\r\n * });\r\n * ```\r\n */\r\nclass Discordie {\r\n  constructor(options) {\r\n    messageHandlerCache.set(this, new MessageHandlerCache(this));\r\n\r\n    if (!options) options = defaultOptions;\r\n    const _defaultOptions = Object.assign({}, defaultOptions);\r\n    this.options = Object.assign(_defaultOptions, options);\r\n    Object.defineProperty(this, \"options\", {writable: false});\r\n\r\n    this.token = null;\r\n    this.bot = false;\r\n\r\n    /**\r\n     * Primary event bus.\r\n     * @returns {EventEmitter}\r\n     * @example\r\n     * client.Dispatcher.on(\"GATEWAY_READY\", e => {\r\n     *   console.log(\"Connected as: \" + client.User.username);\r\n     * });\r\n     */\r\n    this.Dispatcher = new DiscordieDispatcher();\r\n\r\n    this.gatewaySocket = null;\r\n\r\n    const gw = () => this.gatewaySocket;\r\n\r\n    this._readyScheduler = new ReadyEventScheduler(this, gw);\r\n\r\n    this._user = new AuthenticatedUser();\r\n    this._guilds = new GuildCollection(this, gw);\r\n    this._channels = new ChannelCollection(this, gw);\r\n    this._users = new UserCollection(this, gw);\r\n    this._members = new GuildMemberCollection(this, gw);\r\n    this._presences = new PresenceCollection(this, gw);\r\n    this._messages = new MessageCollection(this, gw);\r\n    this._voicestates = new VoiceStateCollection(this, gw);\r\n    this._calls = new CallCollection(this, gw);\r\n\r\n    if (options.messageCacheLimit) {\r\n      this._messages.setMessageLimit(options.messageCacheLimit);\r\n    }\r\n\r\n    this._queueManager = new RequestQueueManager(this);\r\n    if (!this.options.messageQueue) {\r\n      this._queueManager.disabled = true;\r\n    }\r\n\r\n    // == PUBLIC == //\r\n\r\n    /**\r\n     * Represents current user.\r\n     * @returns {IAuthenticatedUser}\r\n     */\r\n    this.User = new IAuthenticatedUser(this);\r\n\r\n    /**\r\n     * Interface to a collection containing all \"Discord Servers\"\r\n     * (internally called guilds) current session is connected\r\n     * to. Does not contain unavailable guilds.\r\n     * @returns {IGuildCollection}\r\n     */\r\n    this.Guilds = new IGuildCollection(this,\r\n      () => this._guilds.values(),\r\n      (key) => this._guilds.get(key));\r\n\r\n    /**\r\n     * Interface to a collection containing all public channels current session\r\n     * is connected to.\r\n     * @returns {IChannelCollection}\r\n     */\r\n    this.Channels = new IChannelCollection(this,\r\n      () => this._channels.getGuildChannelIterator(),\r\n      (key) => this._channels.getGuildChannel(key));\r\n\r\n    /**\r\n     * Interface to a collection containing all users current session has\r\n     * been exposed to.\r\n     *\r\n     * Contains only online users after `READY`.\r\n     * See documentation for `IUserCollection.fetchMembers(guilds)` if you\r\n     * want to load offline members too.\r\n     * @returns {IUserCollection}\r\n     */\r\n    this.Users = new IUserCollection(this,\r\n      () => this._users.values(),\r\n      (key) => this._users.get(key));\r\n\r\n    /**\r\n     * Interface to a collection containing all private (direct message)\r\n     * channels current session is connected to.\r\n     * @returns {IDirectMessageChannelCollection}\r\n     */\r\n    this.DirectMessageChannels = new IDirectMessageChannelCollection(this,\r\n      () => this._channels.getPrivateChannelIterator(),\r\n      (key) => this._channels.getPrivateChannel(key));\r\n\r\n    /**\r\n     * Interface to a collection containing all cached messages.\r\n     * @returns {IMessageCollection}\r\n     */\r\n    this.Messages = new IMessageCollection(this,\r\n      () => this._messages.getIterator(),\r\n      (key) => this._messages.get(key));\r\n\r\n    /**\r\n     * An instance of IInviteManager.\r\n     * @returns {IInviteManager}\r\n     */\r\n    this.Invites = new IInviteManager(this);\r\n\r\n    /**\r\n     * An instance of IWebhookManager.\r\n     * @returns {IWebhookManager}\r\n     */\r\n    this.Webhooks = new IWebhookManager(this);\r\n\r\n    /**\r\n     * An array of VoiceConnectionInfo.\r\n     * @returns {Array<VoiceConnectionInfo>}\r\n     */\r\n    this.VoiceConnections = VoiceConnectionCollection.create(this, gw);\r\n\r\n    /**\r\n     * An array of unavailable guild's ids.\r\n     * @returns {Array<String>}\r\n     */\r\n    this.UnavailableGuilds = UnavailableGuildCollection.create(this, gw);\r\n\r\n    this.SyncedGuilds = new GuildSyncCollection(this, gw);\r\n\r\n    this._readyScheduler._waitFor(this.UnavailableGuilds);\r\n    this._readyScheduler._addTask(\"GuildSync\", this.SyncedGuilds);\r\n\r\n    // == EVENTS == //\r\n\r\n    this.Dispatcher.on(Events.REQUEST_AUTH_LOGIN_ERROR, handleAuthLoginError.bind(this));\r\n    this.Dispatcher.on(Events.REQUEST_AUTH_LOGIN_SUCCESS, handleAuthLoginSuccess.bind(this));\r\n\r\n    this.Dispatcher.on(Events.REQUEST_GATEWAY_ERROR, handleGatewayError.bind(this));\r\n    this.Dispatcher.on(Events.REQUEST_GATEWAY_SUCCESS, handleGatewaySuccess.bind(this));\r\n\r\n    /**\r\n     * Auto-reconnect handler.\r\n     * @returns {GatewayReconnectHandler}\r\n     */\r\n    this.autoReconnect = new GatewayReconnectHandler(this);\r\n    if (options.autoReconnect) this.autoReconnect.enable();\r\n\r\n    // must register our gateway/voice events last to check e.handled\r\n\r\n    registerGatewayHandlers.call(this);\r\n\r\n    Utils.privatify(this);\r\n  }\r\n\r\n  /**\r\n   * Current state.\r\n   *\r\n   * Possible return values:\r\n   *\r\n   *  - **`DISCONNECTED`**: Initial state. Returned if token is not available.\r\n   *  - **`LOGGING_IN`**\r\n   *  - **`LOGGED_IN`**: Returned if token is set, but gateway websocket is\r\n   *  not connected.\r\n   *  - **`CONNECTING`**\r\n   *  - **`CONNECTED`**\r\n   *\r\n   * State `CONNECTED` only indicates state of gateway websocket connection,\r\n   * returns both before and after `READY`.\r\n   * @returns {String}\r\n   * @readonly\r\n   */\r\n  get state() {\r\n    if (this.pendingLogin)\r\n      return Constants.DiscordieState.LOGGING_IN;\r\n\r\n    if (this.gatewaySocket) {\r\n      if (this.gatewaySocket.connected)\r\n        return Constants.DiscordieState.CONNECTED;\r\n      if (this.gatewaySocket.connecting)\r\n        return Constants.DiscordieState.CONNECTING;\r\n    }\r\n\r\n    if (this.token)\r\n      return Constants.DiscordieState.LOGGED_IN;\r\n\r\n    return Constants.DiscordieState.DISCONNECTED;\r\n  }\r\n\r\n  /**\r\n   * Gets a value indicating whether the gateway websocket connection is\r\n   * established.\r\n   * @returns {boolean}\r\n   * @readonly\r\n   */\r\n  get connected() {\r\n    return this.state == Constants.DiscordieState.CONNECTED;\r\n  }\r\n\r\n  /**\r\n   * @param {Object} credentials - Can contain `email`, `password` or `token`\r\n   */\r\n  connect(credentials) {\r\n    if (this.state == Constants.DiscordieState.CONNECTED\r\n      || this.state == Constants.DiscordieState.CONNECTING\r\n      || this.pendingLogin)\r\n      return;\r\n\r\n    this.pendingLogin = true;\r\n\r\n    if (credentials && credentials.hasOwnProperty(\"bot\")) {\r\n      this.bot = credentials.bot;\r\n    }\r\n\r\n    if (credentials && credentials.token) {\r\n      this.token = credentials.token;\r\n      credentials = null;\r\n    }\r\n\r\n    if (!credentials && this.token) {\r\n      rest(this).gateway();\r\n      return;\r\n    }\r\n\r\n    rest(this).auth.login(credentials);\r\n  }\r\n\r\n  /**\r\n   * Disconnects primary gateway websocket.\r\n   */\r\n  disconnect() {\r\n    if (this.gatewaySocket) {\r\n      this.gatewaySocket.disconnect();\r\n      this.gatewaySocket = null;\r\n    }\r\n  }\r\n\r\n  _createPrimaryGateway() {\r\n    if (!this.gatewaySocket) {\r\n      const compressMessages = this.options.compressMessages;\r\n      const shardId = this.options.shardId;\r\n      const shardCount = this.options.shardCount;\r\n\r\n      const gatewayOptions = {compressMessages, shardId, shardCount};\r\n\r\n      this.gatewaySocket = new GatewaySocket(this, gatewayOptions);\r\n    }\r\n    this.gatewaySocket.connect(this.gatewayEndpoint);\r\n  }\r\n}\r\n\r\nDiscordie.Events = Constants.Events;\r\nDiscordie.StatusTypes = Constants.StatusTypes;\r\nDiscordie.ActivityTypes = Constants.ActivityTypes;\r\nDiscordie.States = Constants.DiscordieState;\r\nDiscordie.Permissions = Constants.Permissions;\r\nDiscordie.VerificationLevel = Constants.VerificationLevel;\r\nDiscordie.MFALevels = Constants.MFALevels;\r\nDiscordie.UserNotificationSettings = Constants.UserNotificationSettings;\r\nDiscordie.Errors = Constants.Errors;\r\nDiscordie.ChannelTypes = Constants.ChannelTypes;\r\nDiscordie.MessageTypes = Constants.MessageTypes;\r\n\r\nmodule.exports = Discordie;\r\n"]}