lavalink-client 1.2.3 → 1.2.5
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/cjs/structures/LavalinkManager.d.ts +1 -1
- package/dist/cjs/structures/LavalinkManager.js +1 -1
- package/dist/cjs/structures/Node.js +2 -3
- package/dist/cjs/structures/Utils.d.ts +1 -1
- package/dist/cjs/structures/Utils.js +6 -5
- package/dist/esm/structures/LavalinkManager.d.ts +1 -1
- package/dist/esm/structures/LavalinkManager.js +1 -1
- package/dist/esm/structures/Node.js +2 -3
- package/dist/esm/structures/Utils.d.ts +1 -1
- package/dist/esm/structures/Utils.js +6 -5
- package/dist/types/structures/LavalinkManager.d.ts +1 -1
- package/dist/types/structures/Utils.d.ts +1 -1
- package/package.json +1 -1
|
@@ -16,7 +16,7 @@ export interface BotClientOptions {
|
|
|
16
16
|
/** Bot Client Username */
|
|
17
17
|
username?: string;
|
|
18
18
|
/** So users can pass entire objects / classes */
|
|
19
|
-
[x: string | number | symbol
|
|
19
|
+
[x: string | number | symbol]: unknown;
|
|
20
20
|
}
|
|
21
21
|
export interface ManagerPlayerOptions {
|
|
22
22
|
/** If the Lavalink Volume should be decremented by x number */
|
|
@@ -93,7 +93,7 @@ class LavalinkManager extends events_1.EventEmitter {
|
|
|
93
93
|
this.utils = new Utils_1.ManagerUtils(this);
|
|
94
94
|
// use the validators
|
|
95
95
|
this.applyOptions(options);
|
|
96
|
-
this.validateOptions(options);
|
|
96
|
+
this.validateOptions(this.options);
|
|
97
97
|
// create classes
|
|
98
98
|
this.nodeManager = new NodeManager_1.NodeManager(this);
|
|
99
99
|
}
|
|
@@ -99,7 +99,7 @@ class LavalinkNode {
|
|
|
99
99
|
}
|
|
100
100
|
async search(query, requestUser) {
|
|
101
101
|
const Query = this.NodeManager.LavalinkManager.utils.transformQuery(query);
|
|
102
|
-
this.NodeManager.LavalinkManager.utils.validateQueryString(this, Query.query);
|
|
102
|
+
this.NodeManager.LavalinkManager.utils.validateQueryString(this, Query.query, Query.source);
|
|
103
103
|
if (Query.source)
|
|
104
104
|
this.NodeManager.LavalinkManager.utils.validateSourceString(this, Query.source);
|
|
105
105
|
if (["bcsearch", "bandcamp"].includes(Query.source)) {
|
|
@@ -653,7 +653,6 @@ class LavalinkNode {
|
|
|
653
653
|
}
|
|
654
654
|
async trackStuck(player, track, payload) {
|
|
655
655
|
this.NodeManager.LavalinkManager.emit("trackStuck", player, track, payload);
|
|
656
|
-
return; // trackEnd get's executed too
|
|
657
656
|
// If there are no songs in the queue
|
|
658
657
|
if (!player.queue.tracks.length && (player.repeatMode === "off" || player.get("internal_stopPlaying")))
|
|
659
658
|
return this.queueEnd(player, track, payload);
|
|
@@ -667,7 +666,7 @@ class LavalinkNode {
|
|
|
667
666
|
}
|
|
668
667
|
async trackError(player, track, payload) {
|
|
669
668
|
this.NodeManager.LavalinkManager.emit("trackError", player, track, payload);
|
|
670
|
-
return; //
|
|
669
|
+
return; // get's handled by trackEnd
|
|
671
670
|
// If there are no songs in the queue
|
|
672
671
|
if (!player.queue.tracks.length && (player.repeatMode === "off" || player.get("internal_stopPlaying")))
|
|
673
672
|
return this.queueEnd(player, track, payload);
|
|
@@ -100,7 +100,7 @@ export declare class ManagerUtils {
|
|
|
100
100
|
*/
|
|
101
101
|
isUnresolvedTrackQuery(data: UnresolvedQuery | any): boolean;
|
|
102
102
|
getClosestTrack(data: UnresolvedTrack, player: Player): Promise<Track | undefined>;
|
|
103
|
-
validateQueryString(node: LavalinkNode, queryString: string): void;
|
|
103
|
+
validateQueryString(node: LavalinkNode, queryString: string, sourceString?: LavalinkSearchPlatform): void;
|
|
104
104
|
transformQuery(query: SearchQuery): {
|
|
105
105
|
query: string;
|
|
106
106
|
source: any;
|
|
@@ -180,15 +180,16 @@ class ManagerUtils {
|
|
|
180
180
|
async getClosestTrack(data, player) {
|
|
181
181
|
return getClosestTrack(data, player);
|
|
182
182
|
}
|
|
183
|
-
validateQueryString(node, queryString) {
|
|
183
|
+
validateQueryString(node, queryString, sourceString) {
|
|
184
184
|
if (!node.info)
|
|
185
185
|
throw new Error("No Lavalink Node was provided");
|
|
186
186
|
if (!node.info.sourceManagers?.length)
|
|
187
187
|
throw new Error("Lavalink Node, has no sourceManagers enabled");
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
188
|
+
if (sourceString === "speak" && queryString.length > 100)
|
|
189
|
+
// checks for blacklisted links / domains / queries
|
|
190
|
+
if (this.LavalinkManager.options?.linksBlacklist?.length > 0 && this.LavalinkManager.options?.linksBlacklist.some(v => (typeof v === "string" && (queryString.toLowerCase().includes(v.toLowerCase()) || v.toLowerCase().includes(queryString.toLowerCase()))) || (0, types_1.isRegExp)(v) && v.test(queryString))) {
|
|
191
|
+
throw new Error(`Query string contains a link / word which is blacklisted.`);
|
|
192
|
+
}
|
|
192
193
|
if (!/^https?:\/\//.test(queryString))
|
|
193
194
|
return;
|
|
194
195
|
else if (this.LavalinkManager.options?.linksAllowed === false)
|
|
@@ -16,7 +16,7 @@ export interface BotClientOptions {
|
|
|
16
16
|
/** Bot Client Username */
|
|
17
17
|
username?: string;
|
|
18
18
|
/** So users can pass entire objects / classes */
|
|
19
|
-
[x: string | number | symbol
|
|
19
|
+
[x: string | number | symbol]: unknown;
|
|
20
20
|
}
|
|
21
21
|
export interface ManagerPlayerOptions {
|
|
22
22
|
/** If the Lavalink Volume should be decremented by x number */
|
|
@@ -90,7 +90,7 @@ export class LavalinkManager extends EventEmitter {
|
|
|
90
90
|
this.utils = new ManagerUtils(this);
|
|
91
91
|
// use the validators
|
|
92
92
|
this.applyOptions(options);
|
|
93
|
-
this.validateOptions(options);
|
|
93
|
+
this.validateOptions(this.options);
|
|
94
94
|
// create classes
|
|
95
95
|
this.nodeManager = new NodeManager(this);
|
|
96
96
|
}
|
|
@@ -95,7 +95,7 @@ export class LavalinkNode {
|
|
|
95
95
|
}
|
|
96
96
|
async search(query, requestUser) {
|
|
97
97
|
const Query = this.NodeManager.LavalinkManager.utils.transformQuery(query);
|
|
98
|
-
this.NodeManager.LavalinkManager.utils.validateQueryString(this, Query.query);
|
|
98
|
+
this.NodeManager.LavalinkManager.utils.validateQueryString(this, Query.query, Query.source);
|
|
99
99
|
if (Query.source)
|
|
100
100
|
this.NodeManager.LavalinkManager.utils.validateSourceString(this, Query.source);
|
|
101
101
|
if (["bcsearch", "bandcamp"].includes(Query.source)) {
|
|
@@ -649,7 +649,6 @@ export class LavalinkNode {
|
|
|
649
649
|
}
|
|
650
650
|
async trackStuck(player, track, payload) {
|
|
651
651
|
this.NodeManager.LavalinkManager.emit("trackStuck", player, track, payload);
|
|
652
|
-
return; // trackEnd get's executed too
|
|
653
652
|
// If there are no songs in the queue
|
|
654
653
|
if (!player.queue.tracks.length && (player.repeatMode === "off" || player.get("internal_stopPlaying")))
|
|
655
654
|
return this.queueEnd(player, track, payload);
|
|
@@ -663,7 +662,7 @@ export class LavalinkNode {
|
|
|
663
662
|
}
|
|
664
663
|
async trackError(player, track, payload) {
|
|
665
664
|
this.NodeManager.LavalinkManager.emit("trackError", player, track, payload);
|
|
666
|
-
return; //
|
|
665
|
+
return; // get's handled by trackEnd
|
|
667
666
|
// If there are no songs in the queue
|
|
668
667
|
if (!player.queue.tracks.length && (player.repeatMode === "off" || player.get("internal_stopPlaying")))
|
|
669
668
|
return this.queueEnd(player, track, payload);
|
|
@@ -100,7 +100,7 @@ export declare class ManagerUtils {
|
|
|
100
100
|
*/
|
|
101
101
|
isUnresolvedTrackQuery(data: UnresolvedQuery | any): boolean;
|
|
102
102
|
getClosestTrack(data: UnresolvedTrack, player: Player): Promise<Track | undefined>;
|
|
103
|
-
validateQueryString(node: LavalinkNode, queryString: string): void;
|
|
103
|
+
validateQueryString(node: LavalinkNode, queryString: string, sourceString?: LavalinkSearchPlatform): void;
|
|
104
104
|
transformQuery(query: SearchQuery): {
|
|
105
105
|
query: string;
|
|
106
106
|
source: any;
|
|
@@ -176,15 +176,16 @@ export class ManagerUtils {
|
|
|
176
176
|
async getClosestTrack(data, player) {
|
|
177
177
|
return getClosestTrack(data, player);
|
|
178
178
|
}
|
|
179
|
-
validateQueryString(node, queryString) {
|
|
179
|
+
validateQueryString(node, queryString, sourceString) {
|
|
180
180
|
if (!node.info)
|
|
181
181
|
throw new Error("No Lavalink Node was provided");
|
|
182
182
|
if (!node.info.sourceManagers?.length)
|
|
183
183
|
throw new Error("Lavalink Node, has no sourceManagers enabled");
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
184
|
+
if (sourceString === "speak" && queryString.length > 100)
|
|
185
|
+
// checks for blacklisted links / domains / queries
|
|
186
|
+
if (this.LavalinkManager.options?.linksBlacklist?.length > 0 && this.LavalinkManager.options?.linksBlacklist.some(v => (typeof v === "string" && (queryString.toLowerCase().includes(v.toLowerCase()) || v.toLowerCase().includes(queryString.toLowerCase()))) || isRegExp(v) && v.test(queryString))) {
|
|
187
|
+
throw new Error(`Query string contains a link / word which is blacklisted.`);
|
|
188
|
+
}
|
|
188
189
|
if (!/^https?:\/\//.test(queryString))
|
|
189
190
|
return;
|
|
190
191
|
else if (this.LavalinkManager.options?.linksAllowed === false)
|
|
@@ -16,7 +16,7 @@ export interface BotClientOptions {
|
|
|
16
16
|
/** Bot Client Username */
|
|
17
17
|
username?: string;
|
|
18
18
|
/** So users can pass entire objects / classes */
|
|
19
|
-
[x: string | number | symbol
|
|
19
|
+
[x: string | number | symbol]: unknown;
|
|
20
20
|
}
|
|
21
21
|
export interface ManagerPlayerOptions {
|
|
22
22
|
/** If the Lavalink Volume should be decremented by x number */
|
|
@@ -100,7 +100,7 @@ export declare class ManagerUtils {
|
|
|
100
100
|
*/
|
|
101
101
|
isUnresolvedTrackQuery(data: UnresolvedQuery | any): boolean;
|
|
102
102
|
getClosestTrack(data: UnresolvedTrack, player: Player): Promise<Track | undefined>;
|
|
103
|
-
validateQueryString(node: LavalinkNode, queryString: string): void;
|
|
103
|
+
validateQueryString(node: LavalinkNode, queryString: string, sourceString?: LavalinkSearchPlatform): void;
|
|
104
104
|
transformQuery(query: SearchQuery): {
|
|
105
105
|
query: string;
|
|
106
106
|
source: any;
|
package/package.json
CHANGED