ziplayer 0.2.7 → 0.3.1

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 (63) hide show
  1. package/AI-Guide.md +624 -956
  2. package/README.md +277 -10
  3. package/dist/extensions/BaseExtension.d.ts +1 -0
  4. package/dist/extensions/BaseExtension.d.ts.map +1 -1
  5. package/dist/extensions/BaseExtension.js.map +1 -1
  6. package/dist/extensions/index.d.ts +38 -3
  7. package/dist/extensions/index.d.ts.map +1 -1
  8. package/dist/extensions/index.js +259 -41
  9. package/dist/extensions/index.js.map +1 -1
  10. package/dist/persistence/PersistenceManager.d.ts +95 -0
  11. package/dist/persistence/PersistenceManager.d.ts.map +1 -0
  12. package/dist/persistence/PersistenceManager.js +975 -0
  13. package/dist/persistence/PersistenceManager.js.map +1 -0
  14. package/dist/plugins/BasePlugin.js +1 -1
  15. package/dist/plugins/BasePlugin.js.map +1 -1
  16. package/dist/plugins/index.d.ts +74 -8
  17. package/dist/plugins/index.d.ts.map +1 -1
  18. package/dist/plugins/index.js +657 -116
  19. package/dist/plugins/index.js.map +1 -1
  20. package/dist/structures/FilterManager.js +3 -3
  21. package/dist/structures/FilterManager.js.map +1 -1
  22. package/dist/structures/PersistenceManager.d.ts +96 -0
  23. package/dist/structures/PersistenceManager.d.ts.map +1 -0
  24. package/dist/structures/PersistenceManager.js +1008 -0
  25. package/dist/structures/PersistenceManager.js.map +1 -0
  26. package/dist/structures/Player.d.ts +158 -14
  27. package/dist/structures/Player.d.ts.map +1 -1
  28. package/dist/structures/Player.js +1175 -188
  29. package/dist/structures/Player.js.map +1 -1
  30. package/dist/structures/PlayerManager.d.ts +106 -91
  31. package/dist/structures/PlayerManager.d.ts.map +1 -1
  32. package/dist/structures/PlayerManager.js +365 -124
  33. package/dist/structures/PlayerManager.js.map +1 -1
  34. package/dist/structures/Queue.d.ts +136 -31
  35. package/dist/structures/Queue.d.ts.map +1 -1
  36. package/dist/structures/Queue.js +265 -46
  37. package/dist/structures/Queue.js.map +1 -1
  38. package/dist/structures/StreamManager.d.ts +137 -0
  39. package/dist/structures/StreamManager.d.ts.map +1 -0
  40. package/dist/structures/StreamManager.js +420 -0
  41. package/dist/structures/StreamManager.js.map +1 -0
  42. package/dist/types/index.d.ts +181 -8
  43. package/dist/types/index.d.ts.map +1 -1
  44. package/dist/types/index.js.map +1 -1
  45. package/dist/types/persistence.d.ts +77 -0
  46. package/dist/types/persistence.d.ts.map +1 -0
  47. package/dist/types/persistence.js +3 -0
  48. package/dist/types/persistence.js.map +1 -0
  49. package/package.json +3 -2
  50. package/src/extensions/BaseExtension.ts +1 -0
  51. package/src/extensions/index.ts +320 -37
  52. package/src/plugins/BasePlugin.ts +1 -1
  53. package/src/plugins/index.ts +809 -139
  54. package/src/structures/FilterManager.ts +3 -3
  55. package/src/structures/Player.ts +2810 -1693
  56. package/src/structures/PlayerManager.ts +438 -129
  57. package/src/structures/Queue.ts +300 -55
  58. package/src/structures/StreamManager.ts +524 -0
  59. package/src/types/extension.ts +129 -129
  60. package/src/types/fillter.ts +264 -264
  61. package/src/types/index.ts +187 -12
  62. package/src/types/plugin.ts +59 -59
  63. package/tsconfig.json +0 -1
@@ -45,77 +45,100 @@ class Queue {
45
45
  this._autoPlay = false;
46
46
  this._loop = "off";
47
47
  this.willnext = null;
48
+ // Configuration
49
+ this.MAX_HISTORY_SIZE = 200;
50
+ this.MAX_QUEUE_SIZE = 1000; // Prevent memory issues
48
51
  }
