@jellybrick/mpris-service 2.1.5 → 2.2.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.cjs +2244 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +314 -0
- package/dist/index.d.mts +314 -0
- package/dist/index.mjs +2244 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +46 -28
- package/.dockerignore +0 -1
- package/.travis.yml +0 -9
- package/Dockerfile +0 -31
- package/Makefile +0 -14
- package/dist/constants.js +0 -20
- package/dist/constants.js.map +0 -1
- package/dist/index.js +0 -442
- package/dist/index.js.map +0 -1
- package/dist/interfaces/mpris-interface.js +0 -49
- package/dist/interfaces/mpris-interface.js.map +0 -1
- package/dist/interfaces/player.js +0 -406
- package/dist/interfaces/player.js.map +0 -1
- package/dist/interfaces/playlists.js +0 -139
- package/dist/interfaces/playlists.js.map +0 -1
- package/dist/interfaces/root.js +0 -216
- package/dist/interfaces/root.js.map +0 -1
- package/dist/interfaces/tracklist.js +0 -160
- package/dist/interfaces/tracklist.js.map +0 -1
- package/dist/interfaces/types.js +0 -78
- package/dist/interfaces/types.js.map +0 -1
- package/dist/logging.js +0 -14
- package/dist/logging.js.map +0 -1
- package/src/constants.js +0 -31
- package/src/index.js +0 -477
- package/src/interfaces/mpris-interface.js +0 -53
- package/src/interfaces/player.js +0 -204
- package/src/interfaces/playlists.js +0 -84
- package/src/interfaces/root.js +0 -99
- package/src/interfaces/tracklist.js +0 -85
- package/src/interfaces/types.js +0 -75
- package/src/logging.js +0 -13
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import { Variant } from "@jellybrick/dbus-next";
|
|
3
|
+
|
|
4
|
+
//#region src/interfaces/mpris-interface.d.ts
|
|
5
|
+
declare const Interface: typeof import("@jellybrick/dbus-next").Interface;
|
|
6
|
+
type SettableProperty = 'Fullscreen' | 'Rate' | 'Shuffle' | 'Volume' | 'LoopStatus';
|
|
7
|
+
declare class MprisInterface extends Interface {
|
|
8
|
+
player: Player;
|
|
9
|
+
constructor(name: string, player: Player);
|
|
10
|
+
protected _setPropertyInternal(property: SettableProperty, valueDbus: unknown): void;
|
|
11
|
+
setProperty(property: string, valuePlain: unknown): void;
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/types.d.ts
|
|
15
|
+
type PlayBackStatus = 'Playing' | 'Paused' | 'Stopped';
|
|
16
|
+
type LoopStatus = 'None' | 'Track' | 'Playlist';
|
|
17
|
+
type Interfaces = 'player' | 'trackList' | 'playlists';
|
|
18
|
+
interface Playlist {
|
|
19
|
+
Id: string;
|
|
20
|
+
Name: string;
|
|
21
|
+
Icon: string;
|
|
22
|
+
}
|
|
23
|
+
interface Track {
|
|
24
|
+
'mpris:trackid'?: string;
|
|
25
|
+
'mpris:length'?: number;
|
|
26
|
+
'mpris:artUrl'?: string;
|
|
27
|
+
'xesam:album'?: string;
|
|
28
|
+
'xesam:albumArtist'?: string[];
|
|
29
|
+
'xesam:artist'?: string[];
|
|
30
|
+
'xesam:asText'?: string;
|
|
31
|
+
'xesam:audioBPM'?: number;
|
|
32
|
+
'xesam:autoRating'?: number;
|
|
33
|
+
'xesam:comment'?: string[];
|
|
34
|
+
'xesam:composer'?: string[];
|
|
35
|
+
'xesam:contentCreated'?: string;
|
|
36
|
+
'xesam:discNumber'?: number;
|
|
37
|
+
'xesam:firstUsed'?: string;
|
|
38
|
+
'xesam:genre'?: string[];
|
|
39
|
+
'xesam:lastUsed'?: string;
|
|
40
|
+
'xesam:lyricist'?: string[];
|
|
41
|
+
'xesam:title'?: string;
|
|
42
|
+
'xesam:trackNumber'?: number;
|
|
43
|
+
'xesam:url'?: string;
|
|
44
|
+
'xesam:useCount'?: number;
|
|
45
|
+
'xesam:userRating'?: number;
|
|
46
|
+
}
|
|
47
|
+
interface Position {
|
|
48
|
+
trackId: string;
|
|
49
|
+
position: number;
|
|
50
|
+
}
|
|
51
|
+
interface RootInterfaceOptions {
|
|
52
|
+
identity?: string;
|
|
53
|
+
supportedUriSchemes?: string[];
|
|
54
|
+
supportedMimeTypes?: string[];
|
|
55
|
+
desktopEntry?: string;
|
|
56
|
+
}
|
|
57
|
+
interface AdditionalPlayerOptions {
|
|
58
|
+
name: string;
|
|
59
|
+
supportedInterfaces?: Interfaces[];
|
|
60
|
+
}
|
|
61
|
+
type PlayerOptions = RootInterfaceOptions & AdditionalPlayerOptions;
|
|
62
|
+
interface Events {
|
|
63
|
+
raise: void;
|
|
64
|
+
quit: void;
|
|
65
|
+
fullscreen: boolean;
|
|
66
|
+
next: void;
|
|
67
|
+
previous: void;
|
|
68
|
+
pause: void;
|
|
69
|
+
playpause: void;
|
|
70
|
+
stop: void;
|
|
71
|
+
play: void;
|
|
72
|
+
seek: number;
|
|
73
|
+
position: Position;
|
|
74
|
+
open: {
|
|
75
|
+
uri: string;
|
|
76
|
+
};
|
|
77
|
+
volume: number;
|
|
78
|
+
shuffle: boolean;
|
|
79
|
+
rate: number;
|
|
80
|
+
loopStatus: LoopStatus;
|
|
81
|
+
addTrack: {
|
|
82
|
+
uri: string;
|
|
83
|
+
afterTrack: string;
|
|
84
|
+
setAsCurrent: boolean;
|
|
85
|
+
};
|
|
86
|
+
removeTrack: string;
|
|
87
|
+
goTo: string;
|
|
88
|
+
activatePlaylist: string;
|
|
89
|
+
error: Error;
|
|
90
|
+
}
|
|
91
|
+
type ToArgs<T> = [T] extends [void] ? [] : [data: T];
|
|
92
|
+
type EventsMap = { [K in keyof Events]: ToArgs<Events[K]> };
|
|
93
|
+
//#endregion
|
|
94
|
+
//#region src/interfaces/root.d.ts
|
|
95
|
+
declare class RootInterface extends MprisInterface {
|
|
96
|
+
constructor(player: Player, opts?: RootInterfaceOptions);
|
|
97
|
+
private _CanQuit;
|
|
98
|
+
private _Fullscreen;
|
|
99
|
+
private _CanSetFullscreen;
|
|
100
|
+
private _CanRaise;
|
|
101
|
+
private _HasTrackList;
|
|
102
|
+
private _Identity;
|
|
103
|
+
private _DesktopEntry;
|
|
104
|
+
private _SupportedUriSchemes;
|
|
105
|
+
private _SupportedMimeTypes;
|
|
106
|
+
get CanQuit(): boolean;
|
|
107
|
+
get Fullscreen(): boolean;
|
|
108
|
+
set Fullscreen(value: boolean);
|
|
109
|
+
get CanSetFullscreen(): boolean;
|
|
110
|
+
get CanRaise(): boolean;
|
|
111
|
+
get HasTrackList(): boolean;
|
|
112
|
+
get Identity(): string;
|
|
113
|
+
get DesktopEntry(): string;
|
|
114
|
+
get SupportedUriSchemes(): string[];
|
|
115
|
+
get SupportedMimeTypes(): string[];
|
|
116
|
+
Raise(): void;
|
|
117
|
+
Quit(): void;
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
//#region src/interfaces/player.d.ts
|
|
121
|
+
declare class PlayerInterface extends MprisInterface {
|
|
122
|
+
constructor(player: Player);
|
|
123
|
+
private _CanControl;
|
|
124
|
+
private _CanPause;
|
|
125
|
+
private _CanPlay;
|
|
126
|
+
private _CanSeek;
|
|
127
|
+
private _CanGoNext;
|
|
128
|
+
private _CanGoPrevious;
|
|
129
|
+
private _Metadata;
|
|
130
|
+
private _MaximumRate;
|
|
131
|
+
private _MinimumRate;
|
|
132
|
+
private _Rate;
|
|
133
|
+
private _Shuffle;
|
|
134
|
+
private _Volume;
|
|
135
|
+
private _LoopStatus;
|
|
136
|
+
private _PlaybackStatus;
|
|
137
|
+
get CanControl(): boolean;
|
|
138
|
+
get CanPause(): boolean;
|
|
139
|
+
get CanPlay(): boolean;
|
|
140
|
+
get CanSeek(): boolean;
|
|
141
|
+
get CanGoNext(): boolean;
|
|
142
|
+
get CanGoPrevious(): boolean;
|
|
143
|
+
get Metadata(): Record<string, Variant>;
|
|
144
|
+
get MaximumRate(): number;
|
|
145
|
+
get MinimumRate(): number;
|
|
146
|
+
get Rate(): number;
|
|
147
|
+
set Rate(value: number);
|
|
148
|
+
get Shuffle(): boolean;
|
|
149
|
+
set Shuffle(value: boolean);
|
|
150
|
+
get Volume(): number;
|
|
151
|
+
set Volume(value: number);
|
|
152
|
+
get Position(): number;
|
|
153
|
+
get LoopStatus(): string;
|
|
154
|
+
set LoopStatus(value: string);
|
|
155
|
+
get PlaybackStatus(): string;
|
|
156
|
+
Next(): void;
|
|
157
|
+
Previous(): void;
|
|
158
|
+
Pause(): void;
|
|
159
|
+
PlayPause(): void;
|
|
160
|
+
Stop(): void;
|
|
161
|
+
Play(): void;
|
|
162
|
+
Seek(offset: bigint): void;
|
|
163
|
+
SetPosition(trackId: string, position: bigint): void;
|
|
164
|
+
OpenUri(uri: string): void;
|
|
165
|
+
Seeked(position: number): number;
|
|
166
|
+
}
|
|
167
|
+
//#endregion
|
|
168
|
+
//#region src/interfaces/playlists.d.ts
|
|
169
|
+
declare class PlaylistsInterface extends MprisInterface {
|
|
170
|
+
constructor(player: Player);
|
|
171
|
+
private _ActivePlaylist;
|
|
172
|
+
private _PlaylistCount;
|
|
173
|
+
get PlaylistCount(): number;
|
|
174
|
+
get Orderings(): string[];
|
|
175
|
+
get ActivePlaylist(): [boolean, [string, string, string]];
|
|
176
|
+
setActivePlaylistId(playlistId: string): void;
|
|
177
|
+
ActivatePlaylist(playlistId: string): void;
|
|
178
|
+
GetPlaylists(index: number, maxCount: number, order: string, reverseOrder: boolean): [string, string, string][];
|
|
179
|
+
PlaylistChanged(playlist: Playlist): [string, string, string];
|
|
180
|
+
}
|
|
181
|
+
//#endregion
|
|
182
|
+
//#region src/interfaces/tracklist.d.ts
|
|
183
|
+
declare class TracklistInterface extends MprisInterface {
|
|
184
|
+
constructor(player: Player);
|
|
185
|
+
private _Tracks;
|
|
186
|
+
private _CanEditTracks;
|
|
187
|
+
setTracks(tracksPlain: Track[]): void;
|
|
188
|
+
get Tracks(): string[];
|
|
189
|
+
get CanEditTracks(): boolean;
|
|
190
|
+
GetTracksMetadata(trackIds: string[]): Record<string, Variant>[];
|
|
191
|
+
AddTrack(uri: string, afterTrack: string, setAsCurrent: boolean): void;
|
|
192
|
+
RemoveTrack(trackId: string): void;
|
|
193
|
+
GoTo(trackId: string): void;
|
|
194
|
+
TrackListReplaced(replacedPlain: Track[]): [string[], string];
|
|
195
|
+
TrackAdded(metadata: Track): Record<string, Variant>;
|
|
196
|
+
TrackRemoved(path: string): string;
|
|
197
|
+
TrackMetadataChanged(path: string, metadata: Track): [string, Record<string, Variant>];
|
|
198
|
+
}
|
|
199
|
+
//#endregion
|
|
200
|
+
//#region src/player.d.ts
|
|
201
|
+
interface PlayerInterfaces {
|
|
202
|
+
root?: RootInterface;
|
|
203
|
+
player?: PlayerInterface;
|
|
204
|
+
tracklist?: TracklistInterface;
|
|
205
|
+
playlists?: PlaylistsInterface;
|
|
206
|
+
}
|
|
207
|
+
interface Player {
|
|
208
|
+
identity: string;
|
|
209
|
+
fullscreen: boolean;
|
|
210
|
+
supportedUriSchemes: string[];
|
|
211
|
+
supportedMimeTypes: string[];
|
|
212
|
+
canQuit: boolean;
|
|
213
|
+
canRaise: boolean;
|
|
214
|
+
canSetFullscreen: boolean;
|
|
215
|
+
hasTrackList: boolean;
|
|
216
|
+
desktopEntry: string;
|
|
217
|
+
playbackStatus: PlayBackStatus;
|
|
218
|
+
loopStatus: LoopStatus;
|
|
219
|
+
rate: number;
|
|
220
|
+
shuffle: boolean;
|
|
221
|
+
metadata: Track;
|
|
222
|
+
volume: number;
|
|
223
|
+
canControl: boolean;
|
|
224
|
+
canPause: boolean;
|
|
225
|
+
canPlay: boolean;
|
|
226
|
+
canSeek: boolean;
|
|
227
|
+
canGoNext: boolean;
|
|
228
|
+
canGoPrevious: boolean;
|
|
229
|
+
minimumRate: number;
|
|
230
|
+
maximumRate: number;
|
|
231
|
+
canEditTracks: boolean;
|
|
232
|
+
tracks: Track[];
|
|
233
|
+
playlistCount: number;
|
|
234
|
+
activePlaylist: string;
|
|
235
|
+
playlists: Playlist[];
|
|
236
|
+
}
|
|
237
|
+
declare class Player extends EventEmitter<EventsMap> {
|
|
238
|
+
#private;
|
|
239
|
+
name: string;
|
|
240
|
+
supportedInterfaces: Interfaces[];
|
|
241
|
+
serviceName: string;
|
|
242
|
+
private _bus;
|
|
243
|
+
interfaces: PlayerInterfaces;
|
|
244
|
+
private _tracks;
|
|
245
|
+
constructor(options: PlayerOptions);
|
|
246
|
+
private init;
|
|
247
|
+
/**
|
|
248
|
+
* Get a valid object path with the `subpath` as the basename which is suitable
|
|
249
|
+
* for use as an id.
|
|
250
|
+
*
|
|
251
|
+
* @name Player#objectPath
|
|
252
|
+
* @function
|
|
253
|
+
* @param {String} subpath - The basename of this path
|
|
254
|
+
* @returns {String} - A valid object path that can be used as an id.
|
|
255
|
+
*/
|
|
256
|
+
objectPath(subpath?: string): string;
|
|
257
|
+
/**
|
|
258
|
+
* Gets the position of this player. This method is intended to be overridden
|
|
259
|
+
* by the user to return the position of the player in microseconds.
|
|
260
|
+
*
|
|
261
|
+
* @name Player#getPosition
|
|
262
|
+
* @function
|
|
263
|
+
* @returns {Number} - The current position of the player in microseconds. (Integer)
|
|
264
|
+
*/
|
|
265
|
+
getPosition(): number;
|
|
266
|
+
/**
|
|
267
|
+
* Emits the `Seeked` DBus signal to listening clients with the given position.
|
|
268
|
+
*
|
|
269
|
+
* @name Player#seeked
|
|
270
|
+
* @function
|
|
271
|
+
* @param {Number} position - The position in microseconds. (Integer)
|
|
272
|
+
*/
|
|
273
|
+
seeked(position: number): void;
|
|
274
|
+
getTrackIndex(trackId: string): number;
|
|
275
|
+
getTrack(trackId: string): Track | undefined;
|
|
276
|
+
addTrack(track: Track): void;
|
|
277
|
+
removeTrack(trackId: string): void;
|
|
278
|
+
/**
|
|
279
|
+
* Get the index of a playlist entry in the `playlists` list property of the
|
|
280
|
+
* player from the given id.
|
|
281
|
+
*
|
|
282
|
+
* @name Player#getPlaylistIndex
|
|
283
|
+
* @function
|
|
284
|
+
* @param {String} playlistId - The id for the playlist entry.
|
|
285
|
+
*/
|
|
286
|
+
getPlaylistIndex(playlistId: string): number;
|
|
287
|
+
/**
|
|
288
|
+
* Set the list of playlists advertised to listeners on the bus. Each playlist
|
|
289
|
+
* must have string members `Id`, `Name`, and `Icon`.
|
|
290
|
+
*
|
|
291
|
+
* @name Player#setPlaylists
|
|
292
|
+
* @function
|
|
293
|
+
* @param {Array} playlists - A list of playlists.
|
|
294
|
+
*/
|
|
295
|
+
setPlaylists(playlists: Playlist[]): void;
|
|
296
|
+
/**
|
|
297
|
+
* Set the playlist identified by `playlistId` to be the currently active
|
|
298
|
+
* playlist.
|
|
299
|
+
*
|
|
300
|
+
* @name Player#setActivePlaylist
|
|
301
|
+
* @function
|
|
302
|
+
* @param {String} playlistId - The id of the playlist to activate.
|
|
303
|
+
*/
|
|
304
|
+
setActivePlaylist(playlistId: string): void;
|
|
305
|
+
static PLAYBACK_STATUS_PLAYING: PlayBackStatus;
|
|
306
|
+
static PLAYBACK_STATUS_PAUSED: PlayBackStatus;
|
|
307
|
+
static PLAYBACK_STATUS_STOPPED: PlayBackStatus;
|
|
308
|
+
static LOOP_STATUS_NONE: LoopStatus;
|
|
309
|
+
static LOOP_STATUS_TRACK: LoopStatus;
|
|
310
|
+
static LOOP_STATUS_PLAYLIST: LoopStatus;
|
|
311
|
+
}
|
|
312
|
+
//#endregion
|
|
313
|
+
export { type AdditionalPlayerOptions, type Events, type EventsMap, type Interfaces, type LoopStatus, type PlayBackStatus, type PlayerOptions, type Playlist, type Position, type RootInterfaceOptions, type Track, Player as default };
|
|
314
|
+
//# sourceMappingURL=index.d.mts.map
|