Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/Main/Player.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { VoiceManager } from "../Voice";
import { Playlist, Queue, QueueManager, Track } from "../Queue";
import type {
CreateQueueOptions,
EmptyObject,
PlayerEventMap,
PlayerOptions,
PlayOptions,
Expand All @@ -18,10 +17,11 @@ import type {
SearchResult,
CreateNodeOptions,
PlayerInstanceOptions,
QueueContext,
} from "../Typings";

export class Player<
Context extends Record<string, unknown> = EmptyObject,
Context extends Record<string, unknown> = QueueContext,
Plugins extends PlayerPlugin[] = PlayerPlugin[],
> extends EventEmitter<Plugins[number]["eventMap"] & PlayerEventMap> {
#initialized = false;
Expand Down
6 changes: 3 additions & 3 deletions src/Plugins/LavaLyrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,21 @@ import { HttpStatusCode } from "axios";
import { OPType } from "../Typings";
import { Routes } from "../Constants";
import { isString } from "../Functions";
import type { BaseEventPayload, EmptyObject, JsonObject, PlayerPlugin } from "../Typings";
import type { BaseEventPayload, CommonPluginInfo, JsonObject, PlayerPlugin } from "../Typings";
import type { Node } from "../Node";
import type { Queue } from "../Queue";
import type { Player } from "../Main";

export namespace LavaLyrics {
export interface Lyrics<PluginInfo extends JsonObject = EmptyObject> {
export interface Lyrics<PluginInfo extends JsonObject = CommonPluginInfo> {
sourceName: string;
provider: string;
text: string | null;
lines: LyricsLine[];
plugin: PluginInfo;
}

export interface LyricsLine<PluginInfo extends JsonObject = EmptyObject> {
export interface LyricsLine<PluginInfo extends JsonObject = CommonPluginInfo> {
timestamp: number;
duration: number | null;
line: string;
Expand Down
4 changes: 2 additions & 2 deletions src/Queue/FilterManager.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { LookupSymbol } from "../Constants/Symbols";
import type { APIPlayer, EmptyObject, FilterNames, FilterValue, JsonObject, Filters } from "../Typings";
import type { APIPlayer, FilterNames, FilterValue, JsonObject, Filters, CommonPluginFilters } from "../Typings";
import type { VoiceState } from "../Voice";
import type { Player } from "../Main";

export class FilterManager<PluginFilters extends JsonObject = EmptyObject> {
export class FilterManager<PluginFilters extends JsonObject = CommonPluginFilters> {
#player: APIPlayer;
#voice: VoiceState;

Expand Down
4 changes: 2 additions & 2 deletions src/Queue/Playlist.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { formatDuration, isArray, isNumber, isRecord, isString } from "../Functions";
import { Track } from "./index";
import type { APIPlaylist, EmptyObject, JsonObject } from "../Typings";
import type { APIPlaylist, CommonPluginInfo, JsonObject } from "../Typings";

/**
* A class representing API Playlist
*/
export class Playlist<PluginInfo extends JsonObject = EmptyObject> {
export class Playlist<PluginInfo extends JsonObject = CommonPluginInfo> {
/**
* Name of the playlist
*/
Expand Down
4 changes: 2 additions & 2 deletions src/Queue/Queue.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@ import { VoiceState } from "../Voice";
import { FilterManager } from "./index";
import type {
APIPlayer,
EmptyObject,
Exception,
JsonObject,
PlayerUpdateQueryParams,
PlayerUpdateRequestBody,
QueueContext,
RepeatMode,
} from "../Typings";
import type { Player } from "../Main";

export class Queue<Context extends Record<string, unknown> = EmptyObject> {
export class Queue<Context extends Record<string, unknown> = QueueContext> {
#player: APIPlayer;

#autoplay = false;
Expand Down
4 changes: 2 additions & 2 deletions src/Queue/QueueManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,14 @@ import type {
EventPayload,
TrackEndEventPayload,
CreateQueueOptions,
EmptyObject,
TrackStartEventPayload,
TrackExceptionEventPayload,
TrackStuckEventPayload,
QueueContext,
} from "../Typings";
import type { Player } from "../Main";

export class QueueManager<Context extends Record<string, unknown> = EmptyObject> implements Partial<
export class QueueManager<Context extends Record<string, unknown> = QueueContext> implements Partial<
Map<string, Queue<Context>>
> {
#cache = new Map<string, APIPlayer>();
Expand Down
4 changes: 2 additions & 2 deletions src/Queue/Track.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { formatDuration, isNumber, isRecord, isString } from "../Functions";
import type { APITrack, EmptyObject, JsonObject } from "../Typings";
import type { APITrack, CommonPluginInfo, CommonUserData, JsonObject } from "../Typings";

export class Track<UserData extends JsonObject = EmptyObject, PluginInfo extends JsonObject = EmptyObject> {
export class Track<UserData extends JsonObject = CommonUserData, PluginInfo extends JsonObject = CommonPluginInfo> {
/**
* Id of the track
*/
Expand Down
13 changes: 8 additions & 5 deletions src/Typings/API/Rest.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { EmptyObject, JsonObject } from "../Utility";
import type { CommonPluginFilters, CommonPluginInfo, CommonUserData, EmptyObject, JsonObject } from "../Utility";
import type { Exception, PlayerState } from "./Websocket";

export const enum LoadType {
Expand Down Expand Up @@ -94,7 +94,10 @@ export interface RestError {
path: string;
}

export interface APITrack<UserData extends JsonObject = EmptyObject, PluginInfo extends JsonObject = EmptyObject> {
export interface APITrack<
UserData extends JsonObject = CommonUserData,
PluginInfo extends JsonObject = CommonPluginInfo,
> {
/**
* The base64 encoded track data
*/
Expand Down Expand Up @@ -190,7 +193,7 @@ export interface TrackLoadResult {
data: APITrack;
}

export interface APIPlaylist<PluginInfo extends JsonObject = EmptyObject> {
export interface APIPlaylist<PluginInfo extends JsonObject = CommonPluginInfo> {
/**
* The info of the playlist
*/
Expand Down Expand Up @@ -283,7 +286,7 @@ export interface APIVoiceState {
sessionId: string;
}

export interface Filters<PluginFilters extends JsonObject = EmptyObject> {
export interface Filters<PluginFilters extends JsonObject = CommonPluginFilters> {
/**
* Adjusts the player volume from 0.0 to 5.0, where 1.0 is 100%. Values >1.0 may cause clipping
*/
Expand Down Expand Up @@ -572,7 +575,7 @@ export interface PlayerUpdateRequestBody {
voice?: APIVoiceState;
}

export interface PlayerUpdateTrackData<UserData extends JsonObject = EmptyObject> {
export interface PlayerUpdateTrackData<UserData extends JsonObject = CommonUserData> {
/**
* The base64 encoded track to play. `null` stops the current track.
* `encoded` and `identifier` are mutually exclusive.
Expand Down
6 changes: 3 additions & 3 deletions src/Typings/Main/Player.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { EmptyObject, JsonObject, RequiredProp } from "../Utility";
import type { CommonUserData, JsonObject, QueueContext, RequiredProp } from "../Utility";
import type { Exception, PlayerState, TrackEndReason } from "../API";
import type { CreateNodeOptions, NodeEventMap } from "../Node";
import type { CreateQueueOptions } from "../Queue";
Expand Down Expand Up @@ -135,8 +135,8 @@ export interface SearchOptions {
* Options for customizing a 'play' operation
*/
export interface PlayOptions<
Context extends Record<string, unknown> = EmptyObject,
UserData extends JsonObject = EmptyObject,
Context extends Record<string, unknown> = QueueContext,
UserData extends JsonObject = CommonUserData,
>
extends SearchOptions, CreateQueueOptions<Context> {
userData?: UserData;
Expand Down
13 changes: 8 additions & 5 deletions src/Typings/Queue/FilterManager.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
import type { EmptyObject, JsonObject } from "../Utility";
import type { CommonPluginFilters, JsonObject } from "../Utility";
import type { Filters } from "../API";

/**
* Yields a union type of filter names (plugins included)
*/
export type FilterNames<PluginFilters extends JsonObject = EmptyObject> = keyof Filters | keyof PluginFilters;
export type FilterNames<PluginFilters extends JsonObject = CommonPluginFilters> = keyof Filters | keyof PluginFilters;

/**
* Yields the value of a filter by name
*/
export type FilterValue<Name extends FilterNames<PluginFilters>, PluginFilters extends JsonObject = EmptyObject> =
Name extends keyof PluginFilters ? Required<PluginFilters>[Name]
: Name extends keyof Filters ? Required<Filters>[Name]
export type FilterValue<
Name extends FilterNames<PluginFilters>,
PluginFilters extends JsonObject = CommonPluginFilters,
> =
Name extends keyof Filters ? Required<Filters>[Name]
: Name extends keyof PluginFilters ? Required<PluginFilters>[Name]
: never;
4 changes: 2 additions & 2 deletions src/Typings/Queue/QueueManager.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import type { EmptyObject } from "../Utility";
import type { QueueContext } from "../Utility";
import type { PlayerUpdateRequestBody } from "../API";

/**
* Options for creating a queue via manager
*/
export interface CreateQueueOptions<Context extends Record<string, unknown> = EmptyObject> extends Pick<
export interface CreateQueueOptions<Context extends Record<string, unknown> = QueueContext> extends Pick<
PlayerUpdateRequestBody,
"filters" | "volume"
> {
Expand Down
20 changes: 20 additions & 0 deletions src/Typings/Utility.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,23 @@ export type RequiredProp<T, P extends keyof T> = Omit<T, P> & Required<Pick<T, P
export type NonNullableProp<T, P extends keyof T> = {
[K in keyof T]: K extends P ? NonNullable<T[K]> : T[K];
};

/**
* Queue context, extend via module declaration
*/
export interface QueueContext extends Record<string & {}, unknown> {}

/**
* Basic user data, extend via module declaration
*/
export interface CommonUserData extends Record<string & {}, JsonLike> {}

/**
* Common info provided by plugins, extend via module declaration
*/
export interface CommonPluginInfo extends Record<string & {}, JsonLike> {}

/**
* Common plugin filters, extend via module declaration
*/
export interface CommonPluginFilters extends Record<string & {}, JsonLike> {}