49
52
  /**
50
53
  * Add track(s) to the queue
51
54
  *
52
55
  * @param {Track | Track[]} track - Track or array of tracks to add
56
+ * @returns {number} New queue size
53
57
  * @example
54
58
  * queue.add(track);
55
59
  * queue.add([track1, track2, track3]);
56
60
  */
57
61
  add(track) {
62
+ if (this.tracks.length >= this.MAX_QUEUE_SIZE) {
63
+ throw new Error(`Queue size limit reached (${this.MAX_QUEUE_SIZE})`);
64
+ }
58
65
  this.tracks.push(track);
66
+ return this.tracks.length;
59
67
  }
60
68
  /**
61
69
  * Add multiple tracks to the queue
62
70
  *
63
71
  * @param {Track[]} tracks - Tracks to add
72
+ * @returns {number} New queue size
64
73
  * @example
65
74
  * queue.addMultiple([track1, track2, track3]);
66
75
  */
67
76
  addMultiple(tracks) {
77
+ if (this.tracks.length + tracks.length > this.MAX_QUEUE_SIZE) {
78
+ throw new Error(`Adding ${tracks.length} tracks would exceed queue size limit (${this.MAX_QUEUE_SIZE})`);
79
+ }
68
80
  this.tracks.push(...tracks);
81
+ return this.tracks.length;
69
82
  }
70
83
  /**
71
84
  * Insert a track at a specific upcoming position (0 = next)
72
85
  *
73
86
  * @param {Track} track - Track to insert
74
87
  * @param {number} index - Index to insert the track at
88
+ * @returns {number} New queue size
75
89
  * @example
76
90
  * queue.insert(track, 0);
77
91
  */
