discord-player 7.1.1-dev.0 → 7.2.0-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/dist/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import * as discord_js from 'discord.js';
2
2
  import { Client, User, UserResolvable, GuildVoiceChannelResolvable, VoiceChannel, StageChannel, Guild, VoiceState, VoiceBasedChannel, GuildResolvable, Snowflake } from 'discord.js';
3
3
  import Eris from 'eris';
4
+ import * as Oceanic from 'oceanic.js';
4
5
  import { ListenerSignature, DefaultListener, EventEmitter, Collection, Queue, QueueStrategy } from '@discord-player/utils';
5
6
  import { Readable, Duplex } from 'stream';
6
7
  import * as _discord_player_equalizer from '@discord-player/equalizer';
7
- import { EqualizerBand, BiquadFilters, PCMFilters, FiltersChain } from '@discord-player/equalizer';
8
+ import { SeekEvent, EqualizerBand, BiquadFilters, PCMFilters, CommonResamplerFilterPreset, ResampleParameters, CompressorParameters, ReverbParameters, SeekerParameters, FiltersChain } from '@discord-player/equalizer';
8
9
  export { AF_NIGHTCORE_RATE, AF_VAPORWAVE_RATE, BASS_EQ_BANDS, FilterType as BiquadFilterType, BiquadFilters, FiltersChain, AudioFilters as PCMAudioFilters, PCMFilters, Q_BUTTERWORTH, VolumeTransformer } from '@discord-player/equalizer';
9
10
  import { AudioResource, StreamType, AudioPlayerError, VoiceConnection, AudioPlayer, AudioPlayerStatus } from 'discord-voip';
10
11
  export { AudioPlayer, CreateAudioPlayerOptions, JoinConfig, JoinVoiceChannelOptions, StreamType, createAudioPlayer, createAudioResource, getVoiceConnection, getVoiceConnections, joinVoiceChannel } from 'discord-voip';
@@ -13,7 +14,6 @@ import { RequestOptions } from 'http';
13
14
  import { FFmpegLib } from '@discord-player/ffmpeg';
14
15
  export * from '@discord-player/ffmpeg';
15
16
 
16
- declare function isErisProxy(client: any): client is Eris.Client;
17
17
  /**
18
18
  * Allows Eris clients to be used with discord-player. When this method is called, discord-player creates a proxy object that intercepts certain methods and properties to make it compatible with discord-player.
19
19
  * @param client The Eris client to be used.
@@ -21,6 +21,16 @@ declare function isErisProxy(client: any): client is Eris.Client;
21
21
  */
22
22
  declare function createErisCompat(client: Eris.Client): Client;
23
23
 
