kawalink 1.0.1 → 1.0.3

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.
Files changed (57) hide show
  1. package/@dist/index.d.ts +8 -0
  2. package/@dist/index.d.ts.map +1 -0
  3. package/@dist/index.js +25 -0
  4. package/@dist/index.js.map +1 -0
  5. package/@dist/structures/Filters.d.ts +76 -0
  6. package/@dist/structures/Filters.d.ts.map +1 -0
  7. package/@dist/structures/Filters.js +170 -0
  8. package/@dist/structures/Filters.js.map +1 -0
  9. package/@dist/structures/Manager.d.ts +104 -0
  10. package/@dist/structures/Manager.d.ts.map +1 -0
  11. package/@dist/structures/Manager.js +228 -0
  12. package/@dist/structures/Manager.js.map +1 -0
  13. package/@dist/structures/Node.d.ts +76 -0
  14. package/@dist/structures/Node.d.ts.map +1 -0
  15. package/@dist/structures/Node.js +389 -0
  16. package/@dist/structures/Node.js.map +1 -0
  17. package/@dist/structures/Player.d.ts +102 -0
  18. package/@dist/structures/Player.d.ts.map +1 -0
  19. package/@dist/structures/Player.js +388 -0
  20. package/@dist/structures/Player.js.map +1 -0
  21. package/@dist/structures/Queue.d.ts +14 -0
  22. package/@dist/structures/Queue.d.ts.map +1 -0
  23. package/@dist/structures/Queue.js +83 -0
  24. package/@dist/structures/Queue.js.map +1 -0
  25. package/@dist/structures/Utils.d.ts +131 -0
  26. package/@dist/structures/Utils.d.ts.map +1 -0
  27. package/@dist/structures/Utils.js +172 -0
  28. package/@dist/structures/Utils.js.map +1 -0
  29. package/@dist/structures/rest/V3RestHandler.d.ts +36 -0
  30. package/@dist/structures/rest/V3RestHandler.d.ts.map +1 -0
  31. package/@dist/structures/rest/V3RestHandler.js +85 -0
  32. package/@dist/structures/rest/V3RestHandler.js.map +1 -0
  33. package/@dist/structures/rest/V4RestHandler.d.ts +36 -0
  34. package/@dist/structures/rest/V4RestHandler.d.ts.map +1 -0
  35. package/@dist/structures/rest/V4RestHandler.js +85 -0
  36. package/@dist/structures/rest/V4RestHandler.js.map +1 -0
  37. package/@dist/utils/Database.d.ts +17 -0
  38. package/@dist/utils/Database.d.ts.map +1 -0
  39. package/@dist/utils/Database.js +108 -0
  40. package/@dist/utils/Database.js.map +1 -0
  41. package/@dist/utils/FiltersEqualizers.d.ts +10 -0
  42. package/@dist/utils/FiltersEqualizers.d.ts.map +1 -0
  43. package/@dist/utils/FiltersEqualizers.js +85 -0
  44. package/@dist/utils/FiltersEqualizers.js.map +1 -0
  45. package/@dist/utils/ManagerCheck.d.ts +3 -0
  46. package/@dist/utils/ManagerCheck.d.ts.map +1 -0
  47. package/@dist/utils/ManagerCheck.js +36 -0
  48. package/@dist/utils/ManagerCheck.js.map +1 -0
  49. package/@dist/utils/NodeCheck.d.ts +3 -0
  50. package/@dist/utils/NodeCheck.d.ts.map +1 -0
  51. package/@dist/utils/NodeCheck.js +40 -0
  52. package/@dist/utils/NodeCheck.js.map +1 -0
  53. package/@dist/utils/PlayerCheck.d.ts +3 -0
  54. package/@dist/utils/PlayerCheck.d.ts.map +1 -0
  55. package/@dist/utils/PlayerCheck.js +31 -0
  56. package/@dist/utils/PlayerCheck.js.map +1 -0
  57. package/package.json +6 -5
