ziplayer 0.2.5 → 0.2.7-dev.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/README.md CHANGED
@@ -1,228 +1,259 @@
1
- <img width="1175" height="305" alt="logo" src="https://raw.githubusercontent.com/ZiProject/ZiPlayer/refs/heads/main/publish/logo.png" />
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
- - 🔌 **Lavalink** - Support manage an external Lavalink JVM node
21
- - 🎛️ **Audio Filters** - Apply real-time audio effects using FFmpeg (bassboost, nightcore, etc.)
22
-
23
- ## Installation
24
-
25
- ```bash
26
- npm install ziplayer @ziplayer/plugin @ziplayer/extension @discordjs/voice discord.js
27
- ```
28
-
29
- ## Quick Start
30
-
31
- ```typescript
32
- import { PlayerManager } from "ziplayer";
33
- import { SoundCloudPlugin, YouTubePlugin, SpotifyPlugin } from "@ziplayer/plugin";
34
- import { voiceExt } from "@ziplayer/extension";
35
-
36
- const manager = new PlayerManager({
37
- plugins: [new SoundCloudPlugin(), new YouTubePlugin(), new SpotifyPlugin()],
38
- extensions: [
39
- new voiceExt(null, {
40
- lang: "vi-VN",
41
- minimalVoiceMessageDuration: 1,
42
- postSilenceDelayMs: 2000,
43
- }),
44
- ],
45
- });
46
-
47
- // Create player
48
- const player = await manager.create(guildId, {
49
- leaveOnEnd: true,
50
- leaveTimeout: 30000,
51
- userdata: { channel: textChannel }, // store channel for events
52
- // Choose extensions for this player (by name or instances)
53
- extensions: ["voiceExt"],
54
- // Apply audio filters
55
- filters: ["bassboost", "normalize"],
56
- });
57
-
58
- // Connect and play
59
- await player.connect(voiceChannel);
60
- await player.play("Never Gonna Give You Up", userId);
61
-
62
- // Play a full YouTube playlist
63
- await player.play("https://www.youtube.com/playlist?list=PL123", userId);
64
-
65
- // Enable autoplay
66
- player.queue.autoPlay(true);
67
-
68
- // Play a full SoundCloud playlist
69
- await player.play("https://soundcloud.com/artist/sets/playlist", userId);
70
-
71
- // Events
72
- player.on("willPlay", (player, track) => {
73
- console.log(`Up next: ${track.title}`);
74
- });
75
- player.on("trackStart", (player, track) => {
76
- console.log(`Now playing: ${track.title}`);
77
- player.userdata?.channel?.send(`Now playing: ${track.title}`);
78
- });
79
-
80
- // Audio Filters
81
- player.filter.applyFilter("bassboost"); // Apply bass boost
82
- player.filter.applyFilter("nightcore"); // Apply nightcore effect
83
- player.filter.removeFilter("bassboost"); // Remove specific filter
84
- player.filter.clearFilters(); // Clear all filters
85
-
86
- // Apply custom filter
87
- player.filter.applyFilter({
88
- name: "custom",
89
- ffmpegFilter: "volume=1.5,treble=g=5",
90
- description: "Volume boost + treble boost",
91
- });
92
-
93
- // Receive transcripts
94
- manager.on("voiceCreate", (player, evt) => {
95
- console.log(`User ${evt.userId} said: ${evt.content}`);
96
- });
97
- ```
98
-
99
- ### TTS (Interrupt Mode)
100
-
101
- Play short text-to-speech messages without losing music progress. The player pauses music, plays TTS on a dedicated AudioPlayer,
102
- then resumes.
103
-
104
- - Requirements: `@ziplayer/plugin` with `TTSPlugin` installed and registered in `PlayerManager`.
105
-
106
- ```ts
107
- import { PlayerManager } from "ziplayer";
108
- import { TTSPlugin, YouTubePlugin, SoundCloudPlugin, SpotifyPlugin } from "@ziplayer/plugin";
109
-
110
- const manager = new PlayerManager({
111
- plugins: [new TTSPlugin({ defaultLang: "vi" }), new YouTubePlugin(), new SoundCloudPlugin(), new SpotifyPlugin()],
112
- });
113
-
114
- // Create a player with TTS interrupt enabled
115
- const player = await manager.create(guildId, {
116
- tts: {
117
- createPlayer: true, // pre-create the internal TTS AudioPlayer
118
- interrupt: true, // pause music, swap to TTS, then resume
119
- volume: 1, // 1 => 100%
120
- },
121
- });
122
-
123
- await player.connect(voiceChannel);
124
-
125
- // Trigger TTS by playing a TTS query (depends on your TTS plugin)
126
- await player.play("tts: xin chào mọi người", userId);
127
-
128
- // Listen to TTS lifecycle events
129
- manager.on("ttsStart", (plr, { track }) => console.log("TTS start", track?.title));
130
- manager.on("ttsEnd", (plr) => console.log("TTS end"));
131
- ```
132
-
133
- Notes
134
-
135
- - The detection uses track.source that includes "tts" or query starting with `tts:`.
136
- - If you need more control, call `player.interruptWithTTSTrack(track)` after building a TTS track via your plugin.
137
- - For CPU-heavy TTS generation, consider offloading to `worker_threads` or a separate process and pass a stream/buffer to the
138
- plugin.
139
-
140
- ### Player Lifecycle Overview
141
-
142
- ```
143
- PlayerManager.create(guild, opts)
144
-
145
-
146
- [Player constructor]
147
- - setup event listeners
148
- - freeze ExtensionContext { player, manager }
149
- - register plugins
150
-
151
-
152
- attachExtension(ext)
153
- - set ext.player
154
- - ext.onRegister?(context)
155
- - ext.active?(...) false detach
156
-
157
-
158
- player.play(query, by)
159
- - runBeforePlayHooks → extensions may mutate query/tracks/start Lavalink
160
- - resolve track list / queue updates / TTS interrupt check
161
- - extensionsProvideStream extension stream overrides plugin pipeline
162
- - plugin.getStream / getFallback
163
-
164
-
165
- Audio playback
166
- - trackStart / queue events emitted
167
- - runAfterPlayHooks with final outcome
168
-
169
-
170
- player.destroy()
171
- - stop audio/voice / clear queue & plugins
172
- - ext.onDestroy?(context) for each attached extension
173
- - emit playerDestroy & cleanup references
174
- ```
175
-
176
- This diagram shows how custom extensions (voice, lyrics, Lavalink, etc.) integrate across the full player lifecycle and where
177
- their hooks are invoked.
178
-
179
- ### Lavalink Process
180
-
181
- Use `lavalinkExt` when you need ZiPlayer to manage an external Lavalink JVM node. The extension starts, stops, and optionally
182
- restarts the Lavalink jar and forwards lifecycle events through the manager/player.
183
-
184
- ```ts
185
- import { PlayerManager } from "ziplayer";
186
- import { lavalinkExt } from "@ziplayer/extension";
187
-
188
- const lavalink = new lavalinkExt(null, {
189
- nodes: [
190
- {
191
- identifier: "locallavalink",
192
- password: "youshallnotpass",
193
- host: "localhost",
194
- port: 2333,
195
- secure: false,
196
- },
197
- ],
198
- client: client,
199
- searchPrefix: "scsearch",
200
- });
201
-
202
- const manager = new PlayerManager({
203
- extensions: ["lavalinkExt"],
204
- });
205
- ```
206
-
207
- ## Events
208
-
209
- All player events are forwarded through the PlayerManager:
210
-
211
- - `trackStart` - When a track starts playing
212
- - `willPlay` - Before a track begins playing
213
- - `trackEnd` - When a track finishes
214
- - `queueEnd` - When the queue is empty
215
- - `playerError` - When an error occurs
216
- - `queueAdd` - When a track is added
217
- - `volumeChange` - When volume changes
218
- - And more...
219
-
220
- ## Useful Links
221
-
222
- [Example](https://github.com/ZiProject/ZiPlayer/tree/main/examples) | [Repo](https://github.com/ZiProject/ZiPlayer) |
223
- [Package](https://www.npmjs.com/package/ziplayer) | [Plugin](https://www.npmjs.com/package/@ziplayer/plugin) |
224
- [Extension](https://www.npmjs.com/package/@ziplayer/extension)
225
-
226
- ## License
227
-
228
- MIT License
1
+ <img width="1175" height="305" alt="logo" src="https://raw.githubusercontent.com/ZiProject/ZiPlayer/refs/heads/main/publish/logo.png" />
2
+
3
+ # ZiPlayer
4
+
5
+ A powerful, extensible Discord music engine built on top of `@discordjs/voice`, designed for scalability, flexibility, and
6
+ developer experience.
7
+
8
+ ZiPlayer is not just a player — it's a **full ecosystem** with plugins, extensions, and a modular architecture that lets you build
9
+ advanced music bots quickly.
10
+
11
+ ---
12
+
13
+ ## Highlights
14
+
15
+ - 🔌 **Plugin-driven architecture** Easily support new audio sources
16
+ - 🌐 **Multi-source playback** YouTube, SoundCloud, Spotify (with fallback), TTS, and more
17
+ - 🧠 **Smart fallback system** Automatically resolves streams across plugins
18
+ - 🎛️ **Advanced audio filters** — Real-time FFmpeg effects (bassboost, nightcore, etc.)
19
+ - 🔁 **Autoplay & looping** Seamless listening experience
20
+ - 🧩 **Extension system** Add STT, lyrics, Lavalink, and custom logic
21
+ - 🗂️ **Per-guild player system** Scales across multiple Discord servers
22
+ - 📡 **Event-driven core** — Full lifecycle hooks for customization
23
+ - 💾 **Custom userdata** — Attach context to each player
24
+
25
+ ---
26
+
27
+ ## 📦 Installation
28
+
29
+ ```bash
30
+ npm install ziplayer @ziplayer/plugin @ziplayer/extension @ziplayer/infinity @discordjs/voice discord.js opusscript
31
+ ```
32
+
33
+ ---
34
+
35
+ ## 🚀 Quick Start
36
+
37
+ ```ts
38
+ import { Client, GatewayIntentBits } from "discord.js";
39
+ import { PlayerManager } from "ziplayer";
40
+ import { YouTubePlugin, SoundCloudPlugin, SpotifyPlugin } from "@ziplayer/plugin";
41
+ import { InfinityPlugin } from "@ziplayer/infinity";
42
+
43
+ const client = new Client({
44
+ intents: [
45
+ GatewayIntentBits.Guilds,
46
+ GatewayIntentBits.GuildVoiceStates,
47
+ GatewayIntentBits.GuildMessages,
48
+ GatewayIntentBits.MessageContent,
49
+ ],
50
+ });
51
+
52
+ const manager = new PlayerManager({
53
+ plugins: [new YouTubePlugin(), new SoundCloudPlugin(), new SpotifyPlugin(), new InfinityPlugin()],
54
+ });
55
+
56
+ client.on("messageCreate", async (msg) => {
57
+ if (!msg.content.startsWith("!play ") || !msg.guildId) return;
58
+
59
+ const voiceChannel = msg.member?.voice?.channel;
60
+ if (!voiceChannel) return msg.reply("Join a voice channel first!");
61
+
62
+ const player = await manager.create(msg.guildId, {
63
+ leaveOnEnd: true,
64
+ userdata: { channel: msg.channel },
65
+ });
66
+
67
+ if (!player.connection) await player.connect(voiceChannel);
68
+ await player.play(msg.content.slice(6), msg.author.id);
69
+ });
70
+
71
+ client.login(process.env.DISCORD_TOKEN);
72
+ ```
73
+
74
+ ---
75
+
76
+ ## 🧱 Architecture Overview
77
+
78
+ ```
79
+ PlayerManager (global)
80
+ └── Player (per guild)
81
+ ├── Queue
82
+ ├── PluginManager
83
+ ├── ExtensionManager
84
+ └── FilterManager
85
+ ```
86
+
87
+ ### Flow
88
+
89
+ ```
90
+ create connect play → stream → events → destroy
91
+ ```
92
+
93
+ ---
94
+
95
+ ## 🎵 Core Usage
96
+
97
+ ### Play music
98
+
99
+ ```ts
100
+ await player.play("Never Gonna Give You Up", userId);
101
+ await player.play("https://youtube.com/watch?v=...", userId);
102
+ await player.play("tts: Hello world", userId);
103
+ ```
104
+
105
+ ### Controls
106
+
107
+ ```ts
108
+ player.pause();
109
+ player.resume();
110
+ player.skip();
111
+ player.stop();
112
+ player.setVolume(100);
113
+ player.loop("track");
114
+ player.shuffle();
115
+ ```
116
+
117
+ ### Queue
118
+
119
+ ```ts
120
+ player.queue.add(track);
121
+ player.queue.remove(0);
122
+ player.queue.shuffle();
123
+ player.queue.clear();
124
+ ```
125
+
126
+ ---
127
+
128
+ ## 🔌 Plugins
129
+
130
+ Install via `@ziplayer/plugin`:
131
+
132
+ - **YouTubePlugin** — YouTube + search
133
+ - **SoundCloudPlugin** — SoundCloud streaming
134
+ - **SpotifyPlugin** — Metadata (uses fallback)
135
+ - **TTSPlugin** Text-to-speech
136
+ - **AttachmentsPlugin** Local/URL audio files
137
+
138
+ ### Example
139
+
140
+ ```ts
141
+ import { TTSPlugin } from "@ziplayer/plugin";
142
+
143
+ new PlayerManager({
144
+ plugins: [new TTSPlugin({ defaultLang: "en" })],
145
+ });
146
+ ```
147
+
148
+ ---
149
+
150
+ ## 🧩 Extensions
151
+
152
+ Enhance player behavior:
153
+
154
+ - 🎤 `voiceExt` — Speech-to-text commands
155
+ - 🎤 `lyricsExt` Auto lyrics (synced support)
156
+ - ⚡ `lavalinkExt` — External Lavalink node
157
+
158
+ ### Example
159
+
160
+ ```ts
161
+ import { voiceExt, lyricsExt } from "@ziplayer/extension";
162
+
163
+ const manager = new PlayerManager({
164
+ extensions: [new voiceExt(null, { lang: "en-US" }), new lyricsExt(null, { provider: "lrclib" })],
165
+ });
166
+ ```
167
+
168
+ ---
169
+
170
+ ## 🎛️ Audio Filters
171
+
172
+ Apply FFmpeg filters in real-time:
173
+
174
+ ```ts
175
+ await player.filter.applyFilter("bassboost");
176
+ await player.filter.applyFilter("nightcore");
177
+ await player.filter.clearAll();
178
+ ```
179
+
180
+ ### Available filters
181
+
182
+ - bassboost, trebleboost
183
+ - nightcore, lofi, vaporwave
184
+ - echo, reverb, chorus
185
+ - karaoke
186
+ - normalize, compressor, limiter
187
+
188
+ ---
189
+
190
+ ## 🔊 TTS (Interrupt Mode)
191
+
192
+ ```ts
193
+ const player = await manager.create(guildId, {
194
+ tts: {
195
+ createPlayer: true,
196
+ interrupt: true,
197
+ },
198
+ });
199
+
200
+ await player.play("tts: Hello everyone", userId);
201
+ ```
202
+
203
+ ---
204
+
205
+ ## 📡 Events
206
+
207
+ Listen globally via manager:
208
+
209
+ ```ts
210
+ manager.on("trackStart", (player, track) => {});
211
+ manager.on("queueEnd", (player) => {});
212
+ manager.on("playerError", (player, error) => {});
213
+ ```
214
+
215
+ ---
216
+
217
+ ## 🧠 Advanced Features
218
+
219
+ ### Autoplay
220
+
221
+ ```ts
222
+ player.queue.autoPlay(true);
223
+ ```
224
+
225
+ ### Insert next track
226
+
227
+ ```ts
228
+ await player.insert("song", 0);
229
+ ```
230
+
231
+ ### Save stream
232
+
233
+ ```ts
234
+ const stream = await player.save(track);
235
+ stream.pipe(fs.createWriteStream("song.mp3"));
236
+ ```
237
+
238
+ ---
239
+
240
+ ## ⚠️ Best Practices
241
+
242
+ - Use **one PlayerManager** per bot
243
+ - Always `await player.connect()` before playing
244
+ - Handle `playerError` events
245
+ - Do not reuse a destroyed player
246
+
247
+ ---
248
+
249
+ ## 📚 Resources
250
+
251
+ - Examples: [https://github.com/ZiProject/ZiPlayer/tree/main/examples](https://github.com/ZiProject/ZiPlayer/tree/main/examples)
252
+ - GitHub: [https://github.com/ZiProject/ZiPlayer](https://github.com/ZiProject/ZiPlayer)
253
+ - npm: [https://www.npmjs.com/package/ziplayer](https://www.npmjs.com/package/ziplayer)
254
+
255
+ ---
256
+
257
+ ## 📄 License
258
+
259
+ MIT License
@@ -4,12 +4,12 @@ import type { SearchResult, StreamInfo, Track, ExtensionPlayRequest, ExtensionPl
4
4
  import { BaseExtension } from "./BaseExtension";
5
5
  export { BaseExtension } from "./BaseExtension";
6
6
  export declare class ExtensionManager {
7
- private debug;
8
7
  private extensions;
9
8
  private player;
10
9
  private manager;
11
10
  private extensionContext;
12
11
  constructor(player: Player, manager: PlayerManager);
12
+ debug(message?: any, ...optionalParams: any[]): void;
13
13
  register(extension: BaseExtension): void;
14
14
  unregister(extension: BaseExtension): boolean;
15
15
  destroy(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAEX,YAAY,EACZ,UAAU,EACV,KAAK,EAEL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAEzB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAKhD,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;IAalD,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAUxC,UAAU,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO;IAS7C,OAAO,IAAI,IAAI;IAQf,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI5C,MAAM,IAAI,aAAa,EAAE;IAIzB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,aAAa,GAAG,SAAS;IAInD,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,wBAAwB;IAc1B,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAkB/E,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAkBvD,eAAe,CACpB,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC;QAAE,OAAO,EAAE,oBAAoB,CAAC;QAAC,QAAQ,EAAE,qBAAqB,CAAA;KAAE,CAAC;IAwCxE,cAAc,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAEX,YAAY,EACZ,UAAU,EACV,KAAK,EAEL,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAEzB,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;IAMlD,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAMpD,QAAQ,CAAC,SAAS,EAAE,aAAa,GAAG,IAAI;IAUxC,UAAU,CAAC,SAAS,EAAE,aAAa,GAAG,OAAO;IAS7C,OAAO,IAAI,IAAI;IAQf,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI5C,MAAM,IAAI,aAAa,EAAE;IAIzB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,aAAa,GAAG,SAAS;IAInD,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,wBAAwB;IAc1B,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAkB/E,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAkBvD,eAAe,CACpB,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC;QAAE,OAAO,EAAE,oBAAoB,CAAC;QAAC,QAAQ,EAAE,qBAAqB,CAAA;KAAE,CAAC;IAwCxE,cAAc,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBvE"}
@@ -10,11 +10,11 @@ class ExtensionManager {
10
10
  this.manager = manager;
11
11
  this.extensions = new Map();
12
12
  this.extensionContext = Object.freeze({ player, manager });
13
- this.debug = (message, ...optionalParams) => {
14
- if (manager.debugEnabled) {
15
- manager.emit("debug", `[ExtensionManager] ${message}`, ...optionalParams);
16
- }
17
- };
13
+ }
14
+ debug(message, ...optionalParams) {
15
+ if (this.manager.debugEnabled) {
16
+ this.manager.emit("debug", `[ExtensionManager] ${message}`, ...optionalParams);
17
+ }
18
18
  }
19
19
  register(extension) {
20
20
  if (this.extensions.has(extension.name)) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":";;;AAgBA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAEtB,oBAAoB;AACpB,MAAa,gBAAgB;IAM5B,YAAY,MAAc,EAAE,OAAsB;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,KAAK,CAAC,OAAa,EAAE,GAAG,cAAqB;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,OAAO,EAAE,EAAE,GAAG,cAAc,CAAC,CAAC;QAChF,CAAC;IACF,CAAC;IAED,QAAQ,CAAC,SAAwB;QAChC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,OAAO;QACR,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACvB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,UAAU,CAAC,SAAwB;QAClC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,OAAO;QACN,IAAI,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAC3D,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,GAAG,CAAC,IAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,MAAM;QACL,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,aAAa,CAAC,IAAS;QACtB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEO,wBAAwB,CAAC,SAAoC,EAAE,IAAgC;QACtG,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,EAAE,GAAI,SAAiB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,OAAO,EAAE,KAAK,UAAU;YAAE,OAAO;QACrC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACzD,IAAI,MAAM,IAAI,OAAQ,MAA2B,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACtE,MAA2B,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAC,IAAI,IAAI,IAAI,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;YACrH,CAAC;QACF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAC,IAAI,IAAI,IAAI,SAAS,EAAE,GAAG,CAAC,CAAC;QACxE,CAAC;IACF,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa,EAAE,WAAmB;QACrD,MAAM,OAAO,GAA2B,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;QAC/D,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAI,SAAiB,CAAC,aAAa,CAAC;YAC9C,IAAI,OAAO,IAAI,KAAK,UAAU;gBAAE,SAAS;YACzC,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC3F,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxE,IAAI,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAC,IAAI,8BAA8B,KAAK,EAAE,CAAC,CAAC;oBACtF,OAAO,MAAsB,CAAC;gBAC/B,CAAC;YACF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAC,IAAI,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAC9E,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAY;QAC/B,MAAM,OAAO,GAA2B,EAAE,KAAK,EAAE,CAAC;QAClD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAI,SAAiB,CAAC,aAAa,CAAC;YAC9C,IAAI,OAAO,IAAI,KAAK,UAAU;gBAAE,SAAS;YACzC,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC3F,IAAI,MAAM,IAAK,MAAqB,CAAC,MAAM,EAAE,CAAC;oBAC7C,IAAI,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAC,IAAI,+BAA+B,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC7F,OAAO,MAAoB,CAAC;gBAC7B,CAAC;YACF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAC,IAAI,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAC9E,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED,KAAK,CAAC,eAAe,CACpB,OAA6B;QAE7B,MAAM,OAAO,GAAyB,EAAE,GAAG,OAAO,EAAE,CAAC;QACrD,MAAM,QAAQ,GAA0B,EAAE,CAAC;QAC3C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAI,SAAiB,CAAC,UAAU,CAAC;YAC3C,IAAI,OAAO,IAAI,KAAK,UAAU;gBAAE,SAAS;YACzC,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC3F,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAChC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;oBAC7B,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC/B,CAAC;gBACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACtC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;oBACzC,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;gBAC3C,CAAC;gBACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBACjC,CAAC;gBACD,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBAC5C,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gBACzC,CAAC;gBACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACzC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBACnC,CAAC;gBACD,IAAI,MAAM,CAAC,KAAK,YAAY,KAAK,EAAE,CAAC;oBACnC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC/B,CAAC;gBACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACzC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;oBAClC,IAAI,MAAM,CAAC,OAAO;wBAAE,MAAM;gBAC3B,CAAC;YACF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAC,IAAI,oBAAoB,EAAE,GAAG,CAAC,CAAC;YAC3E,CAAC;QACF,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,OAAkC;QACtD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACvC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC3E,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAI,SAAiB,CAAC,SAAS,CAAC;YAC1C,IAAI,OAAO,IAAI,KAAK,UAAU;gBAAE,SAAS;YACzC,IAAI,CAAC;gBACJ,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;YACtF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAC,IAAI,mBAAmB,EAAE,GAAG,CAAC,CAAC;YAC1E,CAAC;QACF,CAAC;IACF,CAAC;CACD;AA1KD,4CA0KC"}
@@ -2,11 +2,12 @@ import { SourcePlugin, Track, SearchResult, StreamInfo } from "../types";
2
2
  export declare abstract class BasePlugin implements SourcePlugin {
3
3
  abstract name: string;
4
4
  abstract version: string;
5
+ priority?: number;
5
6
  abstract canHandle(query: string): boolean;
6
7
  abstract search(query: string, requestedBy: string): Promise<SearchResult>;
7
- abstract getStream(track: Track): Promise<StreamInfo>;
8
- getFallback?(track: Track): Promise<StreamInfo>;
9
- getRelatedTracks?(trackURL: string, opts?: {
8
+ abstract getStream(track: Track, signal?: AbortSignal): Promise<StreamInfo>;
9
+ getFallback?(track: Track, signal?: AbortSignal): Promise<StreamInfo>;
10
+ getRelatedTracks?(trackURL: Track, opts?: {
10
11
  limit?: number;
11
12
  offset?: number;
12
13
  history?: Track[];
@@ -1 +1 @@
1
- {"version":3,"file":"BasePlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEzE,8BAAsB,UAAW,YAAW,YAAY;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAC1C,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1E,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAErD,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;IAI/C,gBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAIpH,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,eAAe,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;CAGpE"}
1
+ {"version":3,"file":"BasePlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEzE,8BAAsB,UAAW,YAAW,YAAY;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAK;IAEtB,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAC1C,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAC1E,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAE3E,WAAW,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAIrE,gBAAgB,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAInH,QAAQ,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI/B,eAAe,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;CAGpE"}
@@ -2,7 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BasePlugin = void 0;
4
4
  class BasePlugin {
5
- getFallback(track) {
5
+ constructor() {
6
+ this.priority = 0;
7
+ }
8
+ getFallback(track, signal) {
6
9
  throw new Error("getFallback not implemented");
7
10
  }
8
11
  getRelatedTracks(trackURL, opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"BasePlugin.js","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":";;;AAEA,MAAsB,UAAU;IAQ/B,WAAW,CAAE,KAAY;QACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAE,QAAgB,EAAE,IAA6D;QAChG,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAE,GAAW;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,eAAe,CAAE,GAAW,EAAE,WAAmB;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;CACD;AAvBD,gCAuBC"}
1
+ {"version":3,"file":"BasePlugin.js","sourceRoot":"","sources":["../../src/plugins/BasePlugin.ts"],"names":[],"mappings":";;;AAEA,MAAsB,UAAU;IAAhC;QAGC,aAAQ,GAAY,CAAC,CAAC;IAqBvB,CAAC;IAfA,WAAW,CAAE,KAAY,EAAE,MAAoB;QAC9C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAChD,CAAC;IAED,gBAAgB,CAAE,QAAe,EAAE,IAA6D;QAC/F,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAE,GAAW;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,eAAe,CAAE,GAAW,EAAE,WAAmB;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;CACD;AAxBD,gCAwBC"}
@@ -7,12 +7,12 @@ type PluginManagerOptions = {
7
7
  };
8
8
  export { BasePlugin } from "./BasePlugin";
9
9
  export declare class PluginManager {
10
- private debug;
11
10
  private options;
12
11
  private player;
13
12
  private manager;
14
13
  private plugins;
15
14
  constructor(player: Player, manager: PlayerManager, options: PluginManagerOptions);
15
+ debug(message?: any, ...optionalParams: any[]): void;
16
16
  register(plugin: BasePlugin): void;
17
17
  unregister(name: string): boolean;
18
18
  get(name: string): BasePlugin | undefined;
@@ -20,5 +20,14 @@ export declare class PluginManager {
20
20
  findPlugin(query: string): BasePlugin | undefined;
21
21
  clear(): void;
22
22
  getStream(track: Track): Promise<StreamInfo | null>;
23
+ /**
24
+ * Get related tracks for a given track
25
+ * @param {Track} track Track to find related tracks for
26
+ * @returns {Track[]} Related tracks or empty array
27
+ * @example
28
+ * const related = await player.getRelatedTracks(track);
29
+ * console.log(`Found ${related.length} related tracks`);
30
+ */
31
+ getRelatedTracks(track: Track): Promise<Track[]>;
23
32
  }
24
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,KAAK,oBAAoB,GAAG;IAC3B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,qBAAa,aAAa;IACzB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAsC;gBAEzC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB;IAWjF,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIlC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIzC,MAAM,IAAI,UAAU,EAAE;IAItB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD,KAAK,IAAI,IAAI;IAIP,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;CAoDzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,KAAK,oBAAoB,GAAG;IAC3B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAwF1C,qBAAa,aAAa;IACzB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAsC;gBAEzC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB;IAMjF,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAMpD,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIlC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIzC,MAAM,IAAI,UAAU,EAAE;IAItB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD,KAAK,IAAI,IAAI;IAIP,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAqFzD;;;;;;;OAOG;IACG,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;CAsDtD"}