ziplayer 0.0.4 → 0.0.6
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/README.md +181 -156
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/structures/Player.d.ts +21 -0
- package/dist/structures/Player.d.ts.map +1 -1
- package/dist/structures/Player.js +234 -14
- package/dist/structures/Player.js.map +1 -1
- package/dist/structures/PlayerManager.d.ts +3 -0
- package/dist/structures/PlayerManager.d.ts.map +1 -1
- package/dist/structures/PlayerManager.js +72 -17
- package/dist/structures/PlayerManager.js.map +1 -1
- package/dist/structures/Queue.d.ts +4 -0
- package/dist/structures/Queue.d.ts.map +1 -1
- package/dist/structures/Queue.js +36 -0
- package/dist/structures/Queue.js.map +1 -1
- package/dist/types/index.d.ts +30 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +6 -1
- package/src/structures/Player.ts +808 -576
- package/src/structures/PlayerManager.ts +196 -143
- package/src/structures/Queue.ts +37 -0
- package/src/types/index.ts +27 -0
package/README.md
CHANGED
|
@@ -1,156 +1,181 @@
|
|
|
1
|
-
<img width="
|
|
2
|
-
|
|
3
|
-
# ziplayer
|
|
4
|
-
|
|
5
|
-
A modular Discord voice player with plugin system for @discordjs/voice.
|
|
6
|
-
|
|
7
|
-
## Features
|
|
8
|
-
|
|
9
|
-
- 🎵 **Plugin-based architecture** - Easy to extend with new sources
|
|
10
|
-
- 🎶 **Multiple source support** - YouTube, SoundCloud, Spotify (with fallback)
|
|
11
|
-
- 🔊 **Queue management** - Add, remove, shuffle, clear
|
|
12
|
-
- 🎚️ **Volume control** - 0-200% volume range
|
|
13
|
-
- ⏯️ **Playback control** - Play, pause, resume, stop, skip
|
|
14
|
-
- 🔁 **Auto play** - Automatically replay the queue when it ends
|
|
15
|
-
- 🔂 **Loop control** - Repeat a single track or the entire queue
|
|
16
|
-
- 📊 **Progress bar** - Display playback progress with customizable icons
|
|
17
|
-
- 🔔 **Event-driven** - Rich event system for all player actions
|
|
18
|
-
- 🎭 **Multi-guild support** - Manage players across multiple Discord servers
|
|
19
|
-
- 🗃️ **User data** - Attach custom data to each player for later use
|
|
20
|
-
|
|
21
|
-
## Installation
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npm install ziplayer @ziplayer/plugin @discordjs/voice discord.js
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Quick Start
|
|
28
|
-
|
|
29
|
-
```typescript
|
|
30
|
-
import { PlayerManager } from "ziplayer";
|
|
31
|
-
import { SoundCloudPlugin, YouTubePlugin, SpotifyPlugin } from "@ziplayer/plugin";
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
import { SoundCloudPlugin } from "@ziplayer/plugin";
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
1
|
+
<img width="1175" height="305" alt="logo" src="https://github.com/user-attachments/assets/d4db4892-9c3d-4314-9228-701629555380" />
|
|
2
|
+
|
|
3
|
+
# ziplayer
|
|
4
|
+
|
|
5
|
+
A modular Discord voice player with plugin system for @discordjs/voice.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- 🎵 **Plugin-based architecture** - Easy to extend with new sources
|
|
10
|
+
- 🎶 **Multiple source support** - YouTube, SoundCloud, Spotify (with fallback)
|
|
11
|
+
- 🔊 **Queue management** - Add, remove, shuffle, clear
|
|
12
|
+
- 🎚️ **Volume control** - 0-200% volume range
|
|
13
|
+
- ⏯️ **Playback control** - Play, pause, resume, stop, skip
|
|
14
|
+
- 🔁 **Auto play** - Automatically replay the queue when it ends
|
|
15
|
+
- 🔂 **Loop control** - Repeat a single track or the entire queue
|
|
16
|
+
- 📊 **Progress bar** - Display playback progress with customizable icons
|
|
17
|
+
- 🔔 **Event-driven** - Rich event system for all player actions
|
|
18
|
+
- 🎭 **Multi-guild support** - Manage players across multiple Discord servers
|
|
19
|
+
- 🗃️ **User data** - Attach custom data to each player for later use
|
|
20
|
+
|
|
21
|
+
## Installation
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npm install ziplayer @ziplayer/plugin @ziplayer/extension @discordjs/voice discord.js
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Quick Start
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { PlayerManager } from "ziplayer";
|
|
31
|
+
import { SoundCloudPlugin, YouTubePlugin, SpotifyPlugin } from "@ziplayer/plugin";
|
|
32
|
+
import { voiceExt } from "@ziplayer/extension";
|
|
33
|
+
|
|
34
|
+
const manager = new PlayerManager({
|
|
35
|
+
plugins: [new SoundCloudPlugin(), new YouTubePlugin(), new SpotifyPlugin()],
|
|
36
|
+
extensions: [
|
|
37
|
+
new voiceExt(null, {
|
|
38
|
+
lang: "vi-VN",
|
|
39
|
+
minimalVoiceMessageDuration: 1,
|
|
40
|
+
postSilenceDelayMs: 2000,
|
|
41
|
+
}),
|
|
42
|
+
],
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// Create player
|
|
46
|
+
const player = manager.create(guildId, {
|
|
47
|
+
leaveOnEnd: true,
|
|
48
|
+
leaveTimeout: 30000,
|
|
49
|
+
userdata: { channel: textChannel }, // store channel for events
|
|
50
|
+
// Choose extensions for this player (by name or instances)
|
|
51
|
+
extensions: ["voiceExt"],
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// Connect and play
|
|
55
|
+
await player.connect(voiceChannel);
|
|
56
|
+
await player.play("Never Gonna Give You Up", userId);
|
|
57
|
+
|
|
58
|
+
// Play a full YouTube playlist
|
|
59
|
+
await player.play("https://www.youtube.com/playlist?list=PL123", userId);
|
|
60
|
+
|
|
61
|
+
// Enable autoplay
|
|
62
|
+
player.queue.autoPlay(true);
|
|
63
|
+
|
|
64
|
+
// Play a full SoundCloud playlist
|
|
65
|
+
await player.play("https://soundcloud.com/artist/sets/playlist", userId);
|
|
66
|
+
|
|
67
|
+
// Events
|
|
68
|
+
player.on("willPlay", (player, track) => {
|
|
69
|
+
console.log(`Up next: ${track.title}`);
|
|
70
|
+
});
|
|
71
|
+
player.on("trackStart", (player, track) => {
|
|
72
|
+
console.log(`Now playing: ${track.title}`);
|
|
73
|
+
player.userdata?.channel?.send(`Now playing: ${track.title}`);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// Receive transcripts
|
|
77
|
+
manager.on("voiceCreate", (player, evt) => {
|
|
78
|
+
console.log(`User ${evt.userId} said: ${evt.content}`);
|
|
79
|
+
});
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### TTS (Interrupt Mode)
|
|
83
|
+
|
|
84
|
+
Play short text-to-speech messages without losing music progress. The player pauses music, plays TTS on a dedicated AudioPlayer,
|
|
85
|
+
then resumes.
|
|
86
|
+
|
|
87
|
+
- Requirements: `@ziplayer/plugin` with `TTSPlugin` installed and registered in `PlayerManager`.
|
|
88
|
+
|
|
89
|
+
```ts
|
|
90
|
+
import { PlayerManager } from "ziplayer";
|
|
91
|
+
import { TTSPlugin, YouTubePlugin, SoundCloudPlugin, SpotifyPlugin } from "@ziplayer/plugin";
|
|
92
|
+
|
|
93
|
+
const manager = new PlayerManager({
|
|
94
|
+
plugins: [new TTSPlugin({ defaultLang: "vi" }), new YouTubePlugin(), new SoundCloudPlugin(), new SpotifyPlugin()],
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// Create a player with TTS interrupt enabled
|
|
98
|
+
const player = manager.create(guildId, {
|
|
99
|
+
tts: {
|
|
100
|
+
createPlayer: true, // pre-create the internal TTS AudioPlayer
|
|
101
|
+
interrupt: true, // pause music, swap to TTS, then resume
|
|
102
|
+
volume: 1, // 1 => 100%
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
await player.connect(voiceChannel);
|
|
107
|
+
|
|
108
|
+
// Trigger TTS by playing a TTS query (depends on your TTS plugin)
|
|
109
|
+
await player.play("tts: xin chào mọi người", userId);
|
|
110
|
+
|
|
111
|
+
// Listen to TTS lifecycle events
|
|
112
|
+
manager.on("ttsStart", (plr, { track }) => console.log("TTS start", track?.title));
|
|
113
|
+
manager.on("ttsEnd", (plr) => console.log("TTS end"));
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Notes
|
|
117
|
+
|
|
118
|
+
- The detection uses track.source that includes "tts" or query starting with `tts:`.
|
|
119
|
+
- If you need more control, call `player.interruptWithTTSTrack(track)` after building a TTS track via your plugin.
|
|
120
|
+
- For CPU-heavy TTS generation, consider offloading to `worker_threads` or a separate process and pass a stream/buffer to the
|
|
121
|
+
plugin.
|
|
122
|
+
|
|
123
|
+
## Creating Custom Plugins
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
import { BasePlugin, Track, SearchResult, StreamInfo } from "ziplayer";
|
|
127
|
+
|
|
128
|
+
export class MyPlugin extends BasePlugin {
|
|
129
|
+
name = "myplugin";
|
|
130
|
+
version = "1.0.0";
|
|
131
|
+
|
|
132
|
+
canHandle(query: string): boolean {
|
|
133
|
+
return query.includes("mysite.com");
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
async search(query: string, requestedBy: string): Promise<SearchResult> {
|
|
137
|
+
// Implement search logic
|
|
138
|
+
return {
|
|
139
|
+
tracks: [
|
|
140
|
+
/* ... */
|
|
141
|
+
],
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
async getStream(track: Track): Promise<StreamInfo> {
|
|
146
|
+
// Return audio stream
|
|
147
|
+
return { stream, type: "arbitrary" };
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Progress Bar
|
|
153
|
+
|
|
154
|
+
Display the current playback progress with `getProgressBar`:
|
|
155
|
+
|
|
156
|
+
```typescript
|
|
157
|
+
console.log(player.getProgressBar({ size: 30, barChar: "-", progressChar: "🔘" }));
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Events
|
|
161
|
+
|
|
162
|
+
All player events are forwarded through the PlayerManager:
|
|
163
|
+
|
|
164
|
+
- `trackStart` - When a track starts playing
|
|
165
|
+
- `willPlay` - Before a track begins playing
|
|
166
|
+
- `trackEnd` - When a track finishes
|
|
167
|
+
- `queueEnd` - When the queue is empty
|
|
168
|
+
- `playerError` - When an error occurs
|
|
169
|
+
- `queueAdd` - When a track is added
|
|
170
|
+
- `volumeChange` - When volume changes
|
|
171
|
+
- And more...
|
|
172
|
+
|
|
173
|
+
## Useful Links
|
|
174
|
+
|
|
175
|
+
[Example](https://github.com/ZiProject/ZiPlayer/tree/main/examples) | [Repo](https://github.com/ZiProject/ZiPlayer) |
|
|
176
|
+
[Package](https://www.npmjs.com/package/ziplayer) | [Plugin](https://www.npmjs.com/package/@ziplayer/plugin) |
|
|
177
|
+
[Extension](https://www.npmjs.com/package/@ziplayer/extension)
|
|
178
|
+
|
|
179
|
+
## License
|
|
180
|
+
|
|
181
|
+
MIT License
|
package/dist/index.d.ts
CHANGED
|
@@ -6,4 +6,6 @@ export * from "./types";
|
|
|
6
6
|
export * from "./plugins";
|
|
7
7
|
export * from "./extensions";
|
|
8
8
|
export default PlayerManager;
|
|
9
|
+
export declare const getManager: () => PlayerManager | null;
|
|
10
|
+
export declare const getPlayer: (guildOrId: string) => import("./structures/Player").Player | undefined;
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,4BAA4B,CAAC;AAG7E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAG7B,eAAe,aAAa,CAAC;AAG7B,eAAO,MAAM,UAAU,4BAA2B,CAAC;AACnD,eAAO,MAAM,SAAS,GAAI,WAAW,MAAM,qDAAiC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.PlayerManager = exports.Queue = exports.Player = void 0;
|
|
17
|
+
exports.getPlayer = exports.getManager = exports.PlayerManager = exports.Queue = exports.Player = void 0;
|
|
18
18
|
const PlayerManager_1 = require("./structures/PlayerManager");
|
|
19
19
|
var Player_1 = require("./structures/Player");
|
|
20
20
|
Object.defineProperty(exports, "Player", { enumerable: true, get: function () { return Player_1.Player; } });
|
|
@@ -27,4 +27,9 @@ __exportStar(require("./plugins"), exports);
|
|
|
27
27
|
__exportStar(require("./extensions"), exports);
|
|
28
28
|
// Default export
|
|
29
29
|
exports.default = PlayerManager_1.PlayerManager;
|
|
30
|
+
// Simple shared-instance accessor
|
|
31
|
+
const getManager = () => (0, PlayerManager_1.getGlobalManager)();
|
|
32
|
+
exports.getManager = getManager;
|
|
33
|
+
const getPlayer = (guildOrId) => (0, exports.getManager)()?.get(guildOrId);
|
|
34
|
+
exports.getPlayer = getPlayer;
|
|
30
35
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DAA6E;AAG7E,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,4CAA2C;AAAlC,8FAAA,KAAK,OAAA;AACd,4DAA2D;AAAlD,8GAAA,aAAa,OAAA;AACtB,0CAAwB;AACxB,4CAA0B;AAC1B,+CAA6B;AAE7B,iBAAiB;AACjB,kBAAe,6BAAa,CAAC;AAE7B,kCAAkC;AAC3B,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,IAAA,gCAAgB,GAAE,CAAC;AAAtC,QAAA,UAAU,cAA4B;AAC5C,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,EAAE,CAAC,IAAA,kBAAU,GAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;AAAhE,QAAA,SAAS,aAAuD"}
|
|
@@ -25,15 +25,28 @@ export declare class Player extends EventEmitter {
|
|
|
25
25
|
private currentResource;
|
|
26
26
|
private volumeInterval;
|
|
27
27
|
private skipLoop;
|
|
28
|
+
private ttsPlayer;
|
|
29
|
+
private ttsQueue;
|
|
30
|
+
private ttsActive;
|
|
28
31
|
private withTimeout;
|
|
29
32
|
private debug;
|
|
30
33
|
constructor(guildId: string, options: PlayerOptions | undefined, manager: PlayerManager);
|
|
31
34
|
private setupEventListeners;
|
|
35
|
+
private ensureTTSPlayer;
|
|
32
36
|
addPlugin(plugin: SourcePlugin): void;
|
|
33
37
|
removePlugin(name: string): boolean;
|
|
34
38
|
connect(channel: VoiceChannel): Promise<VoiceConnection>;
|
|
35
39
|
search(query: string, requestedBy: string): Promise<SearchResult>;
|
|
36
40
|
play(query: string | Track, requestedBy?: string): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Interrupt current music with a TTS track. Pauses music, swaps the
|
|
43
|
+
* subscription to a dedicated TTS player, plays TTS, then resumes.
|
|
44
|
+
*/
|
|
45
|
+
interruptWithTTSTrack(track: Track): Promise<void>;
|
|
46
|
+
/** Play queued TTS items sequentially */
|
|
47
|
+
private playNextTTS;
|
|
48
|
+
/** Build AudioResource for a given track using the plugin pipeline */
|
|
49
|
+
private resourceFromTrack;
|
|
37
50
|
private generateWillNext;
|
|
38
51
|
private playNext;
|
|
39
52
|
pause(): boolean;
|
|
@@ -41,9 +54,17 @@ export declare class Player extends EventEmitter {
|
|
|
41
54
|
stop(): boolean;
|
|
42
55
|
skip(): boolean;
|
|
43
56
|
loop(mode?: LoopMode): LoopMode;
|
|
57
|
+
autoPlay(mode?: boolean): boolean;
|
|
44
58
|
setVolume(volume: number): boolean;
|
|
45
59
|
shuffle(): void;
|
|
46
60
|
clearQueue(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Insert a track or list of tracks into the upcoming queue at a specific position (0 = play after current).
|
|
63
|
+
* - If `query` is a string, performs a search and inserts resulting tracks (playlist supported).
|
|
64
|
+
* - If a Track or Track[] is provided, inserts directly.
|
|
65
|
+
* Does not auto-start playback; it only modifies the queue.
|
|
66
|
+
*/
|
|
67
|
+
insert(query: string | Track | Track[], index: number, requestedBy?: string): Promise<boolean>;
|
|
47
68
|
remove(index: number): Track | null;
|
|
48
69
|
getProgressBar(options?: ProgressBarOptions): string;
|
|
49
70
|
private formatTime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAKN,eAAe,EACf,WAAW,IAAI,kBAAkB,EAMjC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACxH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,MAAM,CAAC,OAAO,WAAW,MAAM;IAC9B,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/F,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CAChF;AAED,qBAAa,MAAO,SAAQ,YAAY;IACvC,SAAgB,OAAO,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAQ;IAC1C,WAAW,EAAE,kBAAkB,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAO;IACrB,SAAS,EAAE,OAAO,CAAS;IAC3B,QAAQ,EAAE,OAAO,CAAS;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,QAAQ,CAAS;
|
|
1
|
+
{"version":3,"file":"Player.d.ts","sourceRoot":"","sources":["../../src/structures/Player.ts"],"names":[],"mappings":"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"}
|