@@ -0,0 +1,8 @@
1
+ export * from "./structures/Manager";
2
+ export * from "./structures/Node";
3
+ export * from "./structures/Player";
4
+ export * from "./structures/Queue";
5
+ export * from "./structures/Utils";
6
+ export * from "./structures/Filters";
7
+ export declare const version = "1.2.12";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,sBAAsB,CAAC;AAKrC,cAAc,mBAAmB,CAAC;AAKlC,cAAc,qBAAqB,CAAC;AAKpC,cAAc,oBAAoB,CAAC;AAKnC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,sBAAsB,CAAC;AAKrC,eAAO,MAAM,OAAO,WAAW,CAAC"}
package/@dist/index.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.version = void 0;
18
+ __exportStar(require("./structures/Manager"), exports);
19
+ __exportStar(require("./structures/Node"), exports);
20
+ __exportStar(require("./structures/Player"), exports);
21
+ __exportStar(require("./structures/Queue"), exports);
22
+ __exportStar(require("./structures/Utils"), exports);
23
+ __exportStar(require("./structures/Filters"), exports);
24
+ exports.version = "1.2.12";
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,uDAAqC;AAKrC,oDAAkC;AAKlC,sDAAoC;AAKpC,qDAAmC;AAKnC,qDAAmC;AAEnC,uDAAqC;AAKxB,QAAA,OAAO,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { Band } from "../utils/FiltersEqualizers";
2
+ import { Player } from "./Player";
3
+ export declare class Filters {
4
+ distortion: distortionOptions | null;
5
+ equalizer: Band[];
6
+ karaoke: karaokeOptions | null;
7
+ player: Player;
8
+ rotation: rotationOptions | null;
9
+ timescale: timescaleOptions | null;
10
+ vibrato: vibratoOptions | null;
11
+ volume: number;
12
+ private filterStatus;
13
+ constructor(player: Player);
14
+ updateFilters(): Promise<this>;
15
+ private applyFilter;
16
+ private setFilterStatus;
17
+ setEqualizer(bands?: Band[]): this;
18
+ eightD(): this;
19
+ bassBoost(): this;
20
+ nightcore(): this;
21
+ slowmo(): this;
22
+ soft(): this;
23
+ tv(): this;
24
+ trebleBass(): this;
25
+ vaporwave(): this;
26
+ distort(): this;
27
+ setKaraoke(karaoke?: karaokeOptions): this;
28
+ setTimescale(timescale?: timescaleOptions): this;
29
+ setVibrato(vibrato?: vibratoOptions): this;
30
+ setRotation(rotation?: rotationOptions): this;
31
+ setDistortion(distortion?: distortionOptions): this;
32
+ clearFilters(): Promise<this>;
33
+ getFilterStatus(filter: keyof availableFilters): boolean;
34
+ }
35
+ interface timescaleOptions {
36
+ speed?: number;
37
+ pitch?: number;
38
+ rate?: number;
39
+ }
40
+ interface vibratoOptions {
41
+ frequency: number;
42
+ depth: number;
43
+ }
44
+ interface rotationOptions {
45
+ rotationHz: number;
46
+ }
47
+ interface karaokeOptions {
48
+ level?: number;
49
+ monoLevel?: number;
50
+ filterBand?: number;
51
+ filterWidth?: number;
52
+ }
53
+ interface distortionOptions {
54
+ sinOffset?: number;
55
+ sinScale?: number;
56
+ cosOffset?: number;
57
+ cosScale?: number;
58
+ tanOffset?: number;
59
+ tanScale?: number;
60
+ offset?: number;
61
+ scale?: number;
62
+ }
63
+ interface availableFilters {
64
+ bassboost: boolean;
65
+ distort: boolean;
66
+ eightD: boolean;
67
+ karaoke: boolean;
68
+ nightcore: boolean;
69
+ slowmo: boolean;
70
+ soft: boolean;
71
+ trebleBass: boolean;
72
+ tv: boolean;
73
+ vaporwave: boolean;
74
+ }
75
+ export {};
76
+ //# sourceMappingURL=Filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.d.ts","sourceRoot":"","sources":["../../src/structures/Filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA2F,MAAM,4BAA4B,CAAC;AAC3I,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKlC,qBAAa,OAAO;IACZ,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC5C,SAAS,EAAE,IAAI,EAAE,CAAM;IACvB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAQ;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAQ;IACxC,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAC1C,OAAO,EAAE,cAAc,GAAG,IAAI,CAAQ;IACtC,MAAM,EAAE,MAAM,CAAO;IAC5B,OAAO,CAAC,YAAY,CAWlB;gBAEU,MAAM,EAAE,MAAM;IAQb,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAgC3C,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;IAWhB,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI;IAQlC,MAAM,IAAI,IAAI;IAQd,SAAS,IAAI,IAAI;IAQjB,SAAS,IAAI,IAAI;IAYjB,MAAM,IAAI,IAAI;IAYd,IAAI,IAAI,IAAI;IAQZ,EAAE,IAAI,IAAI;IAQV,UAAU,IAAI,IAAI;IAQlB,SAAS,IAAI,IAAI;IAQjB,OAAO,IAAI,IAAI;IAkBf,UAAU,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IAY1C,YAAY,CAAC,SAAS,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAShD,UAAU,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;IAS1C,WAAW,CAAC,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI;IAS7C,aAAa,CAAC,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI;IAQ7C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BnC,eAAe,CAAC,MAAM,EAAE,MAAM,gBAAgB,GAAG,OAAO;CAG/D;AAKD,UAAU,gBAAgB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAKD,UAAU,cAAc;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACd;AAKD,UAAU,eAAe;IACxB,UAAU,EAAE,MAAM,CAAC;CACnB;AAKD,UAAU,cAAc;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAKD,UAAU,iBAAiB;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,UAAU,gBAAgB;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;CACnB"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Filters = void 0;
13
+ const FiltersEqualizers_1 = require("../utils/FiltersEqualizers");
14
+ class Filters {
15
+ constructor(player) {
16
+ this.distortion = null;
17
+ this.equalizer = [];
18
+ this.karaoke = null;
19
+ this.rotation = null;
20
+ this.timescale = null;
21
+ this.vibrato = null;
22
+ this.volume = 1.0;
23
+ this.filterStatus = {
24
+ bassboost: false,
25
+ distort: false,
26
+ eightD: false,
27
+ karaoke: false,
28
+ nightcore: false,
29
+ slowmo: false,
30
+ soft: false,
31
+ trebleBass: false,
32
+ tv: false,
33
+ vaporwave: false,
34
+ };
35
+ this.player = player;
36
+ }
37
+ updateFilters() {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const { distortion, equalizer, karaoke, rotation, timescale, vibrato, volume } = this;
40
+ try {
41
+ yield this.player.node.rest.updatePlayer({
42
+ data: {
43
+ filters: {
44
+ distortion,
45
+ equalizer,
46
+ karaoke,
47
+ rotation,
48
+ timescale,
49
+ vibrato,
50
+ volume,
51
+ },
52
+ },
53
+ guildId: this.player.guild,
54
+ });
55
+ console.log("Filters updated successfully.");
56
+ }
57
+ catch (error) {
58
+ console.error("Error updating filters:", error);
59
+ }
60
+ return this;
61
+ });
62
+ }
63
+ applyFilter(filter, updateFilters = true) {
64
+ this[filter.property] = filter.value;
65
+ if (updateFilters) {
66
+ this.updateFilters();
67
+ }
68
+ return this;
69
+ }
70
+ setFilterStatus(filter, status) {
71
+ this.filterStatus[filter] = status;
72
+ console.log(`Filter ${filter} status set to ${status}`);
73
+ return this;
74
+ }
75
+ setEqualizer(bands) {
76
+ return this.applyFilter({ property: "equalizer", value: bands });
77
+ }
78
+ eightD() {
79
+ return this.setRotation({ rotationHz: 0.2 }).setFilterStatus("eightD", true);
80
+ }
81
+ bassBoost() {
82
+ return this.setEqualizer(FiltersEqualizers_1.bassBoostEqualizer).setFilterStatus("bassboost", true);
83
+ }
84
+ nightcore() {
85
+ return this.setTimescale({
86
+ speed: 1.1,
87
+ pitch: 1.125,
88
+ rate: 1.05,
89
+ }).setFilterStatus("nightcore", true);
90
+ }
91
+ slowmo() {
92
+ return this.setTimescale({
93
+ speed: 0.7,
94
+ pitch: 1.0,
95
+ rate: 0.8,
96
+ }).setFilterStatus("slowmo", true);
97
+ }
98
+ soft() {
99
+ return this.setEqualizer(FiltersEqualizers_1.softEqualizer).setFilterStatus("soft", true);
100
+ }
101
+ tv() {
102
+ return this.setEqualizer(FiltersEqualizers_1.tvEqualizer).setFilterStatus("tv", true);
103
+ }
104
+ trebleBass() {
105
+ return this.setEqualizer(FiltersEqualizers_1.trebleBassEqualizer).setFilterStatus("trebleBass", true);
106
+ }
107
+ vaporwave() {
108
+ return this.setEqualizer(FiltersEqualizers_1.vaporwaveEqualizer).setTimescale({ pitch: 0.55 }).setFilterStatus("vaporwave", true);
109
+ }
110
+ distort() {
111
+ return this.setDistortion({
112
+ sinOffset: 0,
113
+ sinScale: 0.2,
114
+ cosOffset: 0,
115
+ cosScale: 0.2,
116
+ tanOffset: 0,
117
+ tanScale: 0.2,
118
+ offset: 0,
119
+ scale: 1.2,
120
+ }).setFilterStatus("distort", true);
121
+ }
122
+ setKaraoke(karaoke) {
123
+ return this.applyFilter({
124
+ property: "karaoke",
125
+ value: karaoke,
126
+ }).setFilterStatus("karaoke", true);
127
+ }
128
+ setTimescale(timescale) {
129
+ return this.applyFilter({ property: "timescale", value: timescale });
130
+ }
131
+ setVibrato(vibrato) {
132
+ return this.applyFilter({ property: "vibrato", value: vibrato });
133
+ }
134
+ setRotation(rotation) {
135
+ return this.applyFilter({ property: "rotation", value: rotation });
136
+ }
137
+ setDistortion(distortion) {
138
+ return this.applyFilter({ property: "distortion", value: distortion });
139
+ }
140
+ clearFilters() {
141
+ return __awaiter(this, void 0, void 0, function* () {
142
+ this.filterStatus = {
143
+ bassboost: false,
144
+ distort: false,
145
+ eightD: false,
146
+ karaoke: false,
147
+ nightcore: false,
148
+ slowmo: false,
149
+ soft: false,
150
+ trebleBass: false,
151
+ tv: false,
152
+ vaporwave: false,
153
+ };
154
+ this.player.filters = new Filters(this.player);
155
+ this.setEqualizer([]);
156
+ this.setDistortion(null);
157
+ this.setKaraoke(null);
158
+ this.setRotation(null);
159
+ this.setTimescale(null);
160
+ this.setVibrato(null);
161
+ yield this.updateFilters();
162
+ return this;
163
+ });
164
+ }
165
+ getFilterStatus(filter) {
166
+ return this.filterStatus[filter];
167
+ }
168
+ }
169
+ exports.Filters = Filters;
170
+ //# sourceMappingURL=Filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.js","sourceRoot":"","sources":["../../src/structures/Filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import { LoadType, Plugin, TrackData, TrackEndEvent, TrackExceptionEvent, TrackStartEvent, TrackStuckEvent, VoicePacket, VoiceServer, WebSocketClosedEvent } from "./Utils";
2
+ import { Collection } from "@discordjs/collection";
3
+ import { EventEmitter } from "events";
4
+ import { Node, NodeOptions } from "./Node";
5
+ import { Player, PlayerOptions, Track, UnresolvedTrack } from "./Player";
6
+ import { VoiceState } from "..";
7
+ import { Database } from "../utils/Database";
8
+ export declare const REQUIRED_KEYS: string[];
9
+ export declare const REQUIRED_PAYLOAD_KEYS: string[];
10
+ export interface Manager {
11
+ on(event: "nodeCreate", listener: (node: Node) => void): this;
12
+ on(event: "nodeDestroy", listener: (node: Node) => void): this;
13
+ on(event: "nodeConnect", listener: (node: Node) => void): this;
14
+ on(event: "nodeReconnect", listener: (node: Node) => void): this;
15
+ on(event: "nodeDisconnect", listener: (node: Node, reason: {
16
+ code?: number;
17
+ reason?: string;
18
+ }) => void): this;
19
+ on(event: "nodeError", listener: (node: Node, error: Error) => void): this;
20
+ on(event: "nodeRaw", listener: (payload: unknown) => void): this;
21
+ on(event: "playerCreate", listener: (player: Player) => void): this;
22
+ on(event: "playerDestroy", listener: (player: Player) => void): this;
23
+ on(event: "queueEnd", listener: (player: Player, track: Track | UnresolvedTrack, payload: TrackEndEvent) => void): this;
24
+ on(event: "playerMove", listener: (player: Player, initChannel: string, newChannel: string) => void): this;
25
+ on(event: "playerDisconnect", listener: (player: Player, oldChannel: string) => void): this;
26
+ on(event: "trackStart", listener: (player: Player, track: Track, payload: TrackStartEvent) => void): this;
27
+ on(event: "trackEnd", listener: (player: Player, track: Track, payload: TrackEndEvent) => void): this;
28
+ on(event: "trackStuck", listener: (player: Player, track: Track, payload: TrackStuckEvent) => void): this;
29
+ on(event: "trackError", listener: (player: Player, track: Track | UnresolvedTrack, payload: TrackExceptionEvent) => void): this;
30
+ on(event: "socketClosed", listener: (player: Player, payload: WebSocketClosedEvent) => void): this;
31
+ }
32
+ export declare class Manager extends EventEmitter {
33
+ static readonly DEFAULT_SOURCES: Record<SearchPlatform, string>;
34
+ readonly players: Collection<string, Player>;
35
+ readonly nodes: Collection<string, Node>;
36
+ readonly options: ManagerOptions;
37
+ db: Database;
38
+ private initiated;
39
+ get leastUsedNodes(): Collection<string, Node>;
40
+ get leastLoadNodes(): Collection<string, Node>;
41
+ constructor(options: ManagerOptions);
42
+ init(clientId?: string): this;
43
+ search(query: string | SearchQuery, requester?: unknown): Promise<SearchResult>;
44
+ decodeTracks(tracks: string[]): Promise<TrackData[]>;
45
+ decodeTrack(track: string): Promise<TrackData>;
46
+ create(options: PlayerOptions): Player;
47
+ get(guild: string): Player | undefined;
48
+ destroy(guild: string): void;
49
+ createNode(options: NodeOptions): Node;
50
+ destroyNode(identifier: string): void;
51
+ updateVoiceState(data: VoicePacket | VoiceServer | VoiceState): Promise<void>;
52
+ }
53
+ export interface Payload {
54
+ op: number;
55
+ d: {
56
+ guild_id: string;
57
+ channel_id: string | null;
58
+ self_mute: boolean;
59
+ self_deaf: boolean;
60
+ };
61
+ }
62
+ export interface ManagerOptions {
63
+ nodes?: NodeOptions[];
64
+ clientId?: string;
65
+ clientName?: string;
66
+ shards?: number;
67
+ plugins?: Plugin[];
68
+ autoPlay?: boolean;
69
+ trackPartial?: string[];
70
+ defaultSearchPlatform?: SearchPlatform;
71
+ autoMove?: boolean;
72
+ autoResume?: boolean;
73
+ send(id: string, payload: Payload): void;
74
+ }
75
+ export type SearchPlatform = "deezer" | "soundcloud" | "youtube music" | "youtube" | "spotify";
76
+ export interface SearchQuery {
77
+ source?: SearchPlatform | string;
78
+ query: string;
79
+ }
80
+ export interface LavalinkResponse {
81
+ loadType: LoadType;
82
+ data: TrackData[] | PlaylistRawData;
83
+ }
84
+ export interface SearchResult {
85
+ loadType: LoadType;
86
+ tracks: Track[];
87
+ playlist?: PlaylistData;
88
+ }
89
+ export interface PlaylistRawData {
90
+ info: {
91
+ name: string;
92
+ };
93
+ pluginInfo: {
94
+ url: string;
95
+ };
96
+ tracks: TrackData[];
97
+ }
98
+ export interface PlaylistData {
99
+ name: string;
100
+ duration: number;
101
+ tracks: Track[];
102
+ url: string;
103
+ }
104
+ //# sourceMappingURL=Manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Manager.d.ts","sourceRoot":"","sources":["../../src/structures/Manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Manager = exports.REQUIRED_PAYLOAD_KEYS = exports.REQUIRED_KEYS = void 0;
16
+ const Utils_1 = require("./Utils");
17
+ const collection_1 = require("@discordjs/collection");
18
+ const events_1 = require("events");
19
+ const __1 = require("..");
20
+ const Database_1 = require("../utils/Database");
21
+ const ManagerCheck_1 = __importDefault(require("../utils/ManagerCheck"));
22
+ exports.REQUIRED_KEYS = ["event", "guild_id", "op", "sessionId"];
23
+ exports.REQUIRED_PAYLOAD_KEYS = exports.REQUIRED_KEYS;
24
+ class Manager extends events_1.EventEmitter {
25
+ get leastUsedNodes() {
26
+ return this.nodes.filter((node) => node.connected).sort((a, b) => a.stats.playingPlayers - b.stats.playingPlayers);
27
+ }
28
+ get leastLoadNodes() {
29
+ return this.nodes
30
+ .filter((node) => node.connected)
31
+ .sort((a, b) => {
32
+ const aload = a.stats.cpu ? (a.stats.cpu.lavalinkLoad / a.stats.cpu.cores) * 100 : 0;
33
+ const bload = b.stats.cpu ? (b.stats.cpu.lavalinkLoad / b.stats.cpu.cores) * 100 : 0;
34
+ return aload - bload;
35
+ });
36
+ }
37
+ constructor(options) {
38
+ super();
39
+ this.players = new collection_1.Collection();
40
+ this.nodes = new collection_1.Collection();
41
+ this.db = null;
42
+ this.initiated = false;
43
+ (0, ManagerCheck_1.default)(options);
44
+ Utils_1.Structure.get("Player").init(this);
45
+ Utils_1.Structure.get("Node").init(this);
46
+ Utils_1.TrackUtils.init(this);
47
+ if (options.trackPartial) {
48
+ Utils_1.TrackUtils.setTrackPartial(options.trackPartial);
49
+ delete options.trackPartial;
50
+ }
51
+ this.options = Object.assign({ plugins: [], nodes: [], autoPlay: true, clientName: `Kawalink/${__1.version} (https://github.com/x2super/kawalink)`, defaultSearchPlatform: "youtube music", autoMove: true, autoResume: true, shards: 0 }, options);
52
+ if (this.options.plugins) {
53
+ for (const [index, plugin] of this.options.plugins.entries()) {
54
+ if (!(plugin instanceof Utils_1.Plugin))
55
+ throw new RangeError(`Plugin at index ${index} does not extend Plugin.`);
56
+ plugin.load(this);
57
+ }
58
+ }
59
+ if (this.options.nodes) {
60
+ for (const nodeOptions of this.options.nodes)
61
+ new (Utils_1.Structure.get("Node"))(nodeOptions);
62
+ }
63
+ }
64
+ init(clientId) {
65
+ var _a;
66
+ if (this.initiated)
67
+ return this;
68
+ if (typeof clientId !== "undefined")
69
+ this.options.clientId = clientId;
70
+ if (typeof this.options.clientId !== "string")
71
+ throw new Error('"clientId" set is not type of "string"');
72
+ if (!this.options.clientId)
73
+ throw new Error('"clientId" is not set. Pass it in Manager#init() or as a option in the constructor.');
74
+ this.db = new Database_1.Database(this.options.clientId, ((_a = this.options.shards) !== null && _a !== void 0 ? _a : 0));
75
+ for (const node of this.nodes.values()) {
76
+ try {
77
+ node.connect();
78
+ }
79
+ catch (err) {
80
+ this.emit("nodeError", node, err);
81
+ }
82
+ }
83
+ this.initiated = true;
84
+ return this;
85
+ }
86
+ search(query, requester) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ var _a, _b;
89
+ const node = this.nodes.filter((node) => node.connected && node.options.search).size > 0 ? this.nodes.filter((node) => node.connected && node.options.search).first() : this.leastLoadNodes.first();
90
+ if (!node)
91
+ throw new Error("No available nodes.");
92
+ const _query = typeof query === "string" ? { query } : query;
93
+ const _source = (_b = Manager.DEFAULT_SOURCES[(_a = _query.source) !== null && _a !== void 0 ? _a : this.options.defaultSearchPlatform]) !== null && _b !== void 0 ? _b : _query.source;
94
+ let search = _query.query;
95
+ if (!/^https?:\/\//.test(search))
96
+ search = `${_source}:${search}`;
97
+ try {
98
+ const res = (yield node.rest.get(`/${node.options.version}/loadtracks?identifier=${encodeURIComponent(search)}`));
99
+ if (!res) {
100
+ throw new Error("Query not found.");
101
+ }
102
+ let searchData = [];
103
+ let playlistData;
104
+ switch (res.loadType) {
105
+ case "search":
106
+ searchData = res.data;
107
+ break;
108
+ case "track":
109
+ searchData = [res.data];
110
+ break;
111
+ case "playlist":
112
+ playlistData = res.data;
113
+ break;
114
+ }
115
+ const tracks = searchData.map((track) => Utils_1.TrackUtils.build(track, requester));
116
+ const playlist = res.loadType === "playlist"
117
+ ? {
118
+ name: playlistData.info.name,
119
+ tracks: playlistData.tracks.map((track) => Utils_1.TrackUtils.build(track, requester)),
120
+ duration: playlistData.tracks.reduce((acc, cur) => acc + (cur.info.length || 0), 0),
121
+ url: playlistData.pluginInfo.url,
122
+ }
123
+ : null;
124
+ const result = {
125
+ loadType: res.loadType,
126
+ tracks: tracks || playlistData.tracks.map((track) => Utils_1.TrackUtils.build(track, requester)),
127
+ playlist,
128
+ };
129
+ return result;
130
+ }
131
+ catch (err) {
132
+ throw new Error(err);
133
+ }
134
+ });
135
+ }
136
+ decodeTracks(tracks) {
137
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
138
+ const node = this.nodes.filter((node) => node.connected && node.options.search).size > 0 ? this.nodes.filter((node) => node.connected && node.options.search).first() : this.leastLoadNodes.first();
139
+ if (!node)
140
+ throw new Error("No available nodes.");
141
+ const res = (yield node.rest.post(`/${node.options.version}/decodetracks`, JSON.stringify(tracks)).catch((err) => reject(err)));
142
+ if (!res) {
143
+ return reject(new Error("No data returned from query."));
144
+ }
145
+ return resolve(res);
146
+ }));
147
+ }
148
+ decodeTrack(track) {
149
+ return __awaiter(this, void 0, void 0, function* () {
150
+ const res = yield this.decodeTracks([track]);
151
+ return res[0];
152
+ });
153
+ }
154
+ create(options) {
155
+ if (this.players.has(options.guild))
156
+ return this.players.get(options.guild);
157
+ return new (Utils_1.Structure.get("Player"))(options);
158
+ }
159
+ get(guild) {
160
+ return this.players.get(guild);
161
+ }
162
+ destroy(guild) {
163
+ this.players.delete(guild);
164
+ }
165
+ createNode(options) {
166
+ if (this.nodes.has(options.identifier || options.host)) {
167
+ return this.nodes.get(options.identifier || options.host);
168
+ }
169
+ return new (Utils_1.Structure.get("Node"))(options);
170
+ }
171
+ destroyNode(identifier) {
172
+ const node = this.nodes.get(identifier);
173
+ if (!node)
174
+ return;
175
+ node.destroy();
176
+ this.nodes.delete(identifier);
177
+ }
178
+ updateVoiceState(data) {
179
+ return __awaiter(this, void 0, void 0, function* () {
180
+ if ("t" in data && !["VOICE_STATE_UPDATE", "VOICE_SERVER_UPDATE"].includes(data.t))
181
+ return;
182
+ const voiceState = "d" in data ? data.d : data;
183
+ if (!voiceState || (!("token" in voiceState) && !("session_id" in voiceState)))
184
+ return;
185
+ const player = this.players.get(voiceState.guild_id);
186
+ if (!player)
187
+ return;
188
+ if ("token" in voiceState) {
189
+ player.voiceState.event = voiceState;
190
+ yield player.node.rest.updatePlayer({
191
+ guildId: player.guild,
192
+ data: {
193
+ voice: {
194
+ token: voiceState.token,
195
+ endpoint: voiceState.endpoint,
196
+ sessionId: player.voiceState.sessionId,
197
+ },
198
+ },
199
+ });
200
+ }
201
+ else {
202
+ if (voiceState.user_id !== this.options.clientId)
203
+ return;
204
+ if (voiceState.channel_id) {
205
+ if (player.voiceChannel !== voiceState.channel_id)
206
+ this.emit("playerMove", player, player.voiceChannel, voiceState.channel_id);
207
+ player.voiceState.sessionId = voiceState.session_id;
208
+ player.voiceChannel = voiceState.channel_id;
209
+ }
210
+ else {
211
+ this.emit("playerDisconnect", player, player.voiceChannel);
212
+ player.voiceChannel = null;
213
+ player.voiceState = Object.assign({});
214
+ player.destroy();
215
+ }
216
+ }
217
+ });
218
+ }
219
+ }
220
+ exports.Manager = Manager;
221
+ Manager.DEFAULT_SOURCES = {
222
+ "youtube music": "ytmsearch",
223
+ youtube: "ytsearch",
224
+ soundcloud: "scsearch",
225
+ deezer: "dzsearch",
226
+ spotify: "spotify"
227
+ };
228
+ //# sourceMappingURL=Manager.js.map