cloudstorm 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Constants.ts","../src/structures/RatelimitBucket.ts","../src/structures/BetterWs.ts","../src/Intents.ts","../src/connector/DiscordConnector.ts","../src/Shard.ts","../src/ShardManager.ts","../src/Client.ts","../src/index.ts"],"sourcesContent":["\"use strict\";\r\n\r\nconst Constants = {\r\n\tGATEWAY_OP_CODES: {\r\n\t\t/**\r\n\t\t * Receive.\r\n\t\t */\r\n\t\tDISPATCH: 0 as const,\r\n\t\t/**\r\n\t\t * Send/Receive.\r\n\t\t */\r\n\t\tHEARTBEAT: 1 as const,\r\n\t\t/**\r\n\t\t * Send.\r\n\t\t */\r\n\t\tIDENTIFY: 2 as const,\r\n\t\t/**\r\n\t\t * Send.\r\n\t\t */\r\n\t\tPRESENCE_UPDATE: 3 as const,\r\n\t\t/**\r\n\t\t * Send.\r\n\t\t */\r\n\t\tVOICE_STATE_UPDATE: 4 as const,\r\n\t\t/**\r\n\t\t * Send.\r\n\t\t */\r\n\t\tRESUME: 6 as const,\r\n\t\t/**\r\n\t\t * Receive.\r\n\t\t */\r\n\t\tRECONNECT: 7 as const,\r\n\t\t/**\r\n\t\t * Send.\r\n\t\t */\r\n\t\tREQUEST_GUILD_MEMBERS: 8 as const,\r\n\t\t/**\r\n\t\t * Receive.\r\n\t\t */\r\n\t\tINVALID_SESSION: 9 as const,\r\n\t\t/**\r\n\t\t * Receive.\r\n\t\t */\r\n\t\tHELLO: 10 as const,\r\n\t\t/**\r\n\t\t * Receive.\r\n\t\t */\r\n\t\tHEARTBEAT_ACK: 11 as const\r\n\t},\r\n\tGATEWAY_VERSION: 10 as const\r\n};\r\n\r\nexport = Constants;\r\n","\"use strict\";\r\n\r\n/**\r\n * RatelimitBucket, used for ratelimiting the execution of functions.\r\n */\r\nclass RatelimitBucket {\r\n\tpublic fnQueue: Array<{ fn: () => unknown, callback: () => unknown; error: Error }>;\r\n\tpublic limit: number;\r\n\tpublic remaining: number;\r\n\tpublic limitReset: number;\r\n\tpublic defaultReset: number | undefined;\r\n\tpublic resetTimeout: NodeJS.Timeout | null;\r\n\r\n\t/**\r\n\t * Create a new Bucket.\r\n\t * @param limit Number of functions that may be executed during the timeframe set in limitReset.\r\n\t * @param limitReset Timeframe in milliseconds until the ratelimit resets.\r\n\t * @param defaultReset If the bucket info does not provide default values, but provides remaining, this is the reset to use after the initial reset.\r\n\t */\r\n\tpublic constructor(limit = 5, limitReset = 5000, defaultReset?: number) {\r\n\t\tthis.fnQueue = [];\r\n\t\tthis.limit = limit;\r\n\t\tthis.remaining = limit;\r\n\t\tthis.limitReset = limitReset;\r\n\t\tthis.resetTimeout = null;\r\n\t\tthis.defaultReset = defaultReset;\r\n\t}\r\n\r\n\t/**\r\n\t * Queue a function to be executed.\r\n\t * @param fn Function to be executed.\r\n\t * @returns Result of the function if any.\r\n\t */\r\n\tpublic queue<T>(fn: () => T): Promise<T> {\r\n\t\t// More debug-ability\r\n\t\tconst error = new Error(\"An Error occurred in the bucket queue\");\r\n\t\treturn new Promise((res, rej) => {\r\n\t\t\tconst wrapFn = () => {\r\n\t\t\t\tthis.remaining--;\r\n\t\t\t\tif (!this.resetTimeout) {\r\n\t\t\t\t\tthis.resetTimeout = setTimeout(() => {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tthis.resetRemaining();\r\n\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\trej(e);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, this.limitReset).unref();\r\n\t\t\t\t}\r\n\t\t\t\tif (this.remaining !== 0) this.checkQueue().catch(rej);\r\n\r\n\t\t\t\tif (fn instanceof Promise) {\r\n\t\t\t\t\treturn fn.then(res).catch((e) => {\r\n\t\t\t\t\t\tif (e) {\r\n\t\t\t\t\t\t\te.stack = error.stack;\r\n\t\t\t\t\t\t\treturn rej(e);\r\n\t\t\t\t\t\t} else return rej(error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn res(fn());\r\n\t\t\t};\r\n\t\t\tif (this.remaining === 0) {\r\n\t\t\t\tthis.fnQueue.push({ fn, callback: wrapFn, error });\r\n\t\t\t\tthis.checkQueue().catch(rej);\r\n\t\t\t} else wrapFn();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Check if there are any functions in the queue that haven't been executed yet.\r\n\t */\r\n\tprivate async checkQueue(): Promise<void> {\r\n\t\tif (this.fnQueue.length > 0 && this.remaining !== 0) {\r\n\t\t\tconst queuedFunc = this.fnQueue.splice(0, 1)[0];\r\n\t\t\ttry {\r\n\t\t\t\tqueuedFunc.callback();\r\n\t\t\t} catch (e) {\r\n\t\t\t\tif (e) {\r\n\t\t\t\t\te.stack = queuedFunc.error.stack;\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t} else throw queuedFunc.error;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Reset the remaining tokens to the base limit.\r\n\t */\r\n\tprivate resetRemaining(): void {\r\n\t\tthis.remaining = this.limit;\r\n\t\tif (this.defaultReset) this.limitReset = this.defaultReset;\r\n\t\tif (this.resetTimeout) {\r\n\t\t\tclearTimeout(this.resetTimeout);\r\n\t\t\tthis.resetTimeout = null;\r\n\t\t}\r\n\t\tthis.checkQueue();\r\n\t}\r\n\r\n\t/**\r\n\t * Clear the current queue of events to be sent.\r\n\t */\r\n\tpublic dropQueue(): void {\r\n\t\tthis.fnQueue = [];\r\n\t}\r\n}\r\n\r\nexport = RatelimitBucket;\r\n","\"use strict\";\r\n\r\n// This ultra light weigth WS code is a slimmed down version originally found at https://github.com/timotejroiko/tiny-discord\r\n// Modifications and use of this code was granted for this project by the author, Timotej Roiko.\r\n// A major thank you to Tim for better performing software.\r\n\r\nimport { EventEmitter } from \"events\";\r\nimport { randomBytes, createHash } from \"crypto\";\r\nimport { createInflate, inflateSync, constants } from \"zlib\";\r\nimport https = require(\"https\");\r\nimport http = require(\"http\");\r\nimport util = require(\"util\");\r\nimport { GATEWAY_OP_CODES } from \"../Constants\";\r\n\r\nimport RatelimitBucket = require(\"./RatelimitBucket\");\r\n\r\ninterface BWSEvents {\r\n\tws_open: [];\r\n\tws_close: [number, string];\r\n\tws_message: [import(\"../Types\").IGatewayMessage];\r\n\tdebug_send: [import(\"../Types\").IWSMessage];\r\n\tdebug: [string];\r\n}\r\n\r\ninterface BetterWs {\r\n\taddListener<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\temit<E extends keyof BWSEvents>(event: E, ...args: BWSEvents[E]): boolean;\r\n\teventNames(): Array<keyof BWSEvents>;\r\n\tlistenerCount(event: keyof BWSEvents): number;\r\n\tlisteners(event: keyof BWSEvents): Array<(...args: Array<any>) => any>;\r\n\toff<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\ton<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\tonce<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\tprependListener<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\tprependOnceListener<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\trawListeners(event: keyof BWSEvents): Array<(...args: Array<any>) => any>;\r\n\tremoveAllListeners(event?: keyof BWSEvents): this;\r\n\tremoveListener<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n}\r\n\r\n/**\r\n * Helper Class for simplifying the websocket connection to Discord.\r\n */\r\nclass BetterWs extends EventEmitter {\r\n\tpublic encoding: \"etf\" | \"json\";\r\n\tpublic compress: boolean;\r\n\tpublic address: string;\r\n\tpublic options: import(\"../Types\").IClientWSOptions;\r\n\tpublic wsBucket = new RatelimitBucket(120, 60000);\r\n\tpublic presenceBucket = new RatelimitBucket(5, 60000);\r\n\r\n\tprivate _socket: import(\"net\").Socket | null;\r\n\tprivate _internal: { closePromise: Promise<void> | null; zlib: import(\"zlib\").Inflate | null; };\r\n\tprivate _connecting = false;\r\n\r\n\tpublic constructor(address: string, options: import(\"../Types\").IClientWSOptions) {\r\n\t\tsuper();\r\n\r\n\t\tthis.encoding = options.encoding === \"etf\" ? \"etf\" : \"json\";\r\n\t\tthis.compress = options.compress || false;\r\n\t\tthis.address = address;\r\n\t\tthis.options = options;\r\n\r\n\t\tthis._socket = null;\r\n\t\tthis._internal = {\r\n\t\t\tclosePromise: null,\r\n\t\t\tzlib: null,\r\n\t\t};\r\n\t}\r\n\r\n\tpublic get status() {\r\n\t\tconst internal = this._internal;\r\n\t\tif (this._connecting) return 2;\r\n\t\tif (internal.closePromise) return 3; // closing\r\n\t\tif (!this._socket) return 4; // closed\r\n\t\treturn 1; // connected\r\n\t}\r\n\r\n\tpublic connect(): Promise<void> {\r\n\t\tif (this._socket) return Promise.resolve(void 0);\r\n\t\tconst key = randomBytes(16).toString(\"base64\");\r\n\t\tconst url = new URL(this.address);\r\n\t\tconst useHTTPS = (url.protocol === \"https:\" || url.protocol === \"wss:\") || url.port === \"443\";\r\n\t\tconst port = url.port || (useHTTPS ? \"443\" : \"80\");\r\n\t\tconst req = (useHTTPS ? https : http).request({\r\n\t\t\thostname: url.hostname,\r\n\t\t\tpath: `${url.pathname}${url.search}`,\r\n\t\t\tport: port,\r\n\t\t\theaders: {\r\n\t\t\t\t\"Connection\": \"Upgrade\",\r\n\t\t\t\t\"Upgrade\": \"websocket\",\r\n\t\t\t\t\"Sec-WebSocket-Key\": key,\r\n\t\t\t\t\"Sec-WebSocket-Version\": \"13\",\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._connecting = true;\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\treq.on(\"upgrade\", (res, socket) => {\r\n\t\t\t\tconst hash = createHash(\"sha1\").update(key + \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\").digest(\"base64\");\r\n\t\t\t\tconst accept = res.headers[\"sec-websocket-accept\"];\r\n\t\t\t\tif (hash !== accept) {\r\n\t\t\t\t\tsocket.end(() => {\r\n\t\t\t\t\t\tthis.emit(\"debug\", \"Failed websocket-key validation\");\r\n\t\t\t\t\t\tthis._connecting = false;\r\n\t\t\t\t\t\treject(new Error(`Invalid Sec-Websocket-Accept | expected: ${hash} | received: ${accept}`));\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tsocket.on(\"error\", this._onError.bind(this));\r\n\t\t\t\tsocket.on(\"close\", this._onClose.bind(this));\r\n\t\t\t\tsocket.on(\"readable\", this._onReadable.bind(this));\r\n\t\t\t\tthis._socket = socket;\r\n\t\t\t\tthis._connecting = false;\r\n\t\t\t\tif (this.compress) {\r\n\t\t\t\t\tconst z = createInflate();\r\n\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\tz._c = z.close; z._h = z._handle; z._hc = z._handle.close; z._v = () => void 0;\r\n\t\t\t\t\tthis._internal.zlib = z;\r\n\t\t\t\t}\r\n\t\t\t\tthis.emit(\"ws_open\");\r\n\t\t\t\tresolve(void 0);\r\n\t\t\t});\r\n\t\t\treq.on(\"error\", e => {\r\n\t\t\t\tthis._connecting = false;\r\n\t\t\t\treject(e);\r\n\t\t\t});\r\n\t\t\treq.end();\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async close(code: number, reason?: string): Promise<void> {\r\n\t\tconst internal = this._internal;\r\n\t\tif (internal.closePromise) return internal.closePromise;\r\n\t\tif (!this._socket) return Promise.resolve(void 0);\r\n\t\tlet resolver: ((value: unknown) => void) | undefined;\r\n\t\tconst promise = new Promise(resolve => {\r\n\t\t\tresolver = resolve;\r\n\t\t\tconst from = Buffer.from([code >> 8, code & 255]);\r\n\t\t\tthis._write(reason ? Buffer.concat([from, Buffer.from(reason)]) : from, 8);\r\n\t\t}).then(() => {\r\n\t\t\tinternal.closePromise = null;\r\n\t\t});\r\n\t\t// @ts-ignore\r\n\t\tpromise.resolve = resolver;\r\n\t\tinternal.closePromise = promise;\r\n\t\treturn promise;\r\n\t}\r\n\r\n\tpublic sendMessage(data: import(\"../Types\").IWSMessage): Promise<void> {\r\n\t\tif (!isValidRequest(data)) return Promise.reject(new Error(\"Invalid request\"));\r\n\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst presence = data.op === GATEWAY_OP_CODES.PRESENCE_UPDATE;\r\n\t\t\tconst sendMsg = () => {\r\n\t\t\t\tthis.wsBucket.queue(() => {\r\n\t\t\t\t\tthis.emit(\"debug_send\", data);\r\n\t\t\t\t\tif (this.encoding === \"json\") this._write(Buffer.from(JSON.stringify(data)), 1);\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tconst etf = writeETF(data);\r\n\t\t\t\t\t\tthis._write(etf, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tres(void 0);\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t\tif (presence) this.presenceBucket.queue(sendMsg);\r\n\t\t\telse sendMsg();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _write(packet: Buffer, opcode: number) {\r\n\t\tconst socket = this._socket;\r\n\t\tif (!socket || !socket.writable) return;\r\n\t\tconst length = packet.length;\r\n\t\tlet frame: Buffer | undefined;\r\n\t\tif (length < 126) {\r\n\t\t\tframe = Buffer.allocUnsafe(6 + length);\r\n\t\t\tframe[1] = 128 + length;\r\n\t\t} else if (length < (1 << 16)) {\r\n\t\t\tframe = Buffer.allocUnsafe(8 + length);\r\n\t\t\tframe[1] = 254;\r\n\t\t\tframe[2] = length >> 8;\r\n\t\t\tframe[3] = length & 255;\r\n\t\t} else {\r\n\t\t\tframe = Buffer.allocUnsafe(14 + length);\r\n\t\t\tframe[1] = 255;\r\n\t\t\tframe.writeBigUInt64BE(BigInt(length), 2);\r\n\t\t}\r\n\t\tframe[0] = 128 + opcode;\r\n\t\tframe.writeUInt32BE(0, frame.length - length - 4);\r\n\t\tframe.set(packet, frame.length - length);\r\n\t\tsocket.write(frame);\r\n\t}\r\n\r\n\tprivate _onError(error: Error) {\r\n\t\tif (!this._socket) return;\r\n\t\tthis.emit(\"debug\", util.inspect(error, true, 1, false));\r\n\t\tthis._write(Buffer.allocUnsafe(0), 8);\r\n\t}\r\n\r\n\tprivate _onClose() {\r\n\t\tconst socket = this._socket;\r\n\t\tconst internal = this._internal;\r\n\t\tif (!socket) return;\r\n\t\tthis.emit(\"debug\", \"Connection closed\");\r\n\t\tsocket.removeListener(\"data\", this._onReadable);\r\n\t\tsocket.removeListener(\"error\", this._onError);\r\n\t\tsocket.removeListener(\"close\", this._onClose);\r\n\t\tthis.wsBucket.dropQueue();\r\n\t\tthis.presenceBucket.dropQueue();\r\n\t\tthis._socket = null;\r\n\t\tif (internal.zlib) {\r\n\t\t\tinternal.zlib.close();\r\n\t\t\tinternal.zlib = null;\r\n\t\t}\r\n\t\t// @ts-ignore\r\n\t\tif (internal.closePromise) internal.closePromise.resolve(void 0);\r\n\t}\r\n\r\n\tprivate _onReadable() {\r\n\t\tconst socket = this._socket;\r\n\t\twhile((socket?.readableLength || 0) > 1) {\r\n\t\t\tlet length = readRange(socket!, 1, 1) & 127;\r\n\t\t\tlet bytes = 0;\r\n\t\t\tif (length > 125) {\r\n\t\t\t\tbytes = length === 126 ? 2 : 8;\r\n\t\t\t\tif (socket!.readableLength < 2 + bytes) return;\r\n\t\t\t\tlength = readRange(socket!, 2, bytes);\r\n\t\t\t}\r\n\t\t\tconst frame = socket!.read(2 + bytes + length) as Buffer;\r\n\t\t\tif (!frame) return;\r\n\t\t\tconst fin = frame[0] >> 7;\r\n\t\t\tconst opcode = frame[0] & 15;\r\n\t\t\tif (fin !== 1 || opcode === 0) this.emit(\"debug\", \"discord actually does send messages with fin=0. if you see this error let me know\");\r\n\t\t\tconst payload = frame.subarray(2 + bytes);\r\n\t\t\tthis._processFrame(opcode, payload);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _processFrame(opcode: number, message: Buffer) {\r\n\t\tconst internal = this._internal;\r\n\t\tswitch (opcode) {\r\n\t\tcase 1: {\r\n\t\t\tconst packet = JSON.parse(message.toString());\r\n\t\t\tthis.emit(\"ws_message\", packet);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase 2: {\r\n\t\t\tlet packet;\r\n\t\t\tif (this.compress) {\r\n\t\t\t\tconst z = internal.zlib;\r\n\t\t\t\tlet error = null;\r\n\t\t\t\tlet data = null;\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz.close = z._handle.close = z._v;\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\tdata = z._processChunk(message, constants.Z_SYNC_FLUSH);\r\n\t\t\t\t} catch(e) {\r\n\t\t\t\t\terror = e;\r\n\t\t\t\t}\r\n\t\t\t\tconst l = message.length;\r\n\t\t\t\tif (message[l - 4] !== 0 || message[l - 3] !== 0 || message[l - 2] !== 255 || message[l - 1] !== 255) this.emit(\"debug\", \"discord actually does send fragmented zlib messages. If you see this error let me know\");\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz.close = z._c;\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz._handle = z._h;\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz._handle.close = z._hc;\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz._events.error = void 0;\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz._eventCount--;\r\n\t\t\t\tz!.removeAllListeners(\"error\");\r\n\t\t\t\tif (error) {\r\n\t\t\t\t\tthis.emit(\"debug\", \"Zlib error\");\r\n\t\t\t\t\tthis._write(Buffer.allocUnsafe(0), 8);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (!data) {\r\n\t\t\t\t\tthis.emit(\"debug\", \"Data from zlib processing was null. If you see this error let me know\"); // This should never run, but TS is lame\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tpacket = this.encoding === \"json\" ? JSON.parse(String(data)) : readETF(data, 1);\r\n\t\t\t} else if (this.encoding === \"json\") {\r\n\t\t\t\tconst data = inflateSync(message);\r\n\t\t\t\tpacket = JSON.parse(data.toString());\r\n\t\t\t} else packet = readETF(message, 1);\r\n\t\t\tthis.emit(\"ws_message\", packet);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase 8: {\r\n\t\t\tconst code = message.length > 1 ? (message[0] << 8) + message[1] : 0;\r\n\t\t\tconst reason = message.length > 2 ? message.subarray(2).toString() : \"\";\r\n\t\t\tthis.emit(\"ws_close\", code, reason);\r\n\t\t\tthis._write(Buffer.from([code >> 8, code & 255]), 8);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase 9: {\r\n\t\t\tthis._write(message, 10);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction isValidRequest(value: import(\"../Types\").IWSMessage) {\r\n\treturn value && typeof value === \"object\" && Number.isInteger(value.op) && typeof value.d !== \"undefined\";\r\n}\r\n\r\nfunction readRange(socket: import(\"net\").Socket, index: number, bytes: number) {\r\n\t// @ts-ignore\r\n\tlet head = socket._readableState.buffer.head;\r\n\tlet cursor = 0;\r\n\tlet read = 0;\r\n\tlet num = 0;\r\n\tdo {\r\n\t\tfor (const element of head.data) {\r\n\t\t\tif (++cursor > index) {\r\n\t\t\t\tnum *= 256;\r\n\t\t\t\tnum += element;\r\n\t\t\t\tif (++read === bytes) return num;\r\n\t\t\t}\r\n\t\t}\r\n\t} while((head = head.next));\r\n\tthrow new Error(\"readRange failed?\");\r\n}\r\n\r\nfunction readETF(data: Buffer, start: number) {\r\n\tlet view: DataView | undefined;\r\n\tlet x = start;\r\n\tconst loop = () => {\r\n\t\tconst type = data[x++];\r\n\t\tswitch(type) {\r\n\t\tcase 97: {\r\n\t\t\treturn data[x++];\r\n\t\t}\r\n\t\tcase 98: {\r\n\t\t\tconst int = data.readInt32BE(x);\r\n\t\t\tx += 4;\r\n\t\t\treturn int;\r\n\t\t}\r\n\t\tcase 100: {\r\n\t\t\tconst length = data.readUInt16BE(x);\r\n\t\t\tlet atom = \"\";\r\n\t\t\tif (length > 30) {\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tatom = data.latin1Slice(x += 2, x + length);\r\n\t\t\t} else {\r\n\t\t\t\tfor (let i = x += 2; i < x + length; i++) {\r\n\t\t\t\t\tatom += String.fromCharCode(data[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tx += length;\r\n\t\t\tif (!atom) return undefined;\r\n\t\t\tif (atom === \"nil\" || atom === \"null\") return null;\r\n\t\t\tif (atom === \"true\") return true;\r\n\t\t\tif (atom === \"false\") return false;\r\n\t\t\treturn atom;\r\n\t\t}\r\n\t\tcase 108: case 106: {\r\n\t\t\tconst array = [] as Array<any>;\r\n\t\t\tif (type === 108) {\r\n\t\t\t\tconst length = data.readUInt32BE(x);\r\n\t\t\t\tx += 4;\r\n\t\t\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\t\t\tarray.push(loop());\r\n\t\t\t\t}\r\n\t\t\t\tx++;\r\n\t\t\t}\r\n\t\t\treturn array;\r\n\t\t}\r\n\t\tcase 107: {\r\n\t\t\tconst array = [] as Array<number>;\r\n\t\t\tconst length = data.readUInt16BE(x);\r\n\t\t\tx += 2;\r\n\t\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\t\tarray.push(data[x++]);\r\n\t\t\t}\r\n\t\t\treturn array;\r\n\t\t}\r\n\t\tcase 109: {\r\n\t\t\tconst length = data.readUInt32BE(x);\r\n\t\t\tlet str = \"\";\r\n\t\t\tif (length > 30) {\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tstr = data.utf8Slice(x += 4, x + length);\r\n\t\t\t} else {\r\n\t\t\t\tlet i = x += 4;\r\n\t\t\t\tconst l = x + length;\r\n\t\t\t\twhile(i < l) {\r\n\t\t\t\t\tconst byte = data[i++];\r\n\t\t\t\t\tif (byte < 128) str += String.fromCharCode(byte);\r\n\t\t\t\t\telse if (byte < 224) str += String.fromCharCode(((byte & 31) << 6) + (data[i++] & 63));\r\n\t\t\t\t\telse if (byte < 240) str += String.fromCharCode(((byte & 15) << 12) + ((data[i++] & 63) << 6) + (data[i++] & 63));\r\n\t\t\t\t\telse str += String.fromCodePoint(((byte & 7) << 18) + ((data[i++] & 63) << 12) + ((data[i++] & 63) << 6) + (data[i++] & 63));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tx += length;\r\n\t\t\treturn str;\r\n\t\t}\r\n\t\tcase 110: {\r\n\t\t\t// @ts-ignore\r\n\t\t\tif (!view) view = new DataView(data.buffer, data.offset, data.byteLength);\r\n\t\t\tconst length = data[x++];\r\n\t\t\tconst sign = data[x++];\r\n\t\t\tlet left = length;\r\n\t\t\tlet num = BigInt(0);\r\n\t\t\twhile(left > 0) {\r\n\t\t\t\tif (left >= 8) {\r\n\t\t\t\t\tnum <<= BigInt(64);\r\n\t\t\t\t\tnum += view.getBigUint64(x + (left -= 8), true);\r\n\t\t\t\t} else if (left >= 4) {\r\n\t\t\t\t\tnum <<= BigInt(32);\r\n\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\tnum += BigInt(view.getUint32(x + (left -= 4)), true);\r\n\t\t\t\t} else if (left >= 2) {\r\n\t\t\t\t\tnum <<= BigInt(16);\r\n\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\tnum += BigInt(view.getUint16(x + (left -= 2)), true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnum <<= BigInt(8);\r\n\t\t\t\t\tnum += BigInt(data[x]);\r\n\t\t\t\t\tleft--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tx += length;\r\n\t\t\treturn (sign ? -num : num).toString();\r\n\t\t}\r\n\t\tcase 116: {\r\n\t\t\tconst obj = {};\r\n\t\t\tconst length = data.readUInt32BE(x);\r\n\t\t\tx += 4;\r\n\t\t\tfor(let i = 0; i < length; i++) {\r\n\t\t\t\tconst key = loop();\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tobj[key] = loop();\r\n\t\t\t}\r\n\t\t\treturn obj;\r\n\t\t}\r\n\t\t}\r\n\t\tthrow new Error(`Missing etf type: ${type}`);\r\n\t};\r\n\treturn loop();\r\n}\r\n\r\nfunction writeETF(data: any) {\r\n\tconst b = Buffer.allocUnsafe(1 << 12);\r\n\tb[0] = 131;\r\n\tlet i = 1;\r\n\tconst loop = (obj: any) => {\r\n\t\tconst type = typeof obj;\r\n\t\tswitch(type) {\r\n\t\tcase \"boolean\": {\r\n\t\t\tb[i++] = 100;\r\n\t\t\tif (obj) {\r\n\t\t\t\tb.writeUInt16BE(4, i);\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tb.latin1Write(\"true\", i += 2);\r\n\t\t\t\ti += 4;\r\n\t\t\t} else {\r\n\t\t\t\tb.writeUInt16BE(5, i);\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tb.latin1Write(\"false\", i += 2);\r\n\t\t\t\ti += 5;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"string\": {\r\n\t\t\tconst length = Buffer.byteLength(obj);\r\n\t\t\tb[i++] = 109;\r\n\t\t\tb.writeUInt32BE(length, i);\r\n\t\t\t// @ts-ignore\r\n\t\t\tb.utf8Write(obj, i += 4);\r\n\t\t\ti += length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"number\": {\r\n\t\t\tif (Number.isInteger(obj)) {\r\n\t\t\t\tconst abs = Math.abs(obj);\r\n\t\t\t\tif (abs < 2147483648) {\r\n\t\t\t\t\tb[i++] = 98;\r\n\t\t\t\t\tb.writeInt32BE(obj, i);\r\n\t\t\t\t\ti += 4;\r\n\t\t\t\t} else if (abs < Number.MAX_SAFE_INTEGER) {\r\n\t\t\t\t\tb[i++] = 110;\r\n\t\t\t\t\tb[i++] = 8;\r\n\t\t\t\t\tb[i++] = Number(obj < 0);\r\n\t\t\t\t\tb.writeBigUInt64LE(BigInt(abs), i);\r\n\t\t\t\t\ti += 8;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tb[i++] = 70;\r\n\t\t\t\t\tb.writeDoubleBE(obj, i);\r\n\t\t\t\t\ti += 8;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tb[i++] = 70;\r\n\t\t\t\tb.writeDoubleBE(obj, i);\r\n\t\t\t\ti += 8;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"bigint\": {\r\n\t\t\tb[i++] = 110;\r\n\t\t\tb[i++] = 8;\r\n\t\t\tb[i++] = Number(obj < 0);\r\n\t\t\tb.writeBigUInt64LE(obj, i);\r\n\t\t\ti += 8;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"object\": {\r\n\t\t\tif (obj === null) {\r\n\t\t\t\tb[i++] = 100;\r\n\t\t\t\tb.writeUInt16BE(3, i);\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tb.latin1Write(\"nil\", i += 2);\r\n\t\t\t\ti += 3;\r\n\t\t\t} else if (Array.isArray(obj)) {\r\n\t\t\t\tif (obj.length) {\r\n\t\t\t\t\tb[i++] = 108;\r\n\t\t\t\t\tb.writeUInt32BE(obj.length, i);\r\n\t\t\t\t\ti += 4;\r\n\t\t\t\t\tfor (const item of obj) {\r\n\t\t\t\t\t\tloop(item);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tb[i++] = 106;\r\n\t\t\t} else {\r\n\t\t\t\tconst entries = Object.entries(obj).filter(x => typeof x[1] !== \"undefined\");\r\n\t\t\t\tb[i++] = 116;\r\n\t\t\t\tb.writeUInt32BE(entries.length, i);\r\n\t\t\t\ti += 4;\r\n\t\t\t\tfor(const [key, value] of entries) {\r\n\t\t\t\t\tloop(key);\r\n\t\t\t\t\tloop(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t}\r\n\t};\r\n\tloop(data);\r\n\treturn Buffer.from(b.subarray(0, i));\r\n}\r\n\r\n\r\nexport = BetterWs;\r\n","\"use strict\";\r\n\r\nexport type IntentFlags = typeof flags;\r\nexport type IntentResolvable = number | Array<number> | keyof IntentFlags | Array<keyof IntentFlags>;\r\n\r\nexport const flags = {\r\n\tGUILDS: 1 << 0,\r\n\tGUILD_MEMBERS: 1 << 1,\r\n\tGUILD_BANS: 1 << 2,\r\n\tGUILD_EMOJIS_AND_STICKERS: 1 << 3,\r\n\tGUILD_INTEGRATIONS: 1 << 4,\r\n\tGUILD_WEBHOOKS: 1 << 5,\r\n\tGUILD_INVITES: 1 << 6,\r\n\tGUILD_VOICE_STATES: 1 << 7,\r\n\tGUILD_PRESENCES: 1 << 8,\r\n\tGUILD_MESSAGES: 1 << 9,\r\n\tGUILD_MESSAGE_REACTIONS: 1 << 10,\r\n\tGUILD_MESSAGE_TYPING: 1 << 11,\r\n\tDIRECT_MESSAGES: 1 << 12,\r\n\tDIRECT_MESSAGE_REACTIONS: 1 << 13,\r\n\tDIRECT_MESSAGE_TYPING: 1 << 14,\r\n\tMESSAGE_CONTENT: 1 << 15,\r\n\tGUILD_SCHEDULED_EVENTS: 1 >> 16\r\n};\r\n\r\nexport const privileged = flags.GUILD_MEMBERS | flags.GUILD_PRESENCES | flags.MESSAGE_CONTENT;\r\n\r\nexport const all = Object.values(flags).reduce((acc, p) => acc | p, 0);\r\n\r\nexport const non_privileged = all & ~privileged;\r\n\r\nexport function resolve(bit: IntentResolvable = 0): number {\r\n\tif (typeof bit === \"number\" && bit >= 0) return bit;\r\n\tif (typeof bit === \"string\" && flags[bit]) return flags[bit] | 0;\r\n\tif (Array.isArray(bit)) return bit.map((p: IntentResolvable) => resolve(p)).reduce((prev, p) => prev | p, 0);\r\n\tthrow new RangeError(\"BITFIELD_INVALID\");\r\n}\r\n\r\nexport default { flags, privileged, all, non_privileged, resolve };\r\n","\"use strict\";\r\n\r\nimport { EventEmitter } from \"events\";\r\nimport BetterWs = require(\"../structures/BetterWs\");\r\nimport { GATEWAY_OP_CODES as OP } from \"../Constants\";\r\nimport Intents = require(\"../Intents\");\r\n\r\nlet reconnecting = false;\r\n\r\ninterface ConnectorEvents {\r\n\tqueueIdentify: [number];\r\n\tevent: [import(\"../Types\").IWSMessage];\r\n\tready: [boolean];\r\n\tdisconnect: [number, string, boolean];\r\n\tstateChange: [\"connecting\" | \"identifying\" | \"resuming\" | \"ready\" | \"disconnected\"]\r\n}\r\n\r\ninterface DiscordConnector {\r\n\taddListener<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\temit<E extends keyof ConnectorEvents>(event: E, ...args: ConnectorEvents[E]): boolean;\r\n\teventNames(): Array<keyof ConnectorEvents>;\r\n\tlistenerCount(event: keyof ConnectorEvents): number;\r\n\tlisteners(event: keyof ConnectorEvents): Array<(...args: Array<any>) => any>;\r\n\toff<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\ton<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\tonce<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\tprependListener<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\tprependOnceListener<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\trawListeners(event: keyof ConnectorEvents): Array<(...args: Array<any>) => any>;\r\n\tremoveAllListeners(event?: keyof ConnectorEvents): this;\r\n\tremoveListener<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n}\r\n\r\nconst recoverableErrorsRegex = /EAI_AGAIN/;\r\n\r\n/**\r\n * Class used for acting based on received events.\r\n *\r\n * This class is automatically instantiated by the library and is documented for reference.\r\n */\r\nclass DiscordConnector extends EventEmitter {\r\n\tpublic id: number;\r\n\tpublic client: EventEmitter;\r\n\tpublic options: Omit<import(\"../Types\").IClientOptions, \"snowtransferInstance\"> & { token: string; endpoint?: string; };\r\n\tpublic reconnect: boolean;\r\n\tpublic betterWs: BetterWs;\r\n\tpublic heartbeatTimeout: NodeJS.Timeout | null = null;\r\n\tpublic heartbeatInterval = 0;\r\n\tpublic _trace: string | null = null;\r\n\tpublic seq = 0;\r\n\tpublic status: \"connecting\" | \"identifying\" | \"resuming\" | \"ready\" | \"disconnected\" = \"disconnected\";\r\n\tpublic sessionId: string | null = null;\r\n\tpublic lastACKAt = 0;\r\n\tpublic lastHeartbeatSend = 0;\r\n\tpublic latency = 0;\r\n\tprivate _closing = false;\r\n\tpublic identifyAddress: string;\r\n\tpublic resumeAddress: string | null = null;\r\n\r\n\tpublic static readonly default = DiscordConnector;\r\n\r\n\t/**\r\n\t * Create a new Discord Connector.\r\n\t * @param id id of the shard that created this class.\r\n\t * @param client Main client instance.\r\n\t */\r\n\tpublic constructor(id: number, client: EventEmitter & { options: Omit<import(\"../Types\").IClientOptions, \"snowtransferInstance\"> & { token: string; endpoint?: string; } }) {\r\n\t\tsuper();\r\n\r\n\t\tthis.id = id;\r\n\t\tthis.client = client;\r\n\t\tthis.options = client.options;\r\n\t\tthis.reconnect = this.options.reconnect || true;\r\n\t\tthis.identifyAddress = this.options.endpoint!;\r\n\r\n\t\tthis.betterWs = new BetterWs(this.identifyAddress, this.options.ws!);\r\n\r\n\t\tthis.betterWs.on(\"ws_open\", () => {\r\n\t\t\tthis.status = \"connecting\";\r\n\t\t\tthis.emit(\"stateChange\", \"connecting\");\r\n\t\t\treconnecting = false;\r\n\t\t});\r\n\t\tthis.betterWs.on(\"ws_message\", msg => this.messageAction(msg));\r\n\t\tthis.betterWs.on<\"ws_close\">(\"ws_close\", (code, reason) => this.handleWsClose(code, reason));\r\n\t\tthis.betterWs.on(\"debug\", event => this.client.emit(\"debug\", event));\r\n\t\tthis.betterWs.on(\"debug_send\", data => this.client.emit(\"rawSend\", data));\r\n\t}\r\n\r\n\t/**\r\n\t * Connect to Discord.\r\n\t */\r\n\tpublic async connect(): Promise<void> {\r\n\t\tthis._closing = false;\r\n\t\tthis.client.emit(\"debug\", `Shard ${this.id} connecting to gateway`);\r\n\t\t// The address should already be updated if resuming/identifying\r\n\t\treturn this.betterWs.connect()\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconst e = String(error);\r\n\t\t\t\tif (recoverableErrorsRegex.test(e)) setTimeout(() => this.connect(), 5000);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Close the websocket connection and disconnect.\r\n\t */\r\n\tpublic async disconnect(): Promise<void> {\r\n\t\tthis._closing = true;\r\n\t\treturn this.betterWs.close(1000, \"Disconnected by User\");\r\n\t}\r\n\r\n\t/**\r\n\t * Called with a parsed Websocket message to execute further actions.\r\n\t * @param message Message that was received.\r\n\t */\r\n\tprivate async messageAction(message: import(\"../Types\").IGatewayMessage): Promise<void> {\r\n\t\tthis.client.emit(\"rawReceive\", message);\r\n\r\n\t\tif (message.s) {\r\n\t\t\tif (message.s > this.seq + 1) {\r\n\t\t\t\tthis.client.emit(\"debug\", `Shard ${this.id}, invalid sequence: current: ${this.seq} message: ${message.s}`);\r\n\t\t\t\tthis.seq = message.s;\r\n\t\t\t\tthis.resume();\r\n\t\t\t}\r\n\t\t\tthis.seq = message.s;\r\n\t\t}\r\n\r\n\t\tswitch (message.op) {\r\n\t\tcase OP.DISPATCH:\r\n\t\t\tthis.handleDispatch(message);\r\n\t\t\tbreak;\r\n\r\n\t\tcase OP.HEARTBEAT:\r\n\t\t\tthis.heartbeat();\r\n\t\t\tbreak;\r\n\r\n\t\tcase OP.RECONNECT:\r\n\t\t\tthis.client.emit(\"debug\", `Gateway asked shard ${this.id} to reconnect`);\r\n\t\t\tif (this.options.reconnect && this.betterWs.status !== 2) this._reconnect(true);\r\n\t\t\telse this.disconnect();\r\n\t\t\tbreak;\r\n\r\n\t\tcase OP.INVALID_SESSION:\r\n\t\t\tif (message.d && this.sessionId) this.resume();\r\n\t\t\telse {\r\n\t\t\t\tthis.seq = 0;\r\n\t\t\t\tthis.sessionId = \"\";\r\n\t\t\t\tthis.emit(\"queueIdentify\", this.id);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase OP.HELLO:\r\n\t\t\tthis.client.emit(\"debug\", `Shard ${this.id} received HELLO`);\r\n\t\t\tthis.heartbeat();\r\n\t\t\tthis.heartbeatInterval = message.d.heartbeat_interval;\r\n\t\t\tthis.heartbeatTimeout = setInterval(() => {\r\n\t\t\t\tif (this.lastACKAt <= Date.now() - (this.heartbeatInterval + 5000)) {\r\n\t\t\t\t\tthis.client.emit(\"debug\", `Shard ${this.id} has not received a heartbeat ACK in ${this.heartbeatInterval + 5000}ms.`);\r\n\t\t\t\t\tif (this.options.reconnect && this.betterWs.status !== 2) this._reconnect(true);\r\n\t\t\t\t\telse this.disconnect();\r\n\t\t\t\t} else this.heartbeat();\r\n\t\t\t}, this.heartbeatInterval);\r\n\t\t\tthis._trace = message.d._trace;\r\n\t\t\tthis.emit(\"queueIdentify\", this.id);\r\n\t\t\tbreak;\r\n\r\n\t\tcase OP.HEARTBEAT_ACK:\r\n\t\t\tthis.lastACKAt = Date.now();\r\n\t\t\tthis.latency = this.lastACKAt - this.lastHeartbeatSend;\r\n\t\t\tbreak;\r\n\r\n\t\tdefault:\r\n\t\t\tthis.emit(\"event\", message);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Reset this connector to be ready to resume or hard reconnect, then connect.\r\n\t * @param resume Whether or not the client intends to send an OP 6 RESUME later.\r\n\t */\r\n\tprivate async _reconnect(resume = false): Promise<void> {\r\n\t\tif (resume) reconnecting = true;\r\n\t\tif (this.betterWs.status === 2) void this.client.emit(\"error\", `Client was attempting to ${resume ? \"resume\" : \"reconnect\"} while the WebSocket was still in the connecting state. This should never happen.`);\r\n\t\tawait this.betterWs.close(resume ? 4000 : 1012, \"reconnecting\");\r\n\t\tif (resume) {\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t} else {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t}\r\n\t\tthis.connect();\r\n\t}\r\n\r\n\t/**\r\n\t * Hard reset this connector.\r\n\t */\r\n\tprivate reset(): void {\r\n\t\tthis.sessionId = null;\r\n\t\tthis.seq = 0;\r\n\t\tthis.lastACKAt = 0;\r\n\t\tthis._trace = null;\r\n\t\tthis.clearHeartBeat();\r\n\t}\r\n\r\n\t/**\r\n\t * Clear the heart beat interval, set it to null and set the cached heartbeat_interval as 0.\r\n\t */\r\n\tprivate clearHeartBeat(): void {\r\n\t\tif (this.heartbeatTimeout) clearInterval(this.heartbeatTimeout);\r\n\t\tthis.heartbeatTimeout = null;\r\n\t\tthis.heartbeatInterval = 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 2 IDENTIFY to the gateway or an OP 6 RESUME if forceful identify is falsy.\r\n\t * @param force Whether CloudStorm should send an OP 2 IDENTIFY even if there's a session that could be resumed.\r\n\t */\r\n\tpublic async identify(force?: boolean): Promise<void> {\r\n\t\tif (this.betterWs.status !== 1) void this.client.emit(\"debug\", \"Client was attempting to identify when the ws was not open\");\r\n\t\tif (this.sessionId && !force) return this.resume();\r\n\t\tthis.client.emit(\"debug\", `Shard ${this.id} is identifying`);\r\n\r\n\t\tthis.status = \"identifying\";\r\n\t\tthis.emit(\"stateChange\", \"identifying\");\r\n\r\n\t\tconst data = {\r\n\t\t\top: OP.IDENTIFY,\r\n\t\t\td: {\r\n\t\t\t\ttoken: this.options.token,\r\n\t\t\t\tproperties: {\r\n\t\t\t\t\tos: process.platform,\r\n\t\t\t\t\tbrowser: \"CloudStorm\",\r\n\t\t\t\t\tdevice: \"CloudStorm\"\r\n\t\t\t\t},\r\n\t\t\t\tlarge_threshold: this.options.largeGuildThreshold,\r\n\t\t\t\tshard: [this.id, this.options.totalShards || 1],\r\n\t\t\t\tintents: this.options.intents ? Intents.resolve(this.options.intents) : 0\r\n\t\t\t} as import(\"discord-typings\").IdentifyPayload\r\n\t\t};\r\n\r\n\t\tif (this.options.initialPresence) Object.assign(data.d, { presence: this._checkPresenceData(this.options.initialPresence) });\r\n\t\treturn this.betterWs.sendMessage(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 6 RESUME to the gateway.\r\n\t */\r\n\tprivate async resume(): Promise<void> {\r\n\t\tif (this.betterWs.status !== 1) void this.client.emit(\"debug\", \"Client was attempting to resume when the ws was not open\");\r\n\t\tthis.client.emit(\"debug\", `Shard ${this.id} is resuming`);\r\n\t\tthis.status = \"resuming\";\r\n\t\tthis.emit(\"stateChange\", \"resuming\");\r\n\t\treturn this.betterWs.sendMessage({\r\n\t\t\top: OP.RESUME,\r\n\t\t\td: { seq: this.seq, token: this.options.token, session_id: this.sessionId }\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 1 HEARTBEAT to the gateway.\r\n\t */\r\n\tprivate heartbeat(): void {\r\n\t\tif (this.betterWs.status !== 1) void this.client.emit(\"debug\", \"Client was attempting to heartbeat when the ws was not open\");\r\n\t\tthis.betterWs.sendMessage({ op: OP.HEARTBEAT, d: this.seq });\r\n\t\tthis.lastHeartbeatSend = Date.now();\r\n\t}\r\n\r\n\t/**\r\n\t * Handle dispatch events.\r\n\t * @param message Message received from the websocket.\r\n\t */\r\n\tprivate handleDispatch(message: import(\"../Types\").IGatewayMessage): void {\r\n\t\tswitch (message.t) {\r\n\t\tcase \"READY\":\r\n\t\tcase \"RESUMED\":\r\n\t\t\tif (message.t === \"READY\") {\r\n\t\t\t\tif (message.d.resume_gateway_url) this.resumeAddress = message.d.resume_gateway_url;\r\n\t\t\t\tthis.sessionId = message.d.session_id;\r\n\t\t\t}\r\n\t\t\tthis.status = \"ready\";\r\n\t\t\tthis.emit(\"stateChange\", \"ready\");\r\n\t\t\tthis._trace = message.d._trace;\r\n\t\t\tthis.emit(\"ready\", message.t === \"RESUMED\");\r\n\t\t\tthis.emit(\"event\", message);\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tthis.emit(\"event\", message);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handle a close from the underlying websocket.\r\n\t * @param code Websocket close code.\r\n\t * @param reason Close reason if any.\r\n\t */\r\n\tprivate handleWsClose(code: number, reason: string): void {\r\n\t\tlet gracefulClose = false;\r\n\t\tthis.status = \"disconnected\";\r\n\t\tthis.emit(\"stateChange\", \"disconnected\");\r\n\r\n\t\t// Disallowed Intents.\r\n\t\tif (code === 4014) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Disallowed Intents, check your client options and application page.\");\r\n\t\t}\r\n\r\n\t\t// Invalid Intents.\r\n\t\tif (code === 4013) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Invalid Intents data, check your client options.\");\r\n\t\t}\r\n\r\n\t\t// Invalid API version.\r\n\t\tif (code === 4012) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Invalid API version.\");\r\n\t\t}\r\n\r\n\t\t// Sharding required.\r\n\t\tif (code === 4011) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Shard would be on over 2500 guilds. Add more shards.\");\r\n\t\t}\r\n\r\n\t\t// Invalid shard.\r\n\t\tif (code === 4010) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Invalid sharding data, check your client options.\");\r\n\t\t}\r\n\r\n\t\t// Session timed out.\r\n\t\t// force identify if the session is marked as invalid.\r\n\t\tif (code === 4009) {\r\n\t\t\tthis.client.emit(\"error\", \"Session timed out.\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Rate limited.\r\n\t\tif (code === 4008) {\r\n\t\t\tthis.client.emit(\"error\", \"You are being rate limited. Wait before sending more packets.\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Invalid sequence.\r\n\t\tif (code === 4007) {\r\n\t\t\tthis.client.emit(\"error\", \"Invalid sequence. Reconnecting and starting a new session.\");\r\n\t\t\tthis.reset();\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Already authenticated.\r\n\t\tif (code === 4005) {\r\n\t\t\tthis.client.emit(\"error\", \"You sent more than one OP 2 IDENTIFY payload while the websocket was open.\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Authentication failed.\r\n\t\tif (code === 4004) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Tried to connect with an invalid token\");\r\n\t\t}\r\n\r\n\t\t// Not authenticated.\r\n\t\tif (code === 4003) {\r\n\t\t\tthis.client.emit(\"error\", \"You tried to send a packet before sending an OP 2 IDENTIFY or OP 6 RESUME.\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Decode error.\r\n\t\tif (code === 4002) {\r\n\t\t\tthis.client.emit(\"error\", \"You sent an invalid payload\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Invalid opcode.\r\n\t\tif (code === 4001) {\r\n\t\t\tthis.client.emit(\"error\", \"You sent an invalid opcode or invalid payload for an opcode\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Generic error / safe self closing code.\r\n\t\tif (code === 4000) {\r\n\t\t\tif (reconnecting) gracefulClose = true;\r\n\t\t\telse {\r\n\t\t\t\tthis.client.emit(\"error\", \"Error code 4000 received. Attempting to resume\");\r\n\t\t\t\tthis.clearHeartBeat();\r\n\t\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t\t\tthis.connect();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Don't try to reconnect when true\r\n\t\tif (code === 1000 && this._closing) gracefulClose = true;\r\n\t\tthis._closing = false;\r\n\r\n\t\tif (gracefulClose) this.clearHeartBeat();\r\n\t\tthis.emit(\"disconnect\", code, reason, gracefulClose);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 3 PRESENCE_UPDATE to the gateway.\r\n\t * @param data Presence data to send.\r\n\t */\r\n\tpublic async presenceUpdate(data: import(\"discord-typings\").GatewayPresenceUpdate): Promise<void> {\r\n\t\treturn this.betterWs.sendMessage({ op: OP.PRESENCE_UPDATE, d: this._checkPresenceData(data) });\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 4 VOICE_STATE_UPDATE to the gateway.\r\n\t * @param data Voice state update data to send.\r\n\t */\r\n\tpublic async voiceStateUpdate(data: import(\"discord-typings\").VoiceStateUpdatePayload & { self_deaf?: boolean; self_mute?: boolean; }): Promise<void> {\r\n\t\tif (!data) return Promise.resolve();\r\n\t\treturn this.betterWs.sendMessage({ op: OP.VOICE_STATE_UPDATE, d: this._checkVoiceStateUpdateData(data) });\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 8 REQUEST_GUILD_MEMBERS to the gateway.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic async requestGuildMembers(data: import(\"discord-typings\").GuildRequestMembersPayload & { limit?: number; }): Promise<void> {\r\n\t\treturn this.betterWs.sendMessage({ op: OP.REQUEST_GUILD_MEMBERS, d: this._checkRequestGuildMembersData(data) });\r\n\t}\r\n\r\n\t/**\r\n\t * Checks presence data and fills in missing elements.\r\n\t * @param data Data to send.\r\n\t * @returns Data after it's fixed/checked.\r\n\t */\r\n\tprivate _checkPresenceData(data: import(\"discord-typings\").GatewayPresenceUpdate): import(\"discord-typings\").GatewayPresenceUpdate {\r\n\t\tdata.status = data.status || \"online\";\r\n\t\tdata.activities = data.activities && Array.isArray(data.activities) ? data.activities : [];\r\n\r\n\t\tif (data.activities) {\r\n\t\t\tfor (const activity of data.activities) {\r\n\t\t\t\tconst index = data.activities.indexOf(activity);\r\n\t\t\t\tif (activity.type === undefined) activity.type = activity.url ? 1 : 0;\r\n\t\t\t\tif (!activity.name) data.activities.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdata.afk = data.afk || false;\r\n\t\tdata.since = data.since || Date.now();\r\n\t\treturn data;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks voice state update data and fills in missing elements.\r\n\t * @param data Data to send.\r\n\t * @returns Data after it's fixed/checked.\r\n\t */\r\n\tprivate _checkVoiceStateUpdateData(data: import(\"discord-typings\").VoiceStateUpdatePayload & { self_deaf?: boolean; self_mute?: boolean; }): import(\"discord-typings\").VoiceStateUpdatePayload {\r\n\t\tdata.channel_id = data.channel_id || null;\r\n\t\tdata.self_mute = data.self_mute || false;\r\n\t\tdata.self_deaf = data.self_deaf || false;\r\n\t\treturn data;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks request guild members data and fills in missing elements.\r\n\t * @param data Data to send.\r\n\t * @returns Data after it's fixed/checked.\r\n\t */\r\n\tprivate _checkRequestGuildMembersData(data: import(\"discord-typings\").GuildRequestMembersPayload & { limit?: number; }) {\r\n\t\tdata.query = data.query || \"\";\r\n\t\tdata.limit = data.limit || 0;\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nexport = DiscordConnector;\r\n","\"use strict\";\r\n\r\nimport { EventEmitter } from \"events\";\r\nimport DiscordConnector = require(\"./connector/DiscordConnector\");\r\nimport { GATEWAY_OP_CODES as OP_CODES } from \"./Constants\";\r\n\r\ninterface ShardEvents {\r\n\tdisconnect: [number, string, boolean];\r\n\tready: [boolean];\r\n\tqueueIdentify: [number];\r\n}\r\n\r\ninterface Shard {\r\n\taddListener<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\temit<E extends keyof ShardEvents>(event: E, ...args: ShardEvents[E]): boolean;\r\n\teventNames(): Array<keyof ShardEvents>;\r\n\tlistenerCount(event: keyof ShardEvents): number;\r\n\tlisteners(event: keyof ShardEvents): Array<(...args: Array<any>) => any>;\r\n\toff<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\ton<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\tonce<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\tprependListener<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\tprependOnceListener<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\trawListeners(event: keyof ShardEvents): Array<(...args: Array<any>) => any>;\r\n\tremoveAllListeners(event?: keyof ShardEvents): this;\r\n\tremoveListener<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n}\r\n\r\n/**\r\n * Shard class, which provides a wrapper around the DiscordConnector with metadata like the id of the shard.\r\n *\r\n * This class is automatically instantiated by the library and is documented for reference.\r\n */\r\nclass Shard extends EventEmitter {\r\n\tpublic id: number;\r\n\tpublic client: EventEmitter & { options: Omit<import(\"./Types\").IClientOptions, \"snowtransferInstance\"> & { token: string; endpoint?: string; } };\r\n\tpublic ready: boolean;\r\n\tpublic connector: DiscordConnector;\r\n\r\n\t/**\r\n\t * Create a new Shard.\r\n\t * @param id id of the shard.\r\n\t * @param client Main class used for forwarding events.\r\n\t */\r\n\tpublic constructor(id: number, client: Shard[\"client\"]) {\r\n\t\tsuper();\r\n\r\n\t\tthis.id = id;\r\n\t\tthis.client = client;\r\n\t\tthis.ready = false;\r\n\t\tthis.connector = new DiscordConnector(id, client);\r\n\t\tthis.connector.on(\"event\", (event) => {\r\n\t\t\tconst newEvent: import(\"./Types\").IGatewayMessage = Object.assign(event, { shard_id: this.id });\r\n\t\t\tthis.client.emit(\"event\", newEvent);\r\n\r\n\t\t\tswitch (event.op) {\r\n\t\t\tcase OP_CODES.DISPATCH:\r\n\t\t\t\tthis.client.emit(\"dispatch\", newEvent);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase OP_CODES.VOICE_STATE_UPDATE:\r\n\t\t\t\tthis.client.emit(\"voiceStateUpdate\", newEvent);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.connector.on(\"disconnect\", (...args) => {\r\n\t\t\tthis.ready = false;\r\n\t\t\tthis.emit(\"disconnect\", ...args);\r\n\t\t});\r\n\t\tthis.connector.on(\"ready\", (resume) => this.emit(\"ready\", resume));\r\n\t\tthis.connector.on(\"queueIdentify\", () => this.emit(\"queueIdentify\", this.id));\r\n\t}\r\n\r\n\t/**\r\n\t * Time in ms it took for Discord to ackknowledge an OP 1 HEARTBEAT.\r\n\t */\r\n\tpublic get latency(): number {\r\n\t\treturn this.connector.latency;\r\n\t}\r\n\r\n\t/**\r\n\t * Create a new connection to Discord.\r\n\t */\r\n\tpublic connect(): void {\r\n\t\tthis.connector.connect();\r\n\t}\r\n\r\n\t/**\r\n\t * Close the current connection to Discord.\r\n\t */\r\n\tpublic disconnect(): Promise<void> {\r\n\t\treturn this.connector.disconnect();\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 3 PRESENCE_UPDATE to Discord.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic presenceUpdate(data: import(\"discord-typings\").GatewayPresenceUpdate): Promise<void> {\r\n\t\treturn this.connector.presenceUpdate(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 4 VOICE_STATE_UPDATE to Discord.\r\n\t * @param data Data to send\r\n\t */\r\n\tpublic voiceStateUpdate(data: import(\"discord-typings\").VoiceStateUpdatePayload & { self_deaf?: boolean; self_mute?: boolean; }): Promise<void> {\r\n\t\treturn this.connector.voiceStateUpdate(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 8 REQUEST_GUILD_MEMBERS to Discord.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic requestGuildMembers(data: import(\"discord-typings\").GuildRequestMembersPayload & { limit?: number; }): Promise<void> {\r\n\t\treturn this.connector.requestGuildMembers(data);\r\n\t}\r\n}\r\n\r\nexport = Shard;\r\n","\"use strict\";\r\n\r\nimport Shard = require(\"./Shard\");\r\nimport RatelimitBucket = require(\"./structures/RatelimitBucket\");\r\n\r\n/**\r\n * Class used for managing shards for the user.\r\n *\r\n * This class is automatically instantiated by the library and is documented for reference.\r\n */\r\nclass ShardManager {\r\n\tpublic client: import(\"events\").EventEmitter & { options: Omit<import(\"./Types\").IClientOptions, \"snowtransferInstance\"> & { token: string; endpoint?: string; } };\r\n\tpublic options: ShardManager[\"client\"][\"options\"];\r\n\tpublic shards: { [id: number]: Shard };\r\n\tpublic identifyBucket: RatelimitBucket;\r\n\tpublic concurrencyBucket: RatelimitBucket | null = null;\r\n\r\n\t/**\r\n\t * Create a new ShardManager.\r\n\t */\r\n\tpublic constructor(client: ShardManager[\"client\"]) {\r\n\t\tthis.client = client;\r\n\t\tthis.options = client.options;\r\n\t\tthis.shards = {};\r\n\t\tthis.identifyBucket = new RatelimitBucket(1000, 1000 * 60 * 60 * 24, 1000 * 60 * 60 * 24);\r\n\t}\r\n\r\n\t/**\r\n\t * Create shard instances and add them to the connection queue.\r\n\t */\r\n\tpublic spawn(): void {\r\n\t\tif (!this.concurrencyBucket) throw new Error(\"Trying to spawn shards without calling Client.connect()\");\r\n\t\tfor (const id of (this.options.shards === \"auto\" ? Array(this.options.totalShards).fill(0).map((_, index) => index) : this.options.shards || [0])) {\r\n\t\t\tthis.client.emit(\"debug\", `Spawned shard ${id}`);\r\n\t\t\tthis.shards[id] = new Shard(id, this.client);\r\n\t\t\tthis._addListener(this.shards[id]);\r\n\t\t\tthis.shards[id].connector.connect();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Disconnect all shards facilitated by this manager.\r\n\t */\r\n\tpublic disconnect(): void {\r\n\t\tfor (const shardKey in this.shards) {\r\n\t\t\tthis.shards[shardKey].disconnect();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Add event listeners to a shard to that the manager can act on received events.\r\n\t * @param shard Shard to add the event listeners to.\r\n\t */\r\n\tprivate _addListener(shard: Shard) {\r\n\t\tshard.on(\"ready\", (resume) => {\r\n\t\t\tshard.ready = true;\r\n\t\t\tthis.client.emit(\"debug\", `Shard ${shard.id} ${resume ? \"has resumed\" : \"is ready\"}`);\r\n\t\t\tthis.client.emit(\"shardReady\", { id: shard.id, ready: !resume });\r\n\t\t\tthis._checkReady();\r\n\t\t});\r\n\t\tshard.on(\"queueIdentify\", (shardId) => {\r\n\t\t\tif (!this.shards[shardId]) return this.client.emit(\"debug\", `Received a queueIdentify event for shard ${shardId} but it does not exist. Was it removed?`);\r\n\t\t\tthis.client.emit(\"debug\", `Shard ${shardId} is ready to identify`);\r\n\t\t\tthis.concurrencyBucket?.queue(() => {\r\n\t\t\t\tthis.identifyBucket.queue(() => this.shards[shardId].connector.identify());\r\n\t\t\t});\r\n\t\t});\r\n\t\tshard.on(\"disconnect\", (code, reason, gracefulClose) => {\r\n\t\t\tthis.client.emit(\"debug\", `Websocket of shard ${shard.id} closed with code ${code} and reason: ${reason ? reason : \"None\"}`);\r\n\t\t\tif (code === 1000 && gracefulClose) return this._checkDisconnect();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if all shards spawned by this manager are ready.\r\n\t */\r\n\tprivate _checkReady() {\r\n\t\tfor (const shardId in this.shards) {\r\n\t\t\tif (this.shards[shardId]) {\r\n\t\t\t\tif (!this.shards[shardId].ready) return;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.client.emit(\"ready\");\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if all shards spawned by this manager are disconnected.\r\n\t */\r\n\tprivate _checkDisconnect() {\r\n\t\tfor (const shardId in this.shards) {\r\n\t\t\tif (this.shards[shardId]) {\r\n\t\t\t\tif (this.shards[shardId].connector.status !== \"disconnected\") return;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.client.emit(\"disconnected\");\r\n\t}\r\n\r\n\t/**\r\n\t * Update the status of all currently connected shards which have been spawned by this manager.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic async presenceUpdate(data: import(\"discord-typings\").GatewayPresenceUpdate) {\r\n\t\tfor (const shardKey in this.shards) {\r\n\t\t\tif (this.shards[shardKey]) {\r\n\t\t\t\tconst shard = this.shards[shardKey];\r\n\t\t\t\tthis.shardPresenceUpdate(shard.id, data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Update the status of a single connected shard which has been spawned by this manager.\r\n\t * @param shardId id of the shard.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic shardPresenceUpdate(shardId: number, data: import(\"discord-typings\").GatewayPresenceUpdate): Promise<void> {\r\n\t\treturn new Promise((res, rej) => {\r\n\t\t\tconst shard = this.shards[shardId];\r\n\t\t\tif (!shard) rej(new Error(`Shard ${shardId} does not exist`));\r\n\t\t\tif (!shard.ready) shard.once(\"ready\", () => shard.presenceUpdate(data).then(result => res(result)).catch(e => rej(e)));\r\n\t\t\tshard.presenceUpdate(data).then(result => res(result)).catch(e => rej(e));\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 4 VOICE_STATE_UPDATE with a certain shard.\r\n\t * @param shardId id of the shard.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic voiceStateUpdate(shardId: number, data: import(\"discord-typings\").VoiceStateUpdatePayload & { self_deaf?: boolean; self_mute?: boolean; }): Promise<void> {\r\n\t\treturn new Promise((res, rej) => {\r\n\t\t\tconst shard = this.shards[shardId];\r\n\t\t\tif (!shard) rej(new Error(`Shard ${shardId} does not exist`));\r\n\t\t\tif (!shard.ready) shard.once(\"ready\", () => shard.voiceStateUpdate(data).then(result => res(result)).catch(e => rej(e)));\r\n\t\t\tshard.voiceStateUpdate(data).then(result => res(result)).catch(e => rej(e));\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 8 REQUEST_GUILD_MEMBERS with a certain shard.\r\n\t * @param shardId id of the shard.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic requestGuildMembers(shardId: number, data: import(\"discord-typings\").GuildRequestMembersPayload & { limit?: number; }): Promise<void> {\r\n\t\treturn new Promise((res, rej) => {\r\n\t\t\tconst shard = this.shards[shardId];\r\n\t\t\tif (!shard) rej(new Error(`Shard ${shardId} does not exist`));\r\n\t\t\tif (!shard.ready) shard.once(\"ready\", () => shard.requestGuildMembers(data).then(result => res(result)).catch(e => rej(e)));\r\n\t\t\tshard.requestGuildMembers(data).then(result => res(result)).catch(e => rej(e));\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport = ShardManager;\r\n","\"use strict\";\r\n\r\nconst version = require(\"../package.json\").version as string;\r\nimport { EventEmitter } from \"events\";\r\nimport Constants = require(\"./Constants\");\r\nimport { SnowTransfer } from \"snowtransfer\";\r\nimport ShardManager = require(\"./ShardManager\");\r\nimport RatelimitBucket = require(\"./structures/RatelimitBucket\");\r\n\r\ninterface ClientEvents {\r\n\tdebug: [string];\r\n\trawSend: [import(\"./Types\").IWSMessage];\r\n\trawReceive: [import(\"./Types\").IGatewayMessage];\r\n\tevent: [import(\"./Types\").IGatewayMessage];\r\n\tdispatch: [import(\"./Types\").IGatewayMessage];\r\n\tvoiceStateUpdate: [import(\"./Types\").IGatewayMessage];\r\n\tshardReady: [{ id: number; ready: boolean; }];\r\n\terror: [string];\r\n\tready: [];\r\n\tdisconnected: [];\r\n}\r\n\r\ninterface Client {\r\n\taddListener<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\temit<E extends keyof ClientEvents>(event: E, ...args: ClientEvents[E]): boolean;\r\n\teventNames(): Array<keyof ClientEvents>;\r\n\tlistenerCount(event: keyof ClientEvents): number;\r\n\tlisteners(event: keyof ClientEvents): Array<(...args: Array<any>) => any>;\r\n\toff<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\ton<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\tonce<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\tprependListener<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\tprependOnceListener<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\trawListeners(event: keyof ClientEvents): Array<(...args: Array<any>) => any>;\r\n\tremoveAllListeners(event?: keyof ClientEvents): this;\r\n\tremoveListener<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n}\r\n\r\n/**\r\n * Main class used for receiving events and interacting with the Discord gateway.\r\n */\r\nclass Client extends EventEmitter {\r\n\tpublic token: string;\r\n\tpublic options: Omit<import(\"./Types\").IClientOptions, \"snowtransferInstance\"> & { token: string; endpoint?: string; };\r\n\tpublic shardManager: ShardManager;\r\n\tpublic version: string;\r\n\tprivate _restClient: SnowTransfer;\r\n\r\n\t/**\r\n\t * Create a new Client to connect to the Discord gateway.\r\n\t * @param token Token received from creating a discord bot user, which will be used to connect to the gateway.\r\n\t */\r\n\tpublic constructor(token: string, options: import(\"./Types\").IClientOptions = {}) {\r\n\t\tsuper();\r\n\t\tif (!token) throw new Error(\"Missing token!\");\r\n\t\tthis.options = {\r\n\t\t\tlargeGuildThreshold: 250,\r\n\t\t\tshards: \"auto\",\r\n\t\t\treconnect: true,\r\n\t\t\tintents: 0,\r\n\t\t\ttoken: \"\",\r\n\t\t\tws: {\r\n\t\t\t\tcompress: true,\r\n\t\t\t\tencoding: \"json\"\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._restClient = options.snowtransferInstance ? options.snowtransferInstance : new SnowTransfer(token);\r\n\t\tdelete options.snowtransferInstance;\r\n\t\tthis.token = token.startsWith(\"Bot \") ? token.substring(4) : token;\r\n\t\tObject.assign(this.options, options);\r\n\t\tthis.options.token = token;\r\n\t\tthis.shardManager = new ShardManager(this);\r\n\t\tthis.version = version;\r\n\t}\r\n\r\n\t/**\r\n\t * Create one or more connections (depending on the selected amount of shards) to the Discord gateway.\r\n\t * @returns This function returns a promise which is solely used for awaiting the getGateway() method's return value.\r\n\t */\r\n\tpublic async connect(): Promise<void> {\r\n\t\tconst initial = await this.fetchConnectInfo();\r\n\t\tif (this.options.shards === \"auto\") this.options.totalShards = initial;\r\n\t\tthis.shardManager.spawn();\r\n\t}\r\n\r\n\t/**\r\n\t * Method to grab initial connection info from Discord.\r\n\t * Should only be called automatically by the lib unless you are a large bot with a max_concurrency not equal to 1.\r\n\t * If you are a large bot, you should call this method at a rate of your own discretion to update your max_concurrency cached value to have up to date bucket info.\r\n\t * @returns The amount of shards the bot should spawn if set to auto.\r\n\t */\r\n\tpublic async fetchConnectInfo(): Promise<number> {\r\n\t\tconst gateway = await this.getGatewayBot();\r\n\t\tthis._updateEndpoint(gateway.url);\r\n\t\tconst oldQueueConcurrency = [] as Array<[() => unknown, () => unknown]>;\r\n\t\tconst oldQueueIdentify = [] as Array<[() => unknown, () => unknown]>;\r\n\t\tif (this.shardManager.concurrencyBucket && this.shardManager.concurrencyBucket.fnQueue.length) {\r\n\t\t\toldQueueConcurrency.push(...this.shardManager.concurrencyBucket.fnQueue.map(i => [i.fn, i.callback] as [() => unknown, () => unknown]));\r\n\t\t\tthis.shardManager.concurrencyBucket.dropQueue();\r\n\t\t}\r\n\t\tif (this.shardManager.identifyBucket.fnQueue.length) oldQueueIdentify.push(...this.shardManager.identifyBucket.fnQueue.map(i => [i.fn, i.callback] as [() => unknown, () => unknown]));\r\n\t\tthis.shardManager.identifyBucket.dropQueue();\r\n\t\tthis.shardManager.concurrencyBucket = new RatelimitBucket(gateway.session_start_limit.max_concurrency, 5000);\r\n\t\tthis.shardManager.identifyBucket.remaining = gateway.session_start_limit.remaining;\r\n\t\tthis.shardManager.identifyBucket.limitReset = gateway.session_start_limit.reset_after;\r\n\t\tfor (const [fn, callback] of oldQueueConcurrency) {\r\n\t\t\tthis.shardManager.concurrencyBucket.queue(fn).then(callback);\r\n\t\t}\r\n\t\tfor (const [fn, callback] of oldQueueIdentify) {\r\n\t\t\tthis.shardManager.identifyBucket.queue(fn).then(callback);\r\n\t\t}\r\n\t\treturn gateway.shards;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the gateway endpoint to connect to.\r\n\t * @returns String url with the Gateway Endpoint to connect to.\r\n\t */\r\n\tpublic async getGateway(): Promise<string> {\r\n\t\tconst gatewayData = await this._restClient.bot.getGateway();\r\n\t\treturn gatewayData.url;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the GatewayData including recommended amount of shards and other helpful info.\r\n\t * @returns Object with url and shards to use to connect to discord.\r\n\t */\r\n\tpublic async getGatewayBot() {\r\n\t\treturn this._restClient.bot.getGatewayBot();\r\n\t}\r\n\r\n\t/**\r\n\t * Disconnect the bot gracefully,\r\n\t * you will receive a 'disconnected' event once the ShardManager successfully closes all shard websocket connections.\r\n\t */\r\n\tpublic disconnect(): void {\r\n\t\treturn this.shardManager.disconnect();\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 3 PRESENCE_UPDATE to Discord, which updates the status of all shards facilitated by this client's ShardManager.\r\n\t * @returns Promise that's resolved once all shards have sent the websocket payload.\r\n\t *\r\n\t * @example\r\n\t * // Connect to Discord and set status to do not disturb and game to \"Memes are Dreams\".\r\n\t * const CloudStorm = require(\"cloudstorm\"); // CloudStorm also supports import statements.\r\n\t * const token = \"token\";\r\n\t * const client = new CloudStorm.Client(token);\r\n\t * client.connect();\r\n\t * client.once(\"ready\", () => {\r\n\t * \t// Client is connected to Discord and is ready, so we can update the status.\r\n\t * \tclient.presenceUpdate({ status: \"dnd\", game: { name: \"Memes are Dreams\" } });\r\n\t * });\r\n\t */\r\n\tpublic async presenceUpdate(data: import(\"discord-typings\").GatewayPresenceUpdate): Promise<void> {\r\n\t\treturn this.shardManager.presenceUpdate(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 3 PRESENCE_UPDATE to Discord, which updates the status of a single shard facilitated by this client's ShardManager.\r\n\t * @param shardId id of the shard that should update it's status.\r\n\t * @param data Presence data to send.\r\n\t * @returns Promise that's resolved once the shard has sent the websocket payload.\r\n\t *\r\n\t * @example\r\n\t * // Connect to Discord and set status to do not disturb and game to \"Im shard 0\".\r\n\t * const CloudStorm = require(\"cloudstorm\"); // CloudStorm also supports import statements.\r\n\t * const token = \"token\";\r\n\t * const client = new CloudStorm.Client(token);\r\n\t * client.connect();\r\n\t * client.once(\"ready\", () => {\r\n\t * \t// Client is connected to Discord and is ready, so we can update the status of shard 0.\r\n\t * \tclient.shardPresenceUpdate(0, { status: \"dnd\", game: { name: \"Im shard 0\" } });\r\n\t * });\r\n\t */\r\n\tpublic shardStatusUpdate(shardId: number, data: import(\"discord-typings\").GatewayPresenceUpdate): Promise<void> {\r\n\t\treturn this.shardManager.shardPresenceUpdate(shardId, data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 4 VOICE_STATE_UPDATE to Discord. this does **not** allow you to send audio with CloudStorm itself,\r\n\t * it just provides the necessary data for another application to send audio data to Discord.\r\n\t * @param shardId id of the shard that should send the payload.\r\n\t * @param data Voice state update data to send.\r\n\t * @returns Promise that's resolved once the payload was sent to Discord.\r\n\t *\r\n\t * @example\r\n\t * // Connect to Discord and join a voice channel\r\n\t * const CloudStorm = require(\"cloudstorm\"); // CloudStorm also supports import statements.\r\n\t * const token = \"token\";\r\n\t * const client = new CloudStorm.Client(token);\r\n\t * client.connect();\r\n\t * client.once(\"ready\", () => {\r\n\t * \t// Client is connected to Discord and is ready, so we can join a voice channel.\r\n\t * \t// We will use shard 0 as the shard to send the payload.\r\n\t * \tclient.voiceStateUpdate(0, { guild_id: \"id\", channel_id: \"id\", self_mute: false, self_deaf: false });\r\n\t * });\r\n\t */\r\n\tpublic voiceStateUpdate(shardId: number, data: import(\"discord-typings\").VoiceStateUpdatePayload & { self_deaf?: boolean; self_mute?: boolean; }): Promise<void> {\r\n\t\treturn this.shardManager.voiceStateUpdate(shardId, data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 8 REQUEST_GUILD_MEMBERS to Discord.\r\n\t * @param shardId id of the shard that should send the payload.\r\n\t * @param data Request guild members data to send.\r\n\t * @returns Promise that's resolved once the payload was send to Discord.\r\n\t *\r\n\t * @example\r\n\t * // Connect to Discord and request guild members.\r\n\t * const CloudStorm = require(\"cloudstorm\"); // CloudStorm also supports import statements.\r\n\t * const token = \"token\";\r\n\t * const client = new CloudStorm.Client(token);\r\n\t * client.connect();\r\n\t * client.once(\"ready\", () => {\r\n\t * \t// Client is connected to Discord and is ready, so we can send the request guild members payload.\r\n\t * \t// We will use shard 0 as the shard to send the payload.\r\n\t * \tclient.requestGuildMembers(0, { guild_id: \"id\" });\r\n\t * });\r\n\t */\r\n\tpublic requestGuildMembers(shardId: number, data: import(\"discord-typings\").GuildRequestMembersPayload & { limit?: number; }): Promise<void> {\r\n\t\tif (!data.guild_id) throw new Error(\"You need to pass a guild_id\");\r\n\t\treturn this.shardManager.requestGuildMembers(shardId, data);\r\n\t}\r\n\r\n\t/**\r\n\t * Update the endpoint shard websockets will connect to.\r\n\t * @param gatewayUrl Base gateway wss url to update the cached endpoint to.\r\n\t */\r\n\tprivate _updateEndpoint(gatewayUrl: string): void {\r\n\t\tthis.options.endpoint = `${gatewayUrl}?v=${Constants.GATEWAY_VERSION}&encoding=${this.options.ws?.encoding === \"etf\" ? \"etf\" : \"json\"}${this.options.ws?.compress ? \"&compress=zlib-stream\" : \"\"}`;\r\n\t}\r\n}\r\n\r\nexport = Client;\r\n","import Client = require(\"./Client\");\r\nimport Constants = require(\"./Constants\");\r\nimport Intents = require(\"./Intents\");\r\n\r\nimport Shard = require(\"./Shard\");\r\nimport ShardManager = require(\"./ShardManager\");\r\n\r\nexport { Client, Constants, Intents, Shard, ShardManager };\r\nexport * from \"./Types\";\r\n"],"mappings":"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","names":["require_Constants","__commonJSMin","exports","module","Constants","require_RatelimitBucket","__commonJSMin","exports","module","RatelimitBucket","limit","limitReset","defaultReset","fn","error","res","rej","wrapFn","e","queuedFunc","require_BetterWs","__commonJSMin","exports","module","import_events","import_crypto","import_zlib","import_Constants","https","http","util","RatelimitBucket","BetterWs","address","options","internal","key","url","useHTTPS","port","req","resolve","reject","res","socket","hash","accept","z","e","code","reason","resolver","promise","from","data","isValidRequest","presence","sendMsg","etf","writeETF","packet","opcode","length","frame","error","readRange","bytes","fin","payload","message","l","readETF","value","index","head","cursor","read","num","element","start","view","x","loop","type","int","atom","i","array","str","byte","sign","left","obj","b","abs","item","entries","Intents_exports","__export","all","Intents_default","flags","non_privileged","privileged","resolve","bit","p","prev","init_Intents","__esmMin","acc","require_DiscordConnector","__commonJSMin","exports","module","import_events","import_Constants","BetterWs","Intents","reconnecting","recoverableErrorsRegex","_DiscordConnector","id","client","msg","code","reason","event","data","error","e","message","OP","resume","force","gracefulClose","activity","index","DiscordConnector","require_Shard","__commonJSMin","exports","module","import_events","import_Constants","DiscordConnector","Shard","id","client","event","newEvent","OP_CODES","args","resume","data","require_ShardManager","__commonJSMin","exports","module","Shard","RatelimitBucket","ShardManager","client","id","_","index","shardKey","shard","resume","shardId","_a","code","reason","gracefulClose","data","res","rej","result","e","require_Client","__commonJSMin","exports","module","import_events","import_snowtransfer","version","Constants","ShardManager","RatelimitBucket","Client","token","options","initial","gateway","oldQueueConcurrency","oldQueueIdentify","i","fn","callback","data","shardId","gatewayUrl","_a","_b","src_exports","__export","Client","Constants","Intents","Shard","ShardManager","__toCommonJS"]}
1
+ {"version":3,"sources":["../src/Constants.ts","../src/structures/RatelimitBucket.ts","../src/structures/BetterWs.ts","../src/Intents.ts","../node_modules/discord-api-types/gateway/common.js","../node_modules/discord-api-types/gateway/v10.ts","../node_modules/discord-api-types/globals.ts","../node_modules/discord-api-types/payloads/common.ts","../node_modules/discord-api-types/payloads/v10/application.ts","../node_modules/discord-api-types/payloads/v10/auditLog.ts","../node_modules/discord-api-types/payloads/v10/autoModeration.ts","../node_modules/discord-api-types/payloads/v10/channel.ts","../node_modules/discord-api-types/payloads/v10/gateway.ts","../node_modules/discord-api-types/payloads/v10/guild.ts","../node_modules/discord-api-types/payloads/v10/guildScheduledEvent.ts","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/attachment.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/base.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/boolean.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/channel.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/integer.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/mentionable.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/number.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/role.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/shared.ts","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/string.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/subcommand.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/subcommandGroup.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/_chatInput/user.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/chatInput.ts","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/contextMenu.js","../node_modules/discord-api-types/payloads/v10/_interactions/_applicationCommands/permissions.ts","../node_modules/discord-api-types/payloads/v10/_interactions/applicationCommands.ts","../node_modules/discord-api-types/payloads/v10/_interactions/autocomplete.js","../node_modules/discord-api-types/payloads/v10/_interactions/base.js","../node_modules/discord-api-types/payloads/v10/_interactions/messageComponents.js","../node_modules/discord-api-types/payloads/v10/_interactions/modalSubmit.js","../node_modules/discord-api-types/payloads/v10/_interactions/ping.js","../node_modules/discord-api-types/payloads/v10/_interactions/responses.ts","../node_modules/discord-api-types/payloads/v10/interactions.ts","../node_modules/discord-api-types/payloads/v10/invite.ts","../node_modules/discord-api-types/payloads/v10/oauth2.ts","../node_modules/discord-api-types/payloads/v10/stageInstance.ts","../node_modules/discord-api-types/payloads/v10/sticker.ts","../node_modules/discord-api-types/payloads/v10/teams.ts","../node_modules/discord-api-types/payloads/v10/user.ts","../node_modules/discord-api-types/payloads/v10/webhook.ts","../node_modules/discord-api-types/payloads/v10/index.ts","../node_modules/discord-api-types/rest/common.ts","../node_modules/discord-api-types/rest/v10/application.js","../node_modules/discord-api-types/rest/v10/auditLog.js","../node_modules/discord-api-types/rest/v10/autoModeration.js","../node_modules/discord-api-types/rest/v10/channel.js","../node_modules/discord-api-types/rest/v10/emoji.js","../node_modules/discord-api-types/rest/v10/gateway.js","../node_modules/discord-api-types/rest/v10/guild.js","../node_modules/discord-api-types/rest/v10/guildScheduledEvent.js","../node_modules/discord-api-types/rest/v10/interactions.js","../node_modules/discord-api-types/rest/v10/invite.js","../node_modules/discord-api-types/rest/v10/oauth2.js","../node_modules/discord-api-types/rest/v10/stageInstance.js","../node_modules/discord-api-types/rest/v10/sticker.js","../node_modules/discord-api-types/rest/v10/template.js","../node_modules/discord-api-types/rest/v10/user.js","../node_modules/discord-api-types/rest/v10/voice.js","../node_modules/discord-api-types/rest/v10/webhook.js","../node_modules/discord-api-types/rest/v10/index.ts","../node_modules/discord-api-types/rpc/common.ts","../node_modules/discord-api-types/rpc/v10.ts","../node_modules/discord-api-types/utils/v10.ts","../node_modules/discord-api-types/v10.ts","../src/connector/DiscordConnector.ts","../src/Shard.ts","../src/ShardManager.ts","../src/Client.ts","../src/index.ts"],"sourcesContent":["\"use strict\";\r\n\r\nconst Constants = {\r\n\tGATEWAY_OP_CODES: {\r\n\t\t/**\r\n\t\t * Receive.\r\n\t\t */\r\n\t\tDISPATCH: 0 as const,\r\n\t\t/**\r\n\t\t * Send/Receive.\r\n\t\t */\r\n\t\tHEARTBEAT: 1 as const,\r\n\t\t/**\r\n\t\t * Send.\r\n\t\t */\r\n\t\tIDENTIFY: 2 as const,\r\n\t\t/**\r\n\t\t * Send.\r\n\t\t */\r\n\t\tPRESENCE_UPDATE: 3 as const,\r\n\t\t/**\r\n\t\t * Send.\r\n\t\t */\r\n\t\tVOICE_STATE_UPDATE: 4 as const,\r\n\t\t/**\r\n\t\t * Send.\r\n\t\t */\r\n\t\tRESUME: 6 as const,\r\n\t\t/**\r\n\t\t * Receive.\r\n\t\t */\r\n\t\tRECONNECT: 7 as const,\r\n\t\t/**\r\n\t\t * Send.\r\n\t\t */\r\n\t\tREQUEST_GUILD_MEMBERS: 8 as const,\r\n\t\t/**\r\n\t\t * Receive.\r\n\t\t */\r\n\t\tINVALID_SESSION: 9 as const,\r\n\t\t/**\r\n\t\t * Receive.\r\n\t\t */\r\n\t\tHELLO: 10 as const,\r\n\t\t/**\r\n\t\t * Receive.\r\n\t\t */\r\n\t\tHEARTBEAT_ACK: 11 as const\r\n\t},\r\n\tGATEWAY_VERSION: 10 as const\r\n};\r\n\r\nexport = Constants;\r\n","\"use strict\";\r\n\r\n/**\r\n * RatelimitBucket, used for ratelimiting the execution of functions.\r\n */\r\nclass RatelimitBucket {\r\n\tpublic fnQueue: Array<{ fn: () => unknown, callback: () => unknown; error: Error }>;\r\n\tpublic limit: number;\r\n\tpublic remaining: number;\r\n\tpublic limitReset: number;\r\n\tpublic defaultReset: number | undefined;\r\n\tpublic resetTimeout: NodeJS.Timeout | null;\r\n\r\n\t/**\r\n\t * Create a new Bucket.\r\n\t * @param limit Number of functions that may be executed during the timeframe set in limitReset.\r\n\t * @param limitReset Timeframe in milliseconds until the ratelimit resets.\r\n\t * @param defaultReset If the bucket info does not provide default values, but provides remaining, this is the reset to use after the initial reset.\r\n\t */\r\n\tpublic constructor(limit = 5, limitReset = 5000, defaultReset?: number) {\r\n\t\tthis.fnQueue = [];\r\n\t\tthis.limit = limit;\r\n\t\tthis.remaining = limit;\r\n\t\tthis.limitReset = limitReset;\r\n\t\tthis.resetTimeout = null;\r\n\t\tthis.defaultReset = defaultReset;\r\n\t}\r\n\r\n\t/**\r\n\t * Queue a function to be executed.\r\n\t * @param fn Function to be executed.\r\n\t * @returns Result of the function if any.\r\n\t */\r\n\tpublic queue<T>(fn: () => T): Promise<T> {\r\n\t\t// More debug-ability\r\n\t\tconst error = new Error(\"An Error occurred in the bucket queue\");\r\n\t\treturn new Promise((res, rej) => {\r\n\t\t\tconst wrapFn = () => {\r\n\t\t\t\tthis.remaining--;\r\n\t\t\t\tif (!this.resetTimeout) {\r\n\t\t\t\t\tthis.resetTimeout = setTimeout(() => {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tthis.resetRemaining();\r\n\t\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\t\trej(e);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, this.limitReset).unref();\r\n\t\t\t\t}\r\n\t\t\t\tif (this.remaining !== 0) this.checkQueue().catch(rej);\r\n\r\n\t\t\t\tif (fn instanceof Promise) {\r\n\t\t\t\t\treturn fn.then(res).catch((e) => {\r\n\t\t\t\t\t\tif (e) {\r\n\t\t\t\t\t\t\te.stack = error.stack;\r\n\t\t\t\t\t\t\treturn rej(e);\r\n\t\t\t\t\t\t} else return rej(error);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn res(fn());\r\n\t\t\t};\r\n\t\t\tif (this.remaining === 0) {\r\n\t\t\t\tthis.fnQueue.push({ fn, callback: wrapFn, error });\r\n\t\t\t\tthis.checkQueue().catch(rej);\r\n\t\t\t} else wrapFn();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Check if there are any functions in the queue that haven't been executed yet.\r\n\t */\r\n\tprivate async checkQueue(): Promise<void> {\r\n\t\tif (this.fnQueue.length > 0 && this.remaining !== 0) {\r\n\t\t\tconst queuedFunc = this.fnQueue.splice(0, 1)[0];\r\n\t\t\ttry {\r\n\t\t\t\tqueuedFunc.callback();\r\n\t\t\t} catch (e) {\r\n\t\t\t\tif (e) {\r\n\t\t\t\t\te.stack = queuedFunc.error.stack;\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t} else throw queuedFunc.error;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Reset the remaining tokens to the base limit.\r\n\t */\r\n\tprivate resetRemaining(): void {\r\n\t\tthis.remaining = this.limit;\r\n\t\tif (this.defaultReset) this.limitReset = this.defaultReset;\r\n\t\tif (this.resetTimeout) {\r\n\t\t\tclearTimeout(this.resetTimeout);\r\n\t\t\tthis.resetTimeout = null;\r\n\t\t}\r\n\t\tthis.checkQueue();\r\n\t}\r\n\r\n\t/**\r\n\t * Clear the current queue of events to be sent.\r\n\t */\r\n\tpublic dropQueue(): void {\r\n\t\tthis.fnQueue = [];\r\n\t}\r\n}\r\n\r\nexport = RatelimitBucket;\r\n","\"use strict\";\r\n\r\n// This ultra light weigth WS code is a slimmed down version originally found at https://github.com/timotejroiko/tiny-discord\r\n// Modifications and use of this code was granted for this project by the author, Timotej Roiko.\r\n// A major thank you to Tim for better performing software.\r\n\r\nimport { EventEmitter } from \"events\";\r\nimport { randomBytes, createHash } from \"crypto\";\r\nimport { createInflate, inflateSync, constants } from \"zlib\";\r\nimport https = require(\"https\");\r\nimport http = require(\"http\");\r\nimport util = require(\"util\");\r\nimport { GATEWAY_OP_CODES } from \"../Constants\";\r\n\r\nimport RatelimitBucket = require(\"./RatelimitBucket\");\r\n\r\nimport type APITypes = require(\"discord-api-types/v10\");\r\n\r\ninterface BWSEvents {\r\n\tws_open: [];\r\n\tws_close: [number, string];\r\n\tws_receive: [APITypes.GatewayReceivePayload];\r\n\tws_send: [APITypes.GatewaySendPayload];\r\n\tdebug: [string];\r\n}\r\n\r\ninterface BetterWs {\r\n\taddListener<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\temit<E extends keyof BWSEvents>(event: E, ...args: BWSEvents[E]): boolean;\r\n\teventNames(): Array<keyof BWSEvents>;\r\n\tlistenerCount(event: keyof BWSEvents): number;\r\n\tlisteners(event: keyof BWSEvents): Array<(...args: Array<any>) => any>;\r\n\toff<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\ton<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\tonce<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\tprependListener<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\tprependOnceListener<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n\trawListeners(event: keyof BWSEvents): Array<(...args: Array<any>) => any>;\r\n\tremoveAllListeners(event?: keyof BWSEvents): this;\r\n\tremoveListener<E extends keyof BWSEvents>(event: E, listener: (...args: BWSEvents[E]) => any): this;\r\n}\r\n\r\n/**\r\n * Helper Class for simplifying the websocket connection to Discord.\r\n */\r\nclass BetterWs extends EventEmitter {\r\n\tpublic encoding: \"etf\" | \"json\";\r\n\tpublic compress: boolean;\r\n\tpublic address: string;\r\n\tpublic options: import(\"../Types\").IClientWSOptions;\r\n\tpublic wsBucket = new RatelimitBucket(120, 60000);\r\n\tpublic presenceBucket = new RatelimitBucket(5, 60000);\r\n\r\n\tprivate _socket: import(\"net\").Socket | null;\r\n\tprivate _internal: { closePromise: Promise<void> | null; zlib: import(\"zlib\").Inflate | null; };\r\n\tprivate _connecting = false;\r\n\r\n\tpublic constructor(address: string, options: import(\"../Types\").IClientWSOptions) {\r\n\t\tsuper();\r\n\r\n\t\tthis.encoding = options.encoding === \"etf\" ? \"etf\" : \"json\";\r\n\t\tthis.compress = options.compress || false;\r\n\t\tthis.address = address;\r\n\t\tthis.options = options;\r\n\r\n\t\tthis._socket = null;\r\n\t\tthis._internal = {\r\n\t\t\tclosePromise: null,\r\n\t\t\tzlib: null,\r\n\t\t};\r\n\t}\r\n\r\n\tpublic get status() {\r\n\t\tconst internal = this._internal;\r\n\t\tif (this._connecting) return 2;\r\n\t\tif (internal.closePromise) return 3; // closing\r\n\t\tif (!this._socket) return 4; // closed\r\n\t\treturn 1; // connected\r\n\t}\r\n\r\n\tpublic connect(): Promise<void> {\r\n\t\tif (this._socket) return Promise.resolve(void 0);\r\n\t\tconst key = randomBytes(16).toString(\"base64\");\r\n\t\tconst url = new URL(this.address);\r\n\t\tconst useHTTPS = (url.protocol === \"https:\" || url.protocol === \"wss:\") || url.port === \"443\";\r\n\t\tconst port = url.port || (useHTTPS ? \"443\" : \"80\");\r\n\t\tconst req = (useHTTPS ? https : http).request({\r\n\t\t\thostname: url.hostname,\r\n\t\t\tpath: `${url.pathname}${url.search}`,\r\n\t\t\tport: port,\r\n\t\t\theaders: {\r\n\t\t\t\t\"Connection\": \"Upgrade\",\r\n\t\t\t\t\"Upgrade\": \"websocket\",\r\n\t\t\t\t\"Sec-WebSocket-Key\": key,\r\n\t\t\t\t\"Sec-WebSocket-Version\": \"13\",\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._connecting = true;\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\treq.on(\"upgrade\", (res, socket) => {\r\n\t\t\t\tconst hash = createHash(\"sha1\").update(key + \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\").digest(\"base64\");\r\n\t\t\t\tconst accept = res.headers[\"sec-websocket-accept\"];\r\n\t\t\t\tif (hash !== accept) {\r\n\t\t\t\t\tsocket.end(() => {\r\n\t\t\t\t\t\tthis.emit(\"debug\", \"Failed websocket-key validation\");\r\n\t\t\t\t\t\tthis._connecting = false;\r\n\t\t\t\t\t\treject(new Error(`Invalid Sec-Websocket-Accept | expected: ${hash} | received: ${accept}`));\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tsocket.on(\"error\", this._onError.bind(this));\r\n\t\t\t\tsocket.on(\"close\", this._onClose.bind(this));\r\n\t\t\t\tsocket.on(\"readable\", this._onReadable.bind(this));\r\n\t\t\t\tthis._socket = socket;\r\n\t\t\t\tthis._connecting = false;\r\n\t\t\t\tif (this.compress) {\r\n\t\t\t\t\tconst z = createInflate();\r\n\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\tz._c = z.close; z._h = z._handle; z._hc = z._handle.close; z._v = () => void 0;\r\n\t\t\t\t\tthis._internal.zlib = z;\r\n\t\t\t\t}\r\n\t\t\t\tthis.emit(\"ws_open\");\r\n\t\t\t\tresolve(void 0);\r\n\t\t\t});\r\n\t\t\treq.on(\"error\", e => {\r\n\t\t\t\tthis._connecting = false;\r\n\t\t\t\treject(e);\r\n\t\t\t});\r\n\t\t\treq.end();\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async close(code: number, reason?: string): Promise<void> {\r\n\t\tconst internal = this._internal;\r\n\t\tif (internal.closePromise) return internal.closePromise;\r\n\t\tif (!this._socket) return Promise.resolve(void 0);\r\n\t\tlet resolver: ((value: unknown) => void) | undefined;\r\n\t\tconst promise = new Promise(resolve => {\r\n\t\t\tresolver = resolve;\r\n\t\t\tconst from = Buffer.from([code >> 8, code & 255]);\r\n\t\t\tthis._write(reason ? Buffer.concat([from, Buffer.from(reason)]) : from, 8);\r\n\t\t}).then(() => {\r\n\t\t\tinternal.closePromise = null;\r\n\t\t});\r\n\t\t// @ts-ignore\r\n\t\tpromise.resolve = resolver;\r\n\t\tinternal.closePromise = promise;\r\n\t\treturn promise;\r\n\t}\r\n\r\n\tpublic sendMessage(data: APITypes.GatewaySendPayload): Promise<void> {\r\n\t\tif (!isValidRequest(data)) return Promise.reject(new Error(\"Invalid request\"));\r\n\r\n\t\treturn new Promise(res => {\r\n\t\t\tconst presence = data.op === GATEWAY_OP_CODES.PRESENCE_UPDATE;\r\n\t\t\tconst sendMsg = () => {\r\n\t\t\t\tthis.wsBucket.queue(() => {\r\n\t\t\t\t\tthis.emit(\"ws_send\", data);\r\n\t\t\t\t\tif (this.encoding === \"json\") this._write(Buffer.from(JSON.stringify(data)), 1);\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tconst etf = writeETF(data);\r\n\t\t\t\t\t\tthis._write(etf, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tres(void 0);\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t\tif (presence) this.presenceBucket.queue(sendMsg);\r\n\t\t\telse sendMsg();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _write(packet: Buffer, opcode: number) {\r\n\t\tconst socket = this._socket;\r\n\t\tif (!socket || !socket.writable) return;\r\n\t\tconst length = packet.length;\r\n\t\tlet frame: Buffer | undefined;\r\n\t\tif (length < 126) {\r\n\t\t\tframe = Buffer.allocUnsafe(6 + length);\r\n\t\t\tframe[1] = 128 + length;\r\n\t\t} else if (length < (1 << 16)) {\r\n\t\t\tframe = Buffer.allocUnsafe(8 + length);\r\n\t\t\tframe[1] = 254;\r\n\t\t\tframe[2] = length >> 8;\r\n\t\t\tframe[3] = length & 255;\r\n\t\t} else {\r\n\t\t\tframe = Buffer.allocUnsafe(14 + length);\r\n\t\t\tframe[1] = 255;\r\n\t\t\tframe.writeBigUInt64BE(BigInt(length), 2);\r\n\t\t}\r\n\t\tframe[0] = 128 + opcode;\r\n\t\tframe.writeUInt32BE(0, frame.length - length - 4);\r\n\t\tframe.set(packet, frame.length - length);\r\n\t\tsocket.write(frame);\r\n\t}\r\n\r\n\tprivate _onError(error: Error) {\r\n\t\tif (!this._socket) return;\r\n\t\tthis.emit(\"debug\", util.inspect(error, true, 1, false));\r\n\t\tthis._write(Buffer.allocUnsafe(0), 8);\r\n\t}\r\n\r\n\tprivate _onClose() {\r\n\t\tconst socket = this._socket;\r\n\t\tconst internal = this._internal;\r\n\t\tif (!socket) return;\r\n\t\tsocket.removeListener(\"data\", this._onReadable);\r\n\t\tsocket.removeListener(\"error\", this._onError);\r\n\t\tsocket.removeListener(\"close\", this._onClose);\r\n\t\tthis.wsBucket.dropQueue();\r\n\t\tthis.presenceBucket.dropQueue();\r\n\t\tthis._socket = null;\r\n\t\tif (internal.zlib) {\r\n\t\t\tinternal.zlib.close();\r\n\t\t\tinternal.zlib = null;\r\n\t\t}\r\n\t\t// @ts-ignore\r\n\t\tif (internal.closePromise) internal.closePromise.resolve(void 0);\r\n\t}\r\n\r\n\tprivate _onReadable() {\r\n\t\tconst socket = this._socket;\r\n\t\twhile((socket?.readableLength || 0) > 1) {\r\n\t\t\tlet length = readRange(socket!, 1, 1) & 127;\r\n\t\t\tlet bytes = 0;\r\n\t\t\tif (length > 125) {\r\n\t\t\t\tbytes = length === 126 ? 2 : 8;\r\n\t\t\t\tif (socket!.readableLength < 2 + bytes) return;\r\n\t\t\t\tlength = readRange(socket!, 2, bytes);\r\n\t\t\t}\r\n\t\t\tconst frame = socket!.read(2 + bytes + length) as Buffer;\r\n\t\t\tif (!frame) return;\r\n\t\t\tconst fin = frame[0] >> 7;\r\n\t\t\tconst opcode = frame[0] & 15;\r\n\t\t\tif (fin !== 1 || opcode === 0) this.emit(\"debug\", \"discord actually does send messages with fin=0. if you see this error let me know\");\r\n\t\t\tconst payload = frame.subarray(2 + bytes);\r\n\t\t\tthis._processFrame(opcode, payload);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _processFrame(opcode: number, message: Buffer) {\r\n\t\tconst internal = this._internal;\r\n\t\tswitch (opcode) {\r\n\t\tcase 1: {\r\n\t\t\tconst packet = JSON.parse(message.toString());\r\n\t\t\tthis.emit(\"ws_receive\", packet);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase 2: {\r\n\t\t\tlet packet;\r\n\t\t\tif (this.compress) {\r\n\t\t\t\tconst z = internal.zlib;\r\n\t\t\t\tlet error = null;\r\n\t\t\t\tlet data = null;\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz.close = z._handle.close = z._v;\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\tdata = z._processChunk(message, constants.Z_SYNC_FLUSH);\r\n\t\t\t\t} catch(e) {\r\n\t\t\t\t\terror = e;\r\n\t\t\t\t}\r\n\t\t\t\tconst l = message.length;\r\n\t\t\t\tif (message[l - 4] !== 0 || message[l - 3] !== 0 || message[l - 2] !== 255 || message[l - 1] !== 255) this.emit(\"debug\", \"discord actually does send fragmented zlib messages. If you see this error let me know\");\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz.close = z._c;\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz._handle = z._h;\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz._handle.close = z._hc;\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz._events.error = void 0;\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tz._eventCount--;\r\n\t\t\t\tz!.removeAllListeners(\"error\");\r\n\t\t\t\tif (error) {\r\n\t\t\t\t\tthis.emit(\"debug\", \"Zlib error processing chunk\");\r\n\t\t\t\t\tthis._write(Buffer.allocUnsafe(0), 8);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (!data) {\r\n\t\t\t\t\tthis.emit(\"debug\", \"Data from zlib processing was null. If you see this error let me know\"); // This should never run, but TS is lame\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tpacket = this.encoding === \"json\" ? JSON.parse(String(data)) : readETF(data, 1);\r\n\t\t\t} else if (this.encoding === \"json\") {\r\n\t\t\t\tconst data = inflateSync(message);\r\n\t\t\t\tpacket = JSON.parse(data.toString());\r\n\t\t\t} else packet = readETF(message, 1);\r\n\t\t\tthis.emit(\"ws_receive\", packet);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase 8: {\r\n\t\t\tconst code = message.length > 1 ? (message[0] << 8) + message[1] : 0;\r\n\t\t\tconst reason = message.length > 2 ? message.subarray(2).toString() : \"\";\r\n\t\t\tthis.emit(\"ws_close\", code, reason);\r\n\t\t\tthis._write(Buffer.from([code >> 8, code & 255]), 8);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase 9: {\r\n\t\t\tthis._write(message, 10);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction isValidRequest(value: APITypes.GatewaySendPayload) {\r\n\treturn value && typeof value === \"object\" && Number.isInteger(value.op) && typeof value.d !== \"undefined\";\r\n}\r\n\r\nfunction readRange(socket: import(\"net\").Socket, index: number, bytes: number) {\r\n\t// @ts-ignore\r\n\tlet head = socket._readableState.buffer.head;\r\n\tlet cursor = 0;\r\n\tlet read = 0;\r\n\tlet num = 0;\r\n\tdo {\r\n\t\tfor (const element of head.data) {\r\n\t\t\tif (++cursor > index) {\r\n\t\t\t\tnum *= 256;\r\n\t\t\t\tnum += element;\r\n\t\t\t\tif (++read === bytes) return num;\r\n\t\t\t}\r\n\t\t}\r\n\t} while((head = head.next));\r\n\tthrow new Error(\"readRange failed?\");\r\n}\r\n\r\nfunction readETF(data: Buffer, start: number) {\r\n\tlet view: DataView | undefined;\r\n\tlet x = start;\r\n\tconst loop = () => {\r\n\t\tconst type = data[x++];\r\n\t\tswitch(type) {\r\n\t\tcase 97: {\r\n\t\t\treturn data[x++];\r\n\t\t}\r\n\t\tcase 98: {\r\n\t\t\tconst int = data.readInt32BE(x);\r\n\t\t\tx += 4;\r\n\t\t\treturn int;\r\n\t\t}\r\n\t\tcase 100: {\r\n\t\t\tconst length = data.readUInt16BE(x);\r\n\t\t\tlet atom = \"\";\r\n\t\t\tif (length > 30) {\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tatom = data.latin1Slice(x += 2, x + length);\r\n\t\t\t} else {\r\n\t\t\t\tfor (let i = x += 2; i < x + length; i++) {\r\n\t\t\t\t\tatom += String.fromCharCode(data[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tx += length;\r\n\t\t\tif (!atom) return undefined;\r\n\t\t\tif (atom === \"nil\" || atom === \"null\") return null;\r\n\t\t\tif (atom === \"true\") return true;\r\n\t\t\tif (atom === \"false\") return false;\r\n\t\t\treturn atom;\r\n\t\t}\r\n\t\tcase 108: case 106: {\r\n\t\t\tconst array = [] as Array<any>;\r\n\t\t\tif (type === 108) {\r\n\t\t\t\tconst length = data.readUInt32BE(x);\r\n\t\t\t\tx += 4;\r\n\t\t\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\t\t\tarray.push(loop());\r\n\t\t\t\t}\r\n\t\t\t\tx++;\r\n\t\t\t}\r\n\t\t\treturn array;\r\n\t\t}\r\n\t\tcase 107: {\r\n\t\t\tconst array = [] as Array<number>;\r\n\t\t\tconst length = data.readUInt16BE(x);\r\n\t\t\tx += 2;\r\n\t\t\tfor (let i = 0; i < length; i++) {\r\n\t\t\t\tarray.push(data[x++]);\r\n\t\t\t}\r\n\t\t\treturn array;\r\n\t\t}\r\n\t\tcase 109: {\r\n\t\t\tconst length = data.readUInt32BE(x);\r\n\t\t\tlet str = \"\";\r\n\t\t\tif (length > 30) {\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tstr = data.utf8Slice(x += 4, x + length);\r\n\t\t\t} else {\r\n\t\t\t\tlet i = x += 4;\r\n\t\t\t\tconst l = x + length;\r\n\t\t\t\twhile(i < l) {\r\n\t\t\t\t\tconst byte = data[i++];\r\n\t\t\t\t\tif (byte < 128) str += String.fromCharCode(byte);\r\n\t\t\t\t\telse if (byte < 224) str += String.fromCharCode(((byte & 31) << 6) + (data[i++] & 63));\r\n\t\t\t\t\telse if (byte < 240) str += String.fromCharCode(((byte & 15) << 12) + ((data[i++] & 63) << 6) + (data[i++] & 63));\r\n\t\t\t\t\telse str += String.fromCodePoint(((byte & 7) << 18) + ((data[i++] & 63) << 12) + ((data[i++] & 63) << 6) + (data[i++] & 63));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tx += length;\r\n\t\t\treturn str;\r\n\t\t}\r\n\t\tcase 110: {\r\n\t\t\t// @ts-ignore\r\n\t\t\tif (!view) view = new DataView(data.buffer, data.offset, data.byteLength);\r\n\t\t\tconst length = data[x++];\r\n\t\t\tconst sign = data[x++];\r\n\t\t\tlet left = length;\r\n\t\t\tlet num = BigInt(0);\r\n\t\t\twhile(left > 0) {\r\n\t\t\t\tif (left >= 8) {\r\n\t\t\t\t\tnum <<= BigInt(64);\r\n\t\t\t\t\tnum += view.getBigUint64(x + (left -= 8), true);\r\n\t\t\t\t} else if (left >= 4) {\r\n\t\t\t\t\tnum <<= BigInt(32);\r\n\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\tnum += BigInt(view.getUint32(x + (left -= 4)), true);\r\n\t\t\t\t} else if (left >= 2) {\r\n\t\t\t\t\tnum <<= BigInt(16);\r\n\t\t\t\t\t// @ts-ignore\r\n\t\t\t\t\tnum += BigInt(view.getUint16(x + (left -= 2)), true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnum <<= BigInt(8);\r\n\t\t\t\t\tnum += BigInt(data[x]);\r\n\t\t\t\t\tleft--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tx += length;\r\n\t\t\treturn (sign ? -num : num).toString();\r\n\t\t}\r\n\t\tcase 116: {\r\n\t\t\tconst obj = {};\r\n\t\t\tconst length = data.readUInt32BE(x);\r\n\t\t\tx += 4;\r\n\t\t\tfor(let i = 0; i < length; i++) {\r\n\t\t\t\tconst key = loop();\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tobj[key] = loop();\r\n\t\t\t}\r\n\t\t\treturn obj;\r\n\t\t}\r\n\t\t}\r\n\t\tthrow new Error(`Missing etf type: ${type}`);\r\n\t};\r\n\treturn loop();\r\n}\r\n\r\nfunction writeETF(data: any) {\r\n\tconst b = Buffer.allocUnsafe(1 << 12);\r\n\tb[0] = 131;\r\n\tlet i = 1;\r\n\tconst loop = (obj: any) => {\r\n\t\tconst type = typeof obj;\r\n\t\tswitch(type) {\r\n\t\tcase \"boolean\": {\r\n\t\t\tb[i++] = 100;\r\n\t\t\tif (obj) {\r\n\t\t\t\tb.writeUInt16BE(4, i);\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tb.latin1Write(\"true\", i += 2);\r\n\t\t\t\ti += 4;\r\n\t\t\t} else {\r\n\t\t\t\tb.writeUInt16BE(5, i);\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tb.latin1Write(\"false\", i += 2);\r\n\t\t\t\ti += 5;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"string\": {\r\n\t\t\tconst length = Buffer.byteLength(obj);\r\n\t\t\tb[i++] = 109;\r\n\t\t\tb.writeUInt32BE(length, i);\r\n\t\t\t// @ts-ignore\r\n\t\t\tb.utf8Write(obj, i += 4);\r\n\t\t\ti += length;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"number\": {\r\n\t\t\tif (Number.isInteger(obj)) {\r\n\t\t\t\tconst abs = Math.abs(obj);\r\n\t\t\t\tif (abs < 2147483648) {\r\n\t\t\t\t\tb[i++] = 98;\r\n\t\t\t\t\tb.writeInt32BE(obj, i);\r\n\t\t\t\t\ti += 4;\r\n\t\t\t\t} else if (abs < Number.MAX_SAFE_INTEGER) {\r\n\t\t\t\t\tb[i++] = 110;\r\n\t\t\t\t\tb[i++] = 8;\r\n\t\t\t\t\tb[i++] = Number(obj < 0);\r\n\t\t\t\t\tb.writeBigUInt64LE(BigInt(abs), i);\r\n\t\t\t\t\ti += 8;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tb[i++] = 70;\r\n\t\t\t\t\tb.writeDoubleBE(obj, i);\r\n\t\t\t\t\ti += 8;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tb[i++] = 70;\r\n\t\t\t\tb.writeDoubleBE(obj, i);\r\n\t\t\t\ti += 8;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"bigint\": {\r\n\t\t\tb[i++] = 110;\r\n\t\t\tb[i++] = 8;\r\n\t\t\tb[i++] = Number(obj < 0);\r\n\t\t\tb.writeBigUInt64LE(obj, i);\r\n\t\t\ti += 8;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"object\": {\r\n\t\t\tif (obj === null) {\r\n\t\t\t\tb[i++] = 100;\r\n\t\t\t\tb.writeUInt16BE(3, i);\r\n\t\t\t\t// @ts-ignore\r\n\t\t\t\tb.latin1Write(\"nil\", i += 2);\r\n\t\t\t\ti += 3;\r\n\t\t\t} else if (Array.isArray(obj)) {\r\n\t\t\t\tif (obj.length) {\r\n\t\t\t\t\tb[i++] = 108;\r\n\t\t\t\t\tb.writeUInt32BE(obj.length, i);\r\n\t\t\t\t\ti += 4;\r\n\t\t\t\t\tfor (const item of obj) {\r\n\t\t\t\t\t\tloop(item);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tb[i++] = 106;\r\n\t\t\t} else {\r\n\t\t\t\tconst entries = Object.entries(obj).filter(x => typeof x[1] !== \"undefined\");\r\n\t\t\t\tb[i++] = 116;\r\n\t\t\t\tb.writeUInt32BE(entries.length, i);\r\n\t\t\t\ti += 4;\r\n\t\t\t\tfor(const [key, value] of entries) {\r\n\t\t\t\t\tloop(key);\r\n\t\t\t\t\tloop(value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\t}\r\n\t};\r\n\tloop(data);\r\n\treturn Buffer.from(b.subarray(0, i));\r\n}\r\n\r\n\r\nexport = BetterWs;\r\n","\"use strict\";\r\n\r\nexport type IntentFlags = typeof flags;\r\nexport type IntentResolvable = number | Array<number> | keyof IntentFlags | Array<keyof IntentFlags>;\r\n\r\nexport const flags = {\r\n\tGUILDS: 1 << 0,\r\n\tGUILD_MEMBERS: 1 << 1,\r\n\tGUILD_MODERATION: 1 << 2,\r\n\tGUILD_EMOJIS_AND_STICKERS: 1 << 3,\r\n\tGUILD_INTEGRATIONS: 1 << 4,\r\n\tGUILD_WEBHOOKS: 1 << 5,\r\n\tGUILD_INVITES: 1 << 6,\r\n\tGUILD_VOICE_STATES: 1 << 7,\r\n\tGUILD_PRESENCES: 1 << 8,\r\n\tGUILD_MESSAGES: 1 << 9,\r\n\tGUILD_MESSAGE_REACTIONS: 1 << 10,\r\n\tGUILD_MESSAGE_TYPING: 1 << 11,\r\n\tDIRECT_MESSAGES: 1 << 12,\r\n\tDIRECT_MESSAGE_REACTIONS: 1 << 13,\r\n\tDIRECT_MESSAGE_TYPING: 1 << 14,\r\n\tMESSAGE_CONTENT: 1 << 15,\r\n\tGUILD_SCHEDULED_EVENTS: 1 << 16,\r\n\tAUTO_MODERATION_CONFIGURATION: 1 << 20,\r\n\tAUTO_MODERATION_EXECUTION: 1 << 21\r\n};\r\n\r\nexport const privileged = flags.GUILD_MEMBERS | flags.GUILD_PRESENCES | flags.MESSAGE_CONTENT;\r\n\r\nexport const all = Object.values(flags).reduce((acc, p) => acc | p, 0);\r\n\r\nexport const non_privileged = all & ~privileged;\r\n\r\nexport function resolve(bit: IntentResolvable = 0): number {\r\n\tif (typeof bit === \"number\" && bit >= 0) return bit;\r\n\tif (typeof bit === \"string\" && flags[bit]) return flags[bit] | 0;\r\n\tif (Array.isArray(bit)) return bit.map((p: IntentResolvable) => resolve(p)).reduce((prev, p) => prev | p, 0);\r\n\tthrow new RangeError(\"BITFIELD_INVALID\");\r\n}\r\n\r\nexport default { flags, privileged, all, non_privileged, resolve };\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=common.js.map",null,null,null,null,null,null,null,null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=attachment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=base.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=boolean.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=channel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=integer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=mentionable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=number.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=role.js.map",null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=string.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=subcommand.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=subcommandGroup.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=user.js.map",null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=contextMenu.js.map",null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=autocomplete.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=base.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=messageComponents.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=modalSubmit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ping.js.map",null,null,null,null,null,null,null,null,null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=application.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=auditLog.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=autoModeration.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=channel.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=emoji.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=gateway.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=guild.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=guildScheduledEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=interactions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=invite.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=oauth2.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=stageInstance.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=sticker.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=template.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=user.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=voice.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=webhook.js.map",null,null,null,null,null,"\"use strict\";\r\n\r\nimport { EventEmitter } from \"events\";\r\nimport BetterWs = require(\"../structures/BetterWs\");\r\nimport { GATEWAY_OP_CODES as OP, GATEWAY_VERSION } from \"../Constants\";\r\nimport Intents = require(\"../Intents\");\r\n\r\nimport APITypes = require(\"discord-api-types/v10\")\r\n\r\ninterface ConnectorEvents {\r\n\tqueueIdentify: [number];\r\n\tready: [boolean];\r\n\tdisconnect: [number, string, boolean];\r\n\tstateChange: [\"connecting\" | \"identifying\" | \"resuming\" | \"ready\" | \"disconnected\"]\r\n}\r\n\r\ninterface DiscordConnector {\r\n\taddListener<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\temit<E extends keyof ConnectorEvents>(event: E, ...args: ConnectorEvents[E]): boolean;\r\n\teventNames(): Array<keyof ConnectorEvents>;\r\n\tlistenerCount(event: keyof ConnectorEvents): number;\r\n\tlisteners(event: keyof ConnectorEvents): Array<(...args: Array<any>) => any>;\r\n\toff<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\ton<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\tonce<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\tprependListener<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\tprependOnceListener<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n\trawListeners(event: keyof ConnectorEvents): Array<(...args: Array<any>) => any>;\r\n\tremoveAllListeners(event?: keyof ConnectorEvents): this;\r\n\tremoveListener<E extends keyof ConnectorEvents>(event: E, listener: (...args: ConnectorEvents[E]) => any): this;\r\n}\r\n\r\nconst recoverableErrorsRegex = /EAI_AGAIN/;\r\n\r\n/**\r\n * Class used for acting based on received events.\r\n *\r\n * This class is automatically instantiated by the library and is documented for reference.\r\n */\r\nclass DiscordConnector extends EventEmitter {\r\n\tpublic id: number;\r\n\tpublic client: EventEmitter;\r\n\tpublic options: Omit<import(\"../Types\").IClientOptions, \"snowtransferInstance\"> & { token: string; endpoint?: string; };\r\n\tpublic reconnect: boolean;\r\n\tpublic betterWs: BetterWs;\r\n\tpublic heartbeatTimeout: NodeJS.Timeout | null = null;\r\n\tpublic heartbeatInterval = 0;\r\n\tpublic _trace: string | null = null;\r\n\tpublic seq = 0;\r\n\tpublic status: \"connecting\" | \"identifying\" | \"resuming\" | \"ready\" | \"disconnected\" = \"disconnected\";\r\n\tpublic sessionId: string | null = null;\r\n\tpublic lastACKAt = 0;\r\n\tpublic lastHeartbeatSend = 0;\r\n\tpublic latency = 0;\r\n\tprivate _closing = false;\r\n\tpublic identifyAddress: string;\r\n\tpublic resumeAddress: string | null = null;\r\n\tpublic reconnecting = false;\r\n\r\n\tpublic static readonly default = DiscordConnector;\r\n\r\n\t/**\r\n\t * Create a new Discord Connector.\r\n\t * @param id id of the shard that created this class.\r\n\t * @param client Main client instance.\r\n\t */\r\n\tpublic constructor(id: number, client: EventEmitter & { options: Omit<import(\"../Types\").IClientOptions, \"snowtransferInstance\"> & { token: string; endpoint?: string; } }) {\r\n\t\tsuper();\r\n\r\n\t\tthis.id = id;\r\n\t\tthis.client = client;\r\n\t\tthis.options = client.options;\r\n\t\tthis.reconnect = this.options.reconnect || true;\r\n\t\tthis.identifyAddress = this.options.endpoint!;\r\n\r\n\t\tthis.betterWs = new BetterWs(this.identifyAddress, this.options.ws!);\r\n\r\n\t\tthis.betterWs.on(\"ws_open\", () => {\r\n\t\t\tthis.status = \"connecting\";\r\n\t\t\tthis.emit(\"stateChange\", \"connecting\");\r\n\t\t\tthis.reconnecting = false;\r\n\t\t});\r\n\t\tthis.betterWs.on(\"ws_receive\", msg => this.messageAction(msg));\r\n\t\tthis.betterWs.on<\"ws_close\">(\"ws_close\", (code, reason) => this.handleWsClose(code, reason));\r\n\t\tthis.betterWs.on(\"debug\", event => this.client.emit(\"error\", event));\r\n\t\tthis.betterWs.on(\"ws_send\", data => this.client.emit(\"rawSend\", data));\r\n\t}\r\n\r\n\t/**\r\n\t * Connect to Discord.\r\n\t */\r\n\tpublic async connect(): Promise<void> {\r\n\t\tthis._closing = false;\r\n\t\tthis.client.emit(\"debug\", `Shard ${this.id} connecting to gateway`);\r\n\t\t// The address should already be updated if resuming/identifying\r\n\t\treturn this.betterWs.connect()\r\n\t\t\t.catch(error => {\r\n\t\t\t\tconst e = String(error);\r\n\t\t\t\tif (recoverableErrorsRegex.test(e)) setTimeout(() => this.connect(), 5000);\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Close the websocket connection and disconnect.\r\n\t */\r\n\tpublic async disconnect(): Promise<void> {\r\n\t\tthis._closing = true;\r\n\t\treturn this.betterWs.close(1000, \"Disconnected by User\");\r\n\t}\r\n\r\n\t/**\r\n\t * Called with a parsed Websocket message to execute further actions.\r\n\t * @param message Message that was received.\r\n\t */\r\n\tprivate async messageAction(message: APITypes.GatewayReceivePayload): Promise<void> {\r\n\t\tthis.client.emit(\"rawReceive\", message);\r\n\t\tconst withShardID: import(\"../Types\").IGatewayMessage = Object.assign(message, { shard_id: this.id });\r\n\t\tthis.client.emit(\"event\", withShardID);\r\n\r\n\t\tswitch (withShardID.op) {\r\n\t\tcase OP.DISPATCH:\r\n\t\t\tthis.handleDispatch(withShardID);\r\n\t\t\tbreak;\r\n\r\n\t\tcase OP.HEARTBEAT:\r\n\t\t\tthis.heartbeat();\r\n\t\t\tbreak;\r\n\r\n\t\tcase OP.RECONNECT:\r\n\t\t\tthis.client.emit(\"debug\", `Gateway asked shard ${this.id} to reconnect`);\r\n\t\t\tif (this.options.reconnect && this.betterWs.status !== 2) this._reconnect(true);\r\n\t\t\telse this.disconnect();\r\n\t\t\tbreak;\r\n\r\n\t\tcase OP.INVALID_SESSION:\r\n\t\t\tthis.client.emit(\"debug\", `Shard ${this.id}'s session was invalidated`);\r\n\t\t\tif (withShardID.d && this.sessionId) this.resume();\r\n\t\t\telse {\r\n\t\t\t\tthis.seq = 0;\r\n\t\t\t\tthis.sessionId = \"\";\r\n\t\t\t\tthis.emit(\"queueIdentify\", this.id);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\r\n\t\tcase OP.HELLO:\r\n\t\t\tthis.client.emit(\"debug\", `Shard ${this.id} received HELLO`);\r\n\t\t\tthis.heartbeat();\r\n\t\t\tthis.heartbeatInterval = withShardID.d.heartbeat_interval;\r\n\t\t\tthis.heartbeatTimeout = setInterval(() => {\r\n\t\t\t\tif (this.lastACKAt <= Date.now() - (this.heartbeatInterval + 5000)) {\r\n\t\t\t\t\tthis.client.emit(\"debug\", `Shard ${this.id} has not received a heartbeat ACK in ${this.heartbeatInterval + 5000}ms.`);\r\n\t\t\t\t\tif (this.options.reconnect && this.betterWs.status !== 2) this._reconnect(true);\r\n\t\t\t\t\telse this.disconnect();\r\n\t\t\t\t} else this.heartbeat();\r\n\t\t\t}, this.heartbeatInterval);\r\n\t\t\tthis._trace = (withShardID.d as unknown as { _trace: string })._trace;\r\n\t\t\tthis.emit(\"queueIdentify\", this.id);\r\n\t\t\tbreak;\r\n\r\n\t\tcase OP.HEARTBEAT_ACK:\r\n\t\t\tthis.lastACKAt = Date.now();\r\n\t\t\tthis.latency = this.lastACKAt - this.lastHeartbeatSend;\r\n\t\t\tbreak;\r\n\r\n\t\tdefault:\r\n\t\t\tvoid 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Reset this connector to be ready to resume or hard reconnect, then connect.\r\n\t * @param resume Whether or not the client intends to send an OP 6 RESUME later.\r\n\t */\r\n\tprivate async _reconnect(resume = false): Promise<void> {\r\n\t\tif (resume) this.reconnecting = true;\r\n\t\tif (this.betterWs.status === 2) return void this.client.emit(\"error\", `Client was attempting to ${resume ? \"resume\" : \"reconnect\"} while the WebSocket was still in the connecting state. This should never happen.`);\r\n\t\tawait this.betterWs.close(resume ? 4000 : 1012, \"reconnecting\");\r\n\t\tif (resume) {\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t} else {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t}\r\n\t\tthis.connect();\r\n\t}\r\n\r\n\t/**\r\n\t * Hard reset this connector.\r\n\t */\r\n\tprivate reset(): void {\r\n\t\tthis.sessionId = null;\r\n\t\tthis.seq = 0;\r\n\t\tthis.lastACKAt = 0;\r\n\t\tthis._trace = null;\r\n\t\tthis.clearHeartBeat();\r\n\t}\r\n\r\n\t/**\r\n\t * Clear the heart beat interval, set it to null and set the cached heartbeat_interval as 0.\r\n\t */\r\n\tprivate clearHeartBeat(): void {\r\n\t\tif (this.heartbeatTimeout) clearInterval(this.heartbeatTimeout);\r\n\t\tthis.heartbeatTimeout = null;\r\n\t\tthis.heartbeatInterval = 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 2 IDENTIFY to the gateway or an OP 6 RESUME if forceful identify is falsy.\r\n\t * @param force Whether CloudStorm should send an OP 2 IDENTIFY even if there's a session that could be resumed.\r\n\t */\r\n\tpublic async identify(force?: boolean): Promise<void> {\r\n\t\tif (this.betterWs.status !== 1) void this.client.emit(\"error\", \"Client was attempting to identify when the ws was not open\");\r\n\t\tif (this.sessionId && !force) return this.resume();\r\n\t\tthis.client.emit(\"debug\", `Shard ${this.id} is identifying`);\r\n\r\n\t\tthis.status = \"identifying\";\r\n\t\tthis.emit(\"stateChange\", \"identifying\");\r\n\r\n\t\tconst data = {\r\n\t\t\top: OP.IDENTIFY,\r\n\t\t\td: {\r\n\t\t\t\ttoken: this.options.token,\r\n\t\t\t\tproperties: {\r\n\t\t\t\t\tos: process.platform,\r\n\t\t\t\t\tbrowser: \"CloudStorm\",\r\n\t\t\t\t\tdevice: \"CloudStorm\"\r\n\t\t\t\t},\r\n\t\t\t\tlarge_threshold: this.options.largeGuildThreshold,\r\n\t\t\t\tshard: [this.id, this.options.totalShards || 1],\r\n\t\t\t\tintents: this.options.intents ? Intents.resolve(this.options.intents) : 0\r\n\t\t\t}\r\n\t\t} as APITypes.GatewayIdentify;\r\n\r\n\t\tif (this.options.initialPresence) Object.assign(data.d, { presence: this._checkPresenceData(this.options.initialPresence) });\r\n\t\treturn this.betterWs.sendMessage(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 6 RESUME to the gateway.\r\n\t */\r\n\tpublic async resume(): Promise<void> {\r\n\t\tif (this.betterWs.status !== 1) return void this.client.emit(\"error\", \"Client was attempting to resume when the ws was not open\");\r\n\t\tthis.client.emit(\"debug\", `Shard ${this.id} is resuming`);\r\n\t\tthis.status = \"resuming\";\r\n\t\tthis.emit(\"stateChange\", \"resuming\");\r\n\t\treturn this.betterWs.sendMessage({\r\n\t\t\top: OP.RESUME,\r\n\t\t\td: { seq: this.seq, token: this.options.token, session_id: this.sessionId! }\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 1 HEARTBEAT to the gateway.\r\n\t */\r\n\tprivate heartbeat(): void {\r\n\t\tif (this.betterWs.status !== 1) return;\r\n\t\tthis.betterWs.sendMessage({ op: OP.HEARTBEAT, d: this.seq });\r\n\t\tthis.lastHeartbeatSend = Date.now();\r\n\t}\r\n\r\n\t/**\r\n\t * Handle dispatch events.\r\n\t * @param message Message received from the websocket.\r\n\t */\r\n\tprivate handleDispatch(message: import(\"../Types\").IGatewayDispatch): void {\r\n\t\tthis.client.emit(\"dispatch\", message);\r\n\r\n\t\tif (message.s) { // sequence is from dispatch\r\n\t\t\tif (message.s > this.seq + 1) {\r\n\t\t\t\tthis.client.emit(\"debug\", `Shard ${this.id} invalid sequence: { current: ${this.seq} message: ${message.s} }`);\r\n\t\t\t\tthis.seq = message.s;\r\n\t\t\t\tthis.resume();\r\n\t\t\t}\r\n\t\t\tthis.seq = message.s;\r\n\t\t}\r\n\t\tswitch (message.t) {\r\n\t\tcase \"READY\":\r\n\t\tcase \"RESUMED\":\r\n\t\t\tif (message.t === \"READY\") {\r\n\t\t\t\tif (message.d.resume_gateway_url) this.resumeAddress = `${message.d.resume_gateway_url}?v=${GATEWAY_VERSION}&encoding=${this.options.ws?.encoding === \"etf\" ? \"etf\" : \"json\"}${this.options.ws?.compress ? \"&compress=zlib-stream\" : \"\"}`;\r\n\t\t\t\tthis.sessionId = message.d.session_id;\r\n\t\t\t}\r\n\t\t\tthis.status = \"ready\";\r\n\t\t\tthis.emit(\"stateChange\", \"ready\");\r\n\t\t\tthis._trace = (message.d as unknown as { _trace: string })._trace;\r\n\t\t\tthis.emit(\"ready\", message.t === \"RESUMED\");\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tvoid 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handle a close from the underlying websocket.\r\n\t * @param code Websocket close code.\r\n\t * @param reason Close reason if any.\r\n\t */\r\n\tprivate handleWsClose(code: number, reason: string): void {\r\n\t\tlet gracefulClose = false;\r\n\t\tthis.status = \"disconnected\";\r\n\t\tthis.emit(\"stateChange\", \"disconnected\");\r\n\r\n\t\t// Disallowed Intents.\r\n\t\tif (code === 4014) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Disallowed Intents, check your client options and application page.\");\r\n\t\t}\r\n\r\n\t\t// Invalid Intents.\r\n\t\tif (code === 4013) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Invalid Intents data, check your client options.\");\r\n\t\t}\r\n\r\n\t\t// Invalid API version.\r\n\t\tif (code === 4012) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Invalid API version.\");\r\n\t\t}\r\n\r\n\t\t// Sharding required.\r\n\t\tif (code === 4011) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Shard would be on over 2500 guilds. Add more shards.\");\r\n\t\t}\r\n\r\n\t\t// Invalid shard.\r\n\t\tif (code === 4010) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Invalid sharding data, check your client options.\");\r\n\t\t}\r\n\r\n\t\t// Session timed out.\r\n\t\t// force identify if the session is marked as invalid.\r\n\t\tif (code === 4009) {\r\n\t\t\tthis.client.emit(\"error\", \"Session timed out.\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Rate limited.\r\n\t\tif (code === 4008) {\r\n\t\t\tthis.client.emit(\"error\", \"You are being rate limited. Wait before sending more packets.\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Invalid sequence.\r\n\t\tif (code === 4007) {\r\n\t\t\tthis.client.emit(\"error\", \"Invalid sequence. Reconnecting and starting a new session.\");\r\n\t\t\tthis.reset();\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Already authenticated.\r\n\t\tif (code === 4005) {\r\n\t\t\tthis.client.emit(\"error\", \"You sent more than one OP 2 IDENTIFY payload while the websocket was open.\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Authentication failed.\r\n\t\tif (code === 4004) {\r\n\t\t\tthis.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.client.emit(\"error\", \"Tried to connect with an invalid token\");\r\n\t\t}\r\n\r\n\t\t// Not authenticated.\r\n\t\tif (code === 4003) {\r\n\t\t\tthis.client.emit(\"error\", \"You tried to send a packet before sending an OP 2 IDENTIFY or OP 6 RESUME.\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Decode error.\r\n\t\tif (code === 4002) {\r\n\t\t\tthis.client.emit(\"error\", \"You sent an invalid payload\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Invalid opcode.\r\n\t\tif (code === 4001) {\r\n\t\t\tthis.client.emit(\"error\", \"You sent an invalid opcode or invalid payload for an opcode\");\r\n\t\t\tthis.clearHeartBeat();\r\n\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t\tthis.connect();\r\n\t\t}\r\n\r\n\t\t// Generic error / safe self closing code.\r\n\t\tif (code === 4000) {\r\n\t\t\tif (this.reconnecting) gracefulClose = true;\r\n\t\t\telse {\r\n\t\t\t\tthis.client.emit(\"error\", \"Error code 4000 received. Attempting to resume\");\r\n\t\t\t\tthis.clearHeartBeat();\r\n\t\t\t\tif (this.resumeAddress) this.betterWs.address = this.resumeAddress;\r\n\t\t\t\telse this.betterWs.address = this.identifyAddress;\r\n\t\t\t\tthis.connect();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Don't try to reconnect when true\r\n\t\tif (code === 1000 && this._closing) gracefulClose = true;\r\n\t\tthis._closing = false;\r\n\r\n\t\tif (gracefulClose) this.clearHeartBeat();\r\n\t\tthis.emit(\"disconnect\", code, reason, gracefulClose);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 3 PRESENCE_UPDATE to the gateway.\r\n\t * @param data Presence data to send.\r\n\t */\r\n\tpublic async presenceUpdate(data: Partial<APITypes.GatewayPresenceUpdateData>): Promise<void> {\r\n\t\treturn this.betterWs.sendMessage({ op: OP.PRESENCE_UPDATE, d: this._checkPresenceData(data) });\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 4 VOICE_STATE_UPDATE to the gateway.\r\n\t * @param data Voice state update data to send.\r\n\t */\r\n\tpublic async voiceStateUpdate(data: APITypes.GatewayVoiceStateUpdateData & { self_deaf?: boolean; self_mute?: boolean; }): Promise<void> {\r\n\t\tif (!data) return Promise.resolve();\r\n\t\treturn this.betterWs.sendMessage({ op: OP.VOICE_STATE_UPDATE, d: this._checkVoiceStateUpdateData(data) });\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 8 REQUEST_GUILD_MEMBERS to the gateway.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic async requestGuildMembers(data: APITypes.GatewayRequestGuildMembersData & { limit?: number; }): Promise<void> {\r\n\t\treturn this.betterWs.sendMessage({ op: OP.REQUEST_GUILD_MEMBERS, d: this._checkRequestGuildMembersData(data) });\r\n\t}\r\n\r\n\t/**\r\n\t * Checks presence data and fills in missing elements.\r\n\t * @param data Data to send.\r\n\t * @returns Data after it's fixed/checked.\r\n\t */\r\n\tprivate _checkPresenceData(data: Parameters<DiscordConnector[\"presenceUpdate\"]>[\"0\"]): APITypes.GatewayPresenceUpdateData {\r\n\t\tdata.status = data.status || APITypes.PresenceUpdateStatus.Online;\r\n\t\tdata.activities = data.activities && Array.isArray(data.activities) ? data.activities : [];\r\n\r\n\t\tif (data.activities) {\r\n\t\t\tfor (const activity of data.activities) {\r\n\t\t\t\tconst index = data.activities.indexOf(activity);\r\n\t\t\t\tif (activity.type === undefined) activity.type = activity.url ? 1 : 0;\r\n\t\t\t\tif (!activity.name) data.activities.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdata.afk = data.afk || false;\r\n\t\tdata.since = data.since || Date.now();\r\n\t\treturn data as APITypes.GatewayPresenceUpdateData;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks voice state update data and fills in missing elements.\r\n\t * @param data Data to send.\r\n\t * @returns Data after it's fixed/checked.\r\n\t */\r\n\tprivate _checkVoiceStateUpdateData(data: Parameters<DiscordConnector[\"voiceStateUpdate\"]>[\"0\"]): APITypes.GatewayVoiceStateUpdateData {\r\n\t\tdata.channel_id = data.channel_id || null;\r\n\t\tdata.self_mute = data.self_mute || false;\r\n\t\tdata.self_deaf = data.self_deaf || false;\r\n\t\treturn data;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks request guild members data and fills in missing elements.\r\n\t * @param data Data to send.\r\n\t * @returns Data after it's fixed/checked.\r\n\t */\r\n\tprivate _checkRequestGuildMembersData(data: Parameters<DiscordConnector[\"requestGuildMembers\"]>[\"0\"]): APITypes.GatewayRequestGuildMembersData {\r\n\t\tconst withQuery = data as APITypes.GatewayRequestGuildMembersDataWithQuery;\r\n\t\tconst withUserIDs = data as APITypes.GatewayRequestGuildMembersDataWithUserIds;\r\n\t\tif (!withQuery.query && !withUserIDs.user_ids) withQuery.query = \"\";\r\n\t\tif (withQuery.query && withUserIDs.user_ids) delete (data as { query?: string; }).query; // the intention may be to get users by ID\r\n\t\tdata.limit = data.limit || 10;\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nexport = DiscordConnector;\r\n","\"use strict\";\r\n\r\nimport { EventEmitter } from \"events\";\r\nimport DiscordConnector = require(\"./connector/DiscordConnector\");\r\n\r\ninterface ShardEvents {\r\n\tdisconnect: [number, string, boolean];\r\n\tready: [boolean];\r\n\tqueueIdentify: [number];\r\n}\r\n\r\ninterface Shard {\r\n\taddListener<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\temit<E extends keyof ShardEvents>(event: E, ...args: ShardEvents[E]): boolean;\r\n\teventNames(): Array<keyof ShardEvents>;\r\n\tlistenerCount(event: keyof ShardEvents): number;\r\n\tlisteners(event: keyof ShardEvents): Array<(...args: Array<any>) => any>;\r\n\toff<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\ton<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\tonce<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\tprependListener<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\tprependOnceListener<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n\trawListeners(event: keyof ShardEvents): Array<(...args: Array<any>) => any>;\r\n\tremoveAllListeners(event?: keyof ShardEvents): this;\r\n\tremoveListener<E extends keyof ShardEvents>(event: E, listener: (...args: ShardEvents[E]) => any): this;\r\n}\r\n\r\n/**\r\n * Shard class, which provides a wrapper around the DiscordConnector with metadata like the id of the shard.\r\n *\r\n * This class is automatically instantiated by the library and is documented for reference.\r\n */\r\nclass Shard extends EventEmitter {\r\n\tpublic id: number;\r\n\tpublic client: EventEmitter & { options: Omit<import(\"./Types\").IClientOptions, \"snowtransferInstance\"> & { token: string; endpoint?: string; } };\r\n\tpublic ready: boolean;\r\n\tpublic connector: DiscordConnector;\r\n\r\n\t/**\r\n\t * Create a new Shard.\r\n\t * @param id id of the shard.\r\n\t * @param client Main class used for forwarding events.\r\n\t */\r\n\tpublic constructor(id: number, client: Shard[\"client\"]) {\r\n\t\tsuper();\r\n\r\n\t\tthis.id = id;\r\n\t\tthis.client = client;\r\n\t\tthis.ready = false;\r\n\t\tthis.connector = new DiscordConnector(id, client);\r\n\t\tthis.connector.on(\"disconnect\", (...args) => {\r\n\t\t\tthis.ready = false;\r\n\t\t\tthis.emit(\"disconnect\", ...args);\r\n\t\t});\r\n\t\tthis.connector.on(\"ready\", resume => this.emit(\"ready\", resume));\r\n\t\tthis.connector.on(\"queueIdentify\", () => this.emit(\"queueIdentify\", this.id));\r\n\t}\r\n\r\n\t/**\r\n\t * Time in ms it took for Discord to ackknowledge an OP 1 HEARTBEAT.\r\n\t */\r\n\tpublic get latency(): number {\r\n\t\treturn this.connector.latency;\r\n\t}\r\n\r\n\t/**\r\n\t * Create a new connection to Discord.\r\n\t */\r\n\tpublic connect(): void {\r\n\t\tthis.connector.connect();\r\n\t}\r\n\r\n\t/**\r\n\t * Close the current connection to Discord.\r\n\t */\r\n\tpublic disconnect(): Promise<void> {\r\n\t\treturn this.connector.disconnect();\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 3 PRESENCE_UPDATE to Discord.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic presenceUpdate(data: Parameters<Shard[\"connector\"][\"presenceUpdate\"]>[\"0\"]): Promise<void> {\r\n\t\treturn this.connector.presenceUpdate(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 4 VOICE_STATE_UPDATE to Discord.\r\n\t * @param data Data to send\r\n\t */\r\n\tpublic voiceStateUpdate(data: Parameters<Shard[\"connector\"][\"voiceStateUpdate\"]>[\"0\"]): Promise<void> {\r\n\t\treturn this.connector.voiceStateUpdate(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 8 REQUEST_GUILD_MEMBERS to Discord.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic requestGuildMembers(data: Parameters<Shard[\"connector\"][\"requestGuildMembers\"]>[\"0\"]): Promise<void> {\r\n\t\treturn this.connector.requestGuildMembers(data);\r\n\t}\r\n}\r\n\r\nexport = Shard;\r\n","\"use strict\";\r\n\r\nimport Shard = require(\"./Shard\");\r\nimport RatelimitBucket = require(\"./structures/RatelimitBucket\");\r\n\r\n/**\r\n * Class used for managing shards for the user.\r\n *\r\n * This class is automatically instantiated by the library and is documented for reference.\r\n */\r\nclass ShardManager {\r\n\tpublic client: import(\"events\").EventEmitter & { options: Omit<import(\"./Types\").IClientOptions, \"snowtransferInstance\"> & { token: string; endpoint?: string; } };\r\n\tpublic options: ShardManager[\"client\"][\"options\"];\r\n\tpublic shards: { [id: number]: Shard };\r\n\tpublic identifyBucket: RatelimitBucket;\r\n\tpublic concurrencyBucket: RatelimitBucket | null = null;\r\n\r\n\t/**\r\n\t * Create a new ShardManager.\r\n\t */\r\n\tpublic constructor(client: ShardManager[\"client\"]) {\r\n\t\tthis.client = client;\r\n\t\tthis.options = client.options;\r\n\t\tthis.shards = {};\r\n\t\tthis.identifyBucket = new RatelimitBucket(1000, 1000 * 60 * 60 * 24, 1000 * 60 * 60 * 24);\r\n\t}\r\n\r\n\t/**\r\n\t * Create shard instances and add them to the connection queue.\r\n\t */\r\n\tpublic spawn(): void {\r\n\t\tif (!this.concurrencyBucket) throw new Error(\"Trying to spawn shards without calling Client.connect()\");\r\n\t\tfor (const id of (this.options.shards === \"auto\" ? Array(this.options.totalShards).fill(0).map((_, index) => index) : this.options.shards || [0])) {\r\n\t\t\tthis.client.emit(\"debug\", `Spawned shard ${id}`);\r\n\t\t\tthis.shards[id] = new Shard(id, this.client);\r\n\t\t\tthis._addListener(this.shards[id]);\r\n\t\t\tthis.shards[id].connector.connect();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Disconnect all shards facilitated by this manager.\r\n\t */\r\n\tpublic disconnect(): void {\r\n\t\tfor (const shardKey in this.shards) {\r\n\t\t\tthis.shards[shardKey].disconnect();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Add event listeners to a shard to that the manager can act on received events.\r\n\t * @param shard Shard to add the event listeners to.\r\n\t */\r\n\tprivate _addListener(shard: Shard) {\r\n\t\tshard.on(\"ready\", (resume) => {\r\n\t\t\tshard.ready = true;\r\n\t\t\tthis.client.emit(\"debug\", `Shard ${shard.id} ${resume ? \"has resumed\" : \"is ready\"}`);\r\n\t\t\tthis.client.emit(\"shardReady\", { id: shard.id, ready: !resume });\r\n\t\t\tthis._checkReady();\r\n\t\t});\r\n\t\tshard.on(\"queueIdentify\", (shardId) => {\r\n\t\t\tif (!this.shards[shardId]) return this.client.emit(\"debug\", `Received a queueIdentify event for shard ${shardId} but it does not exist. Was it removed?`);\r\n\t\t\tthis.client.emit(\"debug\", `Shard ${shardId} is ready to identify`);\r\n\t\t\tif (shard.connector.reconnecting) return shard.connector.resume();\r\n\t\t\tthis.concurrencyBucket?.queue(() => {\r\n\t\t\t\tthis.identifyBucket.queue(() => this.shards[shardId].connector.identify());\r\n\t\t\t});\r\n\t\t});\r\n\t\tshard.on(\"disconnect\", (code, reason, gracefulClose) => {\r\n\t\t\tthis.client.emit(\"debug\", `Websocket of shard ${shard.id} closed with code ${code} and reason: ${reason ? reason : \"None\"}`);\r\n\t\t\tif (code === 1000 && gracefulClose) return this._checkDisconnect();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if all shards spawned by this manager are ready.\r\n\t */\r\n\tprivate _checkReady() {\r\n\t\tfor (const shardId in this.shards) {\r\n\t\t\tif (this.shards[shardId]) {\r\n\t\t\t\tif (!this.shards[shardId].ready) return;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.client.emit(\"ready\");\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if all shards spawned by this manager are disconnected.\r\n\t */\r\n\tprivate _checkDisconnect() {\r\n\t\tfor (const shardId in this.shards) {\r\n\t\t\tif (this.shards[shardId]) {\r\n\t\t\t\tif (this.shards[shardId].connector.status !== \"disconnected\") return;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.client.emit(\"disconnected\");\r\n\t}\r\n\r\n\t/**\r\n\t * Update the status of all currently connected shards which have been spawned by this manager.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic async presenceUpdate(data: Parameters<Shard[\"presenceUpdate\"]>[\"0\"]) {\r\n\t\tfor (const shardKey in this.shards) {\r\n\t\t\tif (this.shards[shardKey]) {\r\n\t\t\t\tconst shard = this.shards[shardKey];\r\n\t\t\t\tthis.shardPresenceUpdate(shard.id, data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Update the status of a single connected shard which has been spawned by this manager.\r\n\t * @param shardId id of the shard.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic shardPresenceUpdate(shardId: number, data: Parameters<Shard[\"presenceUpdate\"]>[\"0\"]): Promise<void> {\r\n\t\treturn new Promise((res, rej) => {\r\n\t\t\tconst shard = this.shards[shardId];\r\n\t\t\tif (!shard) rej(new Error(`Shard ${shardId} does not exist`));\r\n\t\t\tif (!shard.ready) shard.once(\"ready\", () => shard.presenceUpdate(data).then(result => res(result)).catch(e => rej(e)));\r\n\t\t\tshard.presenceUpdate(data).then(result => res(result)).catch(e => rej(e));\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 4 VOICE_STATE_UPDATE with a certain shard.\r\n\t * @param shardId id of the shard.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic voiceStateUpdate(shardId: number, data: Parameters<Shard[\"voiceStateUpdate\"]>[\"0\"]): Promise<void> {\r\n\t\treturn new Promise((res, rej) => {\r\n\t\t\tconst shard = this.shards[shardId];\r\n\t\t\tif (!shard) rej(new Error(`Shard ${shardId} does not exist`));\r\n\t\t\tif (!shard.ready) shard.once(\"ready\", () => shard.voiceStateUpdate(data).then(result => res(result)).catch(e => rej(e)));\r\n\t\t\tshard.voiceStateUpdate(data).then(result => res(result)).catch(e => rej(e));\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 8 REQUEST_GUILD_MEMBERS with a certain shard.\r\n\t * @param shardId id of the shard.\r\n\t * @param data Data to send.\r\n\t */\r\n\tpublic requestGuildMembers(shardId: number, data: Parameters<Shard[\"requestGuildMembers\"]>[\"0\"]): Promise<void> {\r\n\t\treturn new Promise((res, rej) => {\r\n\t\t\tconst shard = this.shards[shardId];\r\n\t\t\tif (!shard) rej(new Error(`Shard ${shardId} does not exist`));\r\n\t\t\tif (!shard.ready) shard.once(\"ready\", () => shard.requestGuildMembers(data).then(result => res(result)).catch(e => rej(e)));\r\n\t\t\tshard.requestGuildMembers(data).then(result => res(result)).catch(e => rej(e));\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport = ShardManager;\r\n","\"use strict\";\r\n\r\nconst version = require(\"../package.json\").version as string;\r\nimport { EventEmitter } from \"events\";\r\nimport Constants = require(\"./Constants\");\r\nimport { SnowTransfer } from \"snowtransfer\";\r\nimport ShardManager = require(\"./ShardManager\");\r\nimport RatelimitBucket = require(\"./structures/RatelimitBucket\");\r\nimport type APITypes = require(\"discord-api-types/v10\")\r\n\r\ninterface ClientEvents {\r\n\tdebug: [string];\r\n\trawSend: [APITypes.GatewaySendPayload];\r\n\trawReceive: [APITypes.GatewayReceivePayload];\r\n\terror: [string]; // no processing messages\r\n\r\n\tevent: [import(\"./Types\").IGatewayMessage];\r\n\tdispatch: [import(\"./Types\").IGatewayDispatch];\r\n\tshardReady: [{ id: number; ready: boolean; }];\r\n\tready: [];\r\n\tdisconnected: [];\r\n}\r\n\r\ninterface Client {\r\n\taddListener<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\temit<E extends keyof ClientEvents>(event: E, ...args: ClientEvents[E]): boolean;\r\n\teventNames(): Array<keyof ClientEvents>;\r\n\tlistenerCount(event: keyof ClientEvents): number;\r\n\tlisteners(event: keyof ClientEvents): Array<(...args: Array<any>) => any>;\r\n\toff<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\ton<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\tonce<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\tprependListener<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\tprependOnceListener<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n\trawListeners(event: keyof ClientEvents): Array<(...args: Array<any>) => any>;\r\n\tremoveAllListeners(event?: keyof ClientEvents): this;\r\n\tremoveListener<E extends keyof ClientEvents>(event: E, listener: (...args: ClientEvents[E]) => any): this;\r\n}\r\n\r\n/**\r\n * Main class used for receiving events and interacting with the Discord gateway.\r\n */\r\nclass Client extends EventEmitter {\r\n\tpublic token: string;\r\n\tpublic options: Omit<import(\"./Types\").IClientOptions, \"snowtransferInstance\"> & { token: string; endpoint?: string; };\r\n\tpublic shardManager: ShardManager;\r\n\tpublic version: string;\r\n\tprivate _restClient: SnowTransfer;\r\n\r\n\t/**\r\n\t * Create a new Client to connect to the Discord gateway.\r\n\t * @param token Token received from creating a discord bot user, which will be used to connect to the gateway.\r\n\t */\r\n\tpublic constructor(token: string, options: import(\"./Types\").IClientOptions = {}) {\r\n\t\tsuper();\r\n\t\tif (!token) throw new Error(\"Missing token!\");\r\n\t\tthis.options = {\r\n\t\t\tlargeGuildThreshold: 250,\r\n\t\t\tshards: \"auto\",\r\n\t\t\treconnect: true,\r\n\t\t\tintents: 0,\r\n\t\t\ttoken: \"\",\r\n\t\t\tws: {\r\n\t\t\t\tcompress: true,\r\n\t\t\t\tencoding: \"json\"\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._restClient = options.snowtransferInstance ? options.snowtransferInstance : new SnowTransfer(token);\r\n\t\tdelete options.snowtransferInstance;\r\n\t\tthis.token = token.startsWith(\"Bot \") ? token.substring(4) : token;\r\n\t\tObject.assign(this.options, options);\r\n\t\tthis.options.token = token;\r\n\t\tthis.shardManager = new ShardManager(this);\r\n\t\tthis.version = version;\r\n\t}\r\n\r\n\t/**\r\n\t * Create one or more connections (depending on the selected amount of shards) to the Discord gateway.\r\n\t * @returns This function returns a promise which is solely used for awaiting the getGateway() method's return value.\r\n\t */\r\n\tpublic async connect(): Promise<void> {\r\n\t\tconst initial = await this.fetchConnectInfo();\r\n\t\tif (this.options.shards === \"auto\") this.options.totalShards = initial;\r\n\t\tthis.shardManager.spawn();\r\n\t}\r\n\r\n\t/**\r\n\t * Method to grab initial connection info from Discord.\r\n\t * Should only be called automatically by the lib unless you are a large bot with a max_concurrency not equal to 1.\r\n\t * If you are a large bot, you should call this method at a rate of your own discretion to update your max_concurrency cached value to have up to date bucket info.\r\n\t * @returns The amount of shards the bot should spawn if set to auto.\r\n\t */\r\n\tpublic async fetchConnectInfo(): Promise<number> {\r\n\t\tconst gateway = await this.getGatewayBot();\r\n\t\tthis._updateEndpoint(gateway.url);\r\n\t\tconst oldQueueConcurrency = [] as Array<[() => unknown, () => unknown]>;\r\n\t\tconst oldQueueIdentify = [] as Array<[() => unknown, () => unknown]>;\r\n\t\tif (this.shardManager.concurrencyBucket && this.shardManager.concurrencyBucket.fnQueue.length) {\r\n\t\t\toldQueueConcurrency.push(...this.shardManager.concurrencyBucket.fnQueue.map(i => [i.fn, i.callback] as [() => unknown, () => unknown]));\r\n\t\t\tthis.shardManager.concurrencyBucket.dropQueue();\r\n\t\t}\r\n\t\tif (this.shardManager.identifyBucket.fnQueue.length) oldQueueIdentify.push(...this.shardManager.identifyBucket.fnQueue.map(i => [i.fn, i.callback] as [() => unknown, () => unknown]));\r\n\t\tthis.shardManager.identifyBucket.dropQueue();\r\n\t\tthis.shardManager.concurrencyBucket = new RatelimitBucket(gateway.session_start_limit.max_concurrency, 5000);\r\n\t\tthis.shardManager.identifyBucket.remaining = gateway.session_start_limit.remaining;\r\n\t\tthis.shardManager.identifyBucket.limitReset = gateway.session_start_limit.reset_after;\r\n\t\tfor (const [fn, callback] of oldQueueConcurrency) {\r\n\t\t\tthis.shardManager.concurrencyBucket.queue(fn).then(callback);\r\n\t\t}\r\n\t\tfor (const [fn, callback] of oldQueueIdentify) {\r\n\t\t\tthis.shardManager.identifyBucket.queue(fn).then(callback);\r\n\t\t}\r\n\t\treturn gateway.shards;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the gateway endpoint to connect to.\r\n\t * @returns String url with the Gateway Endpoint to connect to.\r\n\t */\r\n\tpublic async getGateway(): Promise<string> {\r\n\t\tconst gatewayData = await this._restClient.bot.getGateway();\r\n\t\treturn gatewayData.url;\r\n\t}\r\n\r\n\t/**\r\n\t * Get the GatewayData including recommended amount of shards and other helpful info.\r\n\t * @returns Object with url and shards to use to connect to discord.\r\n\t */\r\n\tpublic async getGatewayBot() {\r\n\t\treturn this._restClient.bot.getGatewayBot();\r\n\t}\r\n\r\n\t/**\r\n\t * Disconnect the bot gracefully,\r\n\t * you will receive a 'disconnected' event once the ShardManager successfully closes all shard websocket connections.\r\n\t */\r\n\tpublic disconnect(): void {\r\n\t\treturn this.shardManager.disconnect();\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 3 PRESENCE_UPDATE to Discord, which updates the status of all shards facilitated by this client's ShardManager.\r\n\t * @returns Promise that's resolved once all shards have sent the websocket payload.\r\n\t *\r\n\t * @example\r\n\t * // Connect to Discord and set status to do not disturb and activity to \"Memes are Dreams\".\r\n\t * const CloudStorm = require(\"cloudstorm\"); // CloudStorm also supports import statements.\r\n\t * const token = \"token\";\r\n\t * const client = new CloudStorm.Client(token);\r\n\t * client.connect();\r\n\t * client.once(\"ready\", () => {\r\n\t * \t// Client is connected to Discord and is ready, so we can update the status.\r\n\t * \tclient.presenceUpdate({ status: \"dnd\", activities: [{ name: \"Memes are Dreams\", type: 0 }] });\r\n\t * });\r\n\t */\r\n\tpublic async presenceUpdate(data: Parameters<Client[\"shardManager\"][\"presenceUpdate\"]>[\"0\"]): Promise<void> {\r\n\t\treturn this.shardManager.presenceUpdate(data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 3 PRESENCE_UPDATE to Discord, which updates the status of a single shard facilitated by this client's ShardManager.\r\n\t * @param shardId id of the shard that should update it's status.\r\n\t * @param data Presence data to send.\r\n\t * @returns Promise that's resolved once the shard has sent the websocket payload.\r\n\t *\r\n\t * @example\r\n\t * // Connect to Discord and set status to do not disturb and activity to \"Im shard 0\".\r\n\t * const CloudStorm = require(\"cloudstorm\"); // CloudStorm also supports import statements.\r\n\t * const token = \"token\";\r\n\t * const client = new CloudStorm.Client(token);\r\n\t * client.connect();\r\n\t * client.once(\"ready\", () => {\r\n\t * \t// Client is connected to Discord and is ready, so we can update the status of shard 0.\r\n\t * \tclient.shardPresenceUpdate(0, { status: \"dnd\", activities: [{ name: \"Im shard 0\", type: 0 }] });\r\n\t * });\r\n\t */\r\n\tpublic shardStatusUpdate(shardId: number, data: Parameters<Client[\"shardManager\"][\"shardPresenceUpdate\"]>[\"1\"]): Promise<void> {\r\n\t\treturn this.shardManager.shardPresenceUpdate(shardId, data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 4 VOICE_STATE_UPDATE to Discord. this does **not** allow you to send audio with CloudStorm itself,\r\n\t * it just provides the necessary data for another application to send audio data to Discord.\r\n\t * @param shardId id of the shard that should send the payload.\r\n\t * @param data Voice state update data to send.\r\n\t * @returns Promise that's resolved once the payload was sent to Discord.\r\n\t *\r\n\t * @example\r\n\t * // Connect to Discord and join a voice channel\r\n\t * const CloudStorm = require(\"cloudstorm\"); // CloudStorm also supports import statements.\r\n\t * const token = \"token\";\r\n\t * const client = new CloudStorm.Client(token);\r\n\t * client.connect();\r\n\t * client.once(\"ready\", () => {\r\n\t * \t// Client is connected to Discord and is ready, so we can join a voice channel.\r\n\t * \t// We will use shard 0 as the shard to send the payload.\r\n\t * \tclient.voiceStateUpdate(0, { guild_id: \"id\", channel_id: \"id\", self_mute: false, self_deaf: false });\r\n\t * });\r\n\t */\r\n\tpublic voiceStateUpdate(shardId: number, data: Parameters<Client[\"shardManager\"][\"voiceStateUpdate\"]>[\"1\"]): Promise<void> {\r\n\t\treturn this.shardManager.voiceStateUpdate(shardId, data);\r\n\t}\r\n\r\n\t/**\r\n\t * Send an OP 8 REQUEST_GUILD_MEMBERS to Discord.\r\n\t * @param shardId id of the shard that should send the payload.\r\n\t * @param data Request guild members data to send.\r\n\t * @returns Promise that's resolved once the payload was send to Discord.\r\n\t *\r\n\t * @example\r\n\t * // Connect to Discord and request guild members.\r\n\t * const CloudStorm = require(\"cloudstorm\"); // CloudStorm also supports import statements.\r\n\t * const token = \"token\";\r\n\t * const client = new CloudStorm.Client(token);\r\n\t * client.connect();\r\n\t * client.once(\"ready\", () => {\r\n\t * \t// Client is connected to Discord and is ready, so we can send the request guild members payload.\r\n\t * \t// We will use shard 0 as the shard to send the payload.\r\n\t * \tclient.requestGuildMembers(0, { guild_id: \"id\" });\r\n\t * });\r\n\t */\r\n\tpublic requestGuildMembers(shardId: number, data: Parameters<Client[\"shardManager\"][\"requestGuildMembers\"]>[\"1\"]): Promise<void> {\r\n\t\tif (!data.guild_id) throw new Error(\"You need to pass a guild_id\");\r\n\t\treturn this.shardManager.requestGuildMembers(shardId, data);\r\n\t}\r\n\r\n\t/**\r\n\t * Update the endpoint shard websockets will connect to.\r\n\t * @param gatewayUrl Base gateway wss url to update the cached endpoint to.\r\n\t */\r\n\tprivate _updateEndpoint(gatewayUrl: string): void {\r\n\t\tthis.options.endpoint = `${gatewayUrl}?v=${Constants.GATEWAY_VERSION}&encoding=${this.options.ws?.encoding === \"etf\" ? \"etf\" : \"json\"}${this.options.ws?.compress ? \"&compress=zlib-stream\" : \"\"}`;\r\n\t}\r\n}\r\n\r\nexport = Client;\r\n","import Client = require(\"./Client\");\r\nimport Constants = require(\"./Constants\");\r\nimport Intents = require(\"./Intents\");\r\n\r\nimport Shard = require(\"./Shard\");\r\nimport ShardManager = require(\"./ShardManager\");\r\n\r\nexport { Client, Constants, Intents, Shard, ShardManager };\r\nexport * from \"./Types\";\r\n"],"mappings":"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","names":["require_Constants","__commonJSMin","exports","module","Constants","require_RatelimitBucket","__commonJSMin","exports","module","RatelimitBucket","limit","limitReset","defaultReset","fn","error","res","rej","wrapFn","e","queuedFunc","require_BetterWs","__commonJSMin","exports","module","import_events","import_crypto","import_zlib","import_Constants","https","http","util","RatelimitBucket","BetterWs","address","options","internal","key","url","useHTTPS","port","req","resolve","reject","res","socket","hash","accept","z","e","code","reason","resolver","promise","from","data","isValidRequest","presence","sendMsg","etf","writeETF","packet","opcode","length","frame","error","readRange","bytes","fin","payload","message","l","readETF","value","index","head","cursor","read","num","element","start","view","x","loop","type","int","atom","i","array","str","byte","sign","left","obj","b","abs","item","entries","Intents_exports","__export","all","Intents_default","flags","non_privileged","privileged","resolve","bit","p","prev","init_Intents","__esmMin","acc","require_common","__commonJSMin","exports","__exportStar","exports","GatewayOpcodes","GatewayCloseCodes","GatewayIntentBits","GatewayDispatchEvents","exports","exports","ApplicationFlags","exports","ApplicationRoleConnectionMetadataType","AuditLogEvent","exports","AuditLogOptionsType","AutoModerationRuleTriggerType","exports","AutoModerationRuleKeywordPresetType","AutoModerationRuleEventType","AutoModerationActionType","SortOrderType","exports","ForumLayoutType","ChannelType","VideoQualityMode","MessageType","MessageActivityType","MessageFlags","OverwriteType","ThreadAutoArchiveDuration","ThreadMemberFlags","EmbedType","AllowedMentionsTypes","ComponentType","ButtonStyle","TextInputStyle","ChannelFlags","PresenceUpdateStatus","exports","ActivityPlatform","ActivityType","ActivityFlags","GuildDefaultMessageNotifications","exports","GuildExplicitContentFilter","GuildMFALevel","GuildNSFWLevel","GuildVerificationLevel","GuildPremiumTier","GuildHubType","GuildSystemChannelFlags","GuildFeature","GuildMemberFlags","IntegrationExpireBehavior","GuildWidgetStyle","MembershipScreeningFieldType","GuildScheduledEventEntityType","exports","GuildScheduledEventStatus","GuildScheduledEventPrivacyLevel","require_attachment","__commonJSMin","exports","require_base","__commonJSMin","exports","require_boolean","__commonJSMin","exports","require_channel","__commonJSMin","exports","require_integer","__commonJSMin","exports","require_mentionable","__commonJSMin","exports","require_number","__commonJSMin","exports","require_role","__commonJSMin","exports","ApplicationCommandOptionType","exports","require_string","__commonJSMin","exports","require_subcommand","__commonJSMin","exports","require_subcommandGroup","__commonJSMin","exports","require_user","__commonJSMin","exports","__exportStar","exports","require_contextMenu","__commonJSMin","exports","ApplicationCommandPermissionType","exports","guildId","__exportStar","exports","ApplicationCommandType","require_autocomplete","__commonJSMin","exports","require_base","__commonJSMin","exports","require_messageComponents","__commonJSMin","exports","require_modalSubmit","__commonJSMin","exports","require_ping","__commonJSMin","exports","InteractionType","exports","InteractionResponseType","__exportStar","exports","InviteTargetType","exports","OAuth2Scopes","exports","StageInstancePrivacyLevel","exports","StickerType","exports","StickerFormatType","TeamMemberMembershipState","exports","UserFlags","exports","UserPremiumType","ConnectionService","ConnectionVisibility","WebhookType","exports","__exportStar","exports","RESTJSONErrorCodes","exports","Locale","require_application","__commonJSMin","exports","require_auditLog","__commonJSMin","exports","require_autoModeration","__commonJSMin","exports","require_channel","__commonJSMin","exports","require_emoji","__commonJSMin","exports","require_gateway","__commonJSMin","exports","require_guild","__commonJSMin","exports","require_guildScheduledEvent","__commonJSMin","exports","require_interactions","__commonJSMin","exports","require_invite","__commonJSMin","exports","require_oauth2","__commonJSMin","exports","require_stageInstance","__commonJSMin","exports","require_sticker","__commonJSMin","exports","require_template","__commonJSMin","exports","require_user","__commonJSMin","exports","require_voice","__commonJSMin","exports","require_webhook","__commonJSMin","exports","__exportStar","exports","applicationId","guildId","ruleId","channelId","messageId","emoji","userId","overwriteId","emojiId","memberId","roleId","integrationId","code","parentId","parts","archivedStatus","threadId","webhookId","webhookToken","platform","commandId","interactionId","interactionToken","stickerId","guildScheduledEventId","format","guildIcon","guildSplash","guildDiscoverySplash","guildBanner","userBanner","userDiscriminator","userAvatar","memberAvatar","applicationIcon","applicationCoverImage","applicationAssetId","achievementId","achievementIconHash","stickerPackBannerAssetId","teamId","teamIcon","roleIcon","guildScheduledEventCoverImage","guildMemberBanner","ImageFormat","RPCErrorCodes","exports","RPCCloseEventCodes","__exportStar","exports","index_1","isDMInteraction","interaction","exports","isGuildInteraction","isApplicationCommandDMInteraction","isApplicationCommandGuildInteraction","isMessageComponentDMInteraction","isMessageComponentGuildInteraction","isLinkButton","component","isInteractionButton","isMessageComponentInteraction","isMessageComponentButtonInteraction","isMessageComponentSelectMenuInteraction","isChatInputApplicationCommandInteraction","isContextMenuApplicationCommandInteraction","__exportStar","exports","require_DiscordConnector","__commonJSMin","exports","module","import_events","import_Constants","BetterWs","Intents","APITypes","recoverableErrorsRegex","_DiscordConnector","id","client","msg","code","reason","event","data","error","e","message","withShardID","OP","resume","force","_a","_b","gracefulClose","activity","index","withQuery","withUserIDs","DiscordConnector","require_Shard","__commonJSMin","exports","module","import_events","DiscordConnector","Shard","id","client","args","resume","data","require_ShardManager","__commonJSMin","exports","module","Shard","RatelimitBucket","ShardManager","client","id","_","index","shardKey","shard","resume","shardId","_a","code","reason","gracefulClose","data","res","rej","result","e","require_Client","__commonJSMin","exports","module","import_events","import_snowtransfer","version","Constants","ShardManager","RatelimitBucket","Client","token","options","initial","gateway","oldQueueConcurrency","oldQueueIdentify","i","fn","callback","data","shardId","gatewayUrl","_a","_b","src_exports","__export","Client","Constants","Intents","Shard","ShardManager","__toCommonJS"]}