yukimu 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BitrateOptimizer.d.ts +52 -0
- package/dist/BitrateOptimizer.d.ts.map +1 -0
- package/dist/BitrateOptimizer.js +115 -0
- package/dist/BitrateOptimizer.js.map +1 -0
- package/dist/ConnectionPool.d.ts +52 -3
- package/dist/ConnectionPool.d.ts.map +1 -1
- package/dist/ConnectionPool.js +124 -32
- package/dist/ConnectionPool.js.map +1 -1
- package/dist/Constants.d.ts +27 -2
- package/dist/Constants.d.ts.map +1 -1
- package/dist/Constants.js +133 -11
- package/dist/Constants.js.map +1 -1
- package/dist/Logger.d.ts +22 -0
- package/dist/Logger.d.ts.map +1 -0
- package/dist/Logger.js +74 -0
- package/dist/Logger.js.map +1 -0
- package/dist/Node.d.ts +17 -4
- package/dist/Node.d.ts.map +1 -1
- package/dist/Node.js +226 -88
- package/dist/Node.js.map +1 -1
- package/dist/Player.d.ts +74 -7
- package/dist/Player.d.ts.map +1 -1
- package/dist/Player.js +317 -92
- package/dist/Player.js.map +1 -1
- package/dist/Plugin.d.ts +19 -1
- package/dist/Plugin.d.ts.map +1 -1
- package/dist/Plugin.js +8 -0
- package/dist/Plugin.js.map +1 -1
- package/dist/Queue.d.ts +69 -2
- package/dist/Queue.d.ts.map +1 -1
- package/dist/Queue.js +138 -17
- package/dist/Queue.js.map +1 -1
- package/dist/Resolver.d.ts +33 -2
- package/dist/Resolver.d.ts.map +1 -1
- package/dist/Resolver.js +225 -33
- package/dist/Resolver.js.map +1 -1
- package/dist/Rest.d.ts +27 -4
- package/dist/Rest.d.ts.map +1 -1
- package/dist/Rest.js +157 -25
- package/dist/Rest.js.map +1 -1
- package/dist/TrackCache.d.ts +30 -5
- package/dist/TrackCache.d.ts.map +1 -1
- package/dist/TrackCache.js +119 -15
- package/dist/TrackCache.js.map +1 -1
- package/dist/WsQueue.d.ts +31 -1
- package/dist/WsQueue.d.ts.map +1 -1
- package/dist/WsQueue.js +70 -12
- package/dist/WsQueue.js.map +1 -1
- package/dist/Yukimu.d.ts +38 -5
- package/dist/Yukimu.d.ts.map +1 -1
- package/dist/Yukimu.js +150 -57
- package/dist/Yukimu.js.map +1 -1
- package/dist/connector/Connector.d.ts +26 -0
- package/dist/connector/Connector.d.ts.map +1 -1
- package/dist/connector/Connector.js +28 -0
- package/dist/connector/Connector.js.map +1 -1
- package/dist/connector/DiscordJS.d.ts +20 -1
- package/dist/connector/DiscordJS.d.ts.map +1 -1
- package/dist/connector/DiscordJS.js +44 -2
- package/dist/connector/DiscordJS.js.map +1 -1
- package/dist/connector/Eris.d.ts +12 -1
- package/dist/connector/Eris.d.ts.map +1 -1
- package/dist/connector/Eris.js +40 -6
- package/dist/connector/Eris.js.map +1 -1
- package/dist/connector/Oceanic.d.ts +12 -1
- package/dist/connector/Oceanic.d.ts.map +1 -1
- package/dist/connector/Oceanic.js +39 -4
- package/dist/connector/Oceanic.js.map +1 -1
- package/dist/errors/YukimuError.d.ts +40 -4
- package/dist/errors/YukimuError.d.ts.map +1 -1
- package/dist/errors/YukimuError.js +79 -8
- package/dist/errors/YukimuError.js.map +1 -1
- package/dist/index.d.ts +13 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -16
- package/dist/index.js.map +1 -1
- package/dist/plugins/AutoResume.d.ts +18 -1
- package/dist/plugins/AutoResume.d.ts.map +1 -1
- package/dist/plugins/AutoResume.js +109 -21
- package/dist/plugins/AutoResume.js.map +1 -1
- package/dist/plugins/AutoplayPlugin.d.ts +35 -0
- package/dist/plugins/AutoplayPlugin.d.ts.map +1 -0
- package/dist/plugins/AutoplayPlugin.js +111 -0
- package/dist/plugins/AutoplayPlugin.js.map +1 -0
- package/dist/plugins/InactivityPlugin.d.ts +30 -0
- package/dist/plugins/InactivityPlugin.d.ts.map +1 -0
- package/dist/plugins/InactivityPlugin.js +86 -0
- package/dist/plugins/InactivityPlugin.js.map +1 -0
- package/dist/plugins/PlayerMoved.d.ts +23 -1
- package/dist/plugins/PlayerMoved.d.ts.map +1 -1
- package/dist/plugins/PlayerMoved.js +57 -12
- package/dist/plugins/PlayerMoved.js.map +1 -1
- package/dist/types.d.ts +198 -71
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +49 -5
- package/.cache/replit/env/latest +0 -88
- package/.cache/replit/env/latest.json +0 -1
- package/.cache/replit/modules/nodejs-20.res +0 -1
- package/.cache/replit/modules/python-3.11.res +0 -1
- package/.cache/replit/modules/replit.res +0 -1
- package/.cache/replit/modules.stamp +0 -0
- package/.cache/replit/nix/dotreplitenv.json +0 -1
- package/.cache/replit/toolchain.json +0 -1
- package/.local/state/workflow-logs/7zVU0iVo-fBL1ccMCmELy/configure_your_app.packager.installForAll.0 +0 -9
- package/.local/state/workflow-logs/7zVU0iVo-fBL1ccMCmELy/configure_your_app.shell.exec.1 +0 -1
- package/.local/state/workflow-logs/KRgHXizaECjWI5nWtS7Dj/configure_your_app.packager.installForAll.0 +0 -1
- package/.local/state/workflow-logs/KRgHXizaECjWI5nWtS7Dj/configure_your_app.shell.exec.1 +0 -1
- package/.local/state/workflow-logs/U0AinJQVHonnwGjj0RXLn/configure_your_app.packager.installForAll.0 +0 -2
- package/.local/state/workflow-logs/jVavLOnv1MqxUvxhMmqER/configure_your_app.packager.installForAll.0 +0 -1
- package/.local/state/workflow-logs/jVavLOnv1MqxUvxhMmqER/configure_your_app.shell.exec.1 +0 -1
- package/.replit +0 -7
- package/.upm/store.json +0 -1
- package/src/ConnectionPool.ts +0 -114
- package/src/Constants.ts +0 -45
- package/src/Node.ts +0 -302
- package/src/Player.ts +0 -332
- package/src/Plugin.ts +0 -7
- package/src/Queue.ts +0 -66
- package/src/Resolver.ts +0 -90
- package/src/Rest.ts +0 -127
- package/src/TrackCache.ts +0 -46
- package/src/WsQueue.ts +0 -58
- package/src/Yukimu.ts +0 -213
- package/src/connector/Connector.ts +0 -13
- package/src/connector/DiscordJS.ts +0 -26
- package/src/connector/Eris.ts +0 -24
- package/src/connector/Oceanic.ts +0 -22
- package/src/errors/YukimuError.ts +0 -31
- package/src/index.ts +0 -24
- package/src/plugins/AutoResume.ts +0 -37
- package/src/plugins/PlayerMoved.ts +0 -26
- package/src/types.ts +0 -145
- package/tsconfig.json +0 -22
package/dist/Constants.js
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/** Yukimu v2.0.0 — Constants & Enumerations */
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.STOPPED_REASONS = exports.URL_PATTERNS = exports.SOURCE_PREFIXES = exports.PlayerState = exports.State = exports.CLIENT_NAME = exports.VERSION = void 0;
|
|
4
|
-
exports.VERSION = "
|
|
4
|
+
exports.DEFAULTS = exports.BITRATE_BY_BOOST_TIER = exports.WS_CLOSE_CODES = exports.STOPPED_REASONS = exports.URL_PATTERNS = exports.SOURCE_PREFIXES = exports.PlayerState = exports.State = exports.CLIENT_NAME = exports.VERSION = void 0;
|
|
5
|
+
exports.VERSION = "2.0.0";
|
|
5
6
|
exports.CLIENT_NAME = `Yukimu/${exports.VERSION}`;
|
|
7
|
+
// ─── Node Connection State ──────────────────────────────────────────────────
|
|
6
8
|
var State;
|
|
7
9
|
(function (State) {
|
|
8
10
|
State[State["CONNECTING"] = 0] = "CONNECTING";
|
|
11
|
+
/** WebSocket open, waiting for ready op */
|
|
9
12
|
State[State["NEARLY"] = 1] = "NEARLY";
|
|
13
|
+
/** Fully connected and ready */
|
|
10
14
|
State[State["CONNECTED"] = 2] = "CONNECTED";
|
|
11
15
|
State[State["DISCONNECTING"] = 3] = "DISCONNECTING";
|
|
12
16
|
State[State["DISCONNECTED"] = 4] = "DISCONNECTED";
|
|
13
17
|
State[State["RECONNECTING"] = 5] = "RECONNECTING";
|
|
14
18
|
})(State || (exports.State = State = {}));
|
|
19
|
+
// ─── Player Connection State ────────────────────────────────────────────────
|
|
15
20
|
var PlayerState;
|
|
16
21
|
(function (PlayerState) {
|
|
17
22
|
PlayerState[PlayerState["CONNECTING"] = 0] = "CONNECTING";
|
|
@@ -19,6 +24,9 @@ var PlayerState;
|
|
|
19
24
|
PlayerState[PlayerState["DISCONNECTING"] = 2] = "DISCONNECTING";
|
|
20
25
|
PlayerState[PlayerState["DISCONNECTED"] = 3] = "DISCONNECTED";
|
|
21
26
|
})(PlayerState || (exports.PlayerState = PlayerState = {}));
|
|
27
|
+
// ─── Source Search Prefixes ─────────────────────────────────────────────────
|
|
28
|
+
// These are the Lavalink search prefixes used when the query is not a URL.
|
|
29
|
+
// Requires corresponding Lavalink plugins (LavaSrc, Topis-Source-Manager, etc.)
|
|
22
30
|
exports.SOURCE_PREFIXES = {
|
|
23
31
|
youtube: "ytsearch",
|
|
24
32
|
youtubemusic: "ytmsearch",
|
|
@@ -29,18 +37,132 @@ exports.SOURCE_PREFIXES = {
|
|
|
29
37
|
tidal: "tdsearch",
|
|
30
38
|
jiosaavn: "jssearch",
|
|
31
39
|
yandexmusic: "ymsearch",
|
|
40
|
+
bandcamp: "bcsearch",
|
|
41
|
+
vimeo: "vmsearch",
|
|
42
|
+
twitch: "twsearch",
|
|
43
|
+
bilibili: "blsearch",
|
|
44
|
+
mixcloud: "mxsearch",
|
|
45
|
+
http: "http",
|
|
32
46
|
};
|
|
47
|
+
// ─── URL Detection Patterns ─────────────────────────────────────────────────
|
|
48
|
+
// Used to auto-detect the source platform from a URL so the user doesn't
|
|
49
|
+
// have to specify the source manually.
|
|
33
50
|
exports.URL_PATTERNS = {
|
|
34
|
-
youtube: [
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
51
|
+
youtube: [
|
|
52
|
+
/^https?:\/\/(www\.)?(youtube\.com|youtu\.be)\/.+/,
|
|
53
|
+
/^https?:\/\/music\.youtube\.com\/.+/,
|
|
54
|
+
/^https?:\/\/(www\.)?youtube\.com\/shorts\/.+/,
|
|
55
|
+
],
|
|
56
|
+
spotify: [
|
|
57
|
+
/^https?:\/\/open\.spotify\.com\/(track|album|playlist|artist|episode|show)\/.+/,
|
|
58
|
+
],
|
|
59
|
+
soundcloud: [
|
|
60
|
+
/^https?:\/\/(www\.|m\.)?soundcloud\.com\/.+/,
|
|
61
|
+
/^https?:\/\/on\.soundcloud\.com\/.+/,
|
|
62
|
+
],
|
|
63
|
+
deezer: [
|
|
64
|
+
/^https?:\/\/(www\.)?deezer\.com\/(track|album|playlist|artist)\/.+/,
|
|
65
|
+
],
|
|
66
|
+
applemusic: [
|
|
67
|
+
/^https?:\/\/music\.apple\.com\/.+/,
|
|
68
|
+
],
|
|
69
|
+
tidal: [
|
|
70
|
+
/^https?:\/\/(www\.|listen\.)?tidal\.com\/.+/,
|
|
71
|
+
],
|
|
72
|
+
jiosaavn: [
|
|
73
|
+
/^https?:\/\/(www\.)?jiosaavn\.com\/.+/,
|
|
74
|
+
],
|
|
75
|
+
yandexmusic: [
|
|
76
|
+
/^https?:\/\/music\.yandex\.(ru|com|by|kz|uz)\/.+/,
|
|
77
|
+
],
|
|
78
|
+
bandcamp: [
|
|
79
|
+
/^https?:\/\/[a-zA-Z0-9-]+\.bandcamp\.com\/.+/,
|
|
80
|
+
/^https?:\/\/(www\.)?bandcamp\.com\/.+/,
|
|
81
|
+
],
|
|
82
|
+
vimeo: [
|
|
83
|
+
/^https?:\/\/(www\.|player\.)?vimeo\.com\/.+/,
|
|
84
|
+
],
|
|
85
|
+
twitch: [
|
|
86
|
+
/^https?:\/\/(www\.|clips\.)?twitch\.tv\/.+/,
|
|
87
|
+
],
|
|
88
|
+
tiktok: [
|
|
89
|
+
/^https?:\/\/(www\.|vm\.|vt\.)?tiktok\.com\/.+/,
|
|
90
|
+
],
|
|
91
|
+
facebook: [
|
|
92
|
+
/^https?:\/\/(www\.|m\.|fb\.)?facebook\.com\/.+/,
|
|
93
|
+
/^https?:\/\/fb\.watch\/.+/,
|
|
94
|
+
],
|
|
95
|
+
twitter: [
|
|
96
|
+
/^https?:\/\/(www\.)?(twitter\.com|x\.com)\/.+/,
|
|
97
|
+
],
|
|
98
|
+
reddit: [
|
|
99
|
+
/^https?:\/\/(www\.|old\.|new\.)?reddit\.com\/.+/,
|
|
100
|
+
/^https?:\/\/v\.redd\.it\/.+/,
|
|
101
|
+
],
|
|
102
|
+
instagram: [
|
|
103
|
+
/^https?:\/\/(www\.)?instagram\.com\/(p|reel|tv)\/.+/,
|
|
104
|
+
],
|
|
105
|
+
pornhub: [
|
|
106
|
+
/^https?:\/\/(www\.)?pornhub\.com\/view_video.+/,
|
|
107
|
+
],
|
|
108
|
+
mixcloud: [
|
|
109
|
+
/^https?:\/\/(www\.)?mixcloud\.com\/.+/,
|
|
110
|
+
],
|
|
111
|
+
bilibili: [
|
|
112
|
+
/^https?:\/\/(www\.)?bilibili\.com\/video\/.+/,
|
|
113
|
+
/^https?:\/\/b23\.tv\/.+/,
|
|
114
|
+
],
|
|
42
115
|
};
|
|
116
|
+
// ─── Track End Reasons ──────────────────────────────────────────────────────
|
|
117
|
+
// These indicate that track replacement or manual stop occurred,
|
|
118
|
+
// so we should NOT auto-advance the queue.
|
|
43
119
|
exports.STOPPED_REASONS = new Set([
|
|
44
|
-
"replaced",
|
|
120
|
+
"replaced",
|
|
121
|
+
"stopped",
|
|
122
|
+
"cleanup",
|
|
123
|
+
"REPLACED",
|
|
124
|
+
"STOPPED",
|
|
125
|
+
"CLEANUP",
|
|
45
126
|
]);
|
|
127
|
+
// ─── WebSocket Close Codes ──────────────────────────────────────────────────
|
|
128
|
+
exports.WS_CLOSE_CODES = {
|
|
129
|
+
1000: "Normal closure",
|
|
130
|
+
1001: "Going away",
|
|
131
|
+
1006: "Abnormal closure",
|
|
132
|
+
4001: "Unknown opcode",
|
|
133
|
+
4002: "Failed to decode payload",
|
|
134
|
+
4003: "Not authenticated",
|
|
135
|
+
4004: "Authentication failed",
|
|
136
|
+
4005: "Already authenticated",
|
|
137
|
+
4006: "Session no longer valid",
|
|
138
|
+
4009: "Session timeout",
|
|
139
|
+
4014: "Disconnected (channel deleted, kick, or stage)",
|
|
140
|
+
4015: "Voice server crashed",
|
|
141
|
+
};
|
|
142
|
+
exports.BITRATE_BY_BOOST_TIER = {
|
|
143
|
+
0: { maxBitrate: 96, recommendedVolume: 100, enhancedEQ: false },
|
|
144
|
+
1: { maxBitrate: 128, recommendedVolume: 100, enhancedEQ: false },
|
|
145
|
+
2: { maxBitrate: 256, recommendedVolume: 100, enhancedEQ: true },
|
|
146
|
+
3: { maxBitrate: 384, recommendedVolume: 100, enhancedEQ: true },
|
|
147
|
+
};
|
|
148
|
+
// ─── Default Configuration ──────────────────────────────────────────────────
|
|
149
|
+
exports.DEFAULTS = {
|
|
150
|
+
VOICE_CONNECTION_TIMEOUT: 15_000,
|
|
151
|
+
MAX_CACHE_SIZE: 1000,
|
|
152
|
+
CACHE_TTL: 3_600_000, // 1 hour
|
|
153
|
+
HEARTBEAT_INTERVAL: 30_000,
|
|
154
|
+
WS_SEND_TIMEOUT: 30_000,
|
|
155
|
+
WS_MAX_QUEUE: 100,
|
|
156
|
+
REST_TIMEOUT: 30_000,
|
|
157
|
+
REST_MAX_RETRIES: 3,
|
|
158
|
+
REST_RETRY_BASE_DELAY: 1000,
|
|
159
|
+
REST_RETRY_MAX_DELAY: 15_000,
|
|
160
|
+
NODE_CONNECTION_TIMEOUT: 10_000,
|
|
161
|
+
NODE_MAX_RETRIES: 5,
|
|
162
|
+
NODE_MAX_RECONNECT_DELAY: 30_000,
|
|
163
|
+
PREVIOUS_HISTORY_SIZE: 25,
|
|
164
|
+
CACHE_SWEEP_INTERVAL: 300_000, // 5 minutes
|
|
165
|
+
SPOTIFY_TOKEN_REFRESH_BUFFER: 30_000,
|
|
166
|
+
MAX_SEARCH_RETRIES: 2,
|
|
167
|
+
};
|
|
46
168
|
//# sourceMappingURL=Constants.js.map
|
package/dist/Constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Constants.js","sourceRoot":"","sources":["../src/Constants.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Constants.js","sourceRoot":"","sources":["../src/Constants.ts"],"names":[],"mappings":"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"}
|
package/dist/Logger.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Yukimu v2.0.0 — Configurable Logger System */
|
|
2
|
+
import type { LogLevel, YukimuLogger } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Built-in logger with configurable log levels.
|
|
5
|
+
* Users can inject their own logger (Winston, Pino, etc.) via YukimuOptions.
|
|
6
|
+
*/
|
|
7
|
+
export declare class Logger implements YukimuLogger {
|
|
8
|
+
private readonly prefix;
|
|
9
|
+
private level;
|
|
10
|
+
private custom?;
|
|
11
|
+
constructor(level?: LogLevel, custom?: YukimuLogger);
|
|
12
|
+
/** Update the log level at runtime */
|
|
13
|
+
setLevel(level: LogLevel): void;
|
|
14
|
+
/** Inject a custom logger implementation */
|
|
15
|
+
setCustomLogger(logger: YukimuLogger | undefined): void;
|
|
16
|
+
debug(message: string, ...args: unknown[]): void;
|
|
17
|
+
info(message: string, ...args: unknown[]): void;
|
|
18
|
+
warn(message: string, ...args: unknown[]): void;
|
|
19
|
+
error(message: string, ...args: unknown[]): void;
|
|
20
|
+
private timestamp;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAUtD;;;GAGG;AACH,qBAAa,MAAO,YAAW,YAAY;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAC,CAAe;gBAElB,KAAK,GAAE,QAAiB,EAAE,MAAM,CAAC,EAAE,YAAY;IAM3D,sCAAsC;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAItC,4CAA4C;IACrC,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI;IAIvD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAShD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAS/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAS/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IASvD,OAAO,CAAC,SAAS;CAGlB"}
|
package/dist/Logger.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** Yukimu v2.0.0 — Configurable Logger System */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Logger = void 0;
|
|
5
|
+
const LOG_LEVELS = {
|
|
6
|
+
none: 0,
|
|
7
|
+
error: 1,
|
|
8
|
+
warn: 2,
|
|
9
|
+
info: 3,
|
|
10
|
+
debug: 4,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Built-in logger with configurable log levels.
|
|
14
|
+
* Users can inject their own logger (Winston, Pino, etc.) via YukimuOptions.
|
|
15
|
+
*/
|
|
16
|
+
class Logger {
|
|
17
|
+
prefix;
|
|
18
|
+
level;
|
|
19
|
+
custom;
|
|
20
|
+
constructor(level = "info", custom) {
|
|
21
|
+
this.prefix = "[Yukimu]";
|
|
22
|
+
this.level = LOG_LEVELS[level];
|
|
23
|
+
this.custom = custom;
|
|
24
|
+
}
|
|
25
|
+
/** Update the log level at runtime */
|
|
26
|
+
setLevel(level) {
|
|
27
|
+
this.level = LOG_LEVELS[level];
|
|
28
|
+
}
|
|
29
|
+
/** Inject a custom logger implementation */
|
|
30
|
+
setCustomLogger(logger) {
|
|
31
|
+
this.custom = logger;
|
|
32
|
+
}
|
|
33
|
+
debug(message, ...args) {
|
|
34
|
+
if (this.level < LOG_LEVELS.debug)
|
|
35
|
+
return;
|
|
36
|
+
if (this.custom) {
|
|
37
|
+
this.custom.debug(`${this.prefix} ${message}`, ...args);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
console.debug(`${this.prefix} ${this.timestamp()} [DEBUG] ${message}`, ...args);
|
|
41
|
+
}
|
|
42
|
+
info(message, ...args) {
|
|
43
|
+
if (this.level < LOG_LEVELS.info)
|
|
44
|
+
return;
|
|
45
|
+
if (this.custom) {
|
|
46
|
+
this.custom.info(`${this.prefix} ${message}`, ...args);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
console.log(`${this.prefix} ${this.timestamp()} [INFO] ${message}`, ...args);
|
|
50
|
+
}
|
|
51
|
+
warn(message, ...args) {
|
|
52
|
+
if (this.level < LOG_LEVELS.warn)
|
|
53
|
+
return;
|
|
54
|
+
if (this.custom) {
|
|
55
|
+
this.custom.warn(`${this.prefix} ${message}`, ...args);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
console.warn(`${this.prefix} ${this.timestamp()} [WARN] ${message}`, ...args);
|
|
59
|
+
}
|
|
60
|
+
error(message, ...args) {
|
|
61
|
+
if (this.level < LOG_LEVELS.error)
|
|
62
|
+
return;
|
|
63
|
+
if (this.custom) {
|
|
64
|
+
this.custom.error(`${this.prefix} ${message}`, ...args);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
console.error(`${this.prefix} ${this.timestamp()} [ERROR] ${message}`, ...args);
|
|
68
|
+
}
|
|
69
|
+
timestamp() {
|
|
70
|
+
return new Date().toISOString();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.Logger = Logger;
|
|
74
|
+
//# sourceMappingURL=Logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"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"}
|
package/dist/Node.d.ts
CHANGED
|
@@ -1,12 +1,26 @@
|
|
|
1
|
+
/** Yukimu v2.0.0 — Lavalink Node Manager */
|
|
1
2
|
import WebSocket from "ws";
|
|
2
3
|
import { Rest } from "./Rest";
|
|
3
4
|
import { WsQueue } from "./WsQueue";
|
|
4
5
|
import { State } from "./Constants";
|
|
5
6
|
import type { Yukimu } from "./Yukimu";
|
|
6
7
|
import type { NodeOptions, NodeStats, NodeInfo, SearchResult } from "./types";
|
|
8
|
+
/**
|
|
9
|
+
* Represents a connection to a single Lavalink node.
|
|
10
|
+
*
|
|
11
|
+
* Critical fixes from v1:
|
|
12
|
+
* 1. Session resume: waits for `ready` op before calling updateSession()
|
|
13
|
+
* 2. WsQueue race condition: no duplicate `open` listener, flush called explicitly after onOpen
|
|
14
|
+
* 3. Heartbeat memory leak: properly clears interval on all disconnect paths
|
|
15
|
+
* 4. Connection timeout: WebSocket connection has a 10s timeout
|
|
16
|
+
* 5. Reconnect jitter: prevents thundering herd on multi-node reconnect
|
|
17
|
+
* 6. playerPath() null-safety for missing sessionId
|
|
18
|
+
* 7. Uses CLIENT_NAME constant, not hardcoded string
|
|
19
|
+
* 8. Uses STOPPED_REASONS Set for track end handling
|
|
20
|
+
*/
|
|
7
21
|
export declare class Node {
|
|
8
22
|
readonly manager: Yukimu;
|
|
9
|
-
readonly options: NodeOptions;
|
|
23
|
+
readonly options: Required<Pick<NodeOptions, "name" | "host" | "port" | "password">> & NodeOptions;
|
|
10
24
|
readonly rest: Rest;
|
|
11
25
|
readonly wsQueue: WsQueue;
|
|
12
26
|
readonly version: 3 | 4;
|
|
@@ -18,10 +32,10 @@ export declare class Node {
|
|
|
18
32
|
resumed: boolean;
|
|
19
33
|
penalties: number;
|
|
20
34
|
ping: number;
|
|
21
|
-
private restQueue;
|
|
22
35
|
private reconnectAttempts;
|
|
23
36
|
private reconnectTimeout?;
|
|
24
37
|
private heartbeatInterval?;
|
|
38
|
+
private connectionTimeout?;
|
|
25
39
|
private lastHeartbeatAt;
|
|
26
40
|
constructor(manager: Yukimu, options: NodeOptions);
|
|
27
41
|
get connected(): boolean;
|
|
@@ -40,8 +54,7 @@ export declare class Node {
|
|
|
40
54
|
private reconnectPlayers;
|
|
41
55
|
private handlePlayerUpdate;
|
|
42
56
|
private handleEvent;
|
|
43
|
-
send(data: Record<string,
|
|
44
|
-
enqueueRest<T>(fn: () => Promise<T>): Promise<T>;
|
|
57
|
+
send(data: Record<string, unknown>, priority?: boolean): Promise<void>;
|
|
45
58
|
loadTracks(identifier: string): Promise<SearchResult>;
|
|
46
59
|
playerPath(guildId: string): string;
|
|
47
60
|
}
|
package/dist/Node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../src/Node.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../src/Node.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAA0D,MAAM,aAAa,CAAC;AAE5F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAS,YAAY,EAAE,MAAM,SAAS,CAAC;AAIrF;;;;;;;;;;;;GAYG;AACH,qBAAa,IAAI;IACf,SAAgB,OAAO,EAAE,MAAM,CAAC;IAChC,SAAgB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,GAAG,WAAW,CAAC;IAC1G,SAAgB,IAAI,EAAE,IAAI,CAAC;IAC3B,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IAExB,EAAE,EAAE,SAAS,GAAG,IAAI,CAAQ;IAC5B,KAAK,EAAE,KAAK,CAAsB;IAClC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAQ;IAC/B,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAChC,OAAO,UAAS;IAChB,SAAS,SAAK;IACd,IAAI,SAAM;IAEjB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,gBAAgB,CAAC,CAAgC;IACzD,OAAO,CAAC,iBAAiB,CAAC,CAAiC;IAC3D,OAAO,CAAC,iBAAiB,CAAC,CAAgC;IAC1D,OAAO,CAAC,eAAe,CAAK;gBAEhB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAkBjD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,KAAK,IAAI,MAAM,CAIlB;IAED,IAAI,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAStC;IAIM,kBAAkB,IAAI,MAAM;IAa5B,OAAO,IAAI,IAAI;IAkCf,OAAO,CAAC,SAAS,UAAQ,GAAG,IAAI;YAsCzB,MAAM;IAiCpB,OAAO,CAAC,SAAS;IA8DjB,OAAO,CAAC,OAAO;IAqBf,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,iBAAiB;IAiCzB,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,WAAW;IAsFZ,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI3D,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAU3C"}
|