yukimu 1.2.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.
Files changed (135) hide show
  1. package/dist/BitrateOptimizer.d.ts +52 -0
  2. package/dist/BitrateOptimizer.d.ts.map +1 -0
  3. package/dist/BitrateOptimizer.js +115 -0
  4. package/dist/BitrateOptimizer.js.map +1 -0
  5. package/dist/ConnectionPool.d.ts +52 -2
  6. package/dist/ConnectionPool.d.ts.map +1 -1
  7. package/dist/ConnectionPool.js +123 -44
  8. package/dist/ConnectionPool.js.map +1 -1
  9. package/dist/Constants.d.ts +26 -47
  10. package/dist/Constants.d.ts.map +1 -1
  11. package/dist/Constants.js +134 -67
  12. package/dist/Constants.js.map +1 -1
  13. package/dist/Logger.d.ts +22 -0
  14. package/dist/Logger.d.ts.map +1 -0
  15. package/dist/Logger.js +74 -0
  16. package/dist/Logger.js.map +1 -0
  17. package/dist/Node.d.ts +17 -4
  18. package/dist/Node.d.ts.map +1 -1
  19. package/dist/Node.js +217 -79
  20. package/dist/Node.js.map +1 -1
  21. package/dist/Player.d.ts +77 -6
  22. package/dist/Player.d.ts.map +1 -1
  23. package/dist/Player.js +319 -75
  24. package/dist/Player.js.map +1 -1
  25. package/dist/Plugin.d.ts +16 -12
  26. package/dist/Plugin.d.ts.map +1 -1
  27. package/dist/Plugin.js +5 -9
  28. package/dist/Plugin.js.map +1 -1
  29. package/dist/Queue.d.ts +69 -3
  30. package/dist/Queue.d.ts.map +1 -1
  31. package/dist/Queue.js +123 -17
  32. package/dist/Queue.js.map +1 -1
  33. package/dist/Resolver.d.ts +33 -2
  34. package/dist/Resolver.d.ts.map +1 -1
  35. package/dist/Resolver.js +233 -27
  36. package/dist/Resolver.js.map +1 -1
  37. package/dist/Rest.d.ts +25 -3
  38. package/dist/Rest.d.ts.map +1 -1
  39. package/dist/Rest.js +165 -23
  40. package/dist/Rest.js.map +1 -1
  41. package/dist/TrackCache.d.ts +28 -8
  42. package/dist/TrackCache.d.ts.map +1 -1
  43. package/dist/TrackCache.js +111 -24
  44. package/dist/TrackCache.js.map +1 -1
  45. package/dist/WsQueue.d.ts +30 -9
  46. package/dist/WsQueue.d.ts.map +1 -1
  47. package/dist/WsQueue.js +66 -24
  48. package/dist/WsQueue.js.map +1 -1
  49. package/dist/Yukimu.d.ts +37 -13
  50. package/dist/Yukimu.d.ts.map +1 -1
  51. package/dist/Yukimu.js +146 -59
  52. package/dist/Yukimu.js.map +1 -1
  53. package/dist/connector/Connector.d.ts +26 -0
  54. package/dist/connector/Connector.d.ts.map +1 -1
  55. package/dist/connector/Connector.js +28 -0
  56. package/dist/connector/Connector.js.map +1 -1
  57. package/dist/connector/DiscordJS.d.ts +21 -19
  58. package/dist/connector/DiscordJS.d.ts.map +1 -1
  59. package/dist/connector/DiscordJS.js +44 -2
  60. package/dist/connector/DiscordJS.js.map +1 -1
  61. package/dist/connector/Eris.d.ts +13 -17
  62. package/dist/connector/Eris.d.ts.map +1 -1
  63. package/dist/connector/Eris.js +36 -4
  64. package/dist/connector/Eris.js.map +1 -1
  65. package/dist/connector/Oceanic.d.ts +13 -14
  66. package/dist/connector/Oceanic.d.ts.map +1 -1
  67. package/dist/connector/Oceanic.js +35 -2
  68. package/dist/connector/Oceanic.js.map +1 -1
  69. package/dist/errors/YukimuError.d.ts +40 -4
  70. package/dist/errors/YukimuError.d.ts.map +1 -1
  71. package/dist/errors/YukimuError.js +79 -9
  72. package/dist/errors/YukimuError.js.map +1 -1
  73. package/dist/index.d.ts +13 -4
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +30 -21
  76. package/dist/index.js.map +1 -1
  77. package/dist/plugins/AutoResume.d.ts +18 -14
  78. package/dist/plugins/AutoResume.d.ts.map +1 -1
  79. package/dist/plugins/AutoResume.js +101 -21
  80. package/dist/plugins/AutoResume.js.map +1 -1
  81. package/dist/plugins/AutoplayPlugin.d.ts +35 -0
  82. package/dist/plugins/AutoplayPlugin.d.ts.map +1 -0
  83. package/dist/plugins/AutoplayPlugin.js +111 -0
  84. package/dist/plugins/AutoplayPlugin.js.map +1 -0
  85. package/dist/plugins/InactivityPlugin.d.ts +30 -0
  86. package/dist/plugins/InactivityPlugin.d.ts.map +1 -0
  87. package/dist/plugins/InactivityPlugin.js +86 -0
  88. package/dist/plugins/InactivityPlugin.js.map +1 -0
  89. package/dist/plugins/PlayerMoved.d.ts +23 -1
  90. package/dist/plugins/PlayerMoved.d.ts.map +1 -1
  91. package/dist/plugins/PlayerMoved.js +57 -12
  92. package/dist/plugins/PlayerMoved.js.map +1 -1
  93. package/dist/types.d.ts +196 -78
  94. package/dist/types.d.ts.map +1 -1
  95. package/dist/types.js +1 -0
  96. package/dist/types.js.map +1 -1
  97. package/package.json +49 -5
  98. package/.cache/replit/env/latest +0 -88
  99. package/.cache/replit/env/latest.json +0 -1
  100. package/.cache/replit/modules/nodejs-20.res +0 -1
  101. package/.cache/replit/modules/python-3.11.res +0 -1
  102. package/.cache/replit/modules/replit.res +0 -1
  103. package/.cache/replit/modules.stamp +0 -0
  104. package/.cache/replit/nix/dotreplitenv.json +0 -1
  105. package/.cache/replit/toolchain.json +0 -1
  106. package/.local/state/workflow-logs/7zVU0iVo-fBL1ccMCmELy/configure_your_app.packager.installForAll.0 +0 -9
  107. package/.local/state/workflow-logs/7zVU0iVo-fBL1ccMCmELy/configure_your_app.shell.exec.1 +0 -1
  108. package/.local/state/workflow-logs/KRgHXizaECjWI5nWtS7Dj/configure_your_app.packager.installForAll.0 +0 -1
  109. package/.local/state/workflow-logs/KRgHXizaECjWI5nWtS7Dj/configure_your_app.shell.exec.1 +0 -1
  110. package/.local/state/workflow-logs/U0AinJQVHonnwGjj0RXLn/configure_your_app.packager.installForAll.0 +0 -2
  111. package/.local/state/workflow-logs/jVavLOnv1MqxUvxhMmqER/configure_your_app.packager.installForAll.0 +0 -1
  112. package/.local/state/workflow-logs/jVavLOnv1MqxUvxhMmqER/configure_your_app.shell.exec.1 +0 -1
  113. package/.replit +0 -7
  114. package/.upm/store.json +0 -1
  115. package/src/ConnectionPool.ts +0 -131
  116. package/src/Constants.ts +0 -101
  117. package/src/Node.ts +0 -309
  118. package/src/Player.ts +0 -337
  119. package/src/Plugin.ts +0 -23
  120. package/src/Queue.ts +0 -91
  121. package/src/Resolver.ts +0 -79
  122. package/src/Rest.ts +0 -121
  123. package/src/TrackCache.ts +0 -69
  124. package/src/WsQueue.ts +0 -78
  125. package/src/Yukimu.ts +0 -248
  126. package/src/connector/Connector.ts +0 -13
  127. package/src/connector/DiscordJS.ts +0 -33
  128. package/src/connector/Eris.ts +0 -35
  129. package/src/connector/Oceanic.ts +0 -32
  130. package/src/errors/YukimuError.ts +0 -33
  131. package/src/index.ts +0 -46
  132. package/src/plugins/AutoResume.ts +0 -61
  133. package/src/plugins/PlayerMoved.ts +0 -26
  134. package/src/types.ts +0 -145
  135. package/tsconfig.json +0 -20
