distube 3.3.0 → 3.3.1-1
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/DisTube.d.ts +4 -4
- package/dist/DisTube.d.ts.map +1 -1
- package/dist/DisTube.js +23 -22
- package/dist/DisTube.js.map +1 -1
- package/dist/constant.d.ts +0 -1
- package/dist/constant.d.ts.map +1 -1
- package/dist/constant.js +0 -1
- package/dist/constant.js.map +1 -1
- package/dist/core/DisTubeHandler.d.ts +3 -3
- package/dist/core/DisTubeHandler.d.ts.map +1 -1
- package/dist/core/DisTubeHandler.js +12 -12
- package/dist/core/DisTubeHandler.js.map +1 -1
- package/dist/core/DisTubeOptions.d.ts +1 -1
- package/dist/core/DisTubeOptions.d.ts.map +1 -1
- package/dist/core/DisTubeOptions.js +3 -4
- package/dist/core/DisTubeOptions.js.map +1 -1
- package/dist/core/DisTubeStream.d.ts +1 -1
- package/dist/core/DisTubeStream.d.ts.map +1 -1
- package/dist/core/DisTubeStream.js.map +1 -1
- package/dist/struct/CustomPlugin.d.ts +32 -26
- package/dist/struct/CustomPlugin.d.ts.map +1 -1
- package/dist/struct/CustomPlugin.js +32 -24
- package/dist/struct/CustomPlugin.js.map +1 -1
- package/dist/struct/DisTubeError.d.ts +1 -1
- package/dist/struct/DisTubeError.d.ts.map +1 -1
- package/dist/struct/DisTubeError.js +1 -1
- package/dist/struct/DisTubeError.js.map +1 -1
- package/dist/struct/ExtractorPlugin.d.ts +21 -15
- package/dist/struct/ExtractorPlugin.d.ts.map +1 -1
- package/dist/struct/ExtractorPlugin.js +21 -12
- package/dist/struct/ExtractorPlugin.js.map +1 -1
- package/dist/struct/Playlist.d.ts +15 -12
- package/dist/struct/Playlist.d.ts.map +1 -1
- package/dist/struct/Playlist.js +50 -39
- package/dist/struct/Playlist.js.map +1 -1
- package/dist/struct/Plugin.d.ts +5 -11
- package/dist/struct/Plugin.d.ts.map +1 -1
- package/dist/struct/Plugin.js +4 -12
- package/dist/struct/Plugin.js.map +1 -1
- package/dist/struct/Song.d.ts +15 -18
- package/dist/struct/Song.d.ts.map +1 -1
- package/dist/struct/Song.js +46 -38
- package/dist/struct/Song.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/type.d.ts +1 -2
- package/dist/type.d.ts.map +1 -1
- package/dist/type.js.map +1 -1
- package/dist/util.d.ts +2 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +11 -4
- package/dist/util.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,25 +1,13 @@
|
|
|
1
1
|
import { Plugin } from ".";
|
|
2
2
|
import { PluginType } from "..";
|
|
3
|
-
import type { Playlist, Song } from ".";
|
|
4
3
|
import type { GuildMember } from "discord.js";
|
|
4
|
+
import type { Awaitable, Playlist, Song } from "..";
|
|
5
5
|
/**
|
|
6
6
|
* Extractor Plugin
|
|
7
7
|
* @extends Plugin
|
|
8
8
|
* @abstract
|
|
9
9
|
*/
|
|
10
10
|
export declare abstract class ExtractorPlugin extends Plugin {
|
|
11
|
-
/**
|
|
12
|
-
* Resolve the validated url to a {@link Song} or a {@link Playlist}.
|
|
13
|
-
*
|
|
14
|
-
* @param {string} url URL
|
|
15
|
-
* @param {Object} [options] Optional options
|
|
16
|
-
* @param {Discord.GuildMember} [options.member] Requested user
|
|
17
|
-
* @param {*} [options.metadata] Metadata
|
|
18
|
-
* @returns {Promise<Song|Playlist>}
|
|
19
|
-
* @method resolve
|
|
20
|
-
* @memberof ExtractorPlugin#
|
|
21
|
-
* @abstract
|
|
22
|
-
*/
|
|
23
11
|
type: PluginType;
|
|
24
12
|
/**
|
|
25
13
|
* Resolve the validated url to a {@link Song} or a {@link Playlist}.
|
|
@@ -28,12 +16,30 @@ export declare abstract class ExtractorPlugin extends Plugin {
|
|
|
28
16
|
* @param {Object} [options] Optional options
|
|
29
17
|
* @param {Discord.GuildMember} [options.member] Requested user
|
|
30
18
|
* @param {*} [options.metadata] Metadata
|
|
31
|
-
* @returns {Promise<Song|Playlist>}
|
|
19
|
+
* @returns {Song|Playlist|Promise<Song|Playlist>}
|
|
32
20
|
* @abstract
|
|
33
21
|
*/
|
|
34
22
|
abstract resolve<T = unknown>(url: string, options: {
|
|
35
23
|
member?: GuildMember;
|
|
36
24
|
metadata?: T;
|
|
37
|
-
}):
|
|
25
|
+
}): Awaitable<Song<T> | Playlist<T>>;
|
|
26
|
+
/**
|
|
27
|
+
* Check if the url is working with this plugin
|
|
28
|
+
* @param {string} url Input url
|
|
29
|
+
* @returns {boolean|Promise<boolean>}
|
|
30
|
+
*/
|
|
31
|
+
validate(url: string): Awaitable<boolean>;
|
|
38
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the validated url to a {@link Song} or a {@link Playlist}.
|
|
35
|
+
*
|
|
36
|
+
* @param {string} url URL
|
|
37
|
+
* @param {Object} [options] Optional options
|
|
38
|
+
* @param {Discord.GuildMember} [options.member] Requested user
|
|
39
|
+
* @param {*} [options.metadata] Metadata
|
|
40
|
+
* @returns {Song|Playlist|Promise<Song|Playlist>}
|
|
41
|
+
* @method resolve
|
|
42
|
+
* @memberof ExtractorPlugin#
|
|
43
|
+
* @abstract
|
|
44
|
+
*/
|
|
39
45
|
//# sourceMappingURL=ExtractorPlugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtractorPlugin.d.ts","sourceRoot":"","sources":["../../src/struct/ExtractorPlugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExtractorPlugin.d.ts","sourceRoot":"","sources":["../../src/struct/ExtractorPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAEpD;;;;GAIG;AACH,8BAAsB,eAAgB,SAAQ,MAAM;IAClD,IAAI,aAAwB;IAC5B;;;;;;;;;OASG;IACH,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,EAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;KAAE,GAC9C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;CAG1C;AAED;;;;;;;;;;;GAWG"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExtractorPlugin = void 0;
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
4
5
|
const _1 = require(".");
|
|
5
6
|
const __1 = require("..");
|
|
6
7
|
/**
|
|
@@ -11,20 +12,28 @@ const __1 = require("..");
|
|
|
11
12
|
class ExtractorPlugin extends _1.Plugin {
|
|
12
13
|
constructor() {
|
|
13
14
|
super(...arguments);
|
|
14
|
-
/**
|
|
15
|
-
* Resolve the validated url to a {@link Song} or a {@link Playlist}.
|
|
16
|
-
*
|
|
17
|
-
* @param {string} url URL
|
|
18
|
-
* @param {Object} [options] Optional options
|
|
19
|
-
* @param {Discord.GuildMember} [options.member] Requested user
|
|
20
|
-
* @param {*} [options.metadata] Metadata
|
|
21
|
-
* @returns {Promise<Song|Playlist>}
|
|
22
|
-
* @method resolve
|
|
23
|
-
* @memberof ExtractorPlugin#
|
|
24
|
-
* @abstract
|
|
25
|
-
*/
|
|
26
15
|
this.type = __1.PluginType.EXTRACTOR;
|
|
27
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Check if the url is working with this plugin
|
|
19
|
+
* @param {string} url Input url
|
|
20
|
+
* @returns {boolean|Promise<boolean>}
|
|
21
|
+
*/
|
|
22
|
+
validate(url) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
28
25
|
}
|
|
29
26
|
exports.ExtractorPlugin = ExtractorPlugin;
|
|
27
|
+
/**
|
|
28
|
+
* Resolve the validated url to a {@link Song} or a {@link Playlist}.
|
|
29
|
+
*
|
|
30
|
+
* @param {string} url URL
|
|
31
|
+
* @param {Object} [options] Optional options
|
|
32
|
+
* @param {Discord.GuildMember} [options.member] Requested user
|
|
33
|
+
* @param {*} [options.metadata] Metadata
|
|
34
|
+
* @returns {Song|Playlist|Promise<Song|Playlist>}
|
|
35
|
+
* @method resolve
|
|
36
|
+
* @memberof ExtractorPlugin#
|
|
37
|
+
* @abstract
|
|
38
|
+
*/
|
|
30
39
|
//# sourceMappingURL=ExtractorPlugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtractorPlugin.js","sourceRoot":"","sources":["../../src/struct/ExtractorPlugin.ts"],"names":[],"mappings":";;;AAAA,wBAA2B;AAC3B,0BAAgC;AAIhC;;;;GAIG;AACH,MAAsB,eAAgB,SAAQ,SAAM;IAApD;;QACE
|
|
1
|
+
{"version":3,"file":"ExtractorPlugin.js","sourceRoot":"","sources":["../../src/struct/ExtractorPlugin.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,wBAA2B;AAC3B,0BAAgC;AAIhC;;;;GAIG;AACH,MAAsB,eAAgB,SAAQ,SAAM;IAApD;;QACE,SAAI,GAAG,cAAU,CAAC,SAAS,CAAC;IAuB9B,CAAC;IARC;;;;OAIG;IACH,QAAQ,CAAC,GAAW;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAxBD,0CAwBC;AAED;;;;;;;;;;;GAWG","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Plugin } from \".\";\nimport { PluginType } from \"..\";\nimport type { GuildMember } from \"discord.js\";\nimport type { Awaitable, Playlist, Song } from \"..\";\n\n/**\n * Extractor Plugin\n * @extends Plugin\n * @abstract\n */\nexport abstract class ExtractorPlugin extends Plugin {\n type = PluginType.EXTRACTOR;\n /**\n * Resolve the validated url to a {@link Song} or a {@link Playlist}.\n *\n * @param {string} url URL\n * @param {Object} [options] Optional options\n * @param {Discord.GuildMember} [options.member] Requested user\n * @param {*} [options.metadata] Metadata\n * @returns {Song|Playlist|Promise<Song|Playlist>}\n * @abstract\n */\n abstract resolve<T = unknown>(\n url: string,\n options: { member?: GuildMember; metadata?: T },\n ): Awaitable<Song<T> | Playlist<T>>;\n /**\n * Check if the url is working with this plugin\n * @param {string} url Input url\n * @returns {boolean|Promise<boolean>}\n */\n validate(url: string): Awaitable<boolean> {\n return false;\n }\n}\n\n/**\n * Resolve the validated url to a {@link Song} or a {@link Playlist}.\n *\n * @param {string} url URL\n * @param {Object} [options] Optional options\n * @param {Discord.GuildMember} [options.member] Requested user\n * @param {*} [options.metadata] Metadata\n * @returns {Song|Playlist|Promise<Song|Playlist>}\n * @method resolve\n * @memberof ExtractorPlugin#\n * @abstract\n */\n"]}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import type ytpl from "@distube/ytpl";
|
|
2
2
|
import type { PlaylistInfo, Song } from "..";
|
|
3
|
-
import type { GuildMember
|
|
3
|
+
import type { GuildMember } from "discord.js";
|
|
4
4
|
/**
|
|
5
5
|
* Class representing a playlist.
|
|
6
6
|
* @prop {string} source Playlist source
|
|
7
7
|
* @template T - The type for the metadata (if any) of the playlist
|
|
8
8
|
*/
|
|
9
9
|
export declare class Playlist<T = unknown> implements PlaylistInfo {
|
|
10
|
+
#private;
|
|
10
11
|
source: string;
|
|
11
12
|
songs: Song[];
|
|
12
13
|
name: string;
|
|
13
|
-
metadata: T;
|
|
14
|
-
member?: GuildMember;
|
|
15
|
-
user?: User;
|
|
16
14
|
url?: string;
|
|
17
15
|
thumbnail?: string;
|
|
18
16
|
[x: string]: any;
|
|
@@ -43,16 +41,21 @@ export declare class Playlist<T = unknown> implements PlaylistInfo {
|
|
|
43
41
|
*/
|
|
44
42
|
get formattedDuration(): string;
|
|
45
43
|
/**
|
|
46
|
-
*
|
|
47
|
-
* @
|
|
48
|
-
* @returns {Playlist}
|
|
44
|
+
* User requested.
|
|
45
|
+
* @type {Discord.GuildMember?}
|
|
49
46
|
*/
|
|
50
|
-
|
|
47
|
+
get member(): GuildMember | undefined;
|
|
48
|
+
set member(member: GuildMember | undefined);
|
|
51
49
|
/**
|
|
52
|
-
*
|
|
53
|
-
* @
|
|
54
|
-
* @returns {Playlist}
|
|
50
|
+
* User requested.
|
|
51
|
+
* @type {Discord.User?}
|
|
55
52
|
*/
|
|
56
|
-
|
|
53
|
+
get user(): import("discord.js").User | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Optional metadata that can be used to identify the playlist.
|
|
56
|
+
* @type {T}
|
|
57
|
+
*/
|
|
58
|
+
get metadata(): T;
|
|
59
|
+
set metadata(metadata: T);
|
|
57
60
|
}
|
|
58
61
|
//# sourceMappingURL=Playlist.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Playlist.d.ts","sourceRoot":"","sources":["../../src/struct/Playlist.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"Playlist.d.ts","sourceRoot":"","sources":["../../src/struct/Playlist.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,IAAI,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C;;;;GAIG;AACH,qBAAa,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAE,YAAW,YAAY;;IACxD,MAAM,EAAG,MAAM,CAAC;IAChB,KAAK,EAAG,IAAI,EAAE,CAAC;IACf,IAAI,EAAG,MAAM,CAAC;IAGd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;gBACL,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,YAAY;IACzD,4EAA4E;gBAE1E,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,YAAY,EAC7C,MAAM,CAAC,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,QAAQ,CAAC,EAAE,CAAC;IAEd;;;;;;;OAOG;gBAED,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,YAAY,EAC7C,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACjC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACd;IAwEH;;;OAGG;IACH,IAAI,QAAQ,WAEX;IAED;;;OAGG;IACH,IAAI,iBAAiB,WAEpB;IAED;;;OAGG;IACH,IAAI,MAAM,IAIS,WAAW,GAAG,SAAS,CAFzC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAIzC;IAED;;;OAGG;IACH,IAAI,IAAI,0CAEP;IAED;;;OAGG;IACH,IAAI,QAAQ,IAIW,CAAC,CAFvB;IAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAGvB;CACF"}
|
package/dist/struct/Playlist.js
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
8
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
11
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
|
+
};
|
|
13
|
+
var _Playlist_metadata, _Playlist_member;
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
15
|
exports.Playlist = void 0;
|
|
4
16
|
const __1 = require("..");
|
|
@@ -9,16 +21,18 @@ const __1 = require("..");
|
|
|
9
21
|
* @template T - The type for the metadata (if any) of the playlist
|
|
10
22
|
*/
|
|
11
23
|
class Playlist {
|
|
12
|
-
constructor(playlist, options = {}, props
|
|
24
|
+
constructor(playlist, options = {}, props, meta) {
|
|
25
|
+
_Playlist_metadata.set(this, void 0);
|
|
26
|
+
_Playlist_member.set(this, void 0);
|
|
13
27
|
if ((0, __1.isMemberInstance)(options)) {
|
|
14
28
|
process.emitWarning("Passing GuildMember for DisTube#Playlist() is deprecated, read the docs for more.", "DeprecationWarning");
|
|
15
29
|
return new Playlist(playlist, { member: options, properties: props, metadata: meta });
|
|
16
30
|
}
|
|
17
|
-
const { member, properties, metadata } =
|
|
31
|
+
const { member, properties, metadata } = options;
|
|
18
32
|
if (typeof playlist !== "object") {
|
|
19
33
|
throw new __1.DisTubeError("INVALID_TYPE", ["Array<Song>", "object"], playlist, "playlist");
|
|
20
34
|
}
|
|
21
|
-
if (typeof properties !== "
|
|
35
|
+
if (typeof properties !== "undefined" && !(0, __1.isRecord)(properties)) {
|
|
22
36
|
throw new __1.DisTubeError("INVALID_TYPE", "object", properties, "properties");
|
|
23
37
|
}
|
|
24
38
|
// FIXME
|
|
@@ -27,7 +41,7 @@ class Playlist {
|
|
|
27
41
|
* The source of the playlist
|
|
28
42
|
* @type {string}
|
|
29
43
|
*/
|
|
30
|
-
this.source = (info.source || properties
|
|
44
|
+
this.source = (info.source || properties?.source || "youtube").toLowerCase();
|
|
31
45
|
/**
|
|
32
46
|
* Playlist songs.
|
|
33
47
|
* @type {Array<Song>}
|
|
@@ -36,7 +50,8 @@ class Playlist {
|
|
|
36
50
|
if (!Array.isArray(this.songs) || !this.songs.length) {
|
|
37
51
|
throw new __1.DisTubeError("EMPTY_PLAYLIST");
|
|
38
52
|
}
|
|
39
|
-
this.
|
|
53
|
+
this.songs.map(s => s.constructor.name === "Song" && (s.playlist = this));
|
|
54
|
+
this.member = member || info.member || undefined;
|
|
40
55
|
/**
|
|
41
56
|
* Playlist name.
|
|
42
57
|
* @type {string}
|
|
@@ -54,18 +69,13 @@ class Playlist {
|
|
|
54
69
|
this.url = info.url || info.webpage_url;
|
|
55
70
|
/**
|
|
56
71
|
* Playlist thumbnail.
|
|
57
|
-
* @type {?
|
|
72
|
+
* @type {string?}
|
|
58
73
|
*/
|
|
59
74
|
this.thumbnail = info.thumbnail?.url || info.thumbnail || this.songs[0].thumbnail;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Optional metadata that can be used to identify the playlist.
|
|
65
|
-
* @type {T}
|
|
66
|
-
*/
|
|
75
|
+
if (properties)
|
|
76
|
+
for (const [key, value] of Object.entries(properties))
|
|
77
|
+
this[key] = value;
|
|
67
78
|
this.metadata = metadata;
|
|
68
|
-
this._patchMetadata(metadata);
|
|
69
79
|
}
|
|
70
80
|
/**
|
|
71
81
|
* Playlist duration in second.
|
|
@@ -82,36 +92,37 @@ class Playlist {
|
|
|
82
92
|
return (0, __1.formatDuration)(this.duration);
|
|
83
93
|
}
|
|
84
94
|
/**
|
|
85
|
-
*
|
|
86
|
-
* @
|
|
87
|
-
* @returns {Playlist}
|
|
95
|
+
* User requested.
|
|
96
|
+
* @type {Discord.GuildMember?}
|
|
88
97
|
*/
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
* User requested.
|
|
98
|
-
* @type {?Discord.User}
|
|
99
|
-
*/
|
|
100
|
-
this.user = this.member?.user;
|
|
101
|
-
}
|
|
102
|
-
this.songs.map(s => s.constructor.name === "Song" && s._patchPlaylist(this, this.member));
|
|
103
|
-
return this;
|
|
98
|
+
get member() {
|
|
99
|
+
return __classPrivateFieldGet(this, _Playlist_member, "f");
|
|
100
|
+
}
|
|
101
|
+
set member(member) {
|
|
102
|
+
if (!member)
|
|
103
|
+
return;
|
|
104
|
+
__classPrivateFieldSet(this, _Playlist_member, member, "f");
|
|
105
|
+
this.songs.map(s => s.constructor.name === "Song" && (s.member = this.member));
|
|
104
106
|
}
|
|
105
107
|
/**
|
|
106
|
-
*
|
|
107
|
-
* @
|
|
108
|
-
* @returns {Playlist}
|
|
108
|
+
* User requested.
|
|
109
|
+
* @type {Discord.User?}
|
|
109
110
|
*/
|
|
110
|
-
|
|
111
|
-
this.
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
get user() {
|
|
112
|
+
return this.member?.user;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Optional metadata that can be used to identify the playlist.
|
|
116
|
+
* @type {T}
|
|
117
|
+
*/
|
|
118
|
+
get metadata() {
|
|
119
|
+
return __classPrivateFieldGet(this, _Playlist_metadata, "f");
|
|
120
|
+
}
|
|
121
|
+
set metadata(metadata) {
|
|
122
|
+
__classPrivateFieldSet(this, _Playlist_metadata, metadata, "f");
|
|
123
|
+
this.songs.map(s => s.constructor.name === "Song" && (s.metadata = metadata));
|
|
114
124
|
}
|
|
115
125
|
}
|
|
116
126
|
exports.Playlist = Playlist;
|
|
127
|
+
_Playlist_metadata = new WeakMap(), _Playlist_member = new WeakMap();
|
|
117
128
|
//# sourceMappingURL=Playlist.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Playlist.js","sourceRoot":"","sources":["../../src/struct/Playlist.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Playlist.js","sourceRoot":"","sources":["../../src/struct/Playlist.ts"],"names":[],"mappings":"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","sourcesContent":["import { DisTubeError, formatDuration, isMemberInstance, isRecord } from \"..\";\nimport type ytpl from \"@distube/ytpl\";\nimport type { PlaylistInfo, Song } from \"..\";\nimport type { GuildMember } from \"discord.js\";\n\n// TODO: Remove ! on the next major version\n\n/**\n * Class representing a playlist.\n * @prop {string} source Playlist source\n * @template T - The type for the metadata (if any) of the playlist\n */\nexport class Playlist<T = unknown> implements PlaylistInfo {\n source!: string;\n songs!: Song[];\n name!: string;\n #metadata!: T;\n #member?: GuildMember;\n url?: string;\n thumbnail?: string;\n [x: string]: any;\n constructor(playlist: Song[] | ytpl.result | PlaylistInfo);\n /** @deprecated Passing GuildMember for DisTube#Playlist() is deprecated. */\n constructor(\n playlist: Song[] | ytpl.result | PlaylistInfo,\n member?: GuildMember,\n properties?: Record<string, any>,\n metadata?: T,\n );\n /**\n * Create a playlist\n * @param {Song[]|PlaylistInfo} playlist Playlist\n * @param {Object} [options] Optional options\n * @param {Discord.GuildMember} [options.member] Requested user\n * @param {Object} [options.properties] Custom properties\n * @param {T} [options.metadata] Playlist metadata\n */\n constructor(\n playlist: Song[] | ytpl.result | PlaylistInfo,\n options?: {\n member?: GuildMember;\n properties?: Record<string, any>;\n metadata?: T;\n },\n );\n constructor(\n playlist: Song[] | ytpl.result | PlaylistInfo,\n options:\n | GuildMember\n | {\n member?: GuildMember;\n properties?: Record<string, any>;\n metadata?: T;\n } = {},\n props?: Record<string, any>,\n meta?: T,\n ) {\n if (isMemberInstance(options)) {\n process.emitWarning(\n \"Passing GuildMember for DisTube#Playlist() is deprecated, read the docs for more.\",\n \"DeprecationWarning\",\n );\n return new Playlist(playlist, { member: options, properties: props, metadata: meta });\n }\n\n const { member, properties, metadata } = options;\n\n if (typeof playlist !== \"object\") {\n throw new DisTubeError(\"INVALID_TYPE\", [\"Array<Song>\", \"object\"], playlist, \"playlist\");\n }\n if (typeof properties !== \"undefined\" && !isRecord(properties)) {\n throw new DisTubeError(\"INVALID_TYPE\", \"object\", properties, \"properties\");\n }\n // FIXME\n const info = playlist as any;\n /**\n * The source of the playlist\n * @type {string}\n */\n this.source = (info.source || properties?.source || \"youtube\").toLowerCase();\n /**\n * Playlist songs.\n * @type {Array<Song>}\n */\n this.songs = Array.isArray(info) ? info : info.items || info.songs;\n if (!Array.isArray(this.songs) || !this.songs.length) {\n throw new DisTubeError(\"EMPTY_PLAYLIST\");\n }\n this.songs.map(s => s.constructor.name === \"Song\" && (s.playlist = this));\n this.member = member || info.member || undefined;\n /**\n * Playlist name.\n * @type {string}\n */\n this.name =\n info.name ||\n info.title ||\n (this.songs[0].name\n ? `${this.songs[0].name} and ${this.songs.length - 1} more songs.`\n : `${this.songs.length} songs playlist`);\n /**\n * Playlist URL.\n * @type {string}\n */\n this.url = info.url || info.webpage_url;\n /**\n * Playlist thumbnail.\n * @type {string?}\n */\n this.thumbnail = info.thumbnail?.url || info.thumbnail || this.songs[0].thumbnail;\n if (properties) for (const [key, value] of Object.entries(properties)) this[key] = value;\n\n this.metadata = metadata as T;\n }\n\n /**\n * Playlist duration in second.\n * @type {number}\n */\n get duration() {\n return this.songs?.reduce((prev, next) => prev + (next.duration || 0), 0) || 0;\n }\n\n /**\n * Formatted duration string `hh:mm:ss`.\n * @type {string}\n */\n get formattedDuration() {\n return formatDuration(this.duration);\n }\n\n /**\n * User requested.\n * @type {Discord.GuildMember?}\n */\n get member() {\n return this.#member;\n }\n\n set member(member: GuildMember | undefined) {\n if (!member) return;\n this.#member = member;\n this.songs.map(s => s.constructor.name === \"Song\" && (s.member = this.member));\n }\n\n /**\n * User requested.\n * @type {Discord.User?}\n */\n get user() {\n return this.member?.user;\n }\n\n /**\n * Optional metadata that can be used to identify the playlist.\n * @type {T}\n */\n get metadata() {\n return this.#metadata;\n }\n\n set metadata(metadata: T) {\n this.#metadata = metadata;\n this.songs.map(s => s.constructor.name === \"Song\" && (s.metadata = metadata));\n }\n}\n"]}
|
package/dist/struct/Plugin.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Client, GuildTextBasedChannel } from "discord.js";
|
|
2
|
-
import type { DisTube, DisTubeEvents, DisTubeHandler, DisTubeVoiceManager, Options, PluginType, QueueManager, RelatedSong } from "..";
|
|
2
|
+
import type { Awaitable, DisTube, DisTubeEvents, DisTubeHandler, DisTubeVoiceManager, Options, PluginType, QueueManager, RelatedSong } from "..";
|
|
3
3
|
/**
|
|
4
4
|
* DisTube Plugin
|
|
5
5
|
* @abstract
|
|
@@ -57,25 +57,19 @@ export declare abstract class Plugin {
|
|
|
57
57
|
* @readonly
|
|
58
58
|
*/
|
|
59
59
|
get handler(): DisTubeHandler;
|
|
60
|
-
/**
|
|
61
|
-
* Check if the url is working with this plugin
|
|
62
|
-
* @param {string} url Input url
|
|
63
|
-
* @returns {Promise<boolean>}
|
|
64
|
-
*/
|
|
65
|
-
validate(url: string): Promise<boolean>;
|
|
66
60
|
/**
|
|
67
61
|
* Get the stream url from {@link Song#url}. Returns {@link Song#url} by default.
|
|
68
62
|
* Not needed if the plugin plays song from YouTube.
|
|
69
63
|
* @param {string} url Input url
|
|
70
|
-
* @returns {Promise<string>}
|
|
64
|
+
* @returns {string|Promise<string>}
|
|
71
65
|
*/
|
|
72
|
-
getStreamURL(url: string):
|
|
66
|
+
getStreamURL(url: string): Awaitable<string>;
|
|
73
67
|
/**
|
|
74
68
|
* Get related songs from a supported url. {@link Song#member} should be `undefined`.
|
|
75
69
|
* Not needed to add {@link Song#related} because it will be added with this function later.
|
|
76
70
|
* @param {string} url Input url
|
|
77
|
-
* @returns {Promise<Song[]>}
|
|
71
|
+
* @returns {Song[]|Promise<Song[]>}
|
|
78
72
|
*/
|
|
79
|
-
getRelatedSongs(url: string):
|
|
73
|
+
getRelatedSongs(url: string): Awaitable<RelatedSong[]>;
|
|
80
74
|
}
|
|
81
75
|
//# sourceMappingURL=Plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/struct/Plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,IAAI,CAAC;AAEZ;;;;GAIG;AACH,8BAAsB,MAAM;IAC1B,IAAI,EAAG,UAAU,CAAC;IAClB,OAAO,EAAG,OAAO,CAAC;IAClB,IAAI,CAAC,OAAO,EAAE,OAAO;IAOrB;;;;OAIG;IACH;;;;;OAKG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,aAAa,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,OAAO;IAG3D;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,qBAAqB;IAGvD;;;;OAIG;IACH,IAAI,MAAM,IAAI,YAAY,CAEzB;IACD;;;;OAIG;IACH,IAAI,MAAM,IAAI,mBAAmB,CAEhC;IACD;;;;OAIG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD;;;;OAIG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IACD;;;;OAIG;IACH,IAAI,OAAO,IAAI,cAAc,CAE5B;IACD
|
|
1
|
+
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/struct/Plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EACV,SAAS,EACT,OAAO,EACP,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,WAAW,EACZ,MAAM,IAAI,CAAC;AAEZ;;;;GAIG;AACH,8BAAsB,MAAM;IAC1B,IAAI,EAAG,UAAU,CAAC;IAClB,OAAO,EAAG,OAAO,CAAC;IAClB,IAAI,CAAC,OAAO,EAAE,OAAO;IAOrB;;;;OAIG;IACH;;;;;OAKG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM,aAAa,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,OAAO;IAG3D;;;;OAIG;IACH,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,qBAAqB;IAGvD;;;;OAIG;IACH,IAAI,MAAM,IAAI,YAAY,CAEzB;IACD;;;;OAIG;IACH,IAAI,MAAM,IAAI,mBAAmB,CAEhC;IACD;;;;OAIG;IACH,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD;;;;OAIG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IACD;;;;OAIG;IACH,IAAI,OAAO,IAAI,cAAc,CAE5B;IACD;;;;;OAKG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAG5C;;;;;OAKG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;CAGvD"}
|
package/dist/struct/Plugin.js
CHANGED
|
@@ -76,30 +76,22 @@ class Plugin {
|
|
|
76
76
|
get handler() {
|
|
77
77
|
return this.distube.handler;
|
|
78
78
|
}
|
|
79
|
-
/**
|
|
80
|
-
* Check if the url is working with this plugin
|
|
81
|
-
* @param {string} url Input url
|
|
82
|
-
* @returns {Promise<boolean>}
|
|
83
|
-
*/
|
|
84
|
-
async validate(url) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
79
|
/**
|
|
88
80
|
* Get the stream url from {@link Song#url}. Returns {@link Song#url} by default.
|
|
89
81
|
* Not needed if the plugin plays song from YouTube.
|
|
90
82
|
* @param {string} url Input url
|
|
91
|
-
* @returns {Promise<string>}
|
|
83
|
+
* @returns {string|Promise<string>}
|
|
92
84
|
*/
|
|
93
|
-
|
|
85
|
+
getStreamURL(url) {
|
|
94
86
|
return url;
|
|
95
87
|
}
|
|
96
88
|
/**
|
|
97
89
|
* Get related songs from a supported url. {@link Song#member} should be `undefined`.
|
|
98
90
|
* Not needed to add {@link Song#related} because it will be added with this function later.
|
|
99
91
|
* @param {string} url Input url
|
|
100
|
-
* @returns {Promise<Song[]>}
|
|
92
|
+
* @returns {Song[]|Promise<Song[]>}
|
|
101
93
|
*/
|
|
102
|
-
|
|
94
|
+
getRelatedSongs(url) {
|
|
103
95
|
return [];
|
|
104
96
|
}
|
|
105
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/struct/Plugin.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/struct/Plugin.ts"],"names":[],"mappings":";;;AAcA;;;;GAIG;AACH,MAAsB,MAAM;IAG1B,IAAI,CAAC,OAAgB;QACnB;;;WAGG;QACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IACD;;;;OAIG;IACH;;;;;OAKG;IACH,IAAI,CAAC,SAA8B,EAAE,GAAG,IAAS;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD;;;;OAIG;IACH,SAAS,CAAC,KAAY,EAAE,OAA+B;QACrD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IACD;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD;;;;OAIG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IACD;;;;OAIG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IACD;;;;;OAKG;IACH,YAAY,CAAC,GAAW;QACtB,OAAO,GAAG,CAAC;IACb,CAAC;IACD;;;;;OAKG;IACH,eAAe,CAAC,GAAW;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AA1FD,wBA0FC","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type { Client, GuildTextBasedChannel } from \"discord.js\";\nimport type {\n Awaitable,\n DisTube,\n DisTubeEvents,\n DisTubeHandler,\n DisTubeVoiceManager,\n Options,\n PluginType,\n QueueManager,\n RelatedSong,\n} from \"..\";\n\n/**\n * DisTube Plugin\n * @abstract\n * @private\n */\nexport abstract class Plugin {\n type!: PluginType;\n distube!: DisTube;\n init(distube: DisTube) {\n /**\n * DisTube\n * @type {DisTube}\n */\n this.distube = distube;\n }\n /**\n * Type of the plugin\n * @name Plugin#type\n * @type {PluginType}\n */\n /**\n * Emit the {@link DisTube} of this base\n * @param {string} eventName Event name\n * @param {...any} args arguments\n * @returns {boolean}\n */\n emit(eventName: keyof DisTubeEvents, ...args: any): boolean {\n return this.distube.emit(eventName, ...args);\n }\n /**\n * Emit error event\n * @param {Error} error error\n * @param {Discord.BaseGuildTextChannel} [channel] Text channel where the error is encountered.\n */\n emitError(error: Error, channel?: GuildTextBasedChannel) {\n this.distube.emitError(error, channel);\n }\n /**\n * The queue manager\n * @type {QueueManager}\n * @readonly\n */\n get queues(): QueueManager {\n return this.distube.queues;\n }\n /**\n * The voice manager\n * @type {DisTubeVoiceManager}\n * @readonly\n */\n get voices(): DisTubeVoiceManager {\n return this.distube.voices;\n }\n /**\n * Discord.js client\n * @type {Discord.Client}\n * @readonly\n */\n get client(): Client {\n return this.distube.client;\n }\n /**\n * DisTube options\n * @type {DisTubeOptions}\n * @readonly\n */\n get options(): Options {\n return this.distube.options;\n }\n /**\n * DisTube handler\n * @type {DisTubeHandler}\n * @readonly\n */\n get handler(): DisTubeHandler {\n return this.distube.handler;\n }\n /**\n * Get the stream url from {@link Song#url}. Returns {@link Song#url} by default.\n * Not needed if the plugin plays song from YouTube.\n * @param {string} url Input url\n * @returns {string|Promise<string>}\n */\n getStreamURL(url: string): Awaitable<string> {\n return url;\n }\n /**\n * Get related songs from a supported url. {@link Song#member} should be `undefined`.\n * Not needed to add {@link Song#related} because it will be added with this function later.\n * @param {string} url Input url\n * @returns {Song[]|Promise<Song[]>}\n */\n getRelatedSongs(url: string): Awaitable<RelatedSong[]> {\n return [];\n }\n}\n"]}
|
package/dist/struct/Song.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Playlist } from "./Playlist";
|
|
2
2
|
import type ytdl from "@distube/ytdl-core";
|
|
3
|
-
import type { GuildMember
|
|
3
|
+
import type { GuildMember } from "discord.js";
|
|
4
4
|
import type { Chapter, OtherSongInfo, RelatedSong, SearchResult } from "..";
|
|
5
5
|
/**
|
|
6
6
|
* Class representing a song.
|
|
@@ -13,11 +13,9 @@ import type { Chapter, OtherSongInfo, RelatedSong, SearchResult } from "..";
|
|
|
13
13
|
* @template T - The type for the metadata (if any) of the song
|
|
14
14
|
*/
|
|
15
15
|
export declare class Song<T = unknown> {
|
|
16
|
+
#private;
|
|
16
17
|
source: string;
|
|
17
|
-
metadata: T;
|
|
18
18
|
formats?: ytdl.videoFormat[];
|
|
19
|
-
member?: GuildMember;
|
|
20
|
-
user?: User;
|
|
21
19
|
id?: string;
|
|
22
20
|
name?: string;
|
|
23
21
|
isLive: boolean;
|
|
@@ -37,7 +35,6 @@ export declare class Song<T = unknown> {
|
|
|
37
35
|
age_restricted: boolean;
|
|
38
36
|
chapters: Chapter[];
|
|
39
37
|
reposts: number;
|
|
40
|
-
playlist?: Playlist;
|
|
41
38
|
constructor(info: ytdl.videoInfo | SearchResult | OtherSongInfo | ytdl.relatedVideo);
|
|
42
39
|
/** @deprecated Passing GuildMember for DisTube#Song() is deprecated. */
|
|
43
40
|
constructor(info: ytdl.videoInfo | SearchResult | OtherSongInfo | ytdl.relatedVideo, member?: GuildMember, source?: string, metadata?: T);
|
|
@@ -62,23 +59,23 @@ export declare class Song<T = unknown> {
|
|
|
62
59
|
*/
|
|
63
60
|
_patchOther(info: OtherSongInfo): void;
|
|
64
61
|
/**
|
|
65
|
-
*
|
|
66
|
-
* @
|
|
67
|
-
* @private
|
|
68
|
-
* @returns {Song}
|
|
62
|
+
* The playlist added this song
|
|
63
|
+
* @type {Playlist?}
|
|
69
64
|
*/
|
|
70
|
-
|
|
65
|
+
get playlist(): Playlist | undefined;
|
|
66
|
+
set playlist(playlist: Playlist | undefined);
|
|
71
67
|
/**
|
|
72
|
-
*
|
|
73
|
-
* @
|
|
74
|
-
* @returns {Song}
|
|
68
|
+
* User requested.
|
|
69
|
+
* @type {Discord.GuildMember?}
|
|
75
70
|
*/
|
|
76
|
-
|
|
71
|
+
get member(): GuildMember | undefined;
|
|
72
|
+
set member(member: GuildMember | undefined);
|
|
77
73
|
/**
|
|
78
|
-
*
|
|
79
|
-
* @
|
|
80
|
-
* @returns {Song}
|
|
74
|
+
* User requested.
|
|
75
|
+
* @type {Discord.User?}
|
|
81
76
|
*/
|
|
82
|
-
|
|
77
|
+
get user(): import("discord.js").User | undefined;
|
|
78
|
+
get metadata(): T;
|
|
79
|
+
set metadata(metadata: T);
|
|
83
80
|
}
|
|
84
81
|
//# sourceMappingURL=Song.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Song.d.ts","sourceRoot":"","sources":["../../src/struct/Song.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"Song.d.ts","sourceRoot":"","sources":["../../src/struct/Song.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAI5E;;;;;;;;;GASG;AACH,qBAAa,IAAI,CAAC,CAAC,GAAG,OAAO;;IAC3B,MAAM,EAAG,MAAM,CAAC;IAEhB,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IAE7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAG,OAAO,CAAC;IACjB,QAAQ,EAAG,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,EAAG,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAG,WAAW,EAAE,CAAC;IACxB,KAAK,EAAG,MAAM,CAAC;IACf,KAAK,EAAG,MAAM,CAAC;IACf,QAAQ,EAAG,MAAM,CAAC;IAClB,QAAQ,EAAG;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,cAAc,EAAG,OAAO,CAAC;IACzB,QAAQ,EAAG,OAAO,EAAE,CAAC;IACrB,OAAO,EAAG,MAAM,CAAC;gBAEL,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,IAAI,CAAC,YAAY;IACnF,wEAAwE;gBAEtE,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,IAAI,CAAC,YAAY,EACvE,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,CAAC;IAEd;;;;;;;OAOG;gBAED,IAAI,EAAE,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,IAAI,CAAC,YAAY,GAAG,WAAW,EACrF,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,CAAC,CAAC;KACd;IAgDH,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,GAAG,YAAY;IAsH9C;;;;OAIG;IACH,WAAW,CAAC,IAAI,EAAE,aAAa;IA8B/B;;;OAGG;IACH,IAAI,QAAQ,IAIW,QAAQ,GAAG,SAAS,CAF1C;IAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAI1C;IAED;;;OAGG;IACH,IAAI,MAAM,IAIS,WAAW,GAAG,SAAS,CAFzC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAGzC;IAED;;;OAGG;IACH,IAAI,IAAI,0CAEP;IAED,IAAI,QAAQ,IAIW,CAAC,CAFvB;IAED,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAEvB;CACF"}
|