yukimu 2.0.0 → 2.0.8

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 (97) hide show
  1. package/package.json +1 -1
  2. package/dist/BitrateOptimizer.d.ts +0 -52
  3. package/dist/BitrateOptimizer.d.ts.map +0 -1
  4. package/dist/BitrateOptimizer.js +0 -115
  5. package/dist/BitrateOptimizer.js.map +0 -1
  6. package/dist/ConnectionPool.d.ts +0 -84
  7. package/dist/ConnectionPool.d.ts.map +0 -1
  8. package/dist/ConnectionPool.js +0 -203
  9. package/dist/ConnectionPool.js.map +0 -1
  10. package/dist/Constants.d.ts +0 -45
  11. package/dist/Constants.d.ts.map +0 -1
  12. package/dist/Constants.js +0 -168
  13. package/dist/Constants.js.map +0 -1
  14. package/dist/Logger.d.ts +0 -22
  15. package/dist/Logger.d.ts.map +0 -1
  16. package/dist/Logger.js +0 -74
  17. package/dist/Logger.js.map +0 -1
  18. package/dist/Node.d.ts +0 -61
  19. package/dist/Node.d.ts.map +0 -1
  20. package/dist/Node.js +0 -446
  21. package/dist/Node.js.map +0 -1
  22. package/dist/Player.d.ts +0 -135
  23. package/dist/Player.d.ts.map +0 -1
  24. package/dist/Player.js +0 -530
  25. package/dist/Player.js.map +0 -1
  26. package/dist/Plugin.d.ts +0 -25
  27. package/dist/Plugin.d.ts.map +0 -1
  28. package/dist/Plugin.js +0 -15
  29. package/dist/Plugin.js.map +0 -1
  30. package/dist/Queue.d.ts +0 -89
  31. package/dist/Queue.d.ts.map +0 -1
  32. package/dist/Queue.js +0 -188
  33. package/dist/Queue.js.map +0 -1
  34. package/dist/Resolver.d.ts +0 -44
  35. package/dist/Resolver.d.ts.map +0 -1
  36. package/dist/Resolver.js +0 -289
  37. package/dist/Resolver.js.map +0 -1
  38. package/dist/Rest.d.ts +0 -46
  39. package/dist/Rest.d.ts.map +0 -1
  40. package/dist/Rest.js +0 -246
  41. package/dist/Rest.js.map +0 -1
  42. package/dist/TrackCache.d.ts +0 -41
  43. package/dist/TrackCache.d.ts.map +0 -1
  44. package/dist/TrackCache.js +0 -144
  45. package/dist/TrackCache.js.map +0 -1
  46. package/dist/WsQueue.d.ts +0 -41
  47. package/dist/WsQueue.d.ts.map +0 -1
  48. package/dist/WsQueue.js +0 -116
  49. package/dist/WsQueue.js.map +0 -1
  50. package/dist/Yukimu.d.ts +0 -84
  51. package/dist/Yukimu.d.ts.map +0 -1
  52. package/dist/Yukimu.js +0 -290
  53. package/dist/Yukimu.js.map +0 -1
  54. package/dist/connector/Connector.d.ts +0 -34
  55. package/dist/connector/Connector.d.ts.map +0 -1
  56. package/dist/connector/Connector.js +0 -39
  57. package/dist/connector/Connector.js.map +0 -1
  58. package/dist/connector/DiscordJS.d.ts +0 -27
  59. package/dist/connector/DiscordJS.d.ts.map +0 -1
  60. package/dist/connector/DiscordJS.js +0 -69
  61. package/dist/connector/DiscordJS.js.map +0 -1
  62. package/dist/connector/Eris.d.ts +0 -19
  63. package/dist/connector/Eris.d.ts.map +0 -1
  64. package/dist/connector/Eris.js +0 -62
  65. package/dist/connector/Eris.js.map +0 -1
  66. package/dist/connector/Oceanic.d.ts +0 -19
  67. package/dist/connector/Oceanic.d.ts.map +0 -1
  68. package/dist/connector/Oceanic.js +0 -60
  69. package/dist/connector/Oceanic.js.map +0 -1
  70. package/dist/errors/YukimuError.d.ts +0 -51
  71. package/dist/errors/YukimuError.d.ts.map +0 -1
  72. package/dist/errors/YukimuError.js +0 -105
  73. package/dist/errors/YukimuError.js.map +0 -1
  74. package/dist/index.d.ts +0 -29
  75. package/dist/index.d.ts.map +0 -1
  76. package/dist/index.js +0 -70
  77. package/dist/index.js.map +0 -1
  78. package/dist/plugins/AutoResume.d.ts +0 -25
  79. package/dist/plugins/AutoResume.d.ts.map +0 -1
  80. package/dist/plugins/AutoResume.js +0 -132
  81. package/dist/plugins/AutoResume.js.map +0 -1
  82. package/dist/plugins/AutoplayPlugin.d.ts +0 -35
  83. package/dist/plugins/AutoplayPlugin.d.ts.map +0 -1
  84. package/dist/plugins/AutoplayPlugin.js +0 -111
  85. package/dist/plugins/AutoplayPlugin.js.map +0 -1
  86. package/dist/plugins/InactivityPlugin.d.ts +0 -30
  87. package/dist/plugins/InactivityPlugin.d.ts.map +0 -1
  88. package/dist/plugins/InactivityPlugin.js +0 -86
  89. package/dist/plugins/InactivityPlugin.js.map +0 -1
  90. package/dist/plugins/PlayerMoved.d.ts +0 -29
  91. package/dist/plugins/PlayerMoved.d.ts.map +0 -1
  92. package/dist/plugins/PlayerMoved.js +0 -75
  93. package/dist/plugins/PlayerMoved.js.map +0 -1
  94. package/dist/types.d.ts +0 -309
  95. package/dist/types.d.ts.map +0 -1
  96. package/dist/types.js +0 -4
  97. package/dist/types.js.map +0 -1