package/dist/Player.d.ts CHANGED
@@ -1,8 +1,21 @@
1
+ /** Yukimu v2.0.0 — Player with State Safety & Bitrate Optimization */
1
2
  import { Queue } from "./Queue";
2
3
  import { PlayerState } from "./Constants";
3
4
  import type { Yukimu } from "./Yukimu";
4
5
  import type { Node } from "./Node";
5
- import type { Track, PlayerOptions, FilterOptions } from "./types";
6
+ import type { Track, PlayerOptions, FilterOptions, LoopMode, BoostTier } from "./types";
7
+ /**
8
+ * Represents an audio player for a specific Discord guild.
9
+ *
10
+ * Critical fixes from v1:
11
+ * 1. play() — only sets playing=true AFTER the REST call succeeds
12
+ * 2. pause() — paused tracks are still "playing" from Lavalink's perspective
13
+ * 3. moveToNode() — properly re-sends voice state to the new node
14
+ * 4. sendVoicePayload() — deferred until connector is ready (safe for startup)
15
+ * 5. Proper cleanup in destroy() — all state, timers, and references
16
+ * 6. Input validation on filter values
17
+ * 7. Boost-tier-aware audio optimization
18
+ */
6
19
  export declare class Player {
7
20
  readonly manager: Yukimu;
8
21
  node: Node;
@@ -17,7 +30,8 @@ export declare class Player {
17
30
  ping: number;
18
31
  lastUpdated: number;
19
32
  volume: number;
20
- loop: "none" | "track" | "queue";
33
+ loop: LoopMode;
34
+ autoplay: boolean;
21
35
  sessionId: string | null;
22
36
  voiceToken: string | null;
23
37
  voiceEndpoint: string | null;
@@ -25,22 +39,52 @@ export declare class Player {
25
39
  selfMute: boolean;
26
40
  filters: FilterOptions;
27
41
  readonly data: Map<string, unknown>;
28
- autoplay: boolean;
29
42
  constructor(manager: Yukimu, node: Node, options: PlayerOptions);
30
43
  get connected(): boolean;
31
- /** Real-time position estimate */
44
+ /**
45
+ * Estimated real-time position accounting for time since last update.
46
+ * Returns the actual position (capped at track length).
47
+ */
32
48
  get realPosition(): number;
49
+ /**
50
+ * Get the current boost tier of the guild this player is in.
51
+ */
52
+ get boostTier(): BoostTier;
33
53
  sendVoicePayload(channelId: string | null, selfDeaf: boolean, selfMute: boolean): void;
54
+ /**
55
+ * Check if we have all voice connection data and send it to Lavalink.
56
+ */
34
57
  checkVoiceReady(): void;
58
+ /**
59
+ * Play a track. If no track is provided, plays the current queue track.
60
+ *
61
+ * FIX: Only sets `playing = true` after the REST call succeeds.
62
+ * In v1, state was set before the REST call, causing ghost playing state on failure.
63
+ */
35
64
  play(track?: Track, options?: {
36
65
  startTime?: number;
37
66
  endTime?: number;
38
67
  noReplace?: boolean;
39
68
  }): Promise<void>;
69
+ /**
70
+ * Pause or unpause playback.
71
+ *
72
+ * FIX: `playing` now reflects "has an active track" independently of pause state.
73
+ * A paused player is still "playing" (it has an active track, just paused).
74
+ */
40
75
  pause(state?: boolean): Promise<void>;
41
76
  resume(): Promise<void>;
42
77
  stop(): Promise<void>;
43
78
  skip(): Promise<Track | null>;
79
+ /**
80
+ * Play the previous track (from history).
81
+ * @returns The previous track, or null if no history exists
82
+ */
83
+ previous(): Promise<Track | null>;
84
+ /**
85
+ * Restart the currently playing track from the beginning.
86
+ */
87
+ replay(): Promise<void>;
44
88
  seek(position: number): Promise<void>;
45
89
  setVolume(volume: number): Promise<void>;
46
90
  setFilters(filters: FilterOptions): Promise<void>;
@@ -53,12 +97,39 @@ export declare class Player {
53
97
  setTremolo(enabled: boolean, frequency?: number, depth?: number): Promise<void>;
54
98
  setVibrato(enabled: boolean, frequency?: number, depth?: number): Promise<void>;
55
99
  setLowPass(enabled: boolean, smoothing?: number): Promise<void>;
100
+ /** Set playback speed (1.0 = normal, 2.0 = double speed) */
101
+ setSpeed(speed: number): Promise<void>;
102
+ /** Set playback pitch (1.0 = normal) */
103
+ setPitch(pitch: number): Promise<void>;
104
+ /**
105
+ * Add track(s) to the queue. If nothing is currently playing, plays immediately.
106
+ */
56
107
  add(tracks: Track | Track[], requester?: unknown): Promise<void>;
57
- setLoop(mode: "none" | "track" | "queue"): void;
108
+ setLoop(mode: LoopMode): void;
58
109
  setAutoplay(enabled: boolean): void;
59
- /** Move player to a different Lavalink node */
110
+ /**
111
+ * Move this player to a different Lavalink node.
112
+ *
113
+ * FIX: Now properly re-sends the voice state to the new node.
114
+ * In v1, the new node didn't know about the voice connection.
115
+ */
60
116
  moveToNode(node: Node): Promise<void>;
117
+ /** Move the bot to a different voice channel */
61
118
  move(channelId: string): Promise<void>;
119
+ /**
120
+ * Apply optimal audio settings based on the guild's boost tier.
121
+ * Automatically adjusts EQ and filters for best clarity at the available bitrate.
122
+ */
123
+ applyOptimalQuality(): Promise<void>;
124
+ /** Maximum audio quality — crystal clear, enhanced bass & treble */
125
+ setHighQuality(): Promise<void>;
126
+ /** Studio quality — flat, neutral, most accurate */
127
+ setStudioQuality(): Promise<void>;
128
+ /** Concert hall effect — scaled for boost tier */
129
+ setConcertHall(): Promise<void>;
130
+ /**
131
+ * Destroy this player and clean up all resources.
132
+ */
62
133
  destroy(): Promise<void>;
63
134
  }
64
135
  //# sourceMappingURL=Player.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAc,aAAa,EAAE,MAAM,SAAS,CAAC;AAE/E,qBAAa,MAAM;IACjB,SAAgB,OAAO,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,IAAI,CAAC;IAClB,SAAgB,KAAK,EAAE,KAAK,CAAC;IAG7B,SAAgB,OAAO,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,KAAK,EAAE,WAAW,CAA4B;IAC9C,OAAO,EAAE,OAAO,CAAS;IACzB,MAAM,EAAE,OAAO,CAAS;IACxB,QAAQ,EAAE,MAAM,CAAK;IACrB,IAAI,EAAE,MAAM,CAAM;IAClB,WAAW,EAAE,MAAM,CAAc;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAU;IAG1C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAQ;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAQ;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAGlB,OAAO,EAAE,aAAa,CAAM;IAGnC,SAAgB,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAa;IAGhD,QAAQ,EAAE,OAAO,CAAS;gBAErB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa;IAkB/D,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,kCAAkC;IAClC,IAAI,YAAY,IAAI,MAAM,CAGzB;IAIM,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAOtF,eAAe,IAAI,IAAI;IAyBjB,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B3G,KAAK,CAAC,KAAK,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAEvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAYrB,IAAI,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAW7B,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxC,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAW7B,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjF,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3C,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,SAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,SAAM,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7D,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAetE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI;IAI/C,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAM1C,+CAA+C;IAClC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBrC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAYtC"}
1
+ {"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../src/Player.ts"],"names":[],"mappings":"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"}