24
+ /**
25
+ * Allows Oceanic.js clients to be used with discord-player. When this method is called, discord-player creates a proxy object that intercepts certain methods and properties to make it compatible with discord-player.
26
+ * @param client The Oceanic.js client to be used.
27
+ * @returns The Oceanic.js client with discord-player compatibility.
28
+ */
29
+ declare function createOceanicCompat(client: Oceanic.Client): Client;
30
+
31
+ declare function isErisProxy(client: any): boolean;
32
+ declare function isOceanicProxy(client: any): boolean;
33
+
24
34
  declare class PlayerEventsEmitter<L extends ListenerSignature<L> = DefaultListener> extends EventEmitter<L> {
25
35
  #private;
26
36
  requiredEvents: Array<keyof L>;
@@ -492,6 +502,20 @@ declare class Track<T = unknown> {
492
502
  * @param data Track data
493
503
  */
494
504
  constructor(player: Player, data: Partial<WithMetadata<RawTrackData, T>>);
505
+ /**
506
+ * Whether this track can be seeked
507
+ */
508
+ get seekable(): boolean;
509
+ /**
510
+ * Set the onSeek event
511
+ * @param fn The onSeek event
512
+ */
513
+ handleSeek(fn: (event: SeekEvent) => Awaited<void>): void;
514
+ /**
515
+ * Request seek
516
+ * @param event The seek event
517
+ */
518
+ seek(event: SeekEvent): Promise<void>;
495
519
  /**
496
520
  * Sets audio resource for this track. This is not useful outside of the library.
497
521
  * @param resource Audio resource
@@ -589,14 +613,36 @@ interface CreateStreamOps {
589
613
  disableVolume?: boolean;
590
614
  disableEqualizer?: boolean;
591
615
  disableBiquad?: boolean;
616
+ disableCompressor?: boolean;
617
+ disableResampler?: boolean;
618
+ disableReverb?: boolean;
619
+ disableSeeker?: boolean;
592
620
  eq?: EqualizerBand[];
593
621
  biquadFilter?: BiquadFilters;
594
622
  disableFilters?: boolean;
595
623
  defaultFilters?: PCMFilters[];
596
624
  volume?: number;
597
- disableResampler?: boolean;
598
625
  sampleRate?: number;
626
+ sampleRateFilters?: CommonResamplerFilterPreset;
599
627
  skipFFmpeg?: boolean;
628
+ compressor?: {
629
+ threshold: number;
630
+ ratio: number;
631
+ attack: number;
632
+ release: number;
633
+ makeupGain: number;
634
+ kneeWidth: number;
635
+ };
636
+ reverb?: {
637
+ roomSize: number;
638
+ damping: number;
639
+ wetLevel: number;
640
+ dryLevel: number;
641
+ };
642
+ seeker?: {
643
+ seekTarget: number | null;
644
+ totalDuration: number;
645
+ };
600
646
  }
601
647
  interface VoiceEvents {
602
648
  error: (error: AudioPlayerError) => any;
@@ -605,8 +651,11 @@ interface VoiceEvents {
605
651
  finish: (resource: AudioResource<Track>) => any;
606
652
  dsp: (filters: PCMFilters[]) => any;
607
653
  eqBands: (filters: EqualizerBand[]) => any;
608
- sampleRate: (filters: number) => any;
654
+ sampleRate: (filters: ResampleParameters) => any;
609
655
  biquad: (filters: BiquadFilters) => any;
656
+ compressor: (filters: CompressorParameters) => any;
657
+ reverb: (filters: ReverbParameters) => any;
658
+ seeker: (filters: SeekerParameters) => any;
610
659
  volume: (volume: number) => any;
611
660
  destroyed: () => any;
612
661
  }
@@ -678,6 +727,9 @@ declare class StreamDispatcher extends EventEmitter<VoiceEvents> {
678
727
  get filters(): _discord_player_equalizer.AudioFilter | null;
679
728
  get biquad(): _discord_player_equalizer.BiquadStream | null;
680
729
  get equalizer(): _discord_player_equalizer.EqualizerStream | null;
730
+ get compressor(): _discord_player_equalizer.CompressorTransformer | null;
731
+ get reverb(): _discord_player_equalizer.ReverbTransformer | null;
732
+ get seeker(): _discord_player_equalizer.PCMSeekerTransformer | null;
681
733
  /**
682
734
  * The player status
683
735
  * @type {AudioPlayerStatus}
@@ -1061,6 +1113,11 @@ declare class GuildQueuePlayerNode<Meta = any> {
1061
1113
  * @param force Whether or not to forcefully stop the playback
1062
1114
  */
1063
1115
  stop(force?: boolean): boolean;
1116
+ /**
1117
+ * Request the source to seek
1118
+ * @param data The seek parameters
1119
+ */
1120
+ requestSeek(data: SeekEvent): Promise<boolean | void>;
1064
1121
  /**
1065
1122
  * Play the given track
1066
1123
  * @param res The track to play
@@ -1199,6 +1256,9 @@ interface GuildQueueAFiltersCache {
1199
1256
  filters: PCMFilters[];
1200
1257
  volume: number;
1201
1258
  sampleRate: number;
1259
+ sampleRateFilter: StreamConfig['dispatcherConfig']['sampleRateFilters'] | null;
1260
+ compressor: StreamConfig['dispatcherConfig']['compressor'] | null;
1261
+ reverb: StreamConfig['dispatcherConfig']['reverb'] | null;
1202
1262
  }
1203
1263
  declare class GuildQueueAudioFilters<Meta = any> {
1204
1264
  queue: GuildQueue<Meta>;
@@ -1227,6 +1287,18 @@ declare class GuildQueueAudioFilters<Meta = any> {
1227
1287
  * Audio resampler
1228
1288
  */
1229
1289
  get resampler(): _discord_player_equalizer.PCMResampler | null;
1290
+ /**
1291
+ * Compressor transformer
1292
+ */
1293
+ get compressor(): _discord_player_equalizer.CompressorTransformer | null;
1294
+ /**
1295
+ * Reverb transformer
1296
+ */
1297
+ get reverb(): _discord_player_equalizer.ReverbTransformer | null;
1298
+ /**
1299
+ * PCM Seeker transformer
1300
+ */
1301
+ get seeker(): _discord_player_equalizer.PCMSeekerTransformer | null;
1230
1302
  /**
1231
1303
  * Replay current track in transition mode
1232
1304
  * @param seek The duration to seek to
@@ -1506,6 +1578,9 @@ interface GuildNodeInit<Meta = any> {
1506
1578
  disableFilterer: boolean;
1507
1579
  disableBiquad: boolean;
1508
1580
  disableResampler: boolean;
1581
+ disableCompressor: boolean;
1582
+ disableReverb: boolean;
1583
+ disableSeeker: boolean;
1509
1584
  disableFallbackStream: boolean;
1510
1585
  enableStreamInterceptor: boolean;
1511
1586
  verifyFallbackStream: boolean;
@@ -1644,6 +1719,22 @@ declare const GuildQueueEvent: {
1644
1719
  * Emitted when sample rate is updated
1645
1720
  */
1646
1721
  readonly SampleRateUpdate: "sampleRateUpdate";
1722
+ /**
1723
+ * Emitted when a named sample rate filter is updated
1724
+ */
1725
+ readonly SampleRateFilterUpdate: "sampleRateFilterUpdate";
1726
+ /**
1727
+ * Emitted when reverb filter is updated
1728
+ */
1729
+ readonly ReverbUpdate: "reverbUpdate";
1730
+ /**
1731
+ * Emitted when compressor filter is updated
1732
+ */
1733
+ readonly CompressorUpdate: "compressorUpdate";
1734
+ /**
1735
+ * Emitted when seek is performed
1736
+ */
1737
+ readonly PlayerSeek: "playerSeek";
1647
1738
  };
1648
1739
  type GuildQueueEvent = (typeof GuildQueueEvent)[keyof typeof GuildQueueEvent];
1649
1740
  declare enum TrackSkipReason {
@@ -1839,6 +1930,33 @@ interface GuildQueueEvents<Meta = any> {
1839
1930
  * @param newRate The new sample rate
1840
1931
  */
1841
1932
  [GuildQueueEvent.SampleRateUpdate]: (queue: GuildQueue<Meta>, oldRate: number, newRate: number) => unknown;
1933
+ /**
1934
+ * Emitted when a named sample rate filter is updated
1935
+ * @param queue The queue where this event occurred
1936
+ * @param oldRate The old sample rate filter
1937
+ * @param newRate The new sample rate filter
1938
+ */
1939
+ [GuildQueueEvent.SampleRateFilterUpdate]: (queue: GuildQueue<Meta>, oldFilter: CommonResamplerFilterPreset | null, newFilter: CommonResamplerFilterPreset | null) => unknown;
1940
+ /**
1941
+ * Emitted when reverb filter is updated
1942
+ * @param queue The queue where this event occurred
1943
+ * @param oldFilter The old reverb filter
1944
+ * @param newFilter The new reverb filter
1945
+ */
1946
+ [GuildQueueEvent.ReverbUpdate]: (queue: GuildQueue<Meta>, oldFilter: ReverbParameters | null, newFilter: ReverbParameters | null) => unknown;
1947
+ /**
1948
+ * Emitted when compressor filter is updated
1949
+ * @param queue The queue where this event occurred
1950
+ * @param oldFilter The old compressor filter
1951
+ * @param newFilter The new compressor filter
1952
+ */
1953
+ [GuildQueueEvent.CompressorUpdate]: (queue: GuildQueue<Meta>, oldFilter: CompressorParameters | null, newFilter: CompressorParameters | null) => unknown;
1954
+ /**
1955
+ * Emitted when seek is performed
1956
+ * @param queue The queue where this event occurred
1957
+ * @param position The seek position
1958
+ */
1959
+ [GuildQueueEvent.PlayerSeek]: (queue: GuildQueue<Meta>, parameters: SeekerParameters) => unknown;
1842
1960
  }
1843
1961
  /**
1844
1962
  * The queue repeat mode. This can be one of:
@@ -2168,6 +2286,9 @@ interface GuildNodeCreateOptions<T = any> {
2168
2286
  disableFilterer?: boolean;
2169
2287
  disableBiquad?: boolean;
2170
2288
  disableResampler?: boolean;
2289
+ disableCompressor?: boolean;
2290
+ disableSeeker?: boolean;
2291
+ disableReverb?: boolean;
2171
2292
  disableFallbackStream?: boolean;
2172
2293
  enableStreamInterceptor?: boolean;
2173
2294
  verifyFallbackStream?: boolean;
@@ -3440,4 +3561,4 @@ declare const DependencyReportGenerator: {
3440
3561
 
3441
3562
  declare const version: string;
3442
3563
 
3443
- export { AFilterGraph, AsyncQueue, type AsyncQueueAcquisitionOptions, AsyncQueueEntry, type AsyncQueueExceptionHandler, AudioFilters, BaseExtractor, Context, type ContextReceiver, type CreateStreamOps, type DependenciesReport, DependencyReportGenerator, DiscordPlayerQueryResultCache, type Encodable, EqualizerConfigurationPreset, ExtractorExecutionContext, type ExtractorExecutionEvents, type ExtractorExecutionFN, type ExtractorExecutionResult, type ExtractorInfo, type ExtractorResolvable, type ExtractorSearchContext, type ExtractorSession, type ExtractorStreamable, FFMPEG_ARGS_PIPED, FFMPEG_ARGS_STRING, FFMPEG_SRATE_REGEX, FFmpegFilterer, type FFmpegReport, type FFmpegStreamOptions, type FilterGraph, type FiltersName, type GuildNodeCreateOptions, type GuildNodeInit, GuildNodeManager, GuildQueue, type GuildQueueAFiltersCache, GuildQueueAudioFilters, GuildQueueEvent, type GuildQueueEvents, GuildQueueHistory, GuildQueuePlayerNode, GuildQueueStatistics, type GuildQueueStatisticsMetadata, type GuildQueueTimeline, InterceptedStream, type LrcGetParams, type LrcGetResult, LrcLib, type LrcSearchParams, type LrcSearchResult, type MaybeNull, type MetadataDispatch, type NextFunction, type NodeResolvable, type OnAfterCreateStreamHandler, type OnBeforeCreateStreamHandler, type OnInterceptedStreamHandler, type PackageJSON, type PlayOptions, Player, PlayerEvent, type PlayerEvents, PlayerEventsEmitter, type PlayerInitOptions, type PlayerNodeInitializationResult, type PlayerNodeInitializerOptions, type PlayerProgressbarOptions, type PlayerSearchResult, PlayerStreamInterceptor, type PlayerStreamInterceptorOptions, type PlayerTimestamp, type PlayerTriggeredReason, Playlist, type PlaylistInitData, type PlaylistJSON, type PostProcessedResult, QueryCache, type QueryCacheOptions, type QueryCacheProvider, type QueryCacheResolverContext, type QueryExtractorSearch, QueryResolver, QueryType, type QueueFilters, QueueRepeatMode, type RawTrackData, type RequestEntity, type ResolvedQuery, type ResourcePlayOptions, type Runtime, type RuntimeType, type SearchOptions, type SearchQueryType, SearchResult, type SearchResultData, SequentialBucket, type SerializedPlaylist, type SerializedTrack, SerializedType, type SetterFN$1 as SetterFN, type ShouldInterceptFunction, type SkipOptions, type StreamConfig, StreamDispatcher, type TimeData, type TimelineDispatcherOptions, Track, type TrackJSON, type TrackLike, type TrackResolvable, TrackSkipReason, type TrackSource, TypeUtil, Util, VALIDATE_QUEUE_CAP, type VoiceConnectConfig, type VoiceEvents, type VoiceStateHandler, VoiceUtils, type WithMetadata, createContext, createErisCompat, createFFmpegStream, decode, deserialize, encode, isErisProxy, onAfterCreateStream, onBeforeCreateStream, serialize, tryIntoThumbnailString, useContext, useHistory, useMainPlayer, useMetadata, usePlayer, useQueue, useTimeline, useVolume, version };
3564
+ export { AFilterGraph, AsyncQueue, type AsyncQueueAcquisitionOptions, AsyncQueueEntry, type AsyncQueueExceptionHandler, AudioFilters, BaseExtractor, Context, type ContextReceiver, type CreateStreamOps, type DependenciesReport, DependencyReportGenerator, DiscordPlayerQueryResultCache, type Encodable, EqualizerConfigurationPreset, ExtractorExecutionContext, type ExtractorExecutionEvents, type ExtractorExecutionFN, type ExtractorExecutionResult, type ExtractorInfo, type ExtractorResolvable, type ExtractorSearchContext, type ExtractorSession, type ExtractorStreamable, FFMPEG_ARGS_PIPED, FFMPEG_ARGS_STRING, FFMPEG_SRATE_REGEX, FFmpegFilterer, type FFmpegReport, type FFmpegStreamOptions, type FilterGraph, type FiltersName, type GuildNodeCreateOptions, type GuildNodeInit, GuildNodeManager, GuildQueue, type GuildQueueAFiltersCache, GuildQueueAudioFilters, GuildQueueEvent, type GuildQueueEvents, GuildQueueHistory, GuildQueuePlayerNode, GuildQueueStatistics, type GuildQueueStatisticsMetadata, type GuildQueueTimeline, InterceptedStream, type LrcGetParams, type LrcGetResult, LrcLib, type LrcSearchParams, type LrcSearchResult, type MaybeNull, type MetadataDispatch, type NextFunction, type NodeResolvable, type OnAfterCreateStreamHandler, type OnBeforeCreateStreamHandler, type OnInterceptedStreamHandler, type PackageJSON, type PlayOptions, Player, PlayerEvent, type PlayerEvents, PlayerEventsEmitter, type PlayerInitOptions, type PlayerNodeInitializationResult, type PlayerNodeInitializerOptions, type PlayerProgressbarOptions, type PlayerSearchResult, PlayerStreamInterceptor, type PlayerStreamInterceptorOptions, type PlayerTimestamp, type PlayerTriggeredReason, Playlist, type PlaylistInitData, type PlaylistJSON, type PostProcessedResult, QueryCache, type QueryCacheOptions, type QueryCacheProvider, type QueryCacheResolverContext, type QueryExtractorSearch, QueryResolver, QueryType, type QueueFilters, QueueRepeatMode, type RawTrackData, type RequestEntity, type ResolvedQuery, type ResourcePlayOptions, type Runtime, type RuntimeType, type SearchOptions, type SearchQueryType, SearchResult, type SearchResultData, SequentialBucket, type SerializedPlaylist, type SerializedTrack, SerializedType, type SetterFN$1 as SetterFN, type ShouldInterceptFunction, type SkipOptions, type StreamConfig, StreamDispatcher, type TimeData, type TimelineDispatcherOptions, Track, type TrackJSON, type TrackLike, type TrackResolvable, TrackSkipReason, type TrackSource, TypeUtil, Util, VALIDATE_QUEUE_CAP, type VoiceConnectConfig, type VoiceEvents, type VoiceStateHandler, VoiceUtils, type WithMetadata, createContext, createErisCompat, createFFmpegStream, createOceanicCompat, decode, deserialize, encode, isErisProxy, isOceanicProxy, onAfterCreateStream, onBeforeCreateStream, serialize, tryIntoThumbnailString, useContext, useHistory, useMainPlayer, useMetadata, usePlayer, useQueue, useTimeline, useVolume, version };