lavacord 2.2.0 → 3.0.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/LICENSE +24 -201
- package/README.md +473 -69
- package/dist/cjs/index.cjs +44 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +1211 -0
- package/dist/cjs/lib/LavalinkNode.cjs +423 -0
- package/dist/cjs/lib/LavalinkNode.cjs.map +1 -0
- package/dist/cjs/lib/Manager.cjs +405 -0
- package/dist/cjs/lib/Manager.cjs.map +1 -0
- package/dist/cjs/lib/Player.cjs +220 -0
- package/dist/cjs/lib/Player.cjs.map +1 -0
- package/dist/cjs/lib/Rest.cjs +192 -0
- package/dist/cjs/lib/Rest.cjs.map +1 -0
- package/dist/cjs/lib/Types.cjs +4 -0
- package/dist/cjs/lib/Types.cjs.map +1 -0
- package/dist/cjs/wrappers/cloudstorm.cjs +54 -0
- package/dist/cjs/wrappers/cloudstorm.cjs.map +1 -0
- package/dist/cjs/wrappers/detritus.cjs +57 -0
- package/dist/cjs/wrappers/detritus.cjs.map +1 -0
- package/dist/cjs/wrappers/discord.js.cjs +37 -0
- package/dist/cjs/wrappers/discord.js.cjs.map +1 -0
- package/dist/cjs/wrappers/eris.cjs +51 -0
- package/dist/cjs/wrappers/eris.cjs.map +1 -0
- package/dist/cjs/wrappers/oceanic.cjs +52 -0
- package/dist/cjs/wrappers/oceanic.cjs.map +1 -0
- package/dist/esm/chunk-PAWJFY3S.mjs +6 -0
- package/dist/esm/chunk-PAWJFY3S.mjs.map +1 -0
- package/dist/esm/index.d.mts +1211 -0
- package/dist/esm/index.mjs +12 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/lib/LavalinkNode.mjs +420 -0
- package/dist/esm/lib/LavalinkNode.mjs.map +1 -0
- package/dist/esm/lib/Manager.mjs +402 -0
- package/dist/esm/lib/Manager.mjs.map +1 -0
- package/dist/esm/lib/Player.mjs +217 -0
- package/dist/esm/lib/Player.mjs.map +1 -0
- package/dist/esm/lib/Rest.mjs +188 -0
- package/dist/esm/lib/Rest.mjs.map +1 -0
- package/dist/esm/lib/Types.mjs +3 -0
- package/dist/esm/lib/Types.mjs.map +1 -0
- package/dist/esm/wrappers/cloudstorm.mjs +45 -0
- package/dist/esm/wrappers/cloudstorm.mjs.map +1 -0
- package/dist/esm/wrappers/detritus.mjs +48 -0
- package/dist/esm/wrappers/detritus.mjs.map +1 -0
- package/dist/esm/wrappers/discord.js.mjs +28 -0
- package/dist/esm/wrappers/discord.js.mjs.map +1 -0
- package/dist/esm/wrappers/eris.mjs +42 -0
- package/dist/esm/wrappers/eris.mjs.map +1 -0
- package/dist/esm/wrappers/oceanic.mjs +43 -0
- package/dist/esm/wrappers/oceanic.mjs.map +1 -0
- package/dist/lib/LavalinkNode.d.ts +3 -3
- package/dist/lib/LavalinkNode.js +16 -26
- package/dist/lib/LavalinkNode.js.map +1 -1
- package/dist/lib/Manager.d.ts +2 -2
- package/dist/lib/Manager.js.map +1 -1
- package/dist/lib/Rest.js +5 -7
- package/dist/lib/Rest.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +109 -64
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/Player.ts"],"names":["EventEmitter","Rest"],"mappings":"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","file":"Player.cjs","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventEmitter } from \"events\";\nimport { Rest } from \"./Rest\";\nimport type { LavalinkNode } from \"./LavalinkNode\";\nimport type { Manager } from \"./Manager\";\nimport type { PlayerUpdateVoiceState, JoinOptions, PlayerEvents } from \"./Types\";\nimport {\n\tPlayerState,\n\tTrack,\n\tVoiceState,\n\tFilters,\n\tUpdatePlayerData,\n\tUpdatePlayerResult,\n\tEqualizer,\n\tDestroyPlayerResult,\n\tPlayer as APIPlayer\n} from \"lavalink-types\";\n\n/**\n * The Player class that handles playback and audio manipulation for a specific guild.\n *\n * @remarks\n * This class is responsible for audio playback operations, including playing, stopping,\n * pausing, resuming, and applying audio filters. Each instance represents a player\n * for a specific guild.\n */\nexport class Player extends EventEmitter<PlayerEvents> {\n\t/**\n\t * The current state of this Player\n\t *\n\t * @remarks\n\t * Contains information about the player state from Lavalink, including position, filters, etc.\n\t */\n\tpublic state: PlayerState = {\n\t\ttime: 0,\n\t\tposition: 0,\n\t\tconnected: false,\n\t\tping: 0\n\t};\n\t/**\n\t * The timestamp when the current track started playing\n\t *\n\t * @remarks\n\t * This is a client-side timestamp, not synchronized with Lavalink.\n\t * Can be used to calculate approximate playback position.\n\t */\n\tpublic timestamp: number | null = null;\n\t/**\n\t * Whether the audio playback is currently paused\n\t */\n\tpublic paused = false;\n\t/**\n\t * The current volume level (0-1000)\n\t */\n\tpublic volume = 100;\n\t/**\n\t * The current track in Lavalink's base64 string form\n\t *\n\t * @remarks\n\t * This is null when no track is loaded or when playback has ended.\n\t */\n\tpublic track: Track | null = null;\n\t/**\n\t * The voice connection state from Lavalink API\n\t */\n\tpublic voice: VoiceState | null = null;\n\t/**\n\t * The current audio filters applied to this player\n\t *\n\t * @remarks\n\t * This includes effects like equalizer, karaoke, etc.\n\t */\n\tpublic filters: Filters = {};\n\n\t/**\n\t * Creates a new player instance.\n\t *\n\t * @param node - The Lavalink node this player is connected to.\n\t * @param guildId - The guild ID that this player is associated with.\n\t */\n\tpublic constructor(\n\t\t/**\n\t\t * The Lavalink node this player is connected to\n\t\t */\n\t\tpublic node: LavalinkNode,\n\t\t/**\n\t\t * The guild ID for this player\n\t\t */\n\t\tpublic guildId: string\n\t) {\n\t\tsuper();\n\t}\n\n\t/**\n\t * Updates the current player on the Lavalink node.\n\t * @see {@link https://lavalink.dev/api/rest#update-player}\n\t *\n\t * @param options - The update options to apply to the player.\n\t * @param noReplace - If true, the event will be dropped if there's a currently playing track.\n\t * @returns {Promise<APIPlayer>} The updated player information from Lavalink.\n\t */\n\tpublic async update(options: UpdatePlayerData, noReplace = false): Promise<APIPlayer> {\n\t\tconst d = await Rest.updatePlayer(this.node, this.guildId, options, noReplace);\n\n\t\t// Update local state with response data\n\t\tif (\"track\" in d) this.track = d.track;\n\t\tif (\"volume\" in d) this.volume = d.volume;\n\t\tif (\"paused\" in d) this.paused = d.paused;\n\t\tif (\"state\" in d) this.state = d.state;\n\t\tif (\"filters\" in d) this.filters = d.filters;\n\t\tif (\"voice\" in d) this.voice = d.voice;\n\n\t\treturn d;\n\t}\n\n\t/**\n\t * Plays a track using its base64 encoded string.\n\t *\n\t * @param track - The base64 encoded track string from Lavalink.\n\t * @param options - Additional options for playback.\n\t * @returns A promise resolving to the updated player information.\n\t */\n\tpublic async play(\n\t\ttrack: string,\n\t\toptions?: Omit<UpdatePlayerData, \"track\"> & {\n\t\t\tnoReplace?: boolean;\n\t\t\tuserData?: Record<any, any>;\n\t\t}\n\t): Promise<UpdatePlayerResult> {\n\t\tconst { userData, noReplace, ...opts } = options || {};\n\n\t\tconst d = await this.update({ track: { encoded: track, userData }, ...opts }, noReplace ?? false);\n\t\tthis.timestamp = Date.now();\n\n\t\treturn d;\n\t}\n\n\t/**\n\t * Stops the currently playing track.\n\t *\n\t * @remarks\n\t * This will trigger a \"TrackEndEvent\" with reason \"STOPPED\".\n\t *\n\t * @returns A promise resolving to the updated player information.\n\t */\n\tpublic stop(): Promise<UpdatePlayerResult> {\n\t\treturn this.update({ track: { encoded: null } });\n\t}\n\n\t/**\n\t * Pauses or resumes the current track.\n\t *\n\t * @param pause - Whether to pause (true) or resume (false) playback.\n\t * @returns A promise resolving to the updated player information.\n\t */\n\tpublic async pause(pause: boolean): Promise<UpdatePlayerResult> {\n\t\tconst d = await this.update({ paused: pause });\n\t\tif (this.listenerCount(\"pause\")) this.emit(\"pause\", pause);\n\t\tif (this.manager.listenerCount(\"playerPause\")) this.manager.emit(\"playerPause\", this, pause);\n\t\treturn d;\n\t}\n\n\t/**\n\t * Changes the volume of the current playback.\n\t *\n\t * @param volume - The volume level as a number between 0 and 1000\n\t * @returns A promise resolving to the updated player information.\n\t */\n\tpublic async setVolume(volume: number): Promise<UpdatePlayerResult> {\n\t\tconst d = await this.update({ volume });\n\t\tif (this.listenerCount(\"volume\")) this.emit(\"volume\", volume);\n\t\tif (this.manager.listenerCount(\"playerVolume\")) this.manager.emit(\"playerVolume\", this, volume);\n\t\treturn d;\n\t}\n\n\t/**\n\t * Seeks to a specific position in the current track.\n\t *\n\t * @param position - The position to seek to in milliseconds.\n\t * @returns A promise resolving to the updated player information.\n\t */\n\tpublic async seek(position: number): Promise<UpdatePlayerResult> {\n\t\tconst d = await this.update({ position });\n\t\tif (this.listenerCount(\"seek\")) this.emit(\"seek\", position);\n\t\tif (this.manager.listenerCount(\"playerSeek\")) this.manager.emit(\"playerSeek\", this, position);\n\t\treturn d;\n\t}\n\n\t/**\n\t * Applies audio filters to the current playback.\n\t *\n\t * @param options - The filter options to apply.\n\t * @returns A promise resolving to the updated player information.\n\t */\n\tpublic async setFilters(options: Filters): Promise<UpdatePlayerResult> {\n\t\tconst d = await this.update({ filters: options });\n\t\tif (this.listenerCount(\"filters\")) this.emit(\"filters\", options);\n\t\tif (this.manager.listenerCount(\"playerFilters\")) this.manager.emit(\"playerFilters\", this, options);\n\t\treturn d;\n\t}\n\n\t/**\n\t * Sets the equalizer effect for the current playback.\n\t *\n\t * @param bands - An array of equalizer bands to adjust.\n\t * @returns A promise resolving to the updated player information.\n\t *\n\t * @remarks\n\t * Each band is an object with 'band' (0-14) and 'gain' (-0.25 to 1.0) properties.\n\t */\n\tpublic async setEqualizer(bands: Equalizer[]): Promise<UpdatePlayerResult> {\n\t\treturn this.setFilters({ equalizer: bands });\n\t}\n\n\t/**\n\t * Destroys the player on the Lavalink node.\n\t *\n\t * @remarks\n\t * This sends a destroy signal to Lavalink to clean up resources for this guild ID.\n\t * It doesn't affect the Discord voice connection - use {@link Manager.leave} for that.\n\t *\n\t * @returns {Promise<DestroyPlayerResult>} A promise resolving to the destroy result.\n\t */\n\tpublic async destroy(): Promise<DestroyPlayerResult> {\n\t\treturn Rest.destroyPlayer(this.node, this.guildId);\n\t}\n\n\t/**\n\t * Provides voice server update information to Lavalink to establish a connection.\n\t *\n\t * @param data - The voice update state containing session ID and voice server information.\n\t * @returns A promise resolving to the updated player information.\n\t */\n\tpublic connect(data: PlayerUpdateVoiceState): Promise<UpdatePlayerResult> {\n\t\treturn this.update({\n\t\t\tvoice: {\n\t\t\t\ttoken: data.event.token,\n\t\t\t\tendpoint: data.event.endpoint,\n\t\t\t\tsessionId: data.sessionId\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Switches the player to a different voice channel.\n\t *\n\t * @param channel - The ID of the voice channel to switch to.\n\t * @param options - Options for joining the channel (selfMute, selfDeaf).\n\t * @returns Does not return anything, but sends a WebSocket message to the Lavalink node.\n\t */\n\tpublic switchChannel(channel: string, options: JoinOptions = {}): unknown {\n\t\treturn this.manager.sendWS(this.guildId, channel, options);\n\t}\n\n\t/**\n\t * Gets the manager instance that created this player.\n\t *\n\t * @returns {Manager} The manager instance.\n\t */\n\tpublic get manager(): Manager {\n\t\treturn this.node.manager;\n\t}\n}\n"]}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var url = require('url');
|
|
4
|
+
var index_cjs = require('../index.cjs');
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
|
+
var RestError = class extends Error {
|
|
9
|
+
constructor(error, data) {
|
|
10
|
+
super(error.message);
|
|
11
|
+
this.error = error;
|
|
12
|
+
this.data = data;
|
|
13
|
+
this.name = "RestError";
|
|
14
|
+
}
|
|
15
|
+
static {
|
|
16
|
+
__name(this, "RestError");
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
var Rest = class _Rest {
|
|
20
|
+
static {
|
|
21
|
+
__name(this, "Rest");
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Base request function that handles communication with Lavalink REST API.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
* @param node - The Lavalink node to send the request to.
|
|
28
|
+
* @param path - The API route path, starting with /.
|
|
29
|
+
* @param init - Optional request initialization options.
|
|
30
|
+
* @param requiresSessionId - Whether the request requires a valid session ID.
|
|
31
|
+
* @returns A promise resolving to the response data.
|
|
32
|
+
* @throws {@link RestError} If Lavalink returns an error response.
|
|
33
|
+
*/
|
|
34
|
+
static async baseRequest(node, path, init, requiresSessionId) {
|
|
35
|
+
const headers = new Headers(init?.headers);
|
|
36
|
+
headers.set("Authorization", node.password);
|
|
37
|
+
headers.set("User-Agent", `Lavacord/${index_cjs.VERSION}`);
|
|
38
|
+
const fetchConfig = {
|
|
39
|
+
method: init?.method ?? "GET",
|
|
40
|
+
headers,
|
|
41
|
+
body: init?.body
|
|
42
|
+
};
|
|
43
|
+
if (init?.query) path += `?${new url.URLSearchParams(init.query)}`;
|
|
44
|
+
if (requiresSessionId && !node.sessionId) {
|
|
45
|
+
throw new RestError({
|
|
46
|
+
timestamp: Date.now(),
|
|
47
|
+
status: 400,
|
|
48
|
+
error: "Bad Request",
|
|
49
|
+
message: `Node ${node.id} requires a session ID for this route. Did you forget to connect?`,
|
|
50
|
+
path
|
|
51
|
+
}, fetchConfig);
|
|
52
|
+
}
|
|
53
|
+
const response = await fetch(node.restURL + path, fetchConfig).catch((error) => {
|
|
54
|
+
throw new RestError({
|
|
55
|
+
timestamp: Date.now(),
|
|
56
|
+
status: 503,
|
|
57
|
+
error: "Network Error",
|
|
58
|
+
message: `Failed to connect to ${node.id}: ${error.message}`,
|
|
59
|
+
path
|
|
60
|
+
}, fetchConfig);
|
|
61
|
+
});
|
|
62
|
+
if (response.status === 204) return void 0;
|
|
63
|
+
const contentType = response.headers.get("content-type");
|
|
64
|
+
const body = await (contentType?.includes("application/json") ? response.json() : response.text());
|
|
65
|
+
if (!response.ok || body?.error) throw new RestError(body, fetchConfig);
|
|
66
|
+
return body;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Loads tracks from various sources using Lavalink's loadtracks endpoint.
|
|
70
|
+
*
|
|
71
|
+
* @param node - The Lavalink node to use.
|
|
72
|
+
* @param identifer - The identifier to load tracks from (URL, search query, etc.)
|
|
73
|
+
* @returns A promise resolving to the track loading result.
|
|
74
|
+
* @throws {@link RestError} If Lavalink encounters an error.
|
|
75
|
+
*
|
|
76
|
+
* @public
|
|
77
|
+
*/
|
|
78
|
+
static load(node, identifer) {
|
|
79
|
+
return _Rest.baseRequest(node, `/v${node.version}/loadtracks`, { query: { identifier: identifer } });
|
|
80
|
+
}
|
|
81
|
+
static decode(node, tracks) {
|
|
82
|
+
if (!Array.isArray(tracks)) return _Rest.baseRequest(node, `/v4/decodetrack`, { query: { track: tracks } });
|
|
83
|
+
return _Rest.baseRequest(node, `/v${node.version}/decodetracks`, {
|
|
84
|
+
method: "POST",
|
|
85
|
+
body: JSON.stringify(tracks),
|
|
86
|
+
headers: { "Content-Type": "application/json" }
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Retrieves the version from the Lavalink server.
|
|
91
|
+
*
|
|
92
|
+
* @param node - The Lavalink node to query.
|
|
93
|
+
* @returns A promise resolving to the version of lavalink.
|
|
94
|
+
* @throws {@link RestError} If Lavalink encounters an error.
|
|
95
|
+
*
|
|
96
|
+
* @public
|
|
97
|
+
*/
|
|
98
|
+
static version(node) {
|
|
99
|
+
return _Rest.baseRequest(node, `/version`);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Retrieves the information of the Lavalink server.
|
|
103
|
+
*
|
|
104
|
+
* @param node - The Lavalink node to query.
|
|
105
|
+
* @returns A promise resolving to the information of lavalink.
|
|
106
|
+
* @throws {@link RestError} If Lavalink encounters an error.
|
|
107
|
+
*
|
|
108
|
+
* @public
|
|
109
|
+
*/
|
|
110
|
+
static info(node) {
|
|
111
|
+
return _Rest.baseRequest(node, `/v${node.version}/info`);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Retrieves the statistics of the Lavalink node.
|
|
115
|
+
*
|
|
116
|
+
* @param node - The Lavalink node to query.
|
|
117
|
+
* @returns A promise resolving to the statistics of lavalink.
|
|
118
|
+
* @throws {@link RestError} If Lavalink encounters an error.
|
|
119
|
+
*
|
|
120
|
+
* @public
|
|
121
|
+
*/
|
|
122
|
+
static stats(node) {
|
|
123
|
+
return _Rest.baseRequest(node, `/v${node.version}/stats`);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Updates the session properties of a Lavalink node.
|
|
127
|
+
*
|
|
128
|
+
* @param node - The Lavalink node to update.
|
|
129
|
+
* @returns A promise resolving to the update session result.
|
|
130
|
+
* @throws {@link RestError} If Lavalink encounters an error.
|
|
131
|
+
*
|
|
132
|
+
* @public
|
|
133
|
+
*/
|
|
134
|
+
static updateSession(node) {
|
|
135
|
+
return _Rest.baseRequest(
|
|
136
|
+
node,
|
|
137
|
+
`/v${node.version}/sessions/${node.sessionId}`,
|
|
138
|
+
{
|
|
139
|
+
method: "PATCH",
|
|
140
|
+
body: JSON.stringify({
|
|
141
|
+
resuming: node.resuming,
|
|
142
|
+
timeout: node.resumeTimeout
|
|
143
|
+
}),
|
|
144
|
+
headers: { "Content-Type": "application/json" }
|
|
145
|
+
},
|
|
146
|
+
true
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Updates a player on a Lavalink node.
|
|
151
|
+
*
|
|
152
|
+
* @param node - The Lavalink node hosting the player.
|
|
153
|
+
* @param guildId - The guild ID associated with the player.
|
|
154
|
+
* @param data - The player update data.
|
|
155
|
+
* @param noReplace - If true, the event will be dropped if there's a currently playing track.
|
|
156
|
+
* @returns A promise resolving to the updated player information.
|
|
157
|
+
* @throws {@link RestError} If Lavalink encounters an error.
|
|
158
|
+
|
|
159
|
+
* @public
|
|
160
|
+
*/
|
|
161
|
+
static updatePlayer(node, guildId, data, noReplace = false) {
|
|
162
|
+
return _Rest.baseRequest(
|
|
163
|
+
node,
|
|
164
|
+
`/v${node.version}/sessions/${node.sessionId}/players/${guildId}`,
|
|
165
|
+
{
|
|
166
|
+
method: "PATCH",
|
|
167
|
+
body: JSON.stringify(data),
|
|
168
|
+
headers: { "Content-Type": "application/json" },
|
|
169
|
+
query: noReplace ? { noReplace: "true" } : void 0
|
|
170
|
+
},
|
|
171
|
+
true
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Destroys a player on a Lavalink node.
|
|
176
|
+
*
|
|
177
|
+
* @param node - The Lavalink node hosting the player.
|
|
178
|
+
* @param guildId - The guild ID associated with the player to destroy.
|
|
179
|
+
* @returns A promise resolving to the destroy player result.
|
|
180
|
+
* @throws {@link RestError} If Lavalink encounters an error.
|
|
181
|
+
*
|
|
182
|
+
* @public
|
|
183
|
+
*/
|
|
184
|
+
static destroyPlayer(node, guildId) {
|
|
185
|
+
return _Rest.baseRequest(node, `/v${node.version}/sessions/${node.sessionId}/players/${guildId}`, { method: "DELETE" }, true);
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
exports.Rest = Rest;
|
|
190
|
+
exports.RestError = RestError;
|
|
191
|
+
//# sourceMappingURL=Rest.cjs.map
|
|
192
|
+
//# sourceMappingURL=Rest.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/Rest.ts"],"names":["VERSION","URLSearchParams"],"mappings":";;;;;;;AAyBO,IAAM,SAAA,GAAN,cAAwB,KAAA,CAAM;AAAA,EACpC,WAAA,CAAmB,OAA6B,IAAA,EAAmB;AAClE,IAAA,KAAA,CAAM,MAAM,OAAO,CAAA;AADD,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAA6B,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAE/C,IAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AAAA;AACb,EA7BD;AAyBqC,IAAA,MAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAAA;AAKrC;AAYO,IAAM,IAAA,GAAN,MAAM,KAAA,CAAK;AAAA,EA1ClB;AA0CkB,IAAA,MAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYjB,aAAqB,WAAA,CAAe,IAAA,EAAoB,IAAA,EAAc,MAAwB,iBAAA,EAAyC;AACtI,IAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,IAAA,EAAM,OAAO,CAAA;AACzC,IAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,EAAiB,IAAA,CAAK,QAAQ,CAAA;AAC1C,IAAA,OAAA,CAAQ,GAAA,CAAI,YAAA,EAAc,CAAA,SAAA,EAAYA,iBAAO,CAAA,CAAE,CAAA;AAE/C,IAAA,MAAM,WAAA,GAA2B;AAAA,MAChC,MAAA,EAAQ,MAAM,MAAA,IAAU,KAAA;AAAA,MACxB,OAAA;AAAA,MACA,MAAM,IAAA,EAAM;AAAA,KACb;AACA,IAAA,IAAI,IAAA,EAAM,OAAO,IAAA,IAAQ,CAAA,CAAA,EAAI,IAAIC,mBAAA,CAAgB,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA;AAE5D,IAAA,IAAI,iBAAA,IAAqB,CAAC,IAAA,CAAK,SAAA,EAAW;AACzC,MAAA,MAAM,IAAI,SAAA,CAAU;AAAA,QACnB,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,QACpB,MAAA,EAAQ,GAAA;AAAA,QACR,KAAA,EAAO,aAAA;AAAA,QACP,OAAA,EAAS,CAAA,KAAA,EAAQ,IAAA,CAAK,EAAE,CAAA,iEAAA,CAAA;AAAA,QACxB;AAAA,SACE,WAAW,CAAA;AAAA;AAGf,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,IAAA,CAAK,OAAA,GAAU,MAAM,WAAW,CAAA,CAAE,KAAA,CAAM,CAAC,KAAA,KAAU;AAC/E,MAAA,MAAM,IAAI,SAAA,CAAU;AAAA,QACnB,SAAA,EAAW,KAAK,GAAA,EAAI;AAAA,QACpB,MAAA,EAAQ,GAAA;AAAA,QACR,KAAA,EAAO,eAAA;AAAA,QACP,SAAS,CAAA,qBAAA,EAAwB,IAAA,CAAK,EAAE,CAAA,EAAA,EAAK,MAAM,OAAO,CAAA,CAAA;AAAA,QAC1D;AAAA,SACE,WAAW,CAAA;AAAA,KACd,CAAA;AAED,IAAA,IAAI,QAAA,CAAS,MAAA,KAAW,GAAA,EAAK,OAAO,MAAA;AAEpC,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA;AACvD,IAAA,MAAM,IAAA,GAAO,OAAO,WAAA,EAAa,QAAA,CAAS,kBAAkB,IAAI,QAAA,CAAS,IAAA,EAAK,GAAI,QAAA,CAAS,IAAA,EAAK,CAAA;AAEhG,IAAA,IAAI,CAAC,SAAS,EAAA,IAAO,IAAA,EAAwB,OAAO,MAAM,IAAI,SAAA,CAAU,IAAA,EAAuB,WAAW,CAAA;AAE1G,IAAA,OAAO,IAAA;AAAA;AACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAO,IAAA,CAAK,IAAA,EAAoB,SAAA,EAAgD;AAC/E,IAAA,OAAO,KAAA,CAAK,WAAA,CAAY,IAAA,EAAM,CAAA,EAAA,EAAK,IAAA,CAAK,OAAO,CAAA,WAAA,CAAA,EAAe,EAAE,KAAA,EAAO,EAAE,UAAA,EAAY,SAAA,IAAa,CAAA;AAAA;AACnG,EAwBA,OAAO,MAAA,CAAO,IAAA,EAAoB,MAAA,EAA4E;AAC7G,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,SAAU,KAAA,CAAK,WAAA,CAAY,IAAA,EAAM,CAAA,eAAA,CAAA,EAAmB,EAAE,KAAA,EAAO,EAAE,KAAA,EAAO,MAAA,IAAU,CAAA;AACzG,IAAA,OAAO,MAAK,WAAA,CAAY,IAAA,EAAM,CAAA,EAAA,EAAK,IAAA,CAAK,OAAO,CAAA,aAAA,CAAA,EAAiB;AAAA,MAC/D,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA;AAAA,MAC3B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,KAC9C,CAAA;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,QAAQ,IAAA,EAAuD;AACrE,IAAA,OAAO,KAAA,CAAK,WAAA,CAAY,IAAA,EAAM,CAAA,QAAA,CAAU,CAAA;AAAA;AACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,KAAK,IAAA,EAAoD;AAC/D,IAAA,OAAO,MAAK,WAAA,CAAY,IAAA,EAAM,CAAA,EAAA,EAAK,IAAA,CAAK,OAAO,CAAA,KAAA,CAAO,CAAA;AAAA;AACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,MAAM,IAAA,EAAqD;AACjE,IAAA,OAAO,MAAK,WAAA,CAAY,IAAA,EAAM,CAAA,EAAA,EAAK,IAAA,CAAK,OAAO,CAAA,MAAA,CAAQ,CAAA;AAAA;AACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,cAAc,IAAA,EAAkD;AACtE,IAAA,OAAO,KAAA,CAAK,WAAA;AAAA,MACX,IAAA;AAAA,MACA,CAAA,EAAA,EAAK,IAAA,CAAK,OAAO,CAAA,UAAA,EAAa,KAAK,SAAS,CAAA,CAAA;AAAA,MAC5C;AAAA,QACC,MAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,UACpB,UAAU,IAAA,CAAK,QAAA;AAAA,UACf,SAAS,IAAA,CAAK;AAAA,SACO,CAAA;AAAA,QACtB,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,OAC/C;AAAA,MACA;AAAA,KACD;AAAA;AACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,OAAO,YAAA,CAAa,IAAA,EAAoB,OAAA,EAAiB,IAAA,EAAwB,YAAY,KAAA,EAAoC;AAChI,IAAA,OAAO,KAAA,CAAK,WAAA;AAAA,MACX,IAAA;AAAA,MACA,KAAK,IAAA,CAAK,OAAO,aAAa,IAAA,CAAK,SAAS,YAAY,OAAO,CAAA,CAAA;AAAA,MAC/D;AAAA,QACC,MAAA,EAAQ,OAAA;AAAA,QACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAAA,QACzB,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA,EAAmB;AAAA,QAC9C,KAAA,EAAO,SAAA,GAAY,EAAE,SAAA,EAAW,QAAO,GAAI;AAAA,OAC5C;AAAA,MACA;AAAA,KACD;AAAA;AACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAO,aAAA,CAAc,IAAA,EAAoB,OAAA,EAA+C;AACvF,IAAA,OAAO,MAAK,WAAA,CAAY,IAAA,EAAM,CAAA,EAAA,EAAK,IAAA,CAAK,OAAO,CAAA,UAAA,EAAa,IAAA,CAAK,SAAS,CAAA,SAAA,EAAY,OAAO,CAAA,CAAA,EAAI,EAAE,MAAA,EAAQ,QAAA,IAAY,IAAI,CAAA;AAAA;AAE7H","file":"Rest.cjs","sourcesContent":["import { URLSearchParams } from \"url\";\nimport type { LavalinkNode } from \"./LavalinkNode\";\nimport { VERSION } from \"../index\";\nimport {\n\tErrorResponse,\n\tTrackLoadingResult,\n\tDecodeTrackResult,\n\tDecodeTracksResult,\n\tGetLavalinkVersionResult,\n\tGetLavalinkInfoResult,\n\tGetLavalinkStatsResult,\n\tUpdateSessionResult,\n\tUpdateSessionData,\n\tUpdatePlayerData,\n\tUpdatePlayerResult,\n\tDestroyPlayerResult\n} from \"lavalink-types\";\n\n/**\n * Error class for Lavalink REST API errors.\n * @remarks\n * Contains the full error response from the Lavalink server.\n * See {@link https://lavalink.dev/api/rest#error-responses}\n * @public\n */\nexport class RestError extends Error {\n\tconstructor(public error: ErrorResponse, public data: RequestInit) {\n\t\tsuper(error.message);\n\t\tthis.name = \"RestError\";\n\t}\n}\n\n/**\n * A utility class for interacting with the Lavalink REST API.\n *\n * @remarks\n * Provides methods to perform various operations on a Lavalink server through its REST API,\n * including loading tracks, decoding tracks, and controlling players.\n *\n * @public\n * @sealed\n */\nexport class Rest {\n\t/**\n\t * Base request function that handles communication with Lavalink REST API.\n\t *\n\t * @internal\n\t * @param node - The Lavalink node to send the request to.\n\t * @param path - The API route path, starting with /.\n\t * @param init - Optional request initialization options.\n\t * @param requiresSessionId - Whether the request requires a valid session ID.\n\t * @returns A promise resolving to the response data.\n\t * @throws {@link RestError} If Lavalink returns an error response.\n\t */\n\tprivate static async baseRequest<T>(node: LavalinkNode, path: string, init?: BaseRequestInit, requiresSessionId?: boolean): Promise<T> {\n\t\tconst headers = new Headers(init?.headers);\n\t\theaders.set(\"Authorization\", node.password);\n\t\theaders.set(\"User-Agent\", `Lavacord/${VERSION}`);\n\n\t\tconst fetchConfig: RequestInit = {\n\t\t\tmethod: init?.method ?? \"GET\",\n\t\t\theaders,\n\t\t\tbody: init?.body\n\t\t};\n\t\tif (init?.query) path += `?${new URLSearchParams(init.query)}`;\n\n\t\tif (requiresSessionId && !node.sessionId) {\n\t\t\tthrow new RestError({\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\tstatus: 400,\n\t\t\t\terror: \"Bad Request\",\n\t\t\t\tmessage: `Node ${node.id} requires a session ID for this route. Did you forget to connect?`,\n\t\t\t\tpath\n\t\t\t}, fetchConfig);\n\t\t}\n\n\t\tconst response = await fetch(node.restURL + path, fetchConfig).catch((error) => {\n\t\t\tthrow new RestError({\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t\tstatus: 503,\n\t\t\t\terror: \"Network Error\",\n\t\t\t\tmessage: `Failed to connect to ${node.id}: ${error.message}`,\n\t\t\t\tpath\n\t\t\t}, fetchConfig);\n\t\t});\n\n\t\tif (response.status === 204) return undefined as T;\n\n\t\tconst contentType = response.headers.get(\"content-type\");\n\t\tconst body = await (contentType?.includes(\"application/json\") ? response.json() : response.text());\n\n\t\tif (!response.ok || (body as ErrorResponse)?.error) throw new RestError(body as ErrorResponse, fetchConfig);\n\n\t\treturn body as T;\n\t}\n\n\t/**\n\t * Loads tracks from various sources using Lavalink's loadtracks endpoint.\n\t *\n\t * @param node - The Lavalink node to use.\n\t * @param identifer - The identifier to load tracks from (URL, search query, etc.)\n\t * @returns A promise resolving to the track loading result.\n\t * @throws {@link RestError} If Lavalink encounters an error.\n\t *\n\t * @public\n\t */\n\tstatic load(node: LavalinkNode, identifer: string): Promise<TrackLoadingResult> {\n\t\treturn Rest.baseRequest(node, `/v${node.version}/loadtracks`, { query: { identifier: identifer } });\n\t}\n\n\t/**\n\t * Decodes track(s) from their base64 encoded form.\n\t *\n\t * @param node - The Lavalink node to use.\n\t * @param track - A single track to decode.\n\t * @returns A promise resolving to the decoded track information.\n\t * @throws {@link RestError} If Lavalink encounters an error.\n\n\t * @public\n\t */\n\tstatic decode(node: LavalinkNode, track: string): Promise<DecodeTrackResult>;\n\t/**\n\t * Decodes multiple tracks from their base64 encoded form.\n\t *\n\t * @param node - The Lavalink node to use.\n\t * @param tracks - An array of tracks to decode.\n\t * @returns A promise resolving to an array of decoded track information.\n\t * @throws {@link RestError} If Lavalink encounters an error.\n\t *\n\t * @public\n\t */\n\tstatic decode(node: LavalinkNode, tracks: string[]): Promise<DecodeTracksResult>;\n\tstatic decode(node: LavalinkNode, tracks: string | string[]): Promise<DecodeTrackResult | DecodeTracksResult> {\n\t\tif (!Array.isArray(tracks)) return Rest.baseRequest(node, `/v4/decodetrack`, { query: { track: tracks } });\n\t\treturn Rest.baseRequest(node, `/v${node.version}/decodetracks`, {\n\t\t\tmethod: \"POST\",\n\t\t\tbody: JSON.stringify(tracks),\n\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves the version from the Lavalink server.\n\t *\n\t * @param node - The Lavalink node to query.\n\t * @returns A promise resolving to the version of lavalink.\n\t * @throws {@link RestError} If Lavalink encounters an error.\n\t *\n\t * @public\n\t */\n\tstatic version(node: LavalinkNode): Promise<GetLavalinkVersionResult> {\n\t\treturn Rest.baseRequest(node, `/version`);\n\t}\n\n\t/**\n\t * Retrieves the information of the Lavalink server.\n\t *\n\t * @param node - The Lavalink node to query.\n\t * @returns A promise resolving to the information of lavalink.\n\t * @throws {@link RestError} If Lavalink encounters an error.\n\t *\n\t * @public\n\t */\n\tstatic info(node: LavalinkNode): Promise<GetLavalinkInfoResult> {\n\t\treturn Rest.baseRequest(node, `/v${node.version}/info`);\n\t}\n\n\t/**\n\t * Retrieves the statistics of the Lavalink node.\n\t *\n\t * @param node - The Lavalink node to query.\n\t * @returns A promise resolving to the statistics of lavalink.\n\t * @throws {@link RestError} If Lavalink encounters an error.\n\t *\n\t * @public\n\t */\n\tstatic stats(node: LavalinkNode): Promise<GetLavalinkStatsResult> {\n\t\treturn Rest.baseRequest(node, `/v${node.version}/stats`);\n\t}\n\n\t/**\n\t * Updates the session properties of a Lavalink node.\n\t *\n\t * @param node - The Lavalink node to update.\n\t * @returns A promise resolving to the update session result.\n\t * @throws {@link RestError} If Lavalink encounters an error.\n\t *\n\t * @public\n\t */\n\tstatic updateSession(node: LavalinkNode): Promise<UpdateSessionResult> {\n\t\treturn Rest.baseRequest(\n\t\t\tnode,\n\t\t\t`/v${node.version}/sessions/${node.sessionId}`,\n\t\t\t{\n\t\t\t\tmethod: \"PATCH\",\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tresuming: node.resuming,\n\t\t\t\t\ttimeout: node.resumeTimeout\n\t\t\t\t} as UpdateSessionData),\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" }\n\t\t\t},\n\t\t\ttrue\n\t\t);\n\t}\n\n\t/**\n\t * Updates a player on a Lavalink node.\n\t *\n\t * @param node - The Lavalink node hosting the player.\n\t * @param guildId - The guild ID associated with the player.\n\t * @param data - The player update data.\n\t * @param noReplace - If true, the event will be dropped if there's a currently playing track.\n\t * @returns A promise resolving to the updated player information.\n\t * @throws {@link RestError} If Lavalink encounters an error.\n\n\t * @public\n\t */\n\tstatic updatePlayer(node: LavalinkNode, guildId: string, data: UpdatePlayerData, noReplace = false): Promise<UpdatePlayerResult> {\n\t\treturn Rest.baseRequest(\n\t\t\tnode,\n\t\t\t`/v${node.version}/sessions/${node.sessionId}/players/${guildId}`,\n\t\t\t{\n\t\t\t\tmethod: \"PATCH\",\n\t\t\t\tbody: JSON.stringify(data),\n\t\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\t\tquery: noReplace ? { noReplace: \"true\" } : undefined\n\t\t\t},\n\t\t\ttrue\n\t\t);\n\t}\n\n\t/**\n\t * Destroys a player on a Lavalink node.\n\t *\n\t * @param node - The Lavalink node hosting the player.\n\t * @param guildId - The guild ID associated with the player to destroy.\n\t * @returns A promise resolving to the destroy player result.\n\t * @throws {@link RestError} If Lavalink encounters an error.\n\t *\n\t * @public\n\t */\n\tstatic destroyPlayer(node: LavalinkNode, guildId: string): Promise<DestroyPlayerResult> {\n\t\treturn Rest.baseRequest(node, `/v${node.version}/sessions/${node.sessionId}/players/${guildId}`, { method: \"DELETE\" }, true);\n\t}\n}\n\nexport interface BaseRequestInit extends RequestInit {\n\tquery?: string | URLSearchParams | Record<string, string> | [string, string][];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"Types.cjs"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var Manager_cjs = require('../lib/Manager.cjs');
|
|
4
|
+
var v10 = require('discord-api-types/v10');
|
|
5
|
+
var index_cjs = require('../index.cjs');
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
var Manager = class extends Manager_cjs.Manager {
|
|
10
|
+
constructor(client, nodes, options) {
|
|
11
|
+
super(nodes, options);
|
|
12
|
+
this.client = client;
|
|
13
|
+
client.on("event", (packet) => {
|
|
14
|
+
switch (packet.t) {
|
|
15
|
+
case v10.GatewayDispatchEvents.VoiceServerUpdate:
|
|
16
|
+
this.voiceServerUpdate(packet.d);
|
|
17
|
+
break;
|
|
18
|
+
case v10.GatewayDispatchEvents.VoiceStateUpdate:
|
|
19
|
+
this.voiceStateUpdate(packet.d);
|
|
20
|
+
break;
|
|
21
|
+
case v10.GatewayDispatchEvents.GuildCreate:
|
|
22
|
+
for (const state of packet.d.voice_states ?? [])
|
|
23
|
+
this.voiceStateUpdate({
|
|
24
|
+
...state,
|
|
25
|
+
guild_id: packet.d.id
|
|
26
|
+
});
|
|
27
|
+
break;
|
|
28
|
+
case v10.GatewayDispatchEvents.Ready: {
|
|
29
|
+
if (!this.userId) this.userId = packet.d.user.id;
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
static {
|
|
36
|
+
__name(this, "Manager");
|
|
37
|
+
}
|
|
38
|
+
send(packet) {
|
|
39
|
+
if (!this.client.options.totalShards) return;
|
|
40
|
+
const shardID = Number((BigInt(packet.d.guild_id) >> BigInt(22)) % BigInt(this.client.options.totalShards));
|
|
41
|
+
const s = Object.entries(this.client.shardManager.shards).find((e) => String(e[0]) === String(shardID))?.[1];
|
|
42
|
+
if (s) s.connector.sendMessage(packet);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
exports.Manager = Manager;
|
|
47
|
+
Object.keys(index_cjs).forEach(function (k) {
|
|
48
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () { return index_cjs[k]; }
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=cloudstorm.cjs.map
|
|
54
|
+
//# sourceMappingURL=cloudstorm.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/wrappers/cloudstorm.ts"],"names":["BaseManager","GatewayDispatchEvents"],"mappings":";;;;;;;;AAQO,IAAM,OAAA,GAAN,cAAsBA,mBAAA,CAAY;AAAA,EACjC,WAAA,CACU,MAAA,EAChB,KAAA,EACA,OAAA,EACC;AACD,IAAA,KAAA,CAAM,OAAO,OAAO,CAAA;AAJJ,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAMhB,IAAA,MAAA,CAAO,EAAA,CAAG,OAAA,EAAS,CAAC,MAAA,KAA4B;AAC/C,MAAA,QAAQ,OAAO,CAAA;AAAG,QACjB,KAAKC,yBAAA,CAAsB,iBAAA;AAC1B,UAAA,IAAA,CAAK,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAC/B,UAAA;AAAA,QAED,KAAKA,yBAAA,CAAsB,gBAAA;AAC1B,UAAA,IAAA,CAAK,gBAAA,CAAiB,OAAO,CAAC,CAAA;AAC9B,UAAA;AAAA,QAED,KAAKA,yBAAA,CAAsB,WAAA;AAC1B,UAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,CAAA,CAAE,YAAA,IAAgB,EAAC;AAC7C,YAAA,IAAA,CAAK,gBAAA,CAAiB;AAAA,cACrB,GAAG,KAAA;AAAA,cACH,QAAA,EAAU,OAAO,CAAA,CAAE;AAAA,aACnB,CAAA;AACF,UAAA;AAAA,QACD,KAAKA,0BAAsB,KAAA,EAAO;AACjC,UAAA,IAAI,CAAC,IAAA,CAAK,MAAA,OAAa,MAAA,GAAS,MAAA,CAAO,EAAE,IAAA,CAAK,EAAA;AAC9C,UAAA;AAAA;AAGA;AACF,KACA,CAAA;AAAA;AACF,EAzCD;AAQyC,IAAA,MAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;AAAA,EAmCrB,KAAK,MAAA,EAAiC;AACxD,IAAA,IAAI,CAAC,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa;AAEtC,IAAA,MAAM,OAAA,GAAU,MAAA,CAAA,CAAQ,MAAA,CAAO,MAAA,CAAO,EAAE,QAAQ,CAAA,IAAK,MAAA,CAAO,EAAE,KAAK,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAC,CAAA;AAC1G,IAAA,MAAM,CAAA,GAAI,OAAO,OAAA,CAAQ,IAAA,CAAK,OAAO,YAAA,CAAa,MAAM,EAAE,IAAA,CAAK,CAAC,MAAM,MAAA,CAAO,CAAA,CAAE,CAAC,CAAC,CAAA,KAAM,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;AAE3G,IAAA,IAAI,CAAA,EAAG,CAAA,CAAE,SAAA,CAAU,WAAA,CAAY,MAAM,CAAA;AAAA;AAEvC","file":"cloudstorm.cjs","sourcesContent":["import { Manager as BaseManager } from \"../lib/Manager\";\nimport type { ManagerOptions, LavalinkNodeOptions } from \"../lib/Types\";\nimport { GatewayDispatchEvents, GatewayVoiceStateUpdate } from \"discord-api-types/v10\";\n\nimport { Client, IGatewayMessage } from \"cloudstorm\";\n\nexport * from \"../index\";\n\nexport class Manager extends BaseManager {\n\tpublic constructor(\n\t\tpublic readonly client: Client,\n\t\tnodes: LavalinkNodeOptions[],\n\t\toptions?: ManagerOptions\n\t) {\n\t\tsuper(nodes, options);\n\n\t\tclient.on(\"event\", (packet: IGatewayMessage) => {\n\t\t\tswitch (packet.t) {\n\t\t\t\tcase GatewayDispatchEvents.VoiceServerUpdate:\n\t\t\t\t\tthis.voiceServerUpdate(packet.d);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase GatewayDispatchEvents.VoiceStateUpdate:\n\t\t\t\t\tthis.voiceStateUpdate(packet.d);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase GatewayDispatchEvents.GuildCreate:\n\t\t\t\t\tfor (const state of packet.d.voice_states ?? [])\n\t\t\t\t\t\tthis.voiceStateUpdate({\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\tguild_id: packet.d.id\n\t\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase GatewayDispatchEvents.Ready: {\n\t\t\t\t\tif (!this.userId) this.userId = packet.d.user.id;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected override send(packet: GatewayVoiceStateUpdate) {\n\t\tif (!this.client.options.totalShards) return;\n\n\t\tconst shardID = Number((BigInt(packet.d.guild_id) >> BigInt(22)) % BigInt(this.client.options.totalShards));\n\t\tconst s = Object.entries(this.client.shardManager.shards).find((e) => String(e[0]) === String(shardID))?.[1];\n\n\t\tif (s) s.connector.sendMessage(packet);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var v10 = require('discord-api-types/v10');
|
|
4
|
+
var Manager_cjs = require('../lib/Manager.cjs');
|
|
5
|
+
var detritusClient = require('detritus-client');
|
|
6
|
+
var index_cjs = require('../index.cjs');
|
|
7
|
+
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
10
|
+
var Manager = class extends Manager_cjs.Manager {
|
|
11
|
+
constructor(client, nodes, options) {
|
|
12
|
+
super(nodes, options);
|
|
13
|
+
this.client = client;
|
|
14
|
+
client.once("ready", () => {
|
|
15
|
+
if (!this.userId) this.userId = client instanceof detritusClient.ClusterClient ? client.applicationId : client.clientId;
|
|
16
|
+
});
|
|
17
|
+
client.on("raw", (packet) => {
|
|
18
|
+
switch (packet.t) {
|
|
19
|
+
case v10.GatewayDispatchEvents.VoiceServerUpdate:
|
|
20
|
+
this.voiceServerUpdate(packet.d);
|
|
21
|
+
break;
|
|
22
|
+
case v10.GatewayDispatchEvents.VoiceStateUpdate:
|
|
23
|
+
this.voiceStateUpdate(packet.d);
|
|
24
|
+
break;
|
|
25
|
+
case v10.GatewayDispatchEvents.GuildCreate:
|
|
26
|
+
for (const state of packet.d.voice_states ?? [])
|
|
27
|
+
this.voiceStateUpdate({
|
|
28
|
+
...state,
|
|
29
|
+
guild_id: packet.d.id
|
|
30
|
+
});
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
static {
|
|
36
|
+
__name(this, "Manager");
|
|
37
|
+
}
|
|
38
|
+
send(packet) {
|
|
39
|
+
const asCluster = this.client;
|
|
40
|
+
const asShard = this.client;
|
|
41
|
+
if (asShard.guilds) return asShard.gateway.send(packet.op, packet.d);
|
|
42
|
+
if (asCluster.shards) {
|
|
43
|
+
const shard = asCluster.shards.find((c) => c.guilds.has(packet.d.guild_id));
|
|
44
|
+
if (shard) shard.gateway.send(packet.op, packet.d);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
exports.Manager = Manager;
|
|
50
|
+
Object.keys(index_cjs).forEach(function (k) {
|
|
51
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
get: function () { return index_cjs[k]; }
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=detritus.cjs.map
|
|
57
|
+
//# sourceMappingURL=detritus.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/wrappers/detritus.ts"],"names":["BaseManager","ClusterClient","GatewayDispatchEvents"],"mappings":";;;;;;;;;AAQO,IAAM,OAAA,GAAN,cAAsBA,mBAAA,CAAY;AAAA,EACjC,WAAA,CACU,MAAA,EAChB,KAAA,EACA,OAAA,EACC;AACD,IAAA,KAAA,CAAM,OAAO,OAAO,CAAA;AAJJ,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAMhB,IAAA,MAAA,CAAO,IAAA,CAAK,SAAS,MAAM;AAC1B,MAAA,IAAI,CAAC,KAAK,MAAA,EAAQ,IAAA,CAAK,SAAS,MAAA,YAAkBC,4BAAA,GAAgB,MAAA,CAAO,aAAA,GAAgB,MAAA,CAAO,QAAA;AAAA,KAChG,CAAA;AAED,IAAA,MAAA,CAAO,EAAA,CAAG,KAAA,EAAO,CAAC,MAAA,KAAkC;AACnD,MAAA,QAAQ,OAAO,CAAA;AAAG,QACjB,KAAKC,yBAAA,CAAsB,iBAAA;AAC1B,UAAA,IAAA,CAAK,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAC/B,UAAA;AAAA,QAED,KAAKA,yBAAA,CAAsB,gBAAA;AAC1B,UAAA,IAAA,CAAK,gBAAA,CAAiB,OAAO,CAAC,CAAA;AAC9B,UAAA;AAAA,QAED,KAAKA,yBAAA,CAAsB,WAAA;AAC1B,UAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,CAAA,CAAE,YAAA,IAAgB,EAAC;AAC7C,YAAA,IAAA,CAAK,gBAAA,CAAiB;AAAA,cACrB,GAAG,KAAA;AAAA,cACH,QAAA,EAAU,OAAO,CAAA,CAAE;AAAA,aACnB,CAAA;AACF,UAAA;AAGA;AACF,KACA,CAAA;AAAA;AACF,EA1CD;AAQyC,IAAA,MAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;AAAA,EAoCrB,KAAK,MAAA,EAAiC;AACxD,IAAA,MAAM,YAAY,IAAA,CAAK,MAAA;AACvB,IAAA,MAAM,UAAU,IAAA,CAAK,MAAA;AAErB,IAAA,IAAI,OAAA,CAAQ,QAAQ,OAAO,OAAA,CAAQ,QAAQ,IAAA,CAAK,MAAA,CAAO,EAAA,EAAI,MAAA,CAAO,CAAC,CAAA;AACnE,IAAA,IAAI,UAAU,MAAA,EAAQ;AACrB,MAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,CAAO,GAAA,CAAI,MAAA,CAAO,CAAA,CAAE,QAAQ,CAAC,CAAA;AAC1E,MAAA,IAAI,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,MAAA,CAAO,EAAA,EAAI,OAAO,CAAC,CAAA;AAAA;AAClD;AAEF","file":"detritus.cjs","sourcesContent":["import { GatewayDispatchEvents, GatewayReceivePayload, GatewayVoiceStateUpdate } from \"discord-api-types/v10\";\nimport { Manager as BaseManager } from \"../lib/Manager\";\nimport type { ManagerOptions, LavalinkNodeOptions } from \"../lib/Types\";\n\nimport { ClusterClient, ShardClient } from \"detritus-client\";\n\nexport * from \"../index\";\n\nexport class Manager extends BaseManager {\n\tpublic constructor(\n\t\tpublic readonly client: ClusterClient | ShardClient,\n\t\tnodes: LavalinkNodeOptions[],\n\t\toptions?: ManagerOptions\n\t) {\n\t\tsuper(nodes, options);\n\n\t\tclient.once(\"ready\", () => {\n\t\t\tif (!this.userId) this.userId = client instanceof ClusterClient ? client.applicationId : client.clientId;\n\t\t});\n\n\t\tclient.on(\"raw\", (packet: GatewayReceivePayload) => {\n\t\t\tswitch (packet.t) {\n\t\t\t\tcase GatewayDispatchEvents.VoiceServerUpdate:\n\t\t\t\t\tthis.voiceServerUpdate(packet.d);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase GatewayDispatchEvents.VoiceStateUpdate:\n\t\t\t\t\tthis.voiceStateUpdate(packet.d);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase GatewayDispatchEvents.GuildCreate:\n\t\t\t\t\tfor (const state of packet.d.voice_states ?? [])\n\t\t\t\t\t\tthis.voiceStateUpdate({\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\tguild_id: packet.d.id\n\t\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected override send(packet: GatewayVoiceStateUpdate) {\n\t\tconst asCluster = this.client as ClusterClient;\n\t\tconst asShard = this.client as ShardClient;\n\n\t\tif (asShard.guilds) return asShard.gateway.send(packet.op, packet.d);\n\t\tif (asCluster.shards) {\n\t\t\tconst shard = asCluster.shards.find((c) => c.guilds.has(packet.d.guild_id));\n\t\t\tif (shard) shard.gateway.send(packet.op, packet.d);\n\t\t}\n\t}\n}\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var Manager_cjs = require('../lib/Manager.cjs');
|
|
4
|
+
var discord_js = require('discord.js');
|
|
5
|
+
var index_cjs = require('../index.cjs');
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
var Manager = class extends Manager_cjs.Manager {
|
|
10
|
+
constructor(client, nodes, options) {
|
|
11
|
+
super(nodes, options);
|
|
12
|
+
this.client = client;
|
|
13
|
+
client.once("ready", () => {
|
|
14
|
+
if (!this.userId) this.userId = client.user.id;
|
|
15
|
+
});
|
|
16
|
+
client.ws.on(discord_js.GatewayDispatchEvents.VoiceServerUpdate, (packet) => this.voiceServerUpdate(packet.d)).on(discord_js.GatewayDispatchEvents.VoiceStateUpdate, (packet) => this.voiceStateUpdate(packet.d)).on(discord_js.GatewayDispatchEvents.GuildCreate, (data) => {
|
|
17
|
+
for (const state of data.voice_states ?? []) this.voiceStateUpdate({ ...state, guild_id: data.id });
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
static {
|
|
21
|
+
__name(this, "Manager");
|
|
22
|
+
}
|
|
23
|
+
send(packet) {
|
|
24
|
+
const guild = this.client.guilds.cache.get(packet.d.guild_id);
|
|
25
|
+
if (guild) guild.shard.send(packet);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
exports.Manager = Manager;
|
|
30
|
+
Object.keys(index_cjs).forEach(function (k) {
|
|
31
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () { return index_cjs[k]; }
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=discord.js.cjs.map
|
|
37
|
+
//# sourceMappingURL=discord.js.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/wrappers/discord.js.ts"],"names":["BaseManager","GatewayDispatchEvents"],"mappings":";;;;;;;;AAQO,IAAM,OAAA,GAAN,cAAsBA,mBAAA,CAAY;AAAA,EACjC,WAAA,CACU,MAAA,EAChB,KAAA,EACA,OAAA,EACC;AACD,IAAA,KAAA,CAAM,OAAO,OAAO,CAAA;AAJJ,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAMhB,IAAA,MAAA,CAAO,IAAA,CAAK,SAAS,MAAM;AAC1B,MAAA,IAAI,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,MAAA,GAAS,OAAO,IAAA,CAAM,EAAA;AAAA,KAC7C,CAAA;AAED,IAAA,MAAA,CAAO,EAAA,CACL,EAAA,CAAGC,gCAAA,CAAsB,iBAAA,EAAmB,CAAC,MAAA,KAA6C,IAAA,CAAK,iBAAA,CAAkB,MAAA,CAAO,CAAC,CAAC,CAAA,CAC1H,EAAA,CAAGA,gCAAA,CAAsB,gBAAA,EAAkB,CAAC,MAAA,KAA4C,IAAA,CAAK,gBAAA,CAAiB,MAAA,CAAO,CAAC,CAAC,CAAA,CACvH,EAAA,CAAGA,gCAAA,CAAsB,WAAA,EAAa,CAAC,IAAA,KAAyC;AAChF,MAAA,KAAA,MAAW,KAAA,IAAS,IAAA,CAAK,YAAA,IAAgB,EAAC,EAAG,IAAA,CAAK,gBAAA,CAAiB,EAAE,GAAG,KAAA,EAAO,QAAA,EAAU,IAAA,CAAK,IAAI,CAAA;AAAA,KAClG,CAAA;AAAA;AACH,EA1BD;AAQyC,IAAA,MAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;AAAA,EAoBrB,KAAK,MAAA,EAAiC;AACxD,IAAA,MAAM,KAAA,GAAQ,KAAK,MAAA,CAAO,MAAA,CAAO,MAAM,GAAA,CAAI,MAAA,CAAO,EAAE,QAAQ,CAAA;AAC5D,IAAA,IAAI,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA;AAAA;AAEpC","file":"discord.js.cjs","sourcesContent":["import { Manager as BaseManager } from \"../lib/Manager\";\nimport type { ManagerOptions, LavalinkNodeOptions } from \"../lib/Types\";\nimport type { GatewayVoiceServerUpdateDispatch, GatewayVoiceStateUpdate, GatewayVoiceStateUpdateDispatch } from \"discord-api-types/v10\";\nimport { Client, GatewayDispatchEvents } from \"discord.js\";\nimport type { GatewayGuildCreateDispatchData } from \"discord-api-types/v10\";\n\nexport * from \"../index\";\n\nexport class Manager extends BaseManager {\n\tpublic constructor(\n\t\tpublic readonly client: Client,\n\t\tnodes: LavalinkNodeOptions[],\n\t\toptions?: ManagerOptions\n\t) {\n\t\tsuper(nodes, options);\n\n\t\tclient.once(\"ready\", () => {\n\t\t\tif (!this.userId) this.userId = client.user!.id;\n\t\t});\n\n\t\tclient.ws\n\t\t\t.on(GatewayDispatchEvents.VoiceServerUpdate, (packet: GatewayVoiceServerUpdateDispatch) => this.voiceServerUpdate(packet.d))\n\t\t\t.on(GatewayDispatchEvents.VoiceStateUpdate, (packet: GatewayVoiceStateUpdateDispatch) => this.voiceStateUpdate(packet.d))\n\t\t\t.on(GatewayDispatchEvents.GuildCreate, (data: GatewayGuildCreateDispatchData) => {\n\t\t\t\tfor (const state of data.voice_states ?? []) this.voiceStateUpdate({ ...state, guild_id: data.id });\n\t\t\t});\n\t}\n\n\tprotected override send(packet: GatewayVoiceStateUpdate) {\n\t\tconst guild = this.client.guilds.cache.get(packet.d.guild_id);\n\t\tif (guild) guild.shard.send(packet);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var v10 = require('discord-api-types/v10');
|
|
4
|
+
var Manager_cjs = require('../lib/Manager.cjs');
|
|
5
|
+
var index_cjs = require('../index.cjs');
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
var Manager = class extends Manager_cjs.Manager {
|
|
10
|
+
constructor(client, nodes, options) {
|
|
11
|
+
super(nodes, options);
|
|
12
|
+
this.client = client;
|
|
13
|
+
client.once("ready", () => {
|
|
14
|
+
if (!this.userId) this.userId = client.user.id;
|
|
15
|
+
});
|
|
16
|
+
client.on("rawWS", (packet) => {
|
|
17
|
+
switch (packet.t) {
|
|
18
|
+
case v10.GatewayDispatchEvents.VoiceServerUpdate:
|
|
19
|
+
this.voiceServerUpdate(packet.d);
|
|
20
|
+
break;
|
|
21
|
+
case v10.GatewayDispatchEvents.VoiceStateUpdate:
|
|
22
|
+
this.voiceStateUpdate(packet.d);
|
|
23
|
+
break;
|
|
24
|
+
case v10.GatewayDispatchEvents.GuildCreate:
|
|
25
|
+
for (const state of packet.d.voice_states ?? [])
|
|
26
|
+
this.voiceStateUpdate({
|
|
27
|
+
...state,
|
|
28
|
+
guild_id: packet.d.id
|
|
29
|
+
});
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
static {
|
|
35
|
+
__name(this, "Manager");
|
|
36
|
+
}
|
|
37
|
+
send(packet) {
|
|
38
|
+
const guild = this.client.guilds.get(packet.d.guild_id);
|
|
39
|
+
if (guild) guild.shard.sendWS(packet.op, packet.d);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
exports.Manager = Manager;
|
|
44
|
+
Object.keys(index_cjs).forEach(function (k) {
|
|
45
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
get: function () { return index_cjs[k]; }
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=eris.cjs.map
|
|
51
|
+
//# sourceMappingURL=eris.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/wrappers/eris.ts"],"names":["BaseManager","GatewayDispatchEvents"],"mappings":";;;;;;;;AAQO,IAAM,OAAA,GAAN,cAAsBA,mBAAA,CAAY;AAAA,EACjC,WAAA,CACU,MAAA,EAChB,KAAA,EACA,OAAA,EACC;AACD,IAAA,KAAA,CAAM,OAAO,OAAO,CAAA;AAJJ,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAMhB,IAAA,MAAA,CAAO,IAAA,CAAK,SAAS,MAAM;AAC1B,MAAA,IAAI,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,MAAA,GAAS,OAAO,IAAA,CAAK,EAAA;AAAA,KAC5C,CAAA;AAED,IAAA,MAAA,CAAO,EAAA,CAAG,OAAA,EAAS,CAAC,MAAA,KAAkC;AACrD,MAAA,QAAQ,OAAO,CAAA;AAAG,QACjB,KAAKC,yBAAA,CAAsB,iBAAA;AAC1B,UAAA,IAAA,CAAK,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAC/B,UAAA;AAAA,QAED,KAAKA,yBAAA,CAAsB,gBAAA;AAC1B,UAAA,IAAA,CAAK,gBAAA,CAAiB,OAAO,CAAC,CAAA;AAC9B,UAAA;AAAA,QAED,KAAKA,yBAAA,CAAsB,WAAA;AAC1B,UAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,CAAA,CAAE,YAAA,IAAgB,EAAC;AAC7C,YAAA,IAAA,CAAK,gBAAA,CAAiB;AAAA,cACrB,GAAG,KAAA;AAAA,cACH,QAAA,EAAU,OAAO,CAAA,CAAE;AAAA,aACnB,CAAA;AACF,UAAA;AAEA;AACF,KACA,CAAA;AAAA;AACF,EAzCD;AAQyC,IAAA,MAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;AAAA,EAmCrB,KAAK,MAAA,EAAiC;AACxD,IAAA,MAAM,QAAQ,IAAA,CAAK,MAAA,CAAO,OAAO,GAAA,CAAI,MAAA,CAAO,EAAE,QAAQ,CAAA;AACtD,IAAA,IAAI,OAAO,KAAA,CAAM,KAAA,CAAM,OAAO,MAAA,CAAO,EAAA,EAAI,OAAO,CAAuC,CAAA;AAAA;AAEzF","file":"eris.cjs","sourcesContent":["import { GatewayDispatchEvents, GatewayReceivePayload, GatewayVoiceStateUpdate } from \"discord-api-types/v10\";\nimport { Manager as BaseManager } from \"../lib/Manager\";\nimport type { ManagerOptions, LavalinkNodeOptions } from \"../lib/Types\";\n\nimport type { Client } from \"eris\";\n\nexport * from \"../index\";\n\nexport class Manager extends BaseManager {\n\tpublic constructor(\n\t\tpublic readonly client: Client,\n\t\tnodes: LavalinkNodeOptions[],\n\t\toptions?: ManagerOptions\n\t) {\n\t\tsuper(nodes, options);\n\n\t\tclient.once(\"ready\", () => {\n\t\t\tif (!this.userId) this.userId = client.user.id;\n\t\t});\n\n\t\tclient.on(\"rawWS\", (packet: GatewayReceivePayload) => {\n\t\t\tswitch (packet.t) {\n\t\t\t\tcase GatewayDispatchEvents.VoiceServerUpdate:\n\t\t\t\t\tthis.voiceServerUpdate(packet.d);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase GatewayDispatchEvents.VoiceStateUpdate:\n\t\t\t\t\tthis.voiceStateUpdate(packet.d);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase GatewayDispatchEvents.GuildCreate:\n\t\t\t\t\tfor (const state of packet.d.voice_states ?? [])\n\t\t\t\t\t\tthis.voiceStateUpdate({\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\tguild_id: packet.d.id\n\t\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected override send(packet: GatewayVoiceStateUpdate) {\n\t\tconst guild = this.client.guilds.get(packet.d.guild_id);\n\t\tif (guild) guild.shard.sendWS(packet.op, packet.d as unknown as Record<string, unknown>);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var v10 = require('discord-api-types/v10');
|
|
4
|
+
var Manager_cjs = require('../lib/Manager.cjs');
|
|
5
|
+
var index_cjs = require('../index.cjs');
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
var Manager = class extends Manager_cjs.Manager {
|
|
10
|
+
constructor(client, nodes, options) {
|
|
11
|
+
super(nodes, options);
|
|
12
|
+
this.client = client;
|
|
13
|
+
client.once("ready", () => {
|
|
14
|
+
if (!this.userId) this.userId = client.user.id;
|
|
15
|
+
});
|
|
16
|
+
client.on("packet", (d) => {
|
|
17
|
+
const data = d;
|
|
18
|
+
switch (data.t) {
|
|
19
|
+
case v10.GatewayDispatchEvents.VoiceServerUpdate:
|
|
20
|
+
this.voiceServerUpdate(data.d);
|
|
21
|
+
break;
|
|
22
|
+
case v10.GatewayDispatchEvents.VoiceStateUpdate:
|
|
23
|
+
this.voiceStateUpdate(data.d);
|
|
24
|
+
break;
|
|
25
|
+
case v10.GatewayDispatchEvents.GuildCreate:
|
|
26
|
+
for (const state of data.d.voice_states ?? [])
|
|
27
|
+
this.voiceStateUpdate({
|
|
28
|
+
...state,
|
|
29
|
+
guild_id: data.d.id
|
|
30
|
+
});
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
static {
|
|
36
|
+
__name(this, "Manager");
|
|
37
|
+
}
|
|
38
|
+
send(packet) {
|
|
39
|
+
const guild = this.client.guilds.get(packet.d.guild_id);
|
|
40
|
+
if (guild) guild.shard.send(packet.op, packet.d);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
exports.Manager = Manager;
|
|
45
|
+
Object.keys(index_cjs).forEach(function (k) {
|
|
46
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
47
|
+
enumerable: true,
|
|
48
|
+
get: function () { return index_cjs[k]; }
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=oceanic.cjs.map
|
|
52
|
+
//# sourceMappingURL=oceanic.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/wrappers/oceanic.ts"],"names":["BaseManager","GatewayDispatchEvents"],"mappings":";;;;;;;;AAOO,IAAM,OAAA,GAAN,cAAsBA,mBAAA,CAAY;AAAA,EACjC,WAAA,CACU,MAAA,EAChB,KAAA,EACA,OAAA,EACC;AACD,IAAA,KAAA,CAAM,OAAO,OAAO,CAAA;AAJJ,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAMhB,IAAA,MAAA,CAAO,IAAA,CAAK,SAAS,MAAM;AAC1B,MAAA,IAAI,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,MAAA,GAAS,OAAO,IAAA,CAAK,EAAA;AAAA,KAC5C,CAAA;AAED,IAAA,MAAA,CAAO,EAAA,CAAG,QAAA,EAAU,CAAC,CAAA,KAAM;AAC1B,MAAA,MAAM,IAAA,GAAO,CAAA;AACb,MAAA,QAAQ,KAAK,CAAA;AAAG,QACf,KAAKC,yBAAA,CAAsB,iBAAA;AAC1B,UAAA,IAAA,CAAK,iBAAA,CAAkB,KAAK,CAAC,CAAA;AAC7B,UAAA;AAAA,QAED,KAAKA,yBAAA,CAAsB,gBAAA;AAC1B,UAAA,IAAA,CAAK,gBAAA,CAAiB,KAAK,CAAC,CAAA;AAC5B,UAAA;AAAA,QAED,KAAKA,yBAAA,CAAsB,WAAA;AAC1B,UAAA,KAAA,MAAW,KAAA,IAAS,IAAA,CAAK,CAAA,CAAE,YAAA,IAAgB,EAAC;AAC3C,YAAA,IAAA,CAAK,gBAAA,CAAiB;AAAA,cACrB,GAAG,KAAA;AAAA,cACH,QAAA,EAAU,KAAK,CAAA,CAAE;AAAA,aACjB,CAAA;AACF,UAAA;AAEA;AACF,KACA,CAAA;AAAA;AACF,EAzCD;AAOyC,IAAA,MAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;AAAA,EAoCrB,KAAK,MAAA,EAAiC;AACxD,IAAA,MAAM,QAAQ,IAAA,CAAK,MAAA,CAAO,OAAO,GAAA,CAAI,MAAA,CAAO,EAAE,QAAQ,CAAA;AACtD,IAAA,IAAI,OAAO,KAAA,CAAM,KAAA,CAAM,KAAK,MAAA,CAAO,EAAA,EAAc,OAAO,CAAC,CAAA;AAAA;AAE3D","file":"oceanic.cjs","sourcesContent":["import { GatewayDispatchEvents, GatewayReceivePayload, GatewayVoiceStateUpdate } from \"discord-api-types/v10\";\nimport { Manager as BaseManager } from \"../lib/Manager\";\nimport type { ManagerOptions, LavalinkNodeOptions } from \"../lib/Types\";\nimport type { Client } from \"oceanic.js\";\n\nexport * from \"../index\";\n\nexport class Manager extends BaseManager {\n\tpublic constructor(\n\t\tpublic readonly client: Client,\n\t\tnodes: LavalinkNodeOptions[],\n\t\toptions?: ManagerOptions\n\t) {\n\t\tsuper(nodes, options);\n\n\t\tclient.once(\"ready\", () => {\n\t\t\tif (!this.userId) this.userId = client.user.id;\n\t\t});\n\n\t\tclient.on(\"packet\", (d) => {\n\t\t\tconst data = d as unknown as GatewayReceivePayload;\n\t\t\tswitch (data.t) {\n\t\t\t\tcase GatewayDispatchEvents.VoiceServerUpdate:\n\t\t\t\t\tthis.voiceServerUpdate(data.d);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase GatewayDispatchEvents.VoiceStateUpdate:\n\t\t\t\t\tthis.voiceStateUpdate(data.d);\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase GatewayDispatchEvents.GuildCreate:\n\t\t\t\t\tfor (const state of data.d.voice_states ?? [])\n\t\t\t\t\t\tthis.voiceStateUpdate({\n\t\t\t\t\t\t\t...state,\n\t\t\t\t\t\t\tguild_id: data.d.id\n\t\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected override send(packet: GatewayVoiceStateUpdate) {\n\t\tconst guild = this.client.guilds.get(packet.d.guild_id);\n\t\tif (guild) guild.shard.send(packet.op as number, packet.d);\n\t}\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-PAWJFY3S.mjs"}
|