package/dist/Constants.js DELETED
@@ -1,168 +0,0 @@
1
- "use strict";
2
- /** Yukimu v2.0.0 — Constants & Enumerations */
3
- Object.defineProperty(exports, "__esModule", { value: true });
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";
6
- exports.CLIENT_NAME = `Yukimu/${exports.VERSION}`;
7
- // ─── Node Connection State ──────────────────────────────────────────────────
8
- var State;
9
- (function (State) {
10
- State[State["CONNECTING"] = 0] = "CONNECTING";
11
- /** WebSocket open, waiting for ready op */
12
- State[State["NEARLY"] = 1] = "NEARLY";
13
- /** Fully connected and ready */
14
- State[State["CONNECTED"] = 2] = "CONNECTED";
15
- State[State["DISCONNECTING"] = 3] = "DISCONNECTING";
16
- State[State["DISCONNECTED"] = 4] = "DISCONNECTED";
17
- State[State["RECONNECTING"] = 5] = "RECONNECTING";
18
- })(State || (exports.State = State = {}));
19
- // ─── Player Connection State ────────────────────────────────────────────────
20
- var PlayerState;
21
- (function (PlayerState) {
22
- PlayerState[PlayerState["CONNECTING"] = 0] = "CONNECTING";
23
- PlayerState[PlayerState["CONNECTED"] = 1] = "CONNECTED";
24
- PlayerState[PlayerState["DISCONNECTING"] = 2] = "DISCONNECTING";
25
- PlayerState[PlayerState["DISCONNECTED"] = 3] = "DISCONNECTED";
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.)
30
- exports.SOURCE_PREFIXES = {
31
- youtube: "ytsearch",
32
- youtubemusic: "ytmsearch",
33
- spotify: "spsearch",
34
- deezer: "dzsearch",
35
- applemusic: "amsearch",
36
- soundcloud: "scsearch",
37
- tidal: "tdsearch",
38
- jiosaavn: "jssearch",
39
- yandexmusic: "ymsearch",
40
- bandcamp: "bcsearch",
41
- vimeo: "vmsearch",
42
- twitch: "twsearch",
43
- bilibili: "blsearch",
44
- mixcloud: "mxsearch",
45
- http: "http",
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.
50
- exports.URL_PATTERNS = {
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
- ],
115
- };
116
- // ─── Track End Reasons ──────────────────────────────────────────────────────
117
- // These indicate that track replacement or manual stop occurred,
118
- // so we should NOT auto-advance the queue.
119
- exports.STOPPED_REASONS = new Set([
120
- "replaced",
121
- "stopped",
122
- "cleanup",
123
- "REPLACED",
124
- "STOPPED",
125
- "CLEANUP",
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
- };
168
- //# sourceMappingURL=Constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Constants.js","sourceRoot":"","sources":["../src/Constants.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;AAElC,QAAA,OAAO,GAAG,OAAO,CAAC;AAClB,QAAA,WAAW,GAAG,UAAU,eAAO,EAAE,CAAC;AAE/C,+EAA+E;AAE/E,IAAY,KASX;AATD,WAAY,KAAK;IACf,6CAAc,CAAA;IACd,2CAA2C;IAC3C,qCAAU,CAAA;IACV,gCAAgC;IAChC,2CAAa,CAAA;IACb,mDAAiB,CAAA;IACjB,iDAAgB,CAAA;IAChB,iDAAgB,CAAA;AAClB,CAAC,EATW,KAAK,qBAAL,KAAK,QAShB;AAED,+EAA+E;AAE/E,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,yDAAc,CAAA;IACd,uDAAa,CAAA;IACb,+DAAiB,CAAA;IACjB,6DAAgB,CAAA;AAClB,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAED,+EAA+E;AAC/E,2EAA2E;AAC3E,gFAAgF;AAEnE,QAAA,eAAe,GAA2B;IACrD,OAAO,EAAO,UAAU;IACxB,YAAY,EAAE,WAAW;IACzB,OAAO,EAAO,UAAU;IACxB,MAAM,EAAQ,UAAU;IACxB,UAAU,EAAI,UAAU;IACxB,UAAU,EAAI,UAAU;IACxB,KAAK,EAAS,UAAU;IACxB,QAAQ,EAAM,UAAU;IACxB,WAAW,EAAG,UAAU;IACxB,QAAQ,EAAM,UAAU;IACxB,KAAK,EAAS,UAAU;IACxB,MAAM,EAAQ,UAAU;IACxB,QAAQ,EAAM,UAAU;IACxB,QAAQ,EAAM,UAAU;IACxB,IAAI,EAAU,MAAM;CACrB,CAAC;AAEF,+EAA+E;AAC/E,yEAAyE;AACzE,uCAAuC;AAE1B,QAAA,YAAY,GAA6B;IACpD,OAAO,EAAE;QACP,kDAAkD;QAClD,qCAAqC;QACrC,8CAA8C;KAC/C;IACD,OAAO,EAAE;QACP,gFAAgF;KACjF;IACD,UAAU,EAAE;QACV,6CAA6C;QAC7C,qCAAqC;KACtC;IACD,MAAM,EAAE;QACN,oEAAoE;KACrE;IACD,UAAU,EAAE;QACV,mCAAmC;KACpC;IACD,KAAK,EAAE;QACL,6CAA6C;KAC9C;IACD,QAAQ,EAAE;QACR,uCAAuC;KACxC;IACD,WAAW,EAAE;QACX,kDAAkD;KACnD;IACD,QAAQ,EAAE;QACR,8CAA8C;QAC9C,uCAAuC;KACxC;IACD,KAAK,EAAE;QACL,6CAA6C;KAC9C;IACD,MAAM,EAAE;QACN,4CAA4C;KAC7C;IACD,MAAM,EAAE;QACN,+CAA+C;KAChD;IACD,QAAQ,EAAE;QACR,gDAAgD;QAChD,2BAA2B;KAC5B;IACD,OAAO,EAAE;QACP,+CAA+C;KAChD;IACD,MAAM,EAAE;QACN,iDAAiD;QACjD,6BAA6B;KAC9B;IACD,SAAS,EAAE;QACT,qDAAqD;KACtD;IACD,OAAO,EAAE;QACP,gDAAgD;KACjD;IACD,QAAQ,EAAE;QACR,uCAAuC;KACxC;IACD,QAAQ,EAAE;QACR,8CAA8C;QAC9C,yBAAyB;KAC1B;CACF,CAAC;AAEF,+EAA+E;AAC/E,iEAAiE;AACjE,2CAA2C;AAE9B,QAAA,eAAe,GAAG,IAAI,GAAG,CAAS;IAC7C,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;IACV,SAAS;IACT,SAAS;CACV,CAAC,CAAC;AAEH,+EAA+E;AAElE,QAAA,cAAc,GAA2B;IACpD,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,0BAA0B;IAChC,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,gDAAgD;IACtD,IAAI,EAAE,sBAAsB;CAC7B,CAAC;AAMW,QAAA,qBAAqB,GAAqC;IACrE,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAG,iBAAiB,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE;IACjE,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE;IACjE,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;IAChE,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE;CACjE,CAAC;AAEF,+EAA+E;AAElE,QAAA,QAAQ,GAAG;IACtB,wBAAwB,EAAE,MAAM;IAChC,cAAc,EAAE,IAAI;IACpB,SAAS,EAAE,SAAS,EAAS,SAAS;IACtC,kBAAkB,EAAE,MAAM;IAC1B,eAAe,EAAE,MAAM;IACvB,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,MAAM;IACpB,gBAAgB,EAAE,CAAC;IACnB,qBAAqB,EAAE,IAAI;IAC3B,oBAAoB,EAAE,MAAM;IAC5B,uBAAuB,EAAE,MAAM;IAC/B,gBAAgB,EAAE,CAAC;IACnB,wBAAwB,EAAE,MAAM;IAChC,qBAAqB,EAAE,EAAE;IACzB,oBAAoB,EAAE,OAAO,EAAE,YAAY;IAC3C,4BAA4B,EAAE,MAAM;IACpC,kBAAkB,EAAE,CAAC;CACb,CAAC"}
package/dist/Logger.d.ts DELETED
@@ -1,22 +0,0 @@
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
@@ -1 +0,0 @@
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 DELETED
@@ -1,74 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"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"}
package/dist/Node.d.ts DELETED
@@ -1,61 +0,0 @@
1
- /** Yukimu v2.0.0 — Lavalink Node Manager */
2
- import WebSocket from "ws";
3
- import { Rest } from "./Rest";
4
- import { WsQueue } from "./WsQueue";
5
- import { State } from "./Constants";
6
- import type { Yukimu } from "./Yukimu";
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
- */
21
- export declare class Node {
22
- readonly manager: Yukimu;
23
- readonly options: Required<Pick<NodeOptions, "name" | "host" | "port" | "password">> & NodeOptions;
24
- readonly rest: Rest;
25
- readonly wsQueue: WsQueue;
26
- readonly version: 3 | 4;
27
- ws: WebSocket | null;
28
- state: State;
29
- stats: NodeStats | null;
30
- info: NodeInfo | null;
31
- sessionId: string | null;
32
- resumed: boolean;
33
- penalties: number;
34
- ping: number;
35
- private reconnectAttempts;
36
- private reconnectTimeout?;
37
- private heartbeatInterval?;
38
- private connectionTimeout?;
39
- private lastHeartbeatAt;
40
- constructor(manager: Yukimu, options: NodeOptions);
41
- get connected(): boolean;
42
- get wsUrl(): string;
43
- get wsHeaders(): Record<string, string>;
44
- calculatePenalties(): number;
45
- connect(): void;
46
- destroy(reconnect?: boolean): void;
47
- private onOpen;
48
- private onMessage;
49
- private onClose;
50
- private onError;
51
- private startHeartbeat;
52
- private scheduleReconnect;
53
- private movePlayers;
54
- private reconnectPlayers;
55
- private handlePlayerUpdate;
56
- private handleEvent;
57
- send(data: Record<string, unknown>, priority?: boolean): Promise<void>;
58
- loadTracks(identifier: string): Promise<SearchResult>;
59
- playerPath(guildId: string): string;
60
- }
61
- //# sourceMappingURL=Node.d.ts.map
@@ -1 +0,0 @@
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"}