poru 3.7.3 → 4.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.
Files changed (72) hide show
  1. package/.gitpod.yml +2 -0
  2. package/README.md +6 -8
  3. package/Upcoming.md +12 -0
  4. package/dist/index.d.ts +7 -0
  5. package/dist/index.js +24 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +10 -0
  8. package/dist/src/Connection.d.ts +17 -0
  9. package/dist/src/Connection.js +51 -0
  10. package/dist/src/Connection.js.map +1 -0
  11. package/dist/src/Error.d.ts +3 -0
  12. package/dist/src/Error.js +8 -0
  13. package/dist/src/Error.js.map +1 -0
  14. package/dist/src/Filters.d.ts +77 -0
  15. package/dist/src/Filters.js +95 -0
  16. package/dist/src/Filters.js.map +1 -0
  17. package/dist/src/Node.d.ts +59 -0
  18. package/dist/src/Node.js +177 -0
  19. package/dist/src/Node.js.map +1 -0
  20. package/dist/src/Player.d.ts +48 -0
  21. package/dist/src/Player.js +234 -0
  22. package/dist/src/Player.js.map +1 -0
  23. package/dist/src/Plugin.d.ts +6 -0
  24. package/dist/src/Plugin.js +12 -0
  25. package/dist/src/Plugin.js.map +1 -0
  26. package/dist/src/Poru.d.ts +57 -0
  27. package/dist/src/Poru.js +211 -0
  28. package/dist/src/Poru.js.map +1 -0
  29. package/dist/src/Rest.d.ts +31 -0
  30. package/dist/src/Rest.js +72 -0
  31. package/dist/src/Rest.js.map +1 -0
  32. package/dist/src/config.d.ts +4 -0
  33. package/dist/src/config.js +9 -0
  34. package/dist/src/config.js.map +1 -0
  35. package/dist/src/guild/Queue.d.ts +10 -0
  36. package/dist/src/guild/Queue.js +31 -0
  37. package/dist/src/guild/Queue.js.map +1 -0
  38. package/dist/src/guild/Response.d.ts +21 -0
  39. package/dist/src/guild/Response.js +16 -0
  40. package/dist/src/guild/Response.js.map +1 -0
  41. package/dist/src/guild/Track.d.ts +23 -0
  42. package/dist/src/guild/Track.js +58 -0
  43. package/dist/src/guild/Track.js.map +1 -0
  44. package/index.ts +7 -0
  45. package/package.json +19 -7
  46. package/src/Connection.ts +66 -0
  47. package/src/Error.ts +5 -0
  48. package/src/Filters.ts +167 -0
  49. package/src/Node.ts +225 -0
  50. package/src/Player.ts +278 -0
  51. package/src/Plugin.ts +10 -0
  52. package/src/Poru.ts +256 -0
  53. package/src/Rest.ts +105 -0
  54. package/src/config.ts +4 -0
  55. package/src/guild/Queue.ts +36 -0
  56. package/src/guild/Response.ts +28 -0
  57. package/src/guild/{Track.js → Track.ts} +41 -15
  58. package/tsconfig.json +1 -0
  59. package/index.js +0 -12
  60. package/src/Node.js +0 -254
  61. package/src/Player.js +0 -338
  62. package/src/Poru.js +0 -305
  63. package/src/config.js +0 -31
  64. package/src/guild/Filter.js +0 -192
  65. package/src/guild/PoruTrack.js +0 -67
  66. package/src/guild/Queue.js +0 -35
  67. package/src/guild/Response.js +0 -11
  68. package/src/platform/AppleMusic.js +0 -224
  69. package/src/platform/Deezer.js +0 -218
  70. package/src/platform/Spotify.js +0 -319
  71. package/src/voiceConnection.js +0 -54
  72. package/typings/index.d.ts +0 -343
package/.gitpod.yml CHANGED
@@ -4,3 +4,5 @@
4
4
 
5
5
  tasks:
6
6
  - init: npm install
7
+
8
+
package/README.md CHANGED
@@ -73,17 +73,15 @@ const { Client, GatewayIntentBits } = require("discord.js");
73
73
  const { Poru } = require("poru");