78
92
  insert(track, index) {
93
+ if (this.tracks.length >= this.MAX_QUEUE_SIZE) {
94
+ throw new Error(`Queue size limit reached (${this.MAX_QUEUE_SIZE})`);
95
+ }
79
96
  if (!Number.isFinite(index)) {
80
97
  this.tracks.push(track);
81
- return;
98
+ return this.tracks.length;
82
99
  }
83
100
  const i = Math.max(0, Math.min(Math.floor(index), this.tracks.length));
84
101
  if (i === this.tracks.length) {
85
102
  this.tracks.push(track);
86
- return;
87
103
  }
88
- if (i <= 0) {
104
+ else if (i <= 0) {
89
105
  this.tracks.unshift(track);
90
- return;
91
106
  }
92
- this.tracks.splice(i, 0, track);
107
+ else {
108
+ this.tracks.splice(i, 0, track);
109
+ }
110
+ return this.tracks.length;
93
111
  }
94
112
  /**
95
113
  * Insert multiple tracks at a specific upcoming position, preserving order
96
114
  *
97
115
  * @param {Track[]} tracks - Tracks to insert
98
116
  * @param {number} index - Index to insert the tracks at
117
+ * @returns {number} New queue size
99
118
  * @example
100
119
  * queue.insertMultiple([track1, track2, track3], 0);
101
120
  */
102
121
  insertMultiple(tracks, index) {
103
122
  if (!Array.isArray(tracks) || tracks.length === 0)
104
- return;
123
+ return this.tracks.length;
124
+ if (this.tracks.length + tracks.length > this.MAX_QUEUE_SIZE) {
125
+ throw new Error(`Inserting ${tracks.length} tracks would exceed queue size limit (${this.MAX_QUEUE_SIZE})`);
126
+ }
105
127
  if (!Number.isFinite(index)) {
106
128
  this.tracks.push(...tracks);
107
- return;
129
+ return this.tracks.length;
108
130
  }
109
131
  const i = Math.max(0, Math.min(Math.floor(index), this.tracks.length));
110
132
  if (i === 0) {
111
133
  this.tracks = [...tracks, ...this.tracks];
112
- return;
113
134
  }
114
- if (i === this.tracks.length) {
135
+ else if (i === this.tracks.length) {
115
136
  this.tracks.push(...tracks);
116
- return;
117
137
  }
118
- this.tracks.splice(i, 0, ...tracks);
138
+ else {
139
+ this.tracks.splice(i, 0, ...tracks);
140
+ }
141
+ return this.tracks.length;
119
142
  }
120
143
  /**
121
144
  * Remove a track from the queue
@@ -129,7 +152,43 @@ class Queue {
129
152
  remove(index) {
130
153
  if (index < 0 || index >= this.tracks.length)
131
154
  return null;
132
- return this.tracks.splice(index, 1)[0];
155
+ const removed = this.tracks.splice(index, 1)[0];
156
+ return removed;
157
+ }
158
+ /**
159
+ * Remove multiple tracks by indices
160
+ *
161
+ * @param {number[]} indices - Array of indices to remove
162
+ * @returns {Track[]} Removed tracks
163
+ * @example
164
+ * const removed = queue.removeMultiple([0, 2, 5]);
165
+ */
166
+ removeMultiple(indices) {
167
+ const sorted = [...new Set(indices)].sort((a, b) => b - a);
168
+ const removed = [];
169
+ for (const index of sorted) {
170
+ if (index >= 0 && index < this.tracks.length) {
171
+ removed.unshift(this.tracks.splice(index, 1)[0]);
172
+ }
173
+ }
174
+ return removed;
175
+ }
176
+ /**
177
+ * Remove tracks by predicate
178
+ *
179
+ * @param {(track: Track, index: number) => boolean} predicate - Filter function
180
+ * @returns {Track[]} Removed tracks
181
+ * @example
182
+ * const removed = queue.removeWhere(track => track.source === "youtube");
183
+ */
184
+ removeWhere(predicate) {
185
+ const removed = [];
186
+ for (let i = this.tracks.length - 1; i >= 0; i--) {
187
+ if (predicate(this.tracks[i], i)) {
188
+ removed.unshift(this.tracks.splice(i, 1)[0]);
189
+ }
190
+ }
191
+ return removed;
133
192
  }
134
193
  /**
135
194
  * Get the next track in the queue
@@ -141,16 +200,17 @@ class Queue {
141
200
  * console.log(`Next track: ${nextTrack?.title}`);
142
201
  */
143
202
  next(ignoreLoop = false) {
203
+ // Handle track loop
204
+ if (this.current && this._loop === "track" && !ignoreLoop) {
205
+ return this.current;
206
+ }
207
+ // Save current to history before moving to next
144
208
  if (this.current) {
145
- if (this._loop === "track" && !ignoreLoop) {
146
- return this.current;
147
- }
148
- this.history.push(this.current);
149
- if (this.history.length > 200) {
150
- this.history.shift();
151
- }
209
+ this.addToHistory(this.current);
152
210
  }
211
+ // Get next track
153
212
  this.current = this.tracks.shift() || null;
213
+ // Handle queue loop
154
214
  if (!this.current && this._loop === "queue" && this.history.length > 0 && !ignoreLoop) {
155
215
  this.tracks = [...this.history];
156
216
  this.history = [];
@@ -158,6 +218,15 @@ class Queue {
158
218
  }
159
219
  return this.current;
160
220
  }
221
+ /**
222
+ * Add track to history with size limit
223
+ */
224
+ addToHistory(track) {
225
+ this.history.push(track);
226
+ if (this.history.length > this.MAX_HISTORY_SIZE) {
227
+ this.history.shift();
228
+ }
229
+ }
161
230
  /**
162
231
  * Clear all tracks from the queue
163
232
  *
@@ -166,6 +235,29 @@ class Queue {
166
235
  */
167
236
  clear() {
168
237
  this.tracks = [];
238
+ // Optionally reset current track? Usually not, but provide option
239
+ }
240
+ /**
241
+ * Clear history
242
+ *
243
+ * @example
244
+ * queue.clearHistory();
245
+ */
246
+ clearHistory() {
247
+ this.history = [];
248
+ }
249
+ /**
250
+ * Reset entire queue (current, history, tracks)
251
+ *
252
+ * @example
253
+ * queue.reset();
254
+ */
255
+ reset() {
256
+ this.tracks = [];
257
+ this.current = null;
258
+ this.history = [];
259
+ this.related = [];
260
+ this.willnext = null;
169
261
  }
170
262
  /**
171
263
  * Enable or disable auto-play
@@ -196,6 +288,22 @@ class Queue {
196
288
  }
197
289
  return this._loop;
198
290
  }
291
+ /**
292
+ * Check if queue is currently looping
293
+ *
294
+ * @returns {boolean} True if looping
295
+ */
296
+ isLooping() {
297
+ return this._loop !== "off";
298
+ }
299
+ /**
300
+ * Get current loop mode
301
+ *
302
+ * @returns {LoopMode} Current loop mode
303
+ */
304
+ getLoopMode() {
305
+ return this._loop;
306
+ }
199
307
  /**
200
308
  * Shuffle the queue
201
309
  *
@@ -203,66 +311,93 @@ class Queue {
203
311
  * queue.shuffle();
204
312
  */
205
313
  shuffle() {
314
+ // Fisher-Yates shuffle
206
315
  for (let i = this.tracks.length - 1; i > 0; i--) {
207
316
  const j = Math.floor(Math.random() * (i + 1));
208
317
  [this.tracks[i], this.tracks[j]] = [this.tracks[j], this.tracks[i]];
209
318
  }
210
319
  }
211
320
  /**
212
- * Get the size of the queue
321
+ * Move a track from one position to another
322
+ *
323
+ * @param {number} fromIndex - Current index
324
+ * @param {number} toIndex - Target index
325
+ * @returns {boolean} True if move was successful
326
+ * @example
327
+ * queue.move(3, 0); // Move track at index 3 to position 0
328
+ */
329
+ move(fromIndex, toIndex) {
330
+ if (fromIndex < 0 || fromIndex >= this.tracks.length)
331
+ return false;
332
+ if (toIndex < 0 || toIndex >= this.tracks.length)
333
+ return false;
334
+ if (fromIndex === toIndex)
335
+ return true;
336
+ const [track] = this.tracks.splice(fromIndex, 1);
337
+ this.tracks.splice(toIndex, 0, track);
338
+ return true;
339
+ }
340
+ /**
341
+ * Swap two tracks in the queue
213
342
  *
214
- * @returns {number} The size of the queue
343
+ * @param {number} indexA - First track index
344
+ * @param {number} indexB - Second track index
345
+ * @returns {boolean} True if swap was successful
215
346
  * @example
216
- * const size = queue.size;
217
- * console.log(`Queue size: ${size}`);
347
+ * queue.swap(0, 3);
348
+ */
349
+ swap(indexA, indexB) {
350
+ if (indexA < 0 || indexA >= this.tracks.length)
351
+ return false;
352
+ if (indexB < 0 || indexB >= this.tracks.length)
353
+ return false;
354
+ if (indexA === indexB)
355
+ return true;
356
+ [this.tracks[indexA], this.tracks[indexB]] = [this.tracks[indexB], this.tracks[indexA]];
357
+ return true;
358
+ }
359
+ /**
360
+ * Get the size of the queue
218
361
  */
219
362
  get size() {
220
363
  return this.tracks.length;
221
364
  }
222
365
  /**
223
366
  * Check if the queue is empty
224
- *
225
- * @returns {boolean} True if the queue is empty
226
- * @example
227
- * const empty = queue.isEmpty;
228
- * console.log(`Queue is empty: ${empty}`);
229
367
  */
230
368
  get isEmpty() {
231
369
  return this.tracks.length === 0;
232
370
  }
233
371
  /**
234
372
  * Get the current track
235
- *
236
- * @returns {Track | null} The current track or null
237
- * @example
238
- * const currentTrack = queue.currentTrack;
239
- * console.log(`Current track: ${currentTrack?.title}`);
240
373
  */
241
374
  get currentTrack() {
242
375
  return this.current;
243
376
  }
244
377
  /**
245
378
  * Get the previous tracks
246
- *
247
- * @returns {Track[]} The previous tracks
248
- * @example
249
- * const previousTracks = queue.previousTracks;
250
- * console.log(`Previous tracks: ${previousTracks.length}`);
251
379
  */
252
380
  get previousTracks() {
253
381
  return [...this.history];
254
382
  }
383
+ /**
384
+ * Get the number of previous tracks
385
+ */
386
+ get previousTracksCount() {
387
+ return this.history.length;
388
+ }
255
389
  /**
256
390
  * Get the next track
257
- *
258
- * @returns {Track | null} The next track or null
259
- * @example
260
- * const nextTrack = queue.nextTrack;
261
- * console.log(`Next track: ${nextTrack?.title}`);
262
391
  */
263
392
  get nextTrack() {
264
393
  return this.tracks[0] || null;
265
394
  }
395
+ /**
396
+ * Get the last track in the queue
397
+ */
398
+ get lastTrack() {
399
+ return this.tracks[this.tracks.length - 1] || null;
400
+ }
266
401
  /**
267
402
  * Move back to the previously played track.
268
403
  * Makes the current track the next upcoming track, then sets previous as current.
@@ -282,7 +417,34 @@ class Queue {
282
417
  return this.current;
283
418
  }
284
419
  /**
285
- * Get the next track
420
+ * Jump to a specific track in history
421
+ *
422
+ * @param {number} stepsBack - Number of steps back in history (1 = previous)
423
+ * @returns {Track | null} The jumped-to track or null
424
+ * @example
425
+ * queue.jumpToHistory(2); // Go back 2 tracks
426
+ */
427
+ jumpToHistory(stepsBack) {
428
+ if (stepsBack <= 0 || stepsBack > this.history.length)
429
+ return null;
430
+ const targetIndex = this.history.length - stepsBack;
431
+ if (targetIndex < 0)
432
+ return null;
433
+ // Save current track to queue if exists
434
+ if (this.current) {
435
+ this.tracks.unshift(this.current);
436
+ }
437
+ // Get tracks after target to push back to queue
438
+ const tracksAfterTarget = this.history.splice(targetIndex + 1);
439
+ this.current = this.history.pop() || null;
440
+ // Push tracks after target back to queue (in reverse order to maintain sequence)
441
+ for (let i = tracksAfterTarget.length - 1; i >= 0; i--) {
442
+ this.tracks.unshift(tracksAfterTarget[i]);
443
+ }
444
+ return this.current;
445
+ }
446
+ /**
447
+ * Get the next track (for auto-play)
286
448
  *
287
449
  * @param {Track} track - The next track
288
450
  * @returns {Track | null} The next track or null
@@ -312,9 +474,9 @@ class Queue {
312
474
  return this.related;
313
475
  }
314
476
  /**
315
- * Get the tracks
477
+ * Get all tracks in the queue
316
478
  *
317
- * @returns {Track[]} The tracks
479
+ * @returns {Track[]} Copy of tracks array
318
480
  * @example
319
481
  * const tracks = queue.getTracks();
320
482
  * console.log(`Tracks: ${tracks.length}`);
@@ -322,6 +484,29 @@ class Queue {
322
484
  getTracks() {
323
485
  return [...this.tracks];
324
486
  }
487
+ /**
488
+ * Get serializable queue data
489
+ */
490
+ toJSON() {
491
+ return {
492
+ tracks: this.tracks,
493
+ current: this.current,
494
+ history: this.history,
495
+ size: this.size,
496
+ loopMode: this._loop,
497
+ autoPlay: this._autoPlay,
498
+ };
499
+ }
500
+ /**
501
+ * Restore queue from serialized data
502
+ */
503
+ fromJSON(data) {
504
+ this.tracks = [...data.tracks];
505
+ this.current = data.current;
506
+ this.history = [...data.history];
507
+ this._loop = data.loopMode;
508
+ this._autoPlay = data.autoPlay;
509
+ }
325
510
  /**
326
511
  * Get a track at a specific index
327
512
  *
@@ -334,6 +519,40 @@ class Queue {
334
519
  getTrack(index) {
335
520
  return this.tracks[index] || null;
336
521
  }
522
+ /**
523
+ * Find tracks by predicate
524
+ *
525
+ * @param {(track: Track) => boolean} predicate - Search function
526
+ * @returns {Track[]} Matching tracks
527
+ * @example
528
+ * const youtubeTracks = queue.findTracks(track => track.source === "youtube");
529
+ */
530
+ findTracks(predicate) {
531
+ return this.tracks.filter(predicate);
532
+ }
533
+ /**
534
+ * Get the index of a track in the queue
535
+ *
536
+ * @param {string | Track} identifier - Track ID, URL, or Track object
537
+ * @returns {number} Index of the track, -1 if not found
538
+ * @example
539
+ * const index = queue.indexOf(track);
540
+ */
541
+ indexOf(identifier) {
542
+ if (typeof identifier === "string") {
543
+ return this.tracks.findIndex((t) => t.id === identifier || t.url === identifier);
544
+ }
545
+ return this.tracks.findIndex((t) => t.id === identifier.id);
546
+ }
547
+ /**
548
+ * Check if a track exists in the queue
549
+ *
550
+ * @param {string | Track} identifier - Track ID, URL, or Track object
551
+ * @returns {boolean} True if track exists
552
+ */
553
+ has(identifier) {
554
+ return this.indexOf(identifier) !== -1;
555
+ }
337
556
  }
338
557
  exports.Queue = Queue;
339
558
  //# sourceMappingURL=Queue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../src/structures/Queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../src/structures/Queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import { Readable } from "stream";
2
+ import { EventEmitter } from "events";
3
+ import type { Track } from "../types";
4
+ export interface ManagedStream {
5
+ id: string;
6
+ stream: Readable;
7
+ track: Track;
8
+ createdAt: number;
9
+ lastAccessed: number;
10
+ metadata: {
11
+ source: string;
12
+ isPreload: boolean;
13
+ priority: number;
14
+ };
15
+ listeners: {
16
+ error: (err: Error) => void;
17
+ close: () => void;
18
+ end: () => void;
19
+ drain?: () => void;
20
+ pause?: () => void;
21
+ resume?: () => void;
22
+ };
23
+ status: "active" | "paused" | "ended" | "error" | "destroyed";
24
+ byteCount: number;
25
+ }
26
+ export interface StreamManagerOptions {
27
+ maxConcurrentStreams?: number;
28
+ streamTimeout?: number;
29
+ maxListenersPerStream?: number;
30
+ cleanupInterval?: number;
31
+ enableMetrics?: boolean;
32
+ autoDestroy?: boolean;
33
+ }
34
+ export declare class StreamManager extends EventEmitter {
35
+ private streams;
36
+ private options;
37
+ private cleanupTimer;
38
+ private metrics;
39
+ constructor(options?: StreamManagerOptions);
40
+ /**
41
+ * Register a new stream
42
+ */
43
+ registerStream(stream: Readable, track: Track, metadata?: Partial<ManagedStream["metadata"]>): string;
44
+ /**
45
+ * Create stream listeners
46
+ */
47
+ private createStreamListeners;
48
+ /**
49
+ * Setup data counter for stream
50
+ */
51
+ private setupDataCounter;
52
+ /**
53
+ * Unregister a stream
54
+ */
55
+ unregisterStream(streamId: string, forceDestroy?: boolean): boolean;
56
+ /**
57
+ * Get a stream by ID
58
+ */
59
+ getStream(streamId: string): Readable | null;
60
+ /**
61
+ * Update stream metadata
62
+ */
63
+ updateMetadata(streamId: string, metadata: Partial<ManagedStream["metadata"]>): boolean;
64
+ /**
65
+ * Pause a stream
66
+ */
67
+ pauseStream(streamId: string): boolean;
68
+ /**
69
+ * Resume a stream
70
+ */
71
+ resumeStream(streamId: string): boolean;
72
+ /**
73
+ * Evict oldest stream when limit reached
74
+ */
75
+ private evictOldestStream;
76
+ /**
77
+ * Cleanup expired streams
78
+ */
79
+ private cleanupExpiredStreams;
80
+ /**
81
+ * Start automatic cleanup interval
82
+ */
83
+ private startCleanupInterval;
84
+ /**
85
+ * Stop cleanup interval
86
+ */
87
+ stopCleanupInterval(): void;
88
+ /**
89
+ * Get all active streams
90
+ */
91
+ getAllStreams(): ManagedStream[];
92
+ /**
93
+ * Get streams by status
94
+ */
95
+ getStreamsByStatus(status: ManagedStream["status"]): ManagedStream[];
96
+ /**
97
+ * Get stream by track ID (using track.id, track.url, or track.title as identifier)
98
+ */
99
+ getStreamByTrack(trackId: string): Readable | null;
100
+ /**
101
+ * Check if a stream exists for a given track ID
102
+ */
103
+ hasStream(trackId: string): boolean;
104
+ /**
105
+ * Get stream count
106
+ */
107
+ getStreamCount(): number;
108
+ /**
109
+ * Get metrics
110
+ */
111
+ getMetrics(): typeof this.metrics;
112
+ /**
113
+ * Get statistics
114
+ */
115
+ getStats(): {
116
+ active: number;
117
+ paused: number;
118
+ ended: number;
119
+ error: number;
120
+ destroyed: number;
121
+ total: number;
122
+ bySource: Record<string, number>;
123
+ };
124
+ /**
125
+ * Destroy all streams
126
+ */
127
+ destroyAll(force?: boolean): void;
128
+ /**
129
+ * Generate unique stream ID
130
+ */
131
+ private generateStreamId;
132
+ /**
133
+ * Debug logging
134
+ */
135
+ private debug;
136
+ }
137
+ //# sourceMappingURL=StreamManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamManager.d.ts","sourceRoot":"","sources":["../../src/structures/StreamManager.ts"],"names":[],"mappings":"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"}