ziplayer 0.0.8 → 0.1.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.
@@ -1,6 +1,54 @@
1
1
  import { VoiceConnection } from "@discordjs/voice";
2
2
  import { Readable } from "stream";
3
3
  import { Player } from "../structures/Player";
4
+ import type { PlayerManager } from "../structures/PlayerManager";
5
+ /**
6
+ * Represents a music track with metadata and streaming information.
7
+ *
8
+ * @example
9
+ * // Basic track from YouTube
10
+ * const track: Track = {
11
+ * id: "dQw4w9WgXcQ",
12
+ * title: "Never Gonna Give You Up",
13
+ * url: "https://youtube.com/watch?v=dQw4w9WgXcQ",
14
+ * duration: 212000,
15
+ * thumbnail: "https://img.youtube.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
16
+ * requestedBy: "123456789",
17
+ * source: "youtube",
18
+ * metadata: {
19
+ * artist: "Rick Astley",
20
+ * album: "Whenever You Need Somebody"
21
+ * }
22
+ * };
23
+ *
24
+ * // Track from SoundCloud
25
+ * const soundcloudTrack: Track = {
26
+ * id: "soundcloud-track-123",
27
+ * title: "Electronic Song",
28
+ * url: "https://soundcloud.com/artist/electronic-song",
29
+ * duration: 180000,
30
+ * requestedBy: "user456",
31
+ * source: "soundcloud",
32
+ * metadata: {
33
+ * artist: "Electronic Artist",
34
+ * genre: "Electronic"
35
+ * }
36
+ * };
37
+ *
38
+ * // TTS track
39
+ * const ttsTrack: Track = {
40
+ * id: "tts-" + Date.now(),
41
+ * title: "TTS: Hello everyone!",
42
+ * url: "tts: Hello everyone!",
43
+ * duration: 5000,
44
+ * requestedBy: "user789",
45
+ * source: "tts",
46
+ * metadata: {
47
+ * text: "Hello everyone!",
48
+ * language: "en"
49
+ * }
50
+ * };
51
+ */
4
52
  export interface Track {
5
53
  id: string;
6
54
  title: string;
@@ -11,6 +59,28 @@ export interface Track {
11
59
  source: string;
12
60
  metadata?: Record<string, any>;
13
61
  }
62
+ /**
63
+ * Contains search results from plugins, including tracks and optional playlist information.
64
+ *
65
+ * @example
66
+ * const result: SearchResult = {
67
+ * tracks: [
68
+ * {
69
+ * id: "track1",
70
+ * title: "Song 1",
71
+ * url: "https://example.com/track1",
72
+ * duration: 180000,
73
+ * requestedBy: "user123",
74
+ * source: "youtube"
75
+ * }
76
+ * ],
77
+ * playlist: {
78
+ * name: "My Playlist",
79
+ * url: "https://example.com/playlist",
80
+ * thumbnail: "https://example.com/thumb.jpg"
81
+ * }
82
+ * };
83
+ */
14
84
  export interface SearchResult {
15
85
  tracks: Track[];
16
86
  playlist?: {
@@ -19,11 +89,45 @@ export interface SearchResult {
19
89
  thumbnail?: string;
20
90
  };
21
91
  }
92
+ /**
93
+ * Contains streaming information for audio playback.
94
+ *
95
+ * @example
96
+ * const streamInfo: StreamInfo = {
97
+ * stream: audioStream,
98
+ * type: "webm/opus",
99
+ * metadata: {
100
+ * bitrate: 128000,
101
+ * sampleRate: 48000
102
+ * }
103
+ * };
104
+ */
22
105
  export interface StreamInfo {
23
106
  stream: Readable;
24
107
  type: "webm/opus" | "ogg/opus" | "arbitrary";
25
108
  metadata?: Record<string, any>;
26
109
  }
110
+ /**
111
+ * Configuration options for creating a new player instance.
112
+ *
113
+ * @example
114
+ * const options: PlayerOptions = {
115
+ * leaveOnEnd: true,
116
+ * leaveOnEmpty: true,
117
+ * leaveTimeout: 30000,
118
+ * volume: 0.5,
119
+ * quality: "high",
120
+ * selfDeaf: false,
121
+ * selfMute: false,
122
+ * extractorTimeout: 10000,
123
+ * tts: {
124
+ * createPlayer: true,
125
+ * interrupt: true,
126
+ * volume: 1.0,
127
+ * Max_Time_TTS: 30000
128
+ * }
129
+ * };
130
+ */
27
131
  export interface PlayerOptions {
28
132
  leaveOnEnd?: boolean;
29
133
  leaveOnEmpty?: boolean;
@@ -61,8 +165,40 @@ export interface PlayerOptions {
61
165
  */
62
166
  extensions?: any[] | string[];
63
167
  }
168
+ /**
169
+ * Constructor for a SourcePlugin
170
+ *
171
+ * @example
172
+ * const plugin = new YouTubePlugin();
173
+ * console.log(`Plugin: ${plugin.name}`);
174
+ */
64
175
  export type SourcePluginCtor<T extends SourcePlugin = SourcePlugin> = new (...args: any[]) => T;
176
+ /**
177
+ * SourcePlugin or SourcePluginCtor
178
+ *
179
+ * @example
180
+ * const plugin = new YouTubePlugin();
181
+ * console.log(`Plugin: ${plugin.name}`);
182
+ */
65
183
  export type SourcePluginLike = SourcePlugin | SourcePluginCtor;
184
+ /**
185
+ * Configuration options for creating a PlayerManager instance.
186
+ *
187
+ * @example
188
+ * const managerOptions: PlayerManagerOptions = {
189
+ * plugins: [
190
+ * new YouTubePlugin(),
191
+ * new SoundCloudPlugin(),
192
+ * new SpotifyPlugin(),
193
+ * new TTSPlugin({ defaultLang: "en" })
194
+ * ],
195
+ * extensions: [
196
+ * new voiceExt(null, { lang: "en-US" }),
197
+ * new lavalinkExt(null, { nodes: [...] })
198
+ * ],
199
+ * extractorTimeout: 10000
200
+ * };
201
+ */
66
202
  export interface PlayerManagerOptions {
67
203
  plugins?: SourcePluginLike[];
68
204
  extensions?: any[];
@@ -72,12 +208,178 @@ export interface PlayerManagerOptions {
72
208
  */
73
209
  extractorTimeout?: number;
74
210
  }
211
+ /**
212
+ * Options for the progress bar
213
+ *
214
+ * @example
215
+ * const options: ProgressBarOptions = {
216
+ * size: 10,
217
+ * barChar: "=",
218
+ * progressChar: ">"
219
+ * };
220
+ */
75
221
  export interface ProgressBarOptions {
76
222
  size?: number;
77
223
  barChar?: string;
78
224
  progressChar?: string;
79
225
  }
80
226
  export type LoopMode = "off" | "track" | "queue";
227
+ /**
228
+ * Context for the extension
229
+ *
230
+ * @example
231
+ * const context: ExtensionContext = {
232
+ * player: player,
233
+ * manager: manager
234
+ * };
235
+ */
236
+ export interface ExtensionContext {
237
+ player: Player;
238
+ manager: PlayerManager;
239
+ }
240
+ /**
241
+ * Request for the extension to play a track
242
+ *
243
+ * @example
244
+ * const request: ExtensionPlayRequest = {
245
+ * query: "Song Name",
246
+ * requestedBy: "user123"
247
+ * };
248
+ */
249
+ export interface ExtensionPlayRequest {
250
+ query: string | Track;
251
+ requestedBy?: string;
252
+ }
253
+ /**
254
+ * Response for the extension to play a track
255
+ *
256
+ * @example
257
+ * const response: ExtensionPlayResponse = {
258
+ * handled: true,
259
+ * query: "Song Name",
260
+ * requestedBy: "user123"
261
+ * };
262
+ */
263
+ export interface ExtensionPlayResponse {
264
+ handled?: boolean;
265
+ query?: string | Track;
266
+ requestedBy?: string;
267
+ tracks?: Track[];
268
+ isPlaylist?: boolean;
269
+ success?: boolean;
270
+ error?: Error;
271
+ }
272
+ /**
273
+ * Payload for the extension to play a track
274
+ *
275
+ * @example
276
+ * const payload: ExtensionAfterPlayPayload = {
277
+ * success: true,
278
+ * query: "Song Name",
279
+ * requestedBy: "user123"
280
+ * };
281
+ */
282
+ export interface ExtensionAfterPlayPayload {
283
+ success: boolean;
284
+ query: string | Track;
285
+ requestedBy?: string;
286
+ tracks?: Track[];
287
+ isPlaylist?: boolean;
288
+ error?: Error;
289
+ }
290
+ /**
291
+ * Request for the extension to stream a track
292
+ *
293
+ * @example
294
+ * const request: ExtensionStreamRequest = {
295
+ * track: track
296
+ * };
297
+ */
298
+ export interface ExtensionStreamRequest {
299
+ track: Track;
300
+ }
301
+ /**
302
+ * Request for the extension to search for a track
303
+ *
304
+ * @example
305
+ * const request: ExtensionSearchRequest = {
306
+ * query: "Song Name",
307
+ * requestedBy: "user123"
308
+ * };
309
+ */
310
+ export interface ExtensionSearchRequest {
311
+ query: string;
312
+ requestedBy: string;
313
+ }
314
+ /**
315
+ * Event types emitted by Player instances.
316
+ *
317
+ * @example
318
+ *
319
+ * player.on("willPlay", (player, track) => {
320
+ * console.log(`Up next: ${track.title}`);
321
+ * });
322
+ *
323
+ * player.on("trackEnd", (player, track) => {
324
+ * console.log(`Now playing: ${track.title}`);
325
+ * });
326
+ *
327
+ * player.on("queueAdd", (player, track) => {
328
+ * console.log(`Queue added: ${track.title}`);
329
+ * });
330
+ *
331
+ * player.on("queueAddList", (player, tracks) => {
332
+ * console.log(`Queue added: ${tracks.length} tracks`);
333
+ * });
334
+ *
335
+ * player.on("queueRemove", (player, track, index) => {
336
+ * console.log(`Queue removed: ${track.title} at index ${index}`);
337
+ * });
338
+ *
339
+ * player.on("playerPause", (player, track) => {
340
+ * console.log(`Player paused: ${track.title}`);
341
+ * });
342
+ *
343
+ * player.on("playerResume", (player, track) => {
344
+ * console.log(`Player resumed: ${track.title}`);
345
+ * });
346
+ *
347
+ * player.on("playerStop", (player) => {
348
+ * console.log("Player stopped");
349
+ * });
350
+ *
351
+ * player.on("playerDestroy", (player) => {
352
+ * console.log("Player destroyed");
353
+ * });
354
+ *
355
+ * player.on("ttsStart", (player, payload) => {
356
+ * console.log(`TTS started: ${payload.text}`);
357
+ * });
358
+ *
359
+ * player.on("ttsEnd", (player) => {
360
+ * console.log("TTS ended");
361
+ * });
362
+ *
363
+ * player.on("playerError", (player, error, track) => {
364
+ * console.log(`Player error: ${error.message}`);
365
+ * });
366
+ *
367
+ * player.on("connectionError", (player, error) => {
368
+ * console.log(`Connection error: ${error.message}`);
369
+ * });
370
+ * player.on("trackStart", (player, track) => {
371
+ * console.log(`Track started: ${track.title}`);
372
+ * });
373
+ *
374
+ * player.on("volumeChange", (player, oldVolume, newVolume) => {
375
+ * console.log(`Volume changed: ${oldVolume} -> ${newVolume}`);
376
+ * });
377
+ *
378
+ * player.on("queueEnd", (player) => {
379
+ * console.log("Queue finished");
380
+ * });
381
+ *
382
+ */
81
383
  export interface PlayerEvents {
82
384
  debug: [message: string, ...args: any[]];
83
385
  willPlay: [track: Track, upcomingTracks: Track[]];
@@ -102,6 +404,15 @@ export interface PlayerEvents {
102
404
  /** Emitted when TTS finished (interruption mode) */
103
405
  ttsEnd: [];
104
406
  }
407
+ /**
408
+ * Plugin interface
409
+ *
410
+ * @example
411
+ * const plugin: SourcePlugin = {
412
+ * name: "YouTube",
413
+ * version: "1.0.0"
414
+ * };
415
+ */
105
416
  export interface SourcePlugin {
106
417
  name: string;
107
418
  version: string;
@@ -115,11 +426,26 @@ export interface SourcePlugin {
115
426
  validate?(url: string): boolean;
116
427
  extractPlaylist?(url: string, requestedBy: string): Promise<Track[]>;
117
428
  }
429
+ /**
430
+ * Extension interface
431
+ *
432
+ * @example
433
+ * const extension: SourceExtension = {
434
+ * name: "YouTube",
435
+ * version: "1.0.0"
436
+ * };
437
+ */
118
438
  export interface SourceExtension {
119
439
  name: string;
120
440
  version: string;
121
441
  connection?: VoiceConnection;
122
442
  player: Player | null;
123
- active(alas: any): boolean;
443
+ active(alas: any): boolean | Promise<boolean>;
444
+ onRegister?(context: ExtensionContext): void | Promise<void>;
445
+ onDestroy?(context: ExtensionContext): void | Promise<void>;
446
+ beforePlay?(context: ExtensionContext, payload: ExtensionPlayRequest): Promise<ExtensionPlayResponse | void> | ExtensionPlayResponse | void;
447
+ afterPlay?(context: ExtensionContext, payload: ExtensionAfterPlayPayload): Promise<void> | void;
448
+ provideSearch?(context: ExtensionContext, payload: ExtensionSearchRequest): Promise<SearchResult | null | undefined> | SearchResult | null | undefined;
449
+ provideStream?(context: ExtensionContext, payload: ExtensionStreamRequest): Promise<StreamInfo | null | undefined> | StreamInfo | null | undefined;
124
450
  }
125
451
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Utility function to add timeout to a promise
3
+ * @param promise The promise to add timeout to
4
+ * @param timeoutMs Timeout in milliseconds
5
+ * @param message Error message when timeout occurs
6
+ * @returns Promise that rejects if timeout is reached
7
+ */
8
+ export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number, message: string): Promise<T>;
9
+ //# sourceMappingURL=timeout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../../src/utils/timeout.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAElG"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withTimeout = withTimeout;
4
+ /**
5
+ * Utility function to add timeout to a promise
6
+ * @param promise The promise to add timeout to
7
+ * @param timeoutMs Timeout in milliseconds
8
+ * @param message Error message when timeout occurs
9
+ * @returns Promise that rejects if timeout is reached
10
+ */
11
+ function withTimeout(promise, timeoutMs, message) {
12
+ return Promise.race([promise, new Promise((_, reject) => setTimeout(() => reject(new Error(message)), timeoutMs))]);
13
+ }
14
+ //# sourceMappingURL=timeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/utils/timeout.ts"],"names":[],"mappings":";;AAOA,kCAEC;AATD;;;;;;GAMG;AACH,SAAgB,WAAW,CAAI,OAAmB,EAAE,SAAiB,EAAE,OAAe;IACrF,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5H,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ziplayer",
3
- "version": "0.0.8",
3
+ "version": "0.1.0",
4
4
  "description": "A modular Discord voice player with plugin system",
5
5
  "keywords": [
6
6
  "ZiPlayer",
@@ -1,10 +1,35 @@
1
- import { SourceExtension, Track, SearchResult, StreamInfo } from "../types";
2
- import { Player } from "../structures/Player";
3
-
4
- export abstract class BaseExtension implements SourceExtension {
5
- abstract name: string;
6
- abstract version: string;
7
- abstract player: Player | null;
8
-
9
- abstract active(alas: any): boolean;
10
- }
1
+ import type {
2
+ SourceExtension,
3
+ ExtensionContext,
4
+ SearchResult,
5
+ ExtensionPlayRequest,
6
+ ExtensionPlayResponse,
7
+ ExtensionAfterPlayPayload,
8
+ ExtensionStreamRequest,
9
+ StreamInfo,
10
+ ExtensionSearchRequest,
11
+ } from "../types";
12
+ import type { Player } from "../structures/Player";
13
+
14
+ export abstract class BaseExtension implements SourceExtension {
15
+ abstract name: string;
16
+ abstract version: string;
17
+ abstract player: Player | null;
18
+ abstract active(alas: any): boolean | Promise<boolean>;
19
+
20
+ onRegister?(context: ExtensionContext): void | Promise<void>;
21
+ onDestroy?(context: ExtensionContext): void | Promise<void>;
22
+ beforePlay?(
23
+ context: ExtensionContext,
24
+ payload: ExtensionPlayRequest,
25
+ ): Promise<ExtensionPlayResponse | void> | ExtensionPlayResponse | void;
26
+ afterPlay?(context: ExtensionContext, payload: ExtensionAfterPlayPayload): Promise<void> | void;
27
+ provideSearch?(
28
+ context: ExtensionContext,
29
+ payload: ExtensionSearchRequest,
30
+ ): Promise<SearchResult | null | undefined> | SearchResult | null | undefined;
31
+ provideStream?(
32
+ context: ExtensionContext,
33
+ payload: ExtensionStreamRequest,
34
+ ): Promise<StreamInfo | null | undefined> | StreamInfo | null | undefined;
35
+ }