74
74
  const nodes = [
75
75
  {
76
- name: "main_node",
76
+ name: "local-node",
77
77
  host: "localhost",
78
- port: 8080,
79
- password: "iloveyou3000",
78
+ port: 2333,
79
+ password: "youshallnotpass",
80
80
  },
81
81
  ];
82
82
  const PoruOptions = {
83
- reconnectTime: 0,
84
- resumeKey: "MyPlayers",
85
- resumeTimeout: 60,
86
- defaultPlatform: "ytsearch",
83
+ library:"discord.js"
84
+ defaultPlatform: "scsearch",
87
85
  };
88
86
  const client = new Client({
89
87
  intents: [
@@ -115,7 +113,7 @@ client.on("interactionCreate", async (interaction) => {
115
113
 
116
114
  const track = interaction.options.getString("track");
117
115
 
118
- const res = await client.poru.resolve(track);
116
+ const res = await client.poru.resolve({query:track,source:"scsearch",requester:interaction.member});
119
117
 
120
118
  if (res.loadType === "LOAD_FAILED") {
121
119
  return interaction.reply("Failed to load track.");
package/Upcoming.md ADDED
@@ -0,0 +1,12 @@
1
+
2
+ # V4 NEW UPDATES (COMING SOON)
3
+
4
+ ### -Direct play track from deezer,soundcloud and bandcamp P
5
+ ### -Auto pause player while no one in voice channel (toggle feature)
6
+ ### -Multi region better node management system (Node Balancing)
7
+ ### -Works with lavalink v4
8
+ ### -Fully memory optimized
9
+ ### -Whole package will rewrite in typescript
10
+ ### -Better filter management system
11
+ ### -Docs rewrite with better expalination
12
+ ### -Custom Plugin Support
@@ -0,0 +1,7 @@
1
+ export * from './src/Poru';
2
+ export * from './src/Plugin';
3
+ export * from './src/Connection';
4
+ export * from './src/Player';
5
+ export * from './src/Node';
6
+ export * from './src/Rest';
7
+ export * from './src/Filters';
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
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
+ __exportStar(require("./src/Poru"), exports);
18
+ __exportStar(require("./src/Plugin"), exports);
19
+ __exportStar(require("./src/Connection"), exports);
20
+ __exportStar(require("./src/Player"), exports);
21
+ __exportStar(require("./src/Node"), exports);
22
+ __exportStar(require("./src/Rest"), exports);
23
+ __exportStar(require("./src/Filters"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,+CAA4B;AAC5B,mDAAgC;AAChC,+CAA4B;AAC5B,6CAA0B;AAC1B,6CAA2B;AAC3B,gDAA8B"}
package/dist/index.mjs ADDED
@@ -0,0 +1,10 @@
1
+ import mod from "./index.js";
2
+
3
+ export default mod;
4
+ export const Connection = mod.Connection;
5
+ export const Filters = mod.Filters;
6
+ export const Node = mod.Node;
7
+ export const Player = mod.Player;
8
+ export const Plugin = mod.Plugin;
9
+ export const Poru = mod.Poru;
10
+ export const Rest = mod.Rest;
@@ -0,0 +1,17 @@
1
+ import { Player } from "./Player";
2
+ export interface IVoiceServer {
3
+ token: string;
4
+ sessionId: string;
5
+ endpoint: string;
6
+ }
7
+ export declare class Connection {
8
+ player: Player;
9
+ sessionId: string | null;
10
+ region: string | null;
11
+ voice: IVoiceServer | null;
12
+ self_mute: boolean;
13
+ self_deaf: boolean;
14
+ constructor(player: Player);
15
+ setServersUpdate(data: any): void;
16
+ setStateUpdate(data: any): void;
17
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Connection = void 0;
4
+ const Error_1 = require("./Error");
5
+ class Connection {
6
+ player;
7
+ sessionId;
8
+ region;
9
+ voice;
10
+ self_mute;
11
+ self_deaf;
12
+ constructor(player) {
13
+ this.player = player;
14
+ this.sessionId = null;
15
+ this.region = null;
16
+ this.voice = {
17
+ sessionId: null,
18
+ token: null,
19
+ endpoint: null,
20
+ };
21
+ this.self_mute = false;
22
+ this.self_deaf = false;
23
+ }
24
+ setServersUpdate(data) {
25
+ if (!data.endpoint)
26
+ throw new Error(Error_1.Errors.sessionNotFound);
27
+ this.voice.endpoint = data.endpoint;
28
+ this.voice.token = data.token;
29
+ this.region =
30
+ data.endpoint.split(".").shift()?.replace(/[0-9]/g, "") || null;
31
+ this.player.node.rest.updatePlayer({
32
+ guildId: this.player.guildId,
33
+ data: { voice: this.voice },
34
+ });
35
+ this.player.poru.emit("debug", this.player.node.name, `[Voice] <- [Discord] : Voice Server Update | Server: ${this.region} Guild: ${this.player.guildId}`);
36
+ }
37
+ setStateUpdate(data) {
38
+ const { session_id, channel_id, self_deaf, self_mute } = data;
39
+ if (this.player.voiceChannel &&
40
+ channel_id &&
41
+ this.player.voiceChannel !== channel_id) {
42
+ this.player.voiceChannel = channel_id;
43
+ }
44
+ this.self_deaf = self_deaf;
45
+ this.self_mute = self_mute;
46
+ this.voice.sessionId = session_id || null;
47
+ // this.player.poru.emit('debug', this.player.node.name, `[Voice] <- [Discord] : State Update Received | Channel: ${this.player.voiceChannel} Session ID: ${session_id} Guild: ${this.player.guildId}`);
48
+ }
49
+ }
50
+ exports.Connection = Connection;
51
+ //# sourceMappingURL=Connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Connection.js","sourceRoot":"","sources":["../../src/Connection.ts"],"names":[],"mappings":";;;AACA,mCAAiC;AAQjC,MAAa,UAAU;IACd,MAAM,CAAS;IACf,SAAS,CAAgB;IACzB,MAAM,CAAgB;IACtB,KAAK,CAAsB;IAC3B,SAAS,CAAU;IACnB,SAAS,CAAU;IAE1B,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG;YACX,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,gBAAgB,CAAC,IAAI;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,cAAM,CAAC,eAAe,CAAC,CAAC;QAE5D,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAE9B,IAAI,CAAC,MAAM;YACT,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;QAElE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;YACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CACnB,OAAO,EACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EACrB,wDAAwD,IAAI,CAAC,MAAM,WAAW,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CACpG,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,IAAI;QACjB,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAC9D,IACE,IAAI,CAAC,MAAM,CAAC,YAAY;YACxB,UAAU;YACV,IAAI,CAAC,MAAM,CAAC,YAAY,KAAK,UAAU,EACvC;YACA,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,UAAU,CAAC;SACvC;QAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,IAAI,IAAI,CAAC;QAC1C,yMAAyM;IAC3M,CAAC;CACF;AAxDD,gCAwDC"}
@@ -0,0 +1,3 @@
1
+ export declare enum Errors {
2
+ sessionNotFound = ""
3
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Errors = void 0;
4
+ var Errors;
5
+ (function (Errors) {
6
+ Errors["sessionNotFound"] = "";
7
+ })(Errors = exports.Errors || (exports.Errors = {}));
8
+ //# sourceMappingURL=Error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Error.js","sourceRoot":"","sources":["../../src/Error.ts"],"names":[],"mappings":";;;AACA,IAAY,MAGX;AAHD,WAAY,MAAM;IAElB,8BAAmB,CAAA;AACnB,CAAC,EAHW,MAAM,GAAN,cAAM,KAAN,cAAM,QAGjB"}
@@ -0,0 +1,77 @@
1
+ import { Player } from "./Player";
2
+ interface Band {
3
+ bands: number;
4
+ gain: number;
5
+ }
6
+ interface karaokeOptions {
7
+ level: number;
8
+ monoLevel: number;
9
+ filterBand: number;
10
+ filterWidth: number;
11
+ }
12
+ interface timescaleOptions {
13
+ speed?: number;
14
+ pitch?: number;
15
+ rate?: number;
16
+ }
17
+ interface tremoloOptions {
18
+ frequency: number;
19
+ depth: number;
20
+ }
21
+ interface vibratoOptions {
22
+ frequency: number;
23
+ depth: number;
24
+ }
25
+ interface rotationOptions {
26
+ rotationHz: number;
27
+ }
28
+ interface distortionOptions {
29
+ sinOffset?: number;
30
+ sinScale?: number;
31
+ cosOffset?: number;
32
+ cosScale?: number;
33
+ tanOffset?: number;
34
+ tanScale?: number;
35
+ offset?: number;
36
+ scale?: number;
37
+ }
38
+ export interface channelMixOptions {
39
+ leftToLeft?: number;
40
+ leftToRight?: number;
41
+ rightToLeft?: number;
42
+ rightToRight?: number;
43
+ }
44
+ interface lowPassOptions {
45
+ smoothing: number;
46
+ }
47
+ export declare class Filters {
48
+ player: Player;
49
+ volume: number;
50
+ equalizer: Band[];
51
+ karaoke: karaokeOptions;
52
+ tremolo: tremoloOptions;
53
+ vibrato: vibratoOptions;
54
+ rotation: rotationOptions;
55
+ distortion: distortionOptions;
56
+ channelMix: channelMixOptions;
57
+ lowPass: lowPassOptions;
58
+ timescale: timescaleOptions;
59
+ constructor(player: any);
60
+ setEqualizer(bands: Band[]): Filters;
61
+ /**
62
+ * Change the karaoke Options applied to the currently playing track
63
+ * @param karaoke An object that conforms to the KaraokeOptions type that defines a range of frequencies to mute
64
+ * @returns The current filter instance
65
+ */
66
+ setKaraoke(karaoke?: karaokeOptions): Filters;
67
+ setTimescale(timescale?: timescaleOptions): Filters;
68
+ setTremolo(tremolo?: tremoloOptions): Filters;
69
+ setVibrato(vibrato?: vibratoOptions): Filters;
70
+ setRotation(rotation?: rotationOptions): Filters;
71
+ setDistortion(distortion: distortionOptions): Filters;
72
+ setChannelMix(mix: channelMixOptions): Filters;
73
+ setLowPass(pass: lowPassOptions): Filters;
74
+ clearFilters(): Filters;
75
+ updateFilters(): Filters;
76
+ }
77
+ export {};
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Filters = void 0;
4
+ class Filters {
5
+ player;
6
+ volume;
7
+ equalizer;
8
+ karaoke;
9
+ tremolo;
10
+ vibrato;
11
+ rotation;
12
+ distortion;
13
+ channelMix;
14
+ lowPass;
15
+ timescale;
16
+ constructor(player) {
17
+ this.player = player;
18
+ (this.volume = 1.0),
19
+ (this.equalizer = []);
20
+ this.karaoke = null;
21
+ this.timescale = null;
22
+ this.tremolo = null;
23
+ this.vibrato = null;
24
+ this.rotation = null;
25
+ this.distortion = null;
26
+ this.channelMix = null;
27
+ this.lowPass = null;
28
+ }
29
+ setEqualizer(bands) {
30
+ this.equalizer = bands;
31
+ this.updateFilters();
32
+ return this;
33
+ }
34
+ /**
35
+ * Change the karaoke Options applied to the currently playing track
36
+ * @param karaoke An object that conforms to the KaraokeOptions type that defines a range of frequencies to mute
37
+ * @returns The current filter instance
38
+ */
39
+ setKaraoke(karaoke) {
40
+ this.karaoke = karaoke || null;
41
+ this.updateFilters();
42
+ return this;
43
+ }
44
+ setTimescale(timescale) {
45
+ this.timescale = timescale || null;
46
+ this.updateFilters();
47
+ return this;
48
+ }
49
+ setTremolo(tremolo) {
50
+ this.tremolo = tremolo || null;
51
+ this.updateFilters();
52
+ return this;
53
+ }
54
+ setVibrato(vibrato) {
55
+ this.vibrato = vibrato || null;
56
+ this.updateFilters();
57
+ return this;
58
+ }
59
+ setRotation(rotation) {
60
+ this.rotation = rotation || null;
61
+ this.updateFilters();
62
+ return this;
63
+ }
64
+ setDistortion(distortion) {
65
+ this.distortion = distortion || null;
66
+ this.updateFilters();
67
+ return this;
68
+ }
69
+ setChannelMix(mix) {
70
+ this.channelMix = mix || null;
71
+ this.updateFilters();
72
+ return this;
73
+ }
74
+ setLowPass(pass) {
75
+ this.lowPass = pass || null;
76
+ this.updateFilters();
77
+ return this;
78
+ }
79
+ clearFilters() {
80
+ this.player.filters = new Filters(this.player);
81
+ this.updateFilters();
82
+ return this;
83
+ }
84
+ updateFilters() {
85
+ const { equalizer, karaoke, timescale, tremolo, vibrato, rotation, distortion, channelMix, lowPass, volume } = this;
86
+ this.player.node.rest.updatePlayer({
87
+ guildId: this.player.guildId,
88
+ data: { filters: { volume, equalizer, karaoke, timescale, tremolo, vibrato, rotation, distortion, channelMix, lowPass,
89
+ } }
90
+ });
91
+ return this;
92
+ }
93
+ }
94
+ exports.Filters = Filters;
95
+ //# sourceMappingURL=Filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Filters.js","sourceRoot":"","sources":["../../src/Filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { Poru, PoruOptions, NodeGroup } from "./Poru";
2
+ import WebSocket from "ws";
3
+ import { Rest } from "./Rest";
4
+ export interface NodeStats {
5
+ players: number;
6
+ playingPlayers: number;
7
+ memory: {
8
+ reservable: number;
9
+ used: number;
10
+ free: number;
11
+ allocated: number;
12
+ };
13
+ frameStats: {
14
+ sent: number;
15
+ deficit: number;
16
+ nulled: number;
17
+ };
18
+ cpu: {
19
+ cores: number;
20
+ systemLoad: number;
21
+ lavalinkLoad: number;
22
+ };
23
+ uptime: number;
24
+ }
25
+ export declare class Node {
26
+ isConnected: boolean;
27
+ poru: Poru;
28
+ readonly name: string;
29
+ readonly restURL: string;
30
+ readonly socketURL: string;
31
+ password: string;
32
+ readonly secure: boolean;
33
+ readonly regions: Array<string>;
34
+ readonly sessionId: string;
35
+ rest: Rest;
36
+ ws: WebSocket | null;
37
+ readonly resumeKey: string | null;
38
+ readonly resumeTimeout: number;
39
+ readonly autoResume: boolean;
40
+ readonly reconnectTimeout: number;
41
+ reconnectTries: number;
42
+ reconnectAttempt: any;
43
+ attempt: number;
44
+ stats: NodeStats | null;
45
+ options: NodeGroup;
46
+ constructor(poru: Poru, node: NodeGroup, options: PoruOptions);
47
+ connect(): void;
48
+ send(payload: any): void;
49
+ reconnect(): void;
50
+ disconnect(): void;
51
+ get penalties(): number;
52
+ private open;
53
+ private setStats;
54
+ private message;
55
+ private close;
56
+ private error;
57
+ getRoutePlannerStatus(): Promise<any>;
58
+ unmarkFailedAddress(address: string): Promise<any>;
59
+ }
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Node = void 0;
7
+ const ws_1 = __importDefault(require("ws"));
8
+ const config_1 = require("./config");
9
+ const Rest_1 = require("./Rest");
10
+ class Node {
11
+ isConnected;
12
+ poru;
13
+ name;
14
+ restURL;
15
+ socketURL;
16
+ password;
17
+ secure;
18
+ regions;
19
+ sessionId;
20
+ rest;
21
+ ws;
22
+ resumeKey;
23
+ resumeTimeout;
24
+ autoResume;
25
+ reconnectTimeout;
26
+ reconnectTries;
27
+ reconnectAttempt;
28
+ attempt;
29
+ stats;
30
+ options;
31
+ constructor(poru, node, options) {
32
+ this.poru = poru;
33
+ this.name = node.name;
34
+ this.options = node;
35
+ this.restURL = `http${node.secure ? "s" : ""}://${node.host}:${node.port}`;
36
+ this.socketURL = `${this.secure ? "wss" : "ws"}://${node.host}:${node.port}/`;
37
+ this.password = node.password || "youshallnotpass";
38
+ this.secure = node.secure || false;
39
+ this.regions = node.region || null;
40
+ this.sessionId = null;
41
+ this.rest = new Rest_1.Rest(poru, this);
42
+ this.ws = null;
43
+ this.resumeKey = options.resumeKey || null;
44
+ this.resumeTimeout = options.resumeTimeout || 60;
45
+ this.autoResume = options.autoResume || false;
46
+ this.reconnectTimeout = options.reconnectTimeout || 5000;
47
+ this.reconnectTries = options.reconnectTries || 5;
48
+ this.reconnectAttempt = null;
49
+ this.attempt = 0;
50
+ this.isConnected = false;
51
+ this.stats = null;
52
+ }
53
+ connect() {
54
+ if (this.ws)
55
+ this.ws.close();
56
+ const headers = {
57
+ Authorization: this.password,
58
+ "User-Id": this.poru.userId,
59
+ "Client-Name": config_1.Config.clientName,
60
+ };
61
+ if (this.resumeKey)
62
+ headers["Resume-Key"] = this.resumeKey;
63
+ this.ws = new ws_1.default(this.socketURL, { headers });
64
+ this.ws.on("open", this.open.bind(this));
65
+ this.ws.on("error", this.error.bind(this));
66
+ this.ws.on("message", this.message.bind(this));
67
+ this.ws.on("close", this.close.bind(this));
68
+ }
69
+ send(payload) {
70
+ const data = JSON.stringify(payload);
71
+ this.ws.send(data, (error) => {
72
+ if (error)
73
+ return error;
74
+ return null;
75
+ });
76
+ }
77
+ reconnect() {
78
+ this.reconnectAttempt = setTimeout(() => {
79
+ if (this.attempt > this.reconnectTries) {
80
+ throw new Error(`[Poru Websocket] Unable to connect with ${this.name} node after ${this.reconnectTries} tries`);
81
+ }
82
+ this.isConnected = false;
83
+ this.ws?.removeAllListeners();
84
+ this.ws = null;
85
+ this.poru.emit("nodeReconnect", this);
86
+ this.connect();
87
+ this.attempt++;
88
+ }, this.reconnectTimeout);
89
+ }
90
+ disconnect() {
91
+ if (!this.isConnected)
92
+ return;
93
+ this.poru.players.forEach((player) => {
94
+ if (player.node == this) {
95
+ player.move();
96
+ }
97
+ });
98
+ this.ws.close(1000, "destroy");
99
+ this.ws?.removeAllListeners();
100
+ this.ws = null;
101
+ // this.reconnect = 1;
102
+ this.poru.nodes.delete(this.name);
103
+ this.poru.emit("nodeDisconnect", this);
104
+ }
105
+ get penalties() {
106
+ let penalties = 0;
107
+ if (!this.isConnected)
108
+ return penalties;
109
+ penalties += this.stats.players;
110
+ penalties += Math.round(Math.pow(1.05, 100 * this.stats.cpu.systemLoad) * 10 - 10);
111
+ if (this.stats.frameStats) {
112
+ penalties += this.stats.frameStats.deficit;
113
+ penalties += this.stats.frameStats.nulled * 2;
114
+ }
115
+ return penalties;
116
+ }
117
+ open() {
118
+ if (this.reconnectAttempt) {
119
+ clearTimeout(this.reconnectAttempt);
120
+ delete this.reconnectAttempt;
121
+ }
122
+ if (this.resumeKey) {
123
+ this.rest.patch(`/v3/sessions/${this.sessionId}`, { resumingKey: this.resumeKey, timeout: this.resumeTimeout });
124
+ this.poru.emit("debug", this.name, `[Lavalink Resr\t] Resuming configured on Lavalink`);
125
+ }
126
+ this.poru.emit("nodeConnect", this);
127
+ this.isConnected = true;
128
+ this.poru.emit("debug", this.name, `[Web Socket] Connection ready ${this.socketURL}`);
129
+ if (this.autoResume) {
130
+ for (const player of this.poru.players.values()) {
131
+ if (player.node === this) {
132
+ player.restart();
133
+ }
134
+ }
135
+ }
136
+ }
137
+ setStats(packet) {
138
+ this.stats = packet;
139
+ }
140
+ async message(payload) {
141
+ const packet = JSON.parse(payload);
142
+ if (!packet?.op)
143
+ return;
144
+ if (packet.op === "stats") {
145
+ delete packet.op;
146
+ this.setStats(packet);
147
+ }
148
+ if (packet.op === "ready") {
149
+ this.rest.setSessionId(packet.sessionId);
150
+ }
151
+ const player = this.poru.players.get(packet.guildId);
152
+ if (packet.guildId && player)
153
+ player.emit(packet.op, packet);
154
+ this.poru.emit("debug", this.name, `[Web Socket] Lavalink Node Update : ${packet.op} `);
155
+ }
156
+ close(event) {
157
+ this.disconnect();
158
+ this.poru.emit("nodeDisconnect", this, event);
159
+ this.poru.emit("debug", this.name, `[Web Socket] Connection with Lavalink closed with Error code : ${event || "Unknown code"}`);
160
+ if (event !== 1000)
161
+ this.reconnect();
162
+ }
163
+ error(event) {
164
+ if (!event)
165
+ return;
166
+ this.poru.emit("nodeError", this, event);
167
+ this.poru.emit("debug", this.name, `[Web Socket] Connection for Lavalink node has error code: ${event.code || event}`);
168
+ }
169
+ async getRoutePlannerStatus() {
170
+ return this.rest.get(` /v3/routeplanner/status`);
171
+ }
172
+ async unmarkFailedAddress(address) {
173
+ return this.rest.post(`${this.restURL}/v3/routeplanner/free/address`, { address });
174
+ }
175
+ }
176
+ exports.Node = Node;
177
+ //# sourceMappingURL=Node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Node.js","sourceRoot":"","sources":["../../src/Node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /// <reference types="node" />
2
+ import { Poru } from "./Poru";
3
+ import { Node } from "./Node";
4
+ import { Track } from "./guild/Track";
5
+ import { Connection } from "./Connection";
6
+ import Queue from "./guild/Queue";
7
+ import { EventEmitter } from "events";
8
+ import { Filters } from "./Filters";
9
+ declare type Loop = "NONE" | "TRACK" | "QUEUE";
10
+ export declare class Player extends EventEmitter {
11
+ poru: Poru;
12
+ node: Node;
13
+ connection: Connection;
14
+ queue: Queue;
15
+ filters: Filters;
16
+ guildId: string;
17
+ voiceChannel: string;
18
+ textChannel: string;
19
+ currentTrack: Track;
20
+ previousTrack: Track;
21
+ isPlaying: boolean;
22
+ isPaused: boolean;
23
+ isConnected: boolean;
24
+ loop: Loop;
25
+ position: number;
26
+ ping: number;
27
+ timestamp: number;
28
+ mute: boolean;
29
+ deaf: boolean;
30
+ volume: number;
31
+ constructor(poru: Poru, node: Node, options: any);
32
+ play(): Promise<void>;
33
+ connect(options?: this): void;
34
+ stop(): this;
35
+ pause(toggle?: boolean): this;
36
+ seekTo(position: number): void;
37
+ setVolume(volume: number): this;
38
+ setLoop(mode: Loop): this;
39
+ setTextChannel(channel: string): this;
40
+ setVoiceChannel(channel: string): this;
41
+ disconnect(): this;
42
+ destroy(): void;
43
+ restart(): void;
44
+ move(): void;
45
+ eventHandler(data: any): boolean | Promise<void>;
46
+ send(data: any): void;
47
+ }
48
+ export {};