Types Reference
Most types are exported from @nomercy-entertainment/nomercy-music-player. The backend state types (BackendState, BackendLoaderState, BackendEvent) are also available from the @nomercy-entertainment/nomercy-music-player/adapters/audio-backend subpath.
Core types
MusicPlaylistItem
TypeScript
interface MusicPlaylistItem extends BasePlaylistItem {
id: string | number;
name: string;
url?: string;
cover?: string;
artist?: string;
album?: string;
lyricsUrl?: string;
duration?: number;
}
See MusicPlaylistItem for field details.
MusicPlayerConfig<T>
TypeScript
interface MusicPlayerConfig<
T extends BasePlaylistItem = MusicPlaylistItem,
> extends BasePlayerConfig {
backend?: AudioBackendKind;
backendFactory?: AudioBackendFactory;
crossfadeDefaults?: { duration: number; curve?: 'linear' | 'equal-power' };
playlist?: T[] | string;
trackEndingSoonThreshold?: number;
}
See Configuration.
IMusicPlayer<T>
TypeScript
interface IMusicPlayer<
T extends BasePlaylistItem = MusicPlaylistItem,
> extends IPlayer<MusicEventMap> {
backend(): IAudioBackend;
backend(kind: AudioBackendKind): Promise<void>;
crossfadeTo(track: T, opts?: CrossfadeOptions & ActionOptions): Promise<void>;
isTransitioning(): boolean;
}
Recommended type for consumer-held player references. See Factory.
MusicEventMap
TypeScript
interface MusicEventMap extends BaseEventMap {
current: { item: MusicPlaylistItem | undefined; index: number };
'backend:changed': { kind: AudioBackendKind };
repeat: { state: RepeatState };
shuffle: { state: ShuffleState };
trackEndingSoon: { remaining: number; currentTrack: MusicPlaylistItem };
crossfadeStart: { from: MusicPlaylistItem | null; to: MusicPlaylistItem; duration: number };
crossfadeComplete: { track: MusicPlaylistItem };
}
Crossfade types
CrossfadeOptions
TypeScript
interface CrossfadeOptions {
duration: number;
curve?: 'linear' | 'equal-power';
startAt?: number;
}
AudioBackendKind
TypeScript
type AudioBackendKind = 'audio-element' | 'webaudio';
AudioBackendFactory
TypeScript
type AudioBackendFactory = (
kind: AudioBackendKind,
config: MusicPlayerConfig<BasePlaylistItem>,
) => IAudioBackend;
Enums
PlayState
TypeScript
enum PlayState {
IDLE = 'idle',
LOADING = 'loading',
PLAYING = 'playing',
PAUSED = 'paused',
STOPPED = 'stopped',
ERROR = 'error',
}
VolumeState
TypeScript
enum VolumeState {
UNMUTED = 'unmuted',
MUTED = 'muted',
}
RepeatState
TypeScript
enum RepeatState {
OFF = 'off',
ALL = 'all',
ONE = 'one',
}
ShuffleState
TypeScript
enum ShuffleState {
OFF = 'off',
ON = 'on',
}
Backend types
BackendState
TypeScript
type BackendState = 'idle' | 'loading' | 'ready' | 'playing' | 'paused' | 'error';
BackendLoaderState
TypeScript
type BackendLoaderState = 'running' | 'paused';
BackendEvent
TypeScript
type BackendEvent =
| 'loadstart'
| 'loadedmetadata'
| 'canplay'
| 'play'
| 'playing'
| 'pause'
| 'ended'
| 'timeupdate'
| 'waiting'
| 'stalled'
| 'ratechange'
| 'encrypted'
| 'error'
| 'backend:loading'
| 'backend:loaded';
Adapter types
| Type | Import path |
|---|---|
ILyricSource | @nomercy-entertainment/nomercy-music-player/adapters/lyric-source |
IScrobbler, ScrobbleContext | @nomercy-entertainment/nomercy-music-player/adapters/scrobbler |
INowPlayingArt | @nomercy-entertainment/nomercy-music-player/adapters/now-playing-art |
IPlaylistGenerator | @nomercy-entertainment/nomercy-music-player/adapters/playlist-generator |