@jellybrick/mpris-service 2.1.3 → 2.1.4

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.js CHANGED
@@ -165,16 +165,16 @@ class Player extends EventEmitter {
165
165
  * @property {String} loopStatus - The current loop/repeat status. May be "None", "Track", or "Playlist".
166
166
  * @property {Boolean} shuffle - Whether the player is shuffling.
167
167
  * @property {Object} metadata - The metadata of the current element. If there is a current track, this must have a "mpris:trackid" entry (of D-Bus type "o") at the very least, which contains a D-Bus path that uniquely identifies this track.
168
- * @property {Double} volume - The volume level.
168
+ * @property {Number} volume - The volume level. (Double)
169
169
  * @property {Boolean} canControl - Whether the media player may be controlled over this interface.
170
170
  * @property {Boolean} canPause - Whether playback can be paused using Pause or PlayPause.
171
171
  * @property {Boolean} canPlay - Whether playback can be started using Play or PlayPause.
172
172
  * @property {Boolean} canSeek - Whether the client can control the playback position using Seek and SetPosition.
173
173
  * @property {Boolean} canGoNext - Whether the client can call the Next method on this interface and expect the current track to change.
174
174
  * @property {Boolean} canGoPrevious - Whether the client can call the Previous method on this interface and expect the current track to change.
175
- * @property {Double} rate - The current playback rate.
176
- * @property {Double} minimumRate - The minimum value which the Rate property can take.
177
- * @property {Double} maximumRate - The maximum value which the Rate property can take.
175
+ * @property {Number} rate - The current playback rate. (Double)
176
+ * @property {Number} minimumRate - The minimum value which the Rate property can take. (Double)
177
+ * @property {Number} maximumRate - The maximum value which the Rate property can take. (Double)
178
178
  * @property {Array} playlists - The current playlists set by {@link Player#setPlaylists}. (Not a DBus property).
179
179
  * @property {String} activePlaylist - The id of the currently-active playlist.
180
180
  */
@@ -244,7 +244,7 @@ class Player extends EventEmitter {
244
244
  *
245
245
  * @name Player#getPosition
246
246
  * @function
247
- * @returns {Integer} - The current position of the player in microseconds.
247
+ * @returns {Number} - The current position of the player in microseconds. (Integer)
248
248
  */
249
249
  getPosition() {
250
250
  return 0;
@@ -255,7 +255,7 @@ class Player extends EventEmitter {
255
255
  *
256
256
  * @name Player#seeked
257
257
  * @function
258
- * @param {Integer} position - The position in microseconds.
258
+ * @param {Number} position - The position in microseconds. (Integer)
259
259
  */
260
260
  seeked(position) {
261
261
  let seekTo = Math.floor(position || 0);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["require","install","EventEmitter","dbus","PlayerInterface","RootInterface","PlaylistsInterface","TracklistInterface","types","constants","MPRIS_PATH","lcfirst","str","toLowerCase","substring","_addRootInterface","WeakSet","_addPlayerInterface","_addTracklistInterface","_addPlaylistsInterface","_addEventedProperty","_addEventedPropertiesList","Player","constructor","options","_classPrivateMethodInitSpec","name","supportedInterfaces","_tracks","init","opts","serviceName","validators","assertBusNameValid","_bus","sessionBus","on","err","emit","interfaces","_classPrivateMethodGet","_addRootInterface2","call","indexOf","_addPlayerInterface2","_addTracklistInterface2","_addPlaylistsInterface2","k","Object","keys","iface","export","requestName","NameFlag","DO_NOT_QUEUE","then","reply","RequestNameReply","EXISTS","process","pid","catch","objectPath","subpath","path","getPosition","seeked","position","seekTo","Math","floor","isNaN","Error","player","Seeked","getTrackIndex","trackId","i","tracks","length","track","getTrack","addTrack","push","tracklist","setTracks","afterTrack","TrackAdded","removeTrack","splice","TrackRemoved","getPlaylistIndex","playlistId","playlists","playlist","Id","setPlaylists","playlistCount","forEach","PlaylistChanged","setActivePlaylist","setActivePlaylistId","bus","root","_addEventedPropertiesList2","eventedProps","defineProperty","get","set","value","TrackListReplaced","enumerable","configurable","_addEventedProperty2","localName","playlistToPlain","metadataToPlain","setProperty","props","_defineProperty","PLAYBACK_STATUS_PLAYING","PLAYBACK_STATUS_PAUSED","PLAYBACK_STATUS_STOPPED","LOOP_STATUS_NONE","LOOP_STATUS_TRACK","LOOP_STATUS_PLAYLIST","module","exports"],"sourceRoot":"../src/","sources":["index.js"],"sourcesContent":["require('source-map-support').install();\n\nconst { EventEmitter } = require('events');\n\nconst dbus = require('dbus-next');\nconst PlayerInterface = require('./interfaces/player');\nconst RootInterface = require('./interfaces/root');\nconst PlaylistsInterface = require('./interfaces/playlists');\nconst TracklistInterface = require('./interfaces/tracklist');\nconst types = require('./interfaces/types');\nconst constants = require('./constants');\n\nconst MPRIS_PATH = '/org/mpris/MediaPlayer2';\n\nfunction lcfirst(str) {\n return str[0].toLowerCase() + str.substring(1);\n}\n\nclass Player extends EventEmitter {\n /**\n * Construct a new Player and export it on the DBus session bus.\n *\n * For more information about the properties of this class, see [the MPRIS DBus Interface Specification](https://specifications.freedesktop.org/mpris-spec/latest/).\n *\n * Method Call Events\n * ------------------\n *\n * The Player is an `EventEmitter` that emits events when the corresponding\n * methods are called on the DBus interface over the wire.\n *\n * The Player emits events whenever the corresponding methods on the DBus\n * interface are called.\n *\n * * `raise` - Brings the media player's user interface to the front using any appropriate mechanism available.\n * * `quit` - Causes the media player to stop running.\n * * `next` - Skips to the next track in the tracklist.\n * * `previous` - Skips to the previous track in the tracklist.\n * * `pause` - Pauses playback.\n * * `playPause` - Pauses playback. If playback is already paused, resumes playback. If playback is stopped, starts playback.\n * * `stop` - Stops playback.\n * * `play` - Starts or resumes playback.\n * * `seek` - Seeks forward in the current track by the specified number of microseconds. With event data `offset`.\n * * `position` - Sets the current track position in microseconds. With event data `{ trackId, position }`.\n * * `open` - Opens the Uri given as an argument. With event data `{ uri }`.\n * * `volume` - Sets the volume of the player. With event data `volume` (between 0.0 and 1.0).\n * * `shuffle` - Sets whether shuffle is enabled on the player. With event data `shuffleStatus` (boolean).\n * * `rate` - Sets the playback rate of the player. A value of 1.0 is the normal rate. With event data `rate`.\n * * `loopStatus` - Sets the loop status of the player to either 'None', 'Track', or 'Playlist'. With event data `loopStatus`.\n * * `activatePlaylist` - Starts playing the given playlist. With event data `playlistId`.\n *\n * The Player may also emit an `error` event with the underlying Node `Error`\n * as the event data. After receiving this event, the Player may be\n * disconnected.\n *\n * ```\n * player.on('play', () => {\n * realPlayer.play();\n * });\n *\n * player.on('shuffle', (enableShuffle) => {\n * realPlayer.setShuffle(enableShuffle);\n * player.shuffle = enableShuffle;\n * });\n * ```\n *\n * Player Properties\n * -----------------\n *\n * Player properties (documented below) should be kept up to date to reflect\n * the state of your real player. These properties can be gotten by the client\n * through the `org.freedesktop.DBus.Properties` interface which will return\n * the value currently set on the player. Setting these properties on the\n * player to a different value will emit the `PropertiesChanged` signal on the\n * properties interface to notify clients that properties of the player have\n * changed.\n *\n * ```\n * realPlayer.on('shuffle:changed', (shuffleEnabled) => {\n * player.shuffle = shuffleEnabled;\n * });\n *\n * realPlayer.on('play', () => {\n * player.playbackStatus = 'Playing';\n * });\n * ```\n *\n * Player Position\n * ---------------\n *\n * Clients can get the position of your player by getting the `Position`\n * property of the `org.mpris.MediaPlayer2.Player` interface. Since position\n * updates continuously, {@link Player#getPosition} is implemented as a getter\n * you can override on your Player. This getter will be called when a client\n * requests the position and should return the position of your player for the\n * client in microseconds.\n *\n * ```\n * player.getPosition() {\n * return realPlayer.getPositionInMicroseconds();\n * }\n * ```\n *\n * When your real player seeks to a new location, such as when someone clicks\n * on the time bar, you can notify clients of the new position by calling the\n * {@link Player#seeked} method. This will raise the `Seeked` signal on the\n * `org.mpris.MediaPlayer2.Player` interface with the given current time of the\n * player in microseconds.\n *\n * ```\n * realPlayer.on('seeked', (positionInMicroseconds) => {\n * player.seeked(positionInMicroseconds);\n * });\n * ```\n *\n * Clients can request to set position using the `Seek` and `SetPosition`\n * methods of the `org.mpris.MediaPlayer2.Player` interface. These requests are\n * implemented as events on the Player similar to the other requests.\n *\n * ```\n * player.on('seek', (offset) => {\n * // note that offset may be negative\n * let currentPosition = realPlayer.getPositionInMicroseconds();\n * let newPosition = currentPosition + offset;\n * realPlayer.setPosition(newPosition);\n * });\n *\n * player.on('position', (event) => {\n * // check that event.trackId is the current track before continuing.\n * realPlayer.setPosition(event.position);\n * });\n * ```\n *\n * @class Player\n * @param {\n * name: String,\n * identity: String,\n * supportedMimeTypes: string[],\n * supportedInterfaces: string[]\n * } options - Options for the player.\n * @param {String} options.name - Name on the bus to export to as `org.mpris.MediaPlayer2.{name}`.\n * @param {String} options.identity - Identity for the player to display on the root media player interface.\n * @param {Array} options.supportedMimeTypes - Mime types this player can open with the `org.mpris.MediaPlayer2.Open` method.\n * @param {Array} options.supportedInterfaces - The interfaces this player supports. Can include `'player'`, `'playlists'`, and `'trackList'`.\n * @property {String} identity - A friendly name to identify the media player to users.\n * @property {Boolean} fullscreen - Whether the media player is occupying the fullscreen.\n * @property {Array} supportedUriSchemes - The URI schemes supported by the media player.\n * @property {Array} supportedMimeTypes - The mime-types supported by the media player.\n * @property {Boolean} canQuit - Whether the player can quit.\n * @property {Boolean} canRaise - Whether the player can raise.\n * @property {Boolean} canSetFullscreen - Whether the player can be set to fullscreen.\n * @property {Boolean} hasTrackList - Indicates whether the /org/mpris/MediaPlayer2 object implements the org.mpris.MediaPlayer2.TrackList interface.\n * @property {String} desktopEntry - The basename of an installed .desktop file which complies with the Desktop entry specification, with the \".desktop\" extension stripped.\n * @property {String} playbackStatus - The current playback status. May be \"Playing\", \"Paused\" or \"Stopped\".\n * @property {String} loopStatus - The current loop/repeat status. May be \"None\", \"Track\", or \"Playlist\".\n * @property {Boolean} shuffle - Whether the player is shuffling.\n * @property {Object} metadata - The metadata of the current element. If there is a current track, this must have a \"mpris:trackid\" entry (of D-Bus type \"o\") at the very least, which contains a D-Bus path that uniquely identifies this track.\n * @property {Double} volume - The volume level.\n * @property {Boolean} canControl - Whether the media player may be controlled over this interface.\n * @property {Boolean} canPause - Whether playback can be paused using Pause or PlayPause.\n * @property {Boolean} canPlay - Whether playback can be started using Play or PlayPause.\n * @property {Boolean} canSeek - Whether the client can control the playback position using Seek and SetPosition.\n * @property {Boolean} canGoNext - Whether the client can call the Next method on this interface and expect the current track to change.\n * @property {Boolean} canGoPrevious - Whether the client can call the Previous method on this interface and expect the current track to change.\n * @property {Double} rate - The current playback rate.\n * @property {Double} minimumRate - The minimum value which the Rate property can take.\n * @property {Double} maximumRate - The maximum value which the Rate property can take.\n * @property {Array} playlists - The current playlists set by {@link Player#setPlaylists}. (Not a DBus property).\n * @property {String} activePlaylist - The id of the currently-active playlist.\n */\n constructor(options) {\n super();\n\n this.name = options.name;\n this.supportedInterfaces = options.supportedInterfaces || ['player'];\n this._tracks = [];\n this.init(options);\n }\n\n init(opts) {\n this.serviceName = `org.mpris.MediaPlayer2.${this.name}`;\n dbus.validators.assertBusNameValid(this.serviceName);\n\n this._bus = dbus.sessionBus();\n\n this._bus.on('error', (err) => {\n this.emit('error', err);\n });\n\n this.interfaces = {};\n\n this.#addRootInterface(this._bus, opts);\n\n if (this.supportedInterfaces.indexOf('player') >= 0) {\n this.#addPlayerInterface(this._bus);\n }\n if (this.supportedInterfaces.indexOf('trackList') >= 0) {\n this.#addTracklistInterface(this._bus);\n }\n if (this.supportedInterfaces.indexOf('playlists') >= 0) {\n this.#addPlaylistsInterface(this._bus);\n }\n\n for (let k of Object.keys(this.interfaces)) {\n let iface = this.interfaces[k];\n this._bus.export(MPRIS_PATH, iface);\n }\n\n this._bus.requestName(this.serviceName, dbus.NameFlag.DO_NOT_QUEUE)\n .then((reply) => {\n if (reply === dbus.RequestNameReply.EXISTS) {\n this.serviceName = `${this.serviceName}.instance${process.pid}`;\n return this._bus.requestName(this.serviceName);\n }\n })\n .catch((err) => {\n this.emit('error', err);\n });\n }\n\n #addRootInterface(bus, opts) {\n this.interfaces.root = new RootInterface(this, opts);\n this.#addEventedPropertiesList(this.interfaces.root,\n ['Identity', 'Fullscreen', 'SupportedUriSchemes', 'SupportedMimeTypes',\n 'CanQuit', 'CanRaise', 'CanSetFullscreen', 'HasTrackList',\n 'DesktopEntry']);\n }\n\n #addPlayerInterface(bus) {\n this.interfaces.player = new PlayerInterface(this);\n let eventedProps = ['PlaybackStatus', 'LoopStatus', 'Rate', 'Shuffle',\n 'Metadata', 'Volume', 'CanControl', 'CanPause', 'CanPlay', 'CanSeek',\n 'CanGoNext', 'CanGoPrevious', 'MinimumRate', 'MaximumRate'];\n this.#addEventedPropertiesList(this.interfaces.player, eventedProps);\n }\n\n #addTracklistInterface(bus) {\n this.interfaces.tracklist = new TracklistInterface(this);\n this.#addEventedPropertiesList(this.interfaces.tracklist, ['CanEditTracks']);\n\n Object.defineProperty(this, 'tracks', {\n get: function() {\n return this._tracks;\n },\n set: function(value) {\n this._tracks = value;\n this.interfaces.tracklist.TrackListReplaced(value);\n },\n enumerable: true,\n configurable: true\n });\n }\n\n #addPlaylistsInterface(bus) {\n this.interfaces.playlists = new PlaylistsInterface(this);\n this.#addEventedPropertiesList(this.interfaces.playlists,\n ['PlaylistCount', 'ActivePlaylist']);\n }\n\n /**\n * Get a valid object path with the `subpath` as the basename which is suitable\n * for use as an id.\n *\n * @name Player#objectPath\n * @function\n * @param {String} subpath - The basename of this path\n * @returns {String} - A valid object path that can be used as an id.\n */\n objectPath(subpath) {\n let path = `/org/node/mediaplayer/${this.name}`;\n if (subpath) {\n path += `/${subpath}`;\n }\n return path;\n }\n\n #addEventedProperty(iface, name) {\n let localName = lcfirst(name);\n\n Object.defineProperty(this, localName, {\n get: function() {\n let value = iface[name];\n if (name === 'ActivePlaylist') {\n return types.playlistToPlain(value);\n } else if (name === 'Metadata') {\n return types.metadataToPlain(value);\n }\n return value;\n },\n set: function(value) {\n iface.setProperty(name, value);\n },\n enumerable: true,\n configurable: true\n });\n }\n\n #addEventedPropertiesList(iface, props) {\n for (let i = 0; i < props.length; i++) {\n this.#addEventedProperty(iface, props[i]);\n }\n }\n\n /**\n * Gets the position of this player. This method is intended to be overridden\n * by the user to return the position of the player in microseconds.\n *\n * @name Player#getPosition\n * @function\n * @returns {Integer} - The current position of the player in microseconds.\n */\n getPosition() {\n return 0;\n }\n\n /**\n * Emits the `Seeked` DBus signal to listening clients with the given position.\n *\n * @name Player#seeked\n * @function\n * @param {Integer} position - The position in microseconds.\n */\n seeked(position) {\n let seekTo = Math.floor(position || 0);\n if (isNaN(seekTo)) {\n throw new Error(`seeked expected a number (got ${position})`);\n }\n this.interfaces.player.Seeked(seekTo);\n }\n\n getTrackIndex(trackId) {\n for (let i = 0; i < this.tracks.length; i++) {\n let track = this.tracks[i];\n\n if (track['mpris:trackid'] === trackId) {\n return i;\n }\n }\n\n return -1;\n }\n\n getTrack(trackId) {\n return this.tracks[this.getTrackIndex(trackId)];\n }\n\n addTrack(track) {\n this.tracks.push(track);\n this.interfaces.tracklist.setTracks(this.tracks);\n\n let afterTrack = '/org/mpris/MediaPlayer2/TrackList/NoTrack';\n if (this.tracks.length > 2) {\n afterTrack = this.tracks[this.tracks.length - 2]['mpris:trackid'];\n }\n this.interfaces.tracklist.TrackAdded(afterTrack);\n }\n\n removeTrack(trackId) {\n let i = this.getTrackIndex(trackId);\n this.tracks.splice(i, 1);\n this.interfaces.tracklist.setTracks(this.tracks);\n\n this.interfaces.tracklist.TrackRemoved(trackId);\n }\n\n /**\n * Get the index of a playlist entry in the `playlists` list property of the\n * player from the given id.\n *\n * @name Player#getPlaylistIndex\n * @function\n * @param {String} playlistId - The id for the playlist entry.\n */\n getPlaylistIndex(playlistId) {\n for (let i = 0; i < this.playlists.length; i++) {\n let playlist = this.playlists[i];\n\n if (playlist.Id === playlistId) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Set the list of playlists advertised to listeners on the bus. Each playlist\n * must have string members `Id`, `Name`, and `Icon`.\n *\n * @name Player#setPlaylists\n * @function\n * @param {Array} playlists - A list of playlists.\n */\n setPlaylists(playlists) {\n this.playlists = playlists;\n this.playlistCount = playlists.length;\n\n this.playlists.forEach((playlist) => {\n if (playlist) {\n this.interfaces.playlists.PlaylistChanged(playlist);\n }\n });\n }\n\n /**\n * Set the playlist identified by `playlistId` to be the currently active\n * playlist.\n *\n * @name Player#setActivePlaylist\n * @function\n * @param {String} playlistId - The id of the playlist to activate.\n */\n setActivePlaylist(playlistId) {\n this.interfaces.playlists.setActivePlaylistId(playlistId);\n }\n\n /**\n * Enumerated value for the `playbackStatus` property of the player to indicate\n * a track is currently playing.\n *\n * @name Player#PLAYBACK_STATUS_PLAYING\n * @static\n * @constant\n */\n static PLAYBACK_STATUS_PLAYING = constants.PLAYBACK_STATUS_PLAYING;\n /**\n * Enumerated value for the `playbackStatus` property of the player to indicate\n * a track is currently paused.\n *\n * @name Player#PLAYBACK_STATUS_PAUSED\n * @static\n * @constant\n */\n static PLAYBACK_STATUS_PAUSED = constants.PLAYBACK_STATUS_PAUSED;\n\n /**\n * Enumerated value for the `playbackStatus` property of the player to indicate\n * there is no track currently playing.\n *\n * @name Player#PLAYBACK_STATUS_STOPPED\n * @static\n * @constant\n */\n static PLAYBACK_STATUS_STOPPED = constants.PLAYBACK_STATUS_STOPPED;\n\n /**\n * Enumerated value for the `loopStatus` property of the player to indicate\n * playback will stop when there are no more tracks to play.\n *\n * @name Player#LOOP_STATUS_NONE\n * @static\n * @constant\n */\n static LOOP_STATUS_NONE = constants.LOOP_STATUS_NONE;\n\n /**\n * Enumerated value for the `loopStatus` property of the player to indicate the\n * current track will start again from the beginning once it has finished\n * playing.\n *\n * @name Player#LOOP_STATUS_TRACK\n * @static\n * @constant\n */\n static LOOP_STATUS_TRACK = constants.LOOP_STATUS_TRACK;\n\n /**\n * Enumerated value for the `loopStatus` property of the player to indicate the\n * playback loops through a list of tracks.\n *\n * @name Player#LOOP_STATUS_PLAYLIST\n * @static\n * @constant\n */\n static LOOP_STATUS_PLAYLIST = constants.LOOP_STATUS_PLAYLIST;\n}\n\nmodule.exports = Player;"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["require","install","EventEmitter","dbus","PlayerInterface","RootInterface","PlaylistsInterface","TracklistInterface","types","constants","MPRIS_PATH","lcfirst","str","toLowerCase","substring","_addRootInterface","WeakSet","_addPlayerInterface","_addTracklistInterface","_addPlaylistsInterface","_addEventedProperty","_addEventedPropertiesList","Player","constructor","options","_classPrivateMethodInitSpec","name","supportedInterfaces","_tracks","init","opts","serviceName","validators","assertBusNameValid","_bus","sessionBus","on","err","emit","interfaces","_classPrivateMethodGet","_addRootInterface2","call","indexOf","_addPlayerInterface2","_addTracklistInterface2","_addPlaylistsInterface2","k","Object","keys","iface","export","requestName","NameFlag","DO_NOT_QUEUE","then","reply","RequestNameReply","EXISTS","process","pid","catch","objectPath","subpath","path","getPosition","seeked","position","seekTo","Math","floor","isNaN","Error","player","Seeked","getTrackIndex","trackId","i","tracks","length","track","getTrack","addTrack","push","tracklist","setTracks","afterTrack","TrackAdded","removeTrack","splice","TrackRemoved","getPlaylistIndex","playlistId","playlists","playlist","Id","setPlaylists","playlistCount","forEach","PlaylistChanged","setActivePlaylist","setActivePlaylistId","bus","root","_addEventedPropertiesList2","eventedProps","defineProperty","get","set","value","TrackListReplaced","enumerable","configurable","_addEventedProperty2","localName","playlistToPlain","metadataToPlain","setProperty","props","_defineProperty","PLAYBACK_STATUS_PLAYING","PLAYBACK_STATUS_PAUSED","PLAYBACK_STATUS_STOPPED","LOOP_STATUS_NONE","LOOP_STATUS_TRACK","LOOP_STATUS_PLAYLIST","module","exports"],"sourceRoot":"../src/","sources":["index.js"],"sourcesContent":["require('source-map-support').install();\n\nconst { EventEmitter } = require('events');\n\nconst dbus = require('dbus-next');\nconst PlayerInterface = require('./interfaces/player');\nconst RootInterface = require('./interfaces/root');\nconst PlaylistsInterface = require('./interfaces/playlists');\nconst TracklistInterface = require('./interfaces/tracklist');\nconst types = require('./interfaces/types');\nconst constants = require('./constants');\n\nconst MPRIS_PATH = '/org/mpris/MediaPlayer2';\n\nfunction lcfirst(str) {\n return str[0].toLowerCase() + str.substring(1);\n}\n\nclass Player extends EventEmitter {\n /**\n * Construct a new Player and export it on the DBus session bus.\n *\n * For more information about the properties of this class, see [the MPRIS DBus Interface Specification](https://specifications.freedesktop.org/mpris-spec/latest/).\n *\n * Method Call Events\n * ------------------\n *\n * The Player is an `EventEmitter` that emits events when the corresponding\n * methods are called on the DBus interface over the wire.\n *\n * The Player emits events whenever the corresponding methods on the DBus\n * interface are called.\n *\n * * `raise` - Brings the media player's user interface to the front using any appropriate mechanism available.\n * * `quit` - Causes the media player to stop running.\n * * `next` - Skips to the next track in the tracklist.\n * * `previous` - Skips to the previous track in the tracklist.\n * * `pause` - Pauses playback.\n * * `playPause` - Pauses playback. If playback is already paused, resumes playback. If playback is stopped, starts playback.\n * * `stop` - Stops playback.\n * * `play` - Starts or resumes playback.\n * * `seek` - Seeks forward in the current track by the specified number of microseconds. With event data `offset`.\n * * `position` - Sets the current track position in microseconds. With event data `{ trackId, position }`.\n * * `open` - Opens the Uri given as an argument. With event data `{ uri }`.\n * * `volume` - Sets the volume of the player. With event data `volume` (between 0.0 and 1.0).\n * * `shuffle` - Sets whether shuffle is enabled on the player. With event data `shuffleStatus` (boolean).\n * * `rate` - Sets the playback rate of the player. A value of 1.0 is the normal rate. With event data `rate`.\n * * `loopStatus` - Sets the loop status of the player to either 'None', 'Track', or 'Playlist'. With event data `loopStatus`.\n * * `activatePlaylist` - Starts playing the given playlist. With event data `playlistId`.\n *\n * The Player may also emit an `error` event with the underlying Node `Error`\n * as the event data. After receiving this event, the Player may be\n * disconnected.\n *\n * ```\n * player.on('play', () => {\n * realPlayer.play();\n * });\n *\n * player.on('shuffle', (enableShuffle) => {\n * realPlayer.setShuffle(enableShuffle);\n * player.shuffle = enableShuffle;\n * });\n * ```\n *\n * Player Properties\n * -----------------\n *\n * Player properties (documented below) should be kept up to date to reflect\n * the state of your real player. These properties can be gotten by the client\n * through the `org.freedesktop.DBus.Properties` interface which will return\n * the value currently set on the player. Setting these properties on the\n * player to a different value will emit the `PropertiesChanged` signal on the\n * properties interface to notify clients that properties of the player have\n * changed.\n *\n * ```\n * realPlayer.on('shuffle:changed', (shuffleEnabled) => {\n * player.shuffle = shuffleEnabled;\n * });\n *\n * realPlayer.on('play', () => {\n * player.playbackStatus = 'Playing';\n * });\n * ```\n *\n * Player Position\n * ---------------\n *\n * Clients can get the position of your player by getting the `Position`\n * property of the `org.mpris.MediaPlayer2.Player` interface. Since position\n * updates continuously, {@link Player#getPosition} is implemented as a getter\n * you can override on your Player. This getter will be called when a client\n * requests the position and should return the position of your player for the\n * client in microseconds.\n *\n * ```\n * player.getPosition() {\n * return realPlayer.getPositionInMicroseconds();\n * }\n * ```\n *\n * When your real player seeks to a new location, such as when someone clicks\n * on the time bar, you can notify clients of the new position by calling the\n * {@link Player#seeked} method. This will raise the `Seeked` signal on the\n * `org.mpris.MediaPlayer2.Player` interface with the given current time of the\n * player in microseconds.\n *\n * ```\n * realPlayer.on('seeked', (positionInMicroseconds) => {\n * player.seeked(positionInMicroseconds);\n * });\n * ```\n *\n * Clients can request to set position using the `Seek` and `SetPosition`\n * methods of the `org.mpris.MediaPlayer2.Player` interface. These requests are\n * implemented as events on the Player similar to the other requests.\n *\n * ```\n * player.on('seek', (offset) => {\n * // note that offset may be negative\n * let currentPosition = realPlayer.getPositionInMicroseconds();\n * let newPosition = currentPosition + offset;\n * realPlayer.setPosition(newPosition);\n * });\n *\n * player.on('position', (event) => {\n * // check that event.trackId is the current track before continuing.\n * realPlayer.setPosition(event.position);\n * });\n * ```\n *\n * @class Player\n * @param {\n * name: String,\n * identity: String,\n * supportedMimeTypes: string[],\n * supportedInterfaces: string[]\n * } options - Options for the player.\n * @param {String} options.name - Name on the bus to export to as `org.mpris.MediaPlayer2.{name}`.\n * @param {String} options.identity - Identity for the player to display on the root media player interface.\n * @param {Array} options.supportedMimeTypes - Mime types this player can open with the `org.mpris.MediaPlayer2.Open` method.\n * @param {Array} options.supportedInterfaces - The interfaces this player supports. Can include `'player'`, `'playlists'`, and `'trackList'`.\n * @property {String} identity - A friendly name to identify the media player to users.\n * @property {Boolean} fullscreen - Whether the media player is occupying the fullscreen.\n * @property {Array} supportedUriSchemes - The URI schemes supported by the media player.\n * @property {Array} supportedMimeTypes - The mime-types supported by the media player.\n * @property {Boolean} canQuit - Whether the player can quit.\n * @property {Boolean} canRaise - Whether the player can raise.\n * @property {Boolean} canSetFullscreen - Whether the player can be set to fullscreen.\n * @property {Boolean} hasTrackList - Indicates whether the /org/mpris/MediaPlayer2 object implements the org.mpris.MediaPlayer2.TrackList interface.\n * @property {String} desktopEntry - The basename of an installed .desktop file which complies with the Desktop entry specification, with the \".desktop\" extension stripped.\n * @property {String} playbackStatus - The current playback status. May be \"Playing\", \"Paused\" or \"Stopped\".\n * @property {String} loopStatus - The current loop/repeat status. May be \"None\", \"Track\", or \"Playlist\".\n * @property {Boolean} shuffle - Whether the player is shuffling.\n * @property {Object} metadata - The metadata of the current element. If there is a current track, this must have a \"mpris:trackid\" entry (of D-Bus type \"o\") at the very least, which contains a D-Bus path that uniquely identifies this track.\n * @property {Number} volume - The volume level. (Double)\n * @property {Boolean} canControl - Whether the media player may be controlled over this interface.\n * @property {Boolean} canPause - Whether playback can be paused using Pause or PlayPause.\n * @property {Boolean} canPlay - Whether playback can be started using Play or PlayPause.\n * @property {Boolean} canSeek - Whether the client can control the playback position using Seek and SetPosition.\n * @property {Boolean} canGoNext - Whether the client can call the Next method on this interface and expect the current track to change.\n * @property {Boolean} canGoPrevious - Whether the client can call the Previous method on this interface and expect the current track to change.\n * @property {Number} rate - The current playback rate. (Double)\n * @property {Number} minimumRate - The minimum value which the Rate property can take. (Double)\n * @property {Number} maximumRate - The maximum value which the Rate property can take. (Double)\n * @property {Array} playlists - The current playlists set by {@link Player#setPlaylists}. (Not a DBus property).\n * @property {String} activePlaylist - The id of the currently-active playlist.\n */\n constructor(options) {\n super();\n\n this.name = options.name;\n this.supportedInterfaces = options.supportedInterfaces || ['player'];\n this._tracks = [];\n this.init(options);\n }\n\n init(opts) {\n this.serviceName = `org.mpris.MediaPlayer2.${this.name}`;\n dbus.validators.assertBusNameValid(this.serviceName);\n\n this._bus = dbus.sessionBus();\n\n this._bus.on('error', (err) => {\n this.emit('error', err);\n });\n\n this.interfaces = {};\n\n this.#addRootInterface(this._bus, opts);\n\n if (this.supportedInterfaces.indexOf('player') >= 0) {\n this.#addPlayerInterface(this._bus);\n }\n if (this.supportedInterfaces.indexOf('trackList') >= 0) {\n this.#addTracklistInterface(this._bus);\n }\n if (this.supportedInterfaces.indexOf('playlists') >= 0) {\n this.#addPlaylistsInterface(this._bus);\n }\n\n for (let k of Object.keys(this.interfaces)) {\n let iface = this.interfaces[k];\n this._bus.export(MPRIS_PATH, iface);\n }\n\n this._bus.requestName(this.serviceName, dbus.NameFlag.DO_NOT_QUEUE)\n .then((reply) => {\n if (reply === dbus.RequestNameReply.EXISTS) {\n this.serviceName = `${this.serviceName}.instance${process.pid}`;\n return this._bus.requestName(this.serviceName);\n }\n })\n .catch((err) => {\n this.emit('error', err);\n });\n }\n\n #addRootInterface(bus, opts) {\n this.interfaces.root = new RootInterface(this, opts);\n this.#addEventedPropertiesList(this.interfaces.root,\n ['Identity', 'Fullscreen', 'SupportedUriSchemes', 'SupportedMimeTypes',\n 'CanQuit', 'CanRaise', 'CanSetFullscreen', 'HasTrackList',\n 'DesktopEntry']);\n }\n\n #addPlayerInterface(bus) {\n this.interfaces.player = new PlayerInterface(this);\n let eventedProps = ['PlaybackStatus', 'LoopStatus', 'Rate', 'Shuffle',\n 'Metadata', 'Volume', 'CanControl', 'CanPause', 'CanPlay', 'CanSeek',\n 'CanGoNext', 'CanGoPrevious', 'MinimumRate', 'MaximumRate'];\n this.#addEventedPropertiesList(this.interfaces.player, eventedProps);\n }\n\n #addTracklistInterface(bus) {\n this.interfaces.tracklist = new TracklistInterface(this);\n this.#addEventedPropertiesList(this.interfaces.tracklist, ['CanEditTracks']);\n\n Object.defineProperty(this, 'tracks', {\n get: function() {\n return this._tracks;\n },\n set: function(value) {\n this._tracks = value;\n this.interfaces.tracklist.TrackListReplaced(value);\n },\n enumerable: true,\n configurable: true\n });\n }\n\n #addPlaylistsInterface(bus) {\n this.interfaces.playlists = new PlaylistsInterface(this);\n this.#addEventedPropertiesList(this.interfaces.playlists,\n ['PlaylistCount', 'ActivePlaylist']);\n }\n\n /**\n * Get a valid object path with the `subpath` as the basename which is suitable\n * for use as an id.\n *\n * @name Player#objectPath\n * @function\n * @param {String} subpath - The basename of this path\n * @returns {String} - A valid object path that can be used as an id.\n */\n objectPath(subpath) {\n let path = `/org/node/mediaplayer/${this.name}`;\n if (subpath) {\n path += `/${subpath}`;\n }\n return path;\n }\n\n #addEventedProperty(iface, name) {\n let localName = lcfirst(name);\n\n Object.defineProperty(this, localName, {\n get: function() {\n let value = iface[name];\n if (name === 'ActivePlaylist') {\n return types.playlistToPlain(value);\n } else if (name === 'Metadata') {\n return types.metadataToPlain(value);\n }\n return value;\n },\n set: function(value) {\n iface.setProperty(name, value);\n },\n enumerable: true,\n configurable: true\n });\n }\n\n #addEventedPropertiesList(iface, props) {\n for (let i = 0; i < props.length; i++) {\n this.#addEventedProperty(iface, props[i]);\n }\n }\n\n /**\n * Gets the position of this player. This method is intended to be overridden\n * by the user to return the position of the player in microseconds.\n *\n * @name Player#getPosition\n * @function\n * @returns {Number} - The current position of the player in microseconds. (Integer)\n */\n getPosition() {\n return 0;\n }\n\n /**\n * Emits the `Seeked` DBus signal to listening clients with the given position.\n *\n * @name Player#seeked\n * @function\n * @param {Number} position - The position in microseconds. (Integer)\n */\n seeked(position) {\n let seekTo = Math.floor(position || 0);\n if (isNaN(seekTo)) {\n throw new Error(`seeked expected a number (got ${position})`);\n }\n this.interfaces.player.Seeked(seekTo);\n }\n\n getTrackIndex(trackId) {\n for (let i = 0; i < this.tracks.length; i++) {\n let track = this.tracks[i];\n\n if (track['mpris:trackid'] === trackId) {\n return i;\n }\n }\n\n return -1;\n }\n\n getTrack(trackId) {\n return this.tracks[this.getTrackIndex(trackId)];\n }\n\n addTrack(track) {\n this.tracks.push(track);\n this.interfaces.tracklist.setTracks(this.tracks);\n\n let afterTrack = '/org/mpris/MediaPlayer2/TrackList/NoTrack';\n if (this.tracks.length > 2) {\n afterTrack = this.tracks[this.tracks.length - 2]['mpris:trackid'];\n }\n this.interfaces.tracklist.TrackAdded(afterTrack);\n }\n\n removeTrack(trackId) {\n let i = this.getTrackIndex(trackId);\n this.tracks.splice(i, 1);\n this.interfaces.tracklist.setTracks(this.tracks);\n\n this.interfaces.tracklist.TrackRemoved(trackId);\n }\n\n /**\n * Get the index of a playlist entry in the `playlists` list property of the\n * player from the given id.\n *\n * @name Player#getPlaylistIndex\n * @function\n * @param {String} playlistId - The id for the playlist entry.\n */\n getPlaylistIndex(playlistId) {\n for (let i = 0; i < this.playlists.length; i++) {\n let playlist = this.playlists[i];\n\n if (playlist.Id === playlistId) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Set the list of playlists advertised to listeners on the bus. Each playlist\n * must have string members `Id`, `Name`, and `Icon`.\n *\n * @name Player#setPlaylists\n * @function\n * @param {Array} playlists - A list of playlists.\n */\n setPlaylists(playlists) {\n this.playlists = playlists;\n this.playlistCount = playlists.length;\n\n this.playlists.forEach((playlist) => {\n if (playlist) {\n this.interfaces.playlists.PlaylistChanged(playlist);\n }\n });\n }\n\n /**\n * Set the playlist identified by `playlistId` to be the currently active\n * playlist.\n *\n * @name Player#setActivePlaylist\n * @function\n * @param {String} playlistId - The id of the playlist to activate.\n */\n setActivePlaylist(playlistId) {\n this.interfaces.playlists.setActivePlaylistId(playlistId);\n }\n\n /**\n * Enumerated value for the `playbackStatus` property of the player to indicate\n * a track is currently playing.\n *\n * @name Player#PLAYBACK_STATUS_PLAYING\n * @static\n * @constant\n */\n static PLAYBACK_STATUS_PLAYING = constants.PLAYBACK_STATUS_PLAYING;\n /**\n * Enumerated value for the `playbackStatus` property of the player to indicate\n * a track is currently paused.\n *\n * @name Player#PLAYBACK_STATUS_PAUSED\n * @static\n * @constant\n */\n static PLAYBACK_STATUS_PAUSED = constants.PLAYBACK_STATUS_PAUSED;\n\n /**\n * Enumerated value for the `playbackStatus` property of the player to indicate\n * there is no track currently playing.\n *\n * @name Player#PLAYBACK_STATUS_STOPPED\n * @static\n * @constant\n */\n static PLAYBACK_STATUS_STOPPED = constants.PLAYBACK_STATUS_STOPPED;\n\n /**\n * Enumerated value for the `loopStatus` property of the player to indicate\n * playback will stop when there are no more tracks to play.\n *\n * @name Player#LOOP_STATUS_NONE\n * @static\n * @constant\n */\n static LOOP_STATUS_NONE = constants.LOOP_STATUS_NONE;\n\n /**\n * Enumerated value for the `loopStatus` property of the player to indicate the\n * current track will start again from the beginning once it has finished\n * playing.\n *\n * @name Player#LOOP_STATUS_TRACK\n * @static\n * @constant\n */\n static LOOP_STATUS_TRACK = constants.LOOP_STATUS_TRACK;\n\n /**\n * Enumerated value for the `loopStatus` property of the player to indicate the\n * playback loops through a list of tracks.\n *\n * @name Player#LOOP_STATUS_PLAYLIST\n * @static\n * @constant\n */\n static LOOP_STATUS_PLAYLIST = constants.LOOP_STATUS_PLAYLIST;\n}\n\nmodule.exports = Player;"],"mappings":"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"}
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  const dbus = require('dbus-next');
4
- const Variant = dbus.Variant;
5
4
  const types = require('./types');
6
5
  const deepEqual = require('deep-equal');
7
6
  const constants = require('../constants');
8
7
  const logging = require('../logging');
9
- let {
10
- Interface,
11
- property,
12
- method,
13
- signal,
14
- DBusError,
15
- ACCESS_READ,
16
- ACCESS_WRITE,
17
- ACCESS_READWRITE
8
+ const {
9
+ Interface
18
10
  } = dbus.interface;
19
11
  class MprisInterface extends Interface {
20
12
  constructor(name, player) {
@@ -23,7 +15,7 @@ class MprisInterface extends Interface {
23
15
  }
24
16
  _setPropertyInternal(property, valueDbus) {
25
17
  // nothing is currently settable internally that needs conversion to plain
26
- this.player.emit(property[0].toLowerCase() + property.substr(1), valueDbus);
18
+ this.player.emit(property[0].toLowerCase() + property.substring(1), valueDbus);
27
19
  }
28
20
  setProperty(property, valuePlain) {
29
21
  // convert the plain value to a dbus value (default to the plain value)
@@ -41,9 +33,9 @@ class MprisInterface extends Interface {
41
33
  }
42
34
  if (!deepEqual(this[`_${property}`], valueDbus)) {
43
35
  this[`_${property}`] = valueDbus;
44
- if (property == 'LoopStatus' && !constants.isLoopStatusValid(valuePlain)) {
36
+ if (property === 'LoopStatus' && !constants.isLoopStatusValid(valuePlain)) {
45
37
  logging.warn(`setting player loop status to an invalid value: ${valuePlain}`);
46
- } else if (property == 'PlaybackStatus' && !constants.isPlaybackStatusValid(valuePlain)) {
38
+ } else if (property === 'PlaybackStatus' && !constants.isPlaybackStatusValid(valuePlain)) {
47
39
  logging.warn(`setting player playback status to an invalid value: ${valuePlain}`);
48
40
  } else {
49
41
  let changedProperties = {};
@@ -1 +1 @@
1
- {"version":3,"file":"mpris-interface.js","names":["dbus","require","Variant","types","deepEqual","constants","logging","Interface","property","method","signal","DBusError","ACCESS_READ","ACCESS_WRITE","ACCESS_READWRITE","interface","MprisInterface","constructor","name","player","_setPropertyInternal","valueDbus","emit","toLowerCase","substr","setProperty","valuePlain","metadataToDbus","playlistToDbus","emptyPlaylist","filter","t","map","isLoopStatusValid","warn","isPlaybackStatusValid","changedProperties","emitPropertiesChanged","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/mpris-interface.js"],"sourcesContent":["const dbus = require('dbus-next');\nconst Variant = dbus.Variant;\nconst types = require('./types');\nconst deepEqual = require('deep-equal');\nconst constants = require('../constants');\nconst logging = require('../logging');\n\nlet {\n Interface, property, method, signal, DBusError,\n ACCESS_READ, ACCESS_WRITE, ACCESS_READWRITE\n} = dbus.interface;\n\nclass MprisInterface extends Interface {\n constructor(name, player) {\n super(name);\n this.player = player;\n }\n\n _setPropertyInternal(property, valueDbus) {\n // nothing is currently settable internally that needs conversion to plain\n this.player.emit(property[0].toLowerCase() + property.substr(1), valueDbus);\n }\n\n setProperty(property, valuePlain) {\n // convert the plain value to a dbus value (default to the plain value)\n let valueDbus = valuePlain;\n\n if (property === 'Metadata') {\n valueDbus = types.metadataToDbus(valuePlain);\n } else if (property === 'ActivePlaylist') {\n if (valuePlain) {\n valueDbus = [ true, types.playlistToDbus(valuePlain) ];\n } else {\n valueDbus = [ false, types.emptyPlaylist ];\n }\n } else if (property === 'Tracks') {\n valueDbus =\n valuePlain.filter((t) => t['mpris:trackid']).map((t) => t['mpris:trackid']);\n }\n\n if (!deepEqual(this[`_${property}`], valueDbus)) {\n this[`_${property}`] = valueDbus;\n\n if (property == 'LoopStatus' && !constants.isLoopStatusValid(valuePlain)) {\n logging.warn(`setting player loop status to an invalid value: ${valuePlain}`);\n } else if (property == 'PlaybackStatus' && !constants.isPlaybackStatusValid(valuePlain)) {\n logging.warn(`setting player playback status to an invalid value: ${valuePlain}`);\n } else {\n let changedProperties = {};\n changedProperties[property] = valueDbus;\n Interface.emitPropertiesChanged(this, changedProperties);\n }\n }\n }\n}\n\nmodule.exports = MprisInterface;\n"],"mappings":";;AAAA,MAAMA,IAAI,GAAGC,OAAO,CAAC,WAAW,CAAC;AACjC,MAAMC,OAAO,GAAGF,IAAI,CAACE,OAAO;AAC5B,MAAMC,KAAK,GAAGF,OAAO,CAAC,SAAS,CAAC;AAChC,MAAMG,SAAS,GAAGH,OAAO,CAAC,YAAY,CAAC;AACvC,MAAMI,SAAS,GAAGJ,OAAO,CAAC,cAAc,CAAC;AACzC,MAAMK,OAAO,GAAGL,OAAO,CAAC,YAAY,CAAC;AAErC,IAAI;EACFM,SAAS;EAAEC,QAAQ;EAAEC,MAAM;EAAEC,MAAM;EAAEC,SAAS;EAC9CC,WAAW;EAAEC,YAAY;EAAEC;AAC7B,CAAC,GAAGd,IAAI,CAACe,SAAS;AAElB,MAAMC,cAAc,SAAST,SAAS,CAAC;EACrCU,WAAWA,CAACC,IAAI,EAAEC,MAAM,EAAE;IACxB,KAAK,CAACD,IAAI,CAAC;IACX,IAAI,CAACC,MAAM,GAAGA,MAAM;EACtB;EAEAC,oBAAoBA,CAACZ,QAAQ,EAAEa,SAAS,EAAE;IACxC;IACA,IAAI,CAACF,MAAM,CAACG,IAAI,CAACd,QAAQ,CAAC,CAAC,CAAC,CAACe,WAAW,CAAC,CAAC,GAAGf,QAAQ,CAACgB,MAAM,CAAC,CAAC,CAAC,EAAEH,SAAS,CAAC;EAC7E;EAEAI,WAAWA,CAACjB,QAAQ,EAAEkB,UAAU,EAAE;IAChC;IACA,IAAIL,SAAS,GAAGK,UAAU;IAE1B,IAAIlB,QAAQ,KAAK,UAAU,EAAE;MAC3Ba,SAAS,GAAGlB,KAAK,CAACwB,cAAc,CAACD,UAAU,CAAC;IAC9C,CAAC,MAAM,IAAIlB,QAAQ,KAAK,gBAAgB,EAAE;MACxC,IAAIkB,UAAU,EAAE;QACdL,SAAS,GAAG,CAAE,IAAI,EAAElB,KAAK,CAACyB,cAAc,CAACF,UAAU,CAAC,CAAE;MACxD,CAAC,MAAM;QACLL,SAAS,GAAG,CAAE,KAAK,EAAElB,KAAK,CAAC0B,aAAa,CAAE;MAC5C;IACF,CAAC,MAAM,IAAIrB,QAAQ,KAAK,QAAQ,EAAE;MAChCa,SAAS,GACPK,UAAU,CAACI,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAAC,eAAe,CAAC,CAAC,CAACC,GAAG,CAAED,CAAC,IAAKA,CAAC,CAAC,eAAe,CAAC,CAAC;IAC/E;IAEA,IAAI,CAAC3B,SAAS,CAAC,IAAI,CAAE,IAAGI,QAAS,EAAC,CAAC,EAAEa,SAAS,CAAC,EAAE;MAC/C,IAAI,CAAE,IAAGb,QAAS,EAAC,CAAC,GAAGa,SAAS;MAEhC,IAAIb,QAAQ,IAAI,YAAY,IAAI,CAACH,SAAS,CAAC4B,iBAAiB,CAACP,UAAU,CAAC,EAAE;QACxEpB,OAAO,CAAC4B,IAAI,CAAE,mDAAkDR,UAAW,EAAC,CAAC;MAC/E,CAAC,MAAM,IAAIlB,QAAQ,IAAI,gBAAgB,IAAI,CAACH,SAAS,CAAC8B,qBAAqB,CAACT,UAAU,CAAC,EAAE;QACvFpB,OAAO,CAAC4B,IAAI,CAAE,uDAAsDR,UAAW,EAAC,CAAC;MACnF,CAAC,MAAM;QACL,IAAIU,iBAAiB,GAAG,CAAC,CAAC;QAC1BA,iBAAiB,CAAC5B,QAAQ,CAAC,GAAGa,SAAS;QACvCd,SAAS,CAAC8B,qBAAqB,CAAC,IAAI,EAAED,iBAAiB,CAAC;MAC1D;IACF;EACF;AACF;AAEAE,MAAM,CAACC,OAAO,GAAGvB,cAAc"}
1
+ {"version":3,"file":"mpris-interface.js","names":["dbus","require","types","deepEqual","constants","logging","Interface","interface","MprisInterface","constructor","name","player","_setPropertyInternal","property","valueDbus","emit","toLowerCase","substring","setProperty","valuePlain","metadataToDbus","playlistToDbus","emptyPlaylist","filter","t","map","isLoopStatusValid","warn","isPlaybackStatusValid","changedProperties","emitPropertiesChanged","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/mpris-interface.js"],"sourcesContent":["const dbus = require('dbus-next');\nconst types = require('./types');\nconst deepEqual = require('deep-equal');\nconst constants = require('../constants');\nconst logging = require('../logging');\n\nconst { Interface } = dbus.interface;\n\nclass MprisInterface extends Interface {\n constructor(name, player) {\n super(name);\n this.player = player;\n }\n\n _setPropertyInternal(property, valueDbus) {\n // nothing is currently settable internally that needs conversion to plain\n this.player.emit(property[0].toLowerCase() + property.substring(1), valueDbus);\n }\n\n setProperty(property, valuePlain) {\n // convert the plain value to a dbus value (default to the plain value)\n let valueDbus = valuePlain;\n\n if (property === 'Metadata') {\n valueDbus = types.metadataToDbus(valuePlain);\n } else if (property === 'ActivePlaylist') {\n if (valuePlain) {\n valueDbus = [ true, types.playlistToDbus(valuePlain) ];\n } else {\n valueDbus = [ false, types.emptyPlaylist ];\n }\n } else if (property === 'Tracks') {\n valueDbus =\n valuePlain.filter((t) => t['mpris:trackid']).map((t) => t['mpris:trackid']);\n }\n\n if (!deepEqual(this[`_${property}`], valueDbus)) {\n this[`_${property}`] = valueDbus;\n\n if (property === 'LoopStatus' && !constants.isLoopStatusValid(valuePlain)) {\n logging.warn(`setting player loop status to an invalid value: ${valuePlain}`);\n } else if (property === 'PlaybackStatus' && !constants.isPlaybackStatusValid(valuePlain)) {\n logging.warn(`setting player playback status to an invalid value: ${valuePlain}`);\n } else {\n let changedProperties = {};\n changedProperties[property] = valueDbus;\n Interface.emitPropertiesChanged(this, changedProperties);\n }\n }\n }\n}\n\nmodule.exports = MprisInterface;\n"],"mappings":";;AAAA,MAAMA,IAAI,GAAGC,OAAO,CAAC,WAAW,CAAC;AACjC,MAAMC,KAAK,GAAGD,OAAO,CAAC,SAAS,CAAC;AAChC,MAAME,SAAS,GAAGF,OAAO,CAAC,YAAY,CAAC;AACvC,MAAMG,SAAS,GAAGH,OAAO,CAAC,cAAc,CAAC;AACzC,MAAMI,OAAO,GAAGJ,OAAO,CAAC,YAAY,CAAC;AAErC,MAAM;EAAEK;AAAU,CAAC,GAAGN,IAAI,CAACO,SAAS;AAEpC,MAAMC,cAAc,SAASF,SAAS,CAAC;EACrCG,WAAWA,CAACC,IAAI,EAAEC,MAAM,EAAE;IACxB,KAAK,CAACD,IAAI,CAAC;IACX,IAAI,CAACC,MAAM,GAAGA,MAAM;EACtB;EAEAC,oBAAoBA,CAACC,QAAQ,EAAEC,SAAS,EAAE;IACxC;IACA,IAAI,CAACH,MAAM,CAACI,IAAI,CAACF,QAAQ,CAAC,CAAC,CAAC,CAACG,WAAW,CAAC,CAAC,GAAGH,QAAQ,CAACI,SAAS,CAAC,CAAC,CAAC,EAAEH,SAAS,CAAC;EAChF;EAEAI,WAAWA,CAACL,QAAQ,EAAEM,UAAU,EAAE;IAChC;IACA,IAAIL,SAAS,GAAGK,UAAU;IAE1B,IAAIN,QAAQ,KAAK,UAAU,EAAE;MAC3BC,SAAS,GAAGZ,KAAK,CAACkB,cAAc,CAACD,UAAU,CAAC;IAC9C,CAAC,MAAM,IAAIN,QAAQ,KAAK,gBAAgB,EAAE;MACxC,IAAIM,UAAU,EAAE;QACdL,SAAS,GAAG,CAAE,IAAI,EAAEZ,KAAK,CAACmB,cAAc,CAACF,UAAU,CAAC,CAAE;MACxD,CAAC,MAAM;QACLL,SAAS,GAAG,CAAE,KAAK,EAAEZ,KAAK,CAACoB,aAAa,CAAE;MAC5C;IACF,CAAC,MAAM,IAAIT,QAAQ,KAAK,QAAQ,EAAE;MAChCC,SAAS,GACPK,UAAU,CAACI,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAAC,eAAe,CAAC,CAAC,CAACC,GAAG,CAAED,CAAC,IAAKA,CAAC,CAAC,eAAe,CAAC,CAAC;IAC/E;IAEA,IAAI,CAACrB,SAAS,CAAC,IAAI,CAAE,IAAGU,QAAS,EAAC,CAAC,EAAEC,SAAS,CAAC,EAAE;MAC/C,IAAI,CAAE,IAAGD,QAAS,EAAC,CAAC,GAAGC,SAAS;MAEhC,IAAID,QAAQ,KAAK,YAAY,IAAI,CAACT,SAAS,CAACsB,iBAAiB,CAACP,UAAU,CAAC,EAAE;QACzEd,OAAO,CAACsB,IAAI,CAAE,mDAAkDR,UAAW,EAAC,CAAC;MAC/E,CAAC,MAAM,IAAIN,QAAQ,KAAK,gBAAgB,IAAI,CAACT,SAAS,CAACwB,qBAAqB,CAACT,UAAU,CAAC,EAAE;QACxFd,OAAO,CAACsB,IAAI,CAAE,uDAAsDR,UAAW,EAAC,CAAC;MACnF,CAAC,MAAM;QACL,IAAIU,iBAAiB,GAAG,CAAC,CAAC;QAC1BA,iBAAiB,CAAChB,QAAQ,CAAC,GAAGC,SAAS;QACvCR,SAAS,CAACwB,qBAAqB,CAAC,IAAI,EAAED,iBAAiB,CAAC;MAC1D;IACF;EACF;AACF;AAEAE,MAAM,CAACC,OAAO,GAAGxB,cAAc"}
@@ -18,17 +18,14 @@ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symb
18
18
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
19
19
  const dbus = require('dbus-next');
20
20
  const MprisInterface = require('./mpris-interface');
21
- const Variant = dbus.Variant;
22
21
  const constants = require('../constants');
23
- let {
22
+ const {
24
23
  property,
25
24
  method,
26
25
  signal,
27
- DBusError,
28
- ACCESS_READ,
29
- ACCESS_WRITE,
30
- ACCESS_READWRITE
26
+ ACCESS_READ
31
27
  } = dbus.interface;
28
+ const DBusError = dbus.DBusError;
32
29
  let PlayerInterface = _decorate(null, function (_initialize, _MprisInterface) {
33
30
  class PlayerInterface extends _MprisInterface {
34
31
  constructor(player) {
@@ -1 +1 @@
1
- {"version":3,"file":"player.js","names":["dbus","require","MprisInterface","Variant","constants","property","method","signal","DBusError","ACCESS_READ","ACCESS_WRITE","ACCESS_READWRITE","interface","PlayerInterface","_decorate","_initialize","_MprisInterface","constructor","player","F","d","kind","key","value","LOOP_STATUS_NONE","PLAYBACK_STATUS_STOPPED","decorators","signature","access","CanControl","_CanControl","CanPause","_CanPause","CanPlay","_CanPlay","CanSeek","_CanSeek","CanGoNext","_CanGoNext","CanGoPrevious","_CanGoPrevious","Metadata","_Metadata","MaximumRate","_MaximumRate","MinimumRate","_MinimumRate","Rate","_Rate","_setPropertyInternal","Shuffle","_Shuffle","Volume","_Volume","Position","playerPosition","getPosition","position","Math","floor","isNaN","err","message","LoopStatus","isLoopStatusValid","_LoopStatus","PlaybackStatus","isPlaybackStatusValid","_PlaybackStatus","Next","emit","Previous","Pause","PlayPause","Stop","Play","inSignature","Seek","offset","Number","SetPosition","trackId","e","OpenUri","uri","Seeked","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/player.js"],"sourcesContent":["const dbus = require('dbus-next');\nconst MprisInterface = require('./mpris-interface');\nconst Variant = dbus.Variant;\nconst constants = require('../constants');\n\nlet {\n property, method, signal, DBusError,\n ACCESS_READ, ACCESS_WRITE, ACCESS_READWRITE\n} = dbus.interface;\n\nclass PlayerInterface extends MprisInterface {\n constructor(player) {\n super('org.mpris.MediaPlayer2.Player', player);\n }\n\n _CanControl = true;\n _CanPause = true;\n _CanPlay = true;\n _CanSeek = true;\n _CanGoNext = true;\n _CanGoPrevious = true;\n _Metadata = {};\n _MaximumRate = 1;\n _MinimumRate = 1;\n _Rate = 1;\n _Shuffle = false;\n _Volume = 0;\n _LoopStatus = constants.LOOP_STATUS_NONE;\n _PlaybackStatus = constants.PLAYBACK_STATUS_STOPPED;\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanControl() {\n return this._CanControl;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanPause() {\n return this._CanPause;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanPlay() {\n return this._CanPlay;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanSeek() {\n return this._CanSeek;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanGoNext() {\n return this._CanGoNext;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanGoPrevious() {\n return this._CanGoPrevious;\n }\n\n @property({signature: 'a{sv}', access: ACCESS_READ})\n get Metadata() {\n return this._Metadata;\n }\n\n @property({signature: 'd', access: ACCESS_READ})\n get MaximumRate() {\n return this._MaximumRate;\n }\n\n @property({signature: 'd', access: ACCESS_READ})\n get MinimumRate() {\n return this._MinimumRate;\n }\n\n @property({signature: 'd'})\n get Rate() {\n return this._Rate;\n }\n set Rate(value) {\n this._setPropertyInternal('Rate', value);\n }\n\n @property({signature: 'b'})\n get Shuffle() {\n return this._Shuffle;\n }\n set Shuffle(value) {\n this._setPropertyInternal('Shuffle', value);\n }\n\n @property({signature: 'd'})\n get Volume() {\n return this._Volume;\n }\n set Volume(value) {\n this._setPropertyInternal('Volume', value);\n }\n\n @property({signature: 'x', access: ACCESS_READ})\n get Position() {\n let playerPosition = this.player.getPosition();\n let position = Math.floor(playerPosition || 0);\n if (isNaN(position)) {\n const err = 'github.mpris_service.InvalidPositionError';\n const message = `The player has set an invalid position: ${playerPosition}`;\n throw new DBusError(err, message);\n }\n return position;\n }\n\n @property({signature: 's'})\n get LoopStatus() {\n if (!constants.isLoopStatusValid(this._LoopStatus)) {\n const err = 'github.mpris_service.InvalidLoopStatusError';\n const message = `The player has set an invalid loop status: ${this._LoopStatus}`;\n throw new DBusError(err, message);\n }\n\n return this._LoopStatus;\n }\n set LoopStatus(value) {\n if (!constants.isLoopStatusValid(value)) {\n const err = 'github.mpris_service.InvalidLoopStatusError';\n const message = `Tried to set loop status to an invalid value: ${value}`;\n throw new DBusError(err, message);\n }\n this._setPropertyInternal('LoopStatus', value);\n }\n\n @property({signature: 's', access: ACCESS_READ})\n get PlaybackStatus() {\n if (!constants.isPlaybackStatusValid(this._PlaybackStatus)) {\n const err = 'github.mpris_service.InvalidPlaybackStatusError';\n const message = `The player has set an invalid playback status: ${this._PlaybackStatus}`;\n throw new DBusError(err, message);\n }\n\n return this._PlaybackStatus;\n }\n\n @method({})\n Next() {\n this.player.emit('next');\n }\n\n @method({})\n Previous() {\n this.player.emit('previous');\n }\n\n @method({})\n Pause() {\n this.player.emit('pause');\n }\n\n @method({})\n PlayPause() {\n this.player.emit('playpause');\n }\n\n @method({})\n Stop() {\n this.player.emit('stop');\n }\n\n @method({})\n Play() {\n this.player.emit('play');\n }\n\n @method({inSignature: 'x'})\n Seek(offset) {\n // XXX overflow\n offset = Number(offset);\n this.player.emit('seek', offset);\n }\n\n @method({inSignature: 'ox'})\n SetPosition(trackId, position) {\n let e = {\n trackId: trackId,\n // XXX overflow\n position: Number(position)\n };\n this.player.emit('position', e);\n }\n\n @method({inSignature: 's'})\n OpenUri(uri) {\n let e = { uri };\n this.player.emit('open', e);\n }\n\n @signal({signature: 'x'})\n Seeked(position) {\n return position;\n }\n}\n\nmodule.exports = PlayerInterface;\n"],"mappings":"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"}
1
+ {"version":3,"file":"player.js","names":["dbus","require","MprisInterface","constants","property","method","signal","ACCESS_READ","interface","DBusError","PlayerInterface","_decorate","_initialize","_MprisInterface","constructor","player","F","d","kind","key","value","LOOP_STATUS_NONE","PLAYBACK_STATUS_STOPPED","decorators","signature","access","CanControl","_CanControl","CanPause","_CanPause","CanPlay","_CanPlay","CanSeek","_CanSeek","CanGoNext","_CanGoNext","CanGoPrevious","_CanGoPrevious","Metadata","_Metadata","MaximumRate","_MaximumRate","MinimumRate","_MinimumRate","Rate","_Rate","_setPropertyInternal","Shuffle","_Shuffle","Volume","_Volume","Position","playerPosition","getPosition","position","Math","floor","isNaN","err","message","LoopStatus","isLoopStatusValid","_LoopStatus","PlaybackStatus","isPlaybackStatusValid","_PlaybackStatus","Next","emit","Previous","Pause","PlayPause","Stop","Play","inSignature","Seek","offset","Number","SetPosition","trackId","e","OpenUri","uri","Seeked","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/player.js"],"sourcesContent":["const dbus = require('dbus-next');\nconst MprisInterface = require('./mpris-interface');\n\nconst constants = require('../constants');\n\nconst {\n property,\n method,\n signal,\n ACCESS_READ\n} = dbus.interface;\nconst DBusError = dbus.DBusError;\n\nclass PlayerInterface extends MprisInterface {\n constructor(player) {\n super('org.mpris.MediaPlayer2.Player', player);\n }\n\n _CanControl = true;\n _CanPause = true;\n _CanPlay = true;\n _CanSeek = true;\n _CanGoNext = true;\n _CanGoPrevious = true;\n _Metadata = {};\n _MaximumRate = 1;\n _MinimumRate = 1;\n _Rate = 1;\n _Shuffle = false;\n _Volume = 0;\n _LoopStatus = constants.LOOP_STATUS_NONE;\n _PlaybackStatus = constants.PLAYBACK_STATUS_STOPPED;\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanControl() {\n return this._CanControl;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanPause() {\n return this._CanPause;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanPlay() {\n return this._CanPlay;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanSeek() {\n return this._CanSeek;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanGoNext() {\n return this._CanGoNext;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanGoPrevious() {\n return this._CanGoPrevious;\n }\n\n @property({signature: 'a{sv}', access: ACCESS_READ})\n get Metadata() {\n return this._Metadata;\n }\n\n @property({signature: 'd', access: ACCESS_READ})\n get MaximumRate() {\n return this._MaximumRate;\n }\n\n @property({signature: 'd', access: ACCESS_READ})\n get MinimumRate() {\n return this._MinimumRate;\n }\n\n @property({signature: 'd'})\n get Rate() {\n return this._Rate;\n }\n set Rate(value) {\n this._setPropertyInternal('Rate', value);\n }\n\n @property({signature: 'b'})\n get Shuffle() {\n return this._Shuffle;\n }\n set Shuffle(value) {\n this._setPropertyInternal('Shuffle', value);\n }\n\n @property({signature: 'd'})\n get Volume() {\n return this._Volume;\n }\n set Volume(value) {\n this._setPropertyInternal('Volume', value);\n }\n\n @property({signature: 'x', access: ACCESS_READ})\n get Position() {\n let playerPosition = this.player.getPosition();\n let position = Math.floor(playerPosition || 0);\n if (isNaN(position)) {\n const err = 'github.mpris_service.InvalidPositionError';\n const message = `The player has set an invalid position: ${playerPosition}`;\n throw new DBusError(err, message);\n }\n return position;\n }\n\n @property({signature: 's'})\n get LoopStatus() {\n if (!constants.isLoopStatusValid(this._LoopStatus)) {\n const err = 'github.mpris_service.InvalidLoopStatusError';\n const message = `The player has set an invalid loop status: ${this._LoopStatus}`;\n throw new DBusError(err, message);\n }\n\n return this._LoopStatus;\n }\n set LoopStatus(value) {\n if (!constants.isLoopStatusValid(value)) {\n const err = 'github.mpris_service.InvalidLoopStatusError';\n const message = `Tried to set loop status to an invalid value: ${value}`;\n throw new DBusError(err, message);\n }\n this._setPropertyInternal('LoopStatus', value);\n }\n\n @property({signature: 's', access: ACCESS_READ})\n get PlaybackStatus() {\n if (!constants.isPlaybackStatusValid(this._PlaybackStatus)) {\n const err = 'github.mpris_service.InvalidPlaybackStatusError';\n const message = `The player has set an invalid playback status: ${this._PlaybackStatus}`;\n throw new DBusError(err, message);\n }\n\n return this._PlaybackStatus;\n }\n\n @method({})\n Next() {\n this.player.emit('next');\n }\n\n @method({})\n Previous() {\n this.player.emit('previous');\n }\n\n @method({})\n Pause() {\n this.player.emit('pause');\n }\n\n @method({})\n PlayPause() {\n this.player.emit('playpause');\n }\n\n @method({})\n Stop() {\n this.player.emit('stop');\n }\n\n @method({})\n Play() {\n this.player.emit('play');\n }\n\n @method({inSignature: 'x'})\n Seek(offset) {\n // XXX overflow\n offset = Number(offset);\n this.player.emit('seek', offset);\n }\n\n @method({inSignature: 'ox'})\n SetPosition(trackId, position) {\n let e = {\n trackId: trackId,\n // XXX overflow\n position: Number(position)\n };\n this.player.emit('position', e);\n }\n\n @method({inSignature: 's'})\n OpenUri(uri) {\n let e = { uri };\n this.player.emit('open', e);\n }\n\n @signal({signature: 'x'})\n Seeked(position) {\n return position;\n }\n}\n\nmodule.exports = PlayerInterface;\n"],"mappings":"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"}
@@ -17,18 +17,14 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
17
17
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
18
18
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
19
19
  // TODO proper import
20
- let MprisInterface = require('./mpris-interface');
21
- let dbus = require('dbus-next');
22
- let Variant = dbus.Variant;
23
- let types = require('./types');
24
- let {
20
+ const MprisInterface = require('./mpris-interface');
21
+ const dbus = require('dbus-next');
22
+ const types = require('./types');
23
+ const {
25
24
  property,
26
25
  method,
27
26
  signal,
28
- DBusError,
29
- ACCESS_READ,
30
- ACCESS_WRITE,
31
- ACCESS_READWRITE
27
+ ACCESS_READ
32
28
  } = dbus.interface;
33
29
  let PlaylistsInterface = _decorate(null, function (_initialize, _MprisInterface) {
34
30
  class PlaylistsInterface extends _MprisInterface {
@@ -1 +1 @@
1
- {"version":3,"file":"playlists.js","names":["MprisInterface","require","dbus","Variant","types","property","method","signal","DBusError","ACCESS_READ","ACCESS_WRITE","ACCESS_READWRITE","interface","PlaylistsInterface","_decorate","_initialize","_MprisInterface","constructor","player","F","d","kind","key","value","emptyPlaylist","decorators","signature","access","PlaylistCount","_PlaylistCount","Orderings","ActivePlaylist","_ActivePlaylist","setActivePlaylistId","playlistId","i","getPlaylistIndex","setProperty","playlists","inSignature","ActivatePlaylist","emit","outSignature","GetPlaylists","index","maxCount","order","reverseOrder","result","sort","a","b","ret","Name","slice","map","playlistToDbus","reverse","PlaylistChanged","playlist","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/playlists.js"],"sourcesContent":["// TODO proper import\nlet MprisInterface = require('./mpris-interface');\nlet dbus = require('dbus-next');\nlet Variant = dbus.Variant;\nlet types = require('./types');\n\nlet {\n property, method, signal, DBusError,\n ACCESS_READ, ACCESS_WRITE, ACCESS_READWRITE\n} = dbus.interface;\n\nclass PlaylistsInterface extends MprisInterface {\n constructor(player) {\n super('org.mpris.MediaPlayer2.Playlists', player);\n }\n\n _ActivePlaylist = [ false, types.emptyPlaylist ];\n _PlaylistCount = 0;\n\n @property({signature: 'u', access: ACCESS_READ})\n get PlaylistCount() {\n return this._PlaylistCount;\n }\n\n @property({signature: 'as', access: ACCESS_READ})\n get Orderings() {\n return ['Alphabetical', 'UserDefined'];\n }\n\n @property({signature: '(b(oss))', access: ACCESS_READ})\n get ActivePlaylist() {\n return this._ActivePlaylist;\n }\n\n setActivePlaylistId(playlistId) {\n let i = this.player.getPlaylistIndex(playlistId);\n\n this.setProperty('ActivePlaylist', this.player.playlists[i] || null);\n }\n\n @method({inSignature: 'o'})\n ActivatePlaylist(playlistId) {\n this.player.emit('activatePlaylist', playlistId);\n }\n\n @method({inSignature: 'uusb', outSignature: 'a(oss)'})\n GetPlaylists(index, maxCount, order, reverseOrder) {\n if (!this.player.playlists) {\n return [];\n }\n\n let result = this.player.playlists.sort(function(a, b) {\n let ret = 1;\n switch (order) {\n case 'Alphabetical':\n ret = (a.Name > b.Name) ? 1 : -1;\n break;\n //case 'CreationDate':\n //case 'ModifiedDate':\n //case 'LastPlayDate':\n case 'UserDefined':\n break;\n }\n return ret;\n })\n .slice(index, maxCount + index)\n .map(types.playlistToDbus);\n\n if (reverseOrder) {\n result.reverse();\n }\n\n return result;\n }\n\n @signal({signature: '(oss)'})\n PlaylistChanged(playlist) {\n return types.playlistToDbus(playlist);\n }\n}\n\nmodule.exports = PlaylistsInterface;\n"],"mappings":"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"}
1
+ {"version":3,"file":"playlists.js","names":["MprisInterface","require","dbus","types","property","method","signal","ACCESS_READ","interface","PlaylistsInterface","_decorate","_initialize","_MprisInterface","constructor","player","F","d","kind","key","value","emptyPlaylist","decorators","signature","access","PlaylistCount","_PlaylistCount","Orderings","ActivePlaylist","_ActivePlaylist","setActivePlaylistId","playlistId","i","getPlaylistIndex","setProperty","playlists","inSignature","ActivatePlaylist","emit","outSignature","GetPlaylists","index","maxCount","order","reverseOrder","result","sort","a","b","ret","Name","slice","map","playlistToDbus","reverse","PlaylistChanged","playlist","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/playlists.js"],"sourcesContent":["// TODO proper import\nconst MprisInterface = require('./mpris-interface');\nconst dbus = require('dbus-next');\n\nconst types = require('./types');\n\nconst {\n property,\n method,\n signal,\n ACCESS_READ\n} = dbus.interface;\n\nclass PlaylistsInterface extends MprisInterface {\n constructor(player) {\n super('org.mpris.MediaPlayer2.Playlists', player);\n }\n\n _ActivePlaylist = [ false, types.emptyPlaylist ];\n _PlaylistCount = 0;\n\n @property({signature: 'u', access: ACCESS_READ})\n get PlaylistCount() {\n return this._PlaylistCount;\n }\n\n @property({signature: 'as', access: ACCESS_READ})\n get Orderings() {\n return ['Alphabetical', 'UserDefined'];\n }\n\n @property({signature: '(b(oss))', access: ACCESS_READ})\n get ActivePlaylist() {\n return this._ActivePlaylist;\n }\n\n setActivePlaylistId(playlistId) {\n let i = this.player.getPlaylistIndex(playlistId);\n\n this.setProperty('ActivePlaylist', this.player.playlists[i] || null);\n }\n\n @method({inSignature: 'o'})\n ActivatePlaylist(playlistId) {\n this.player.emit('activatePlaylist', playlistId);\n }\n\n @method({inSignature: 'uusb', outSignature: 'a(oss)'})\n GetPlaylists(index, maxCount, order, reverseOrder) {\n if (!this.player.playlists) {\n return [];\n }\n\n let result = this.player.playlists.sort(function(a, b) {\n let ret = 1;\n switch (order) {\n case 'Alphabetical':\n ret = (a.Name > b.Name) ? 1 : -1;\n break;\n //case 'CreationDate':\n //case 'ModifiedDate':\n //case 'LastPlayDate':\n case 'UserDefined':\n break;\n }\n return ret;\n })\n .slice(index, maxCount + index)\n .map(types.playlistToDbus);\n\n if (reverseOrder) {\n result.reverse();\n }\n\n return result;\n }\n\n @signal({signature: '(oss)'})\n PlaylistChanged(playlist) {\n return types.playlistToDbus(playlist);\n }\n}\n\nmodule.exports = PlaylistsInterface;\n"],"mappings":"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"}
@@ -16,17 +16,12 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
16
16
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
17
17
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
18
18
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
19
- let MprisInterface = require('./mpris-interface');
20
- let dbus = require('dbus-next');
21
- let Variant = dbus.Variant;
22
- let {
19
+ const MprisInterface = require('./mpris-interface');
20
+ const dbus = require('dbus-next');
21
+ const {
23
22
  property,
24
23
  method,
25
- signal,
26
- DBusError,
27
- ACCESS_READ,
28
- ACCESS_WRITE,
29
- ACCESS_READWRITE
24
+ ACCESS_READ
30
25
  } = dbus.interface;
31
26
  let RootInterface = _decorate(null, function (_initialize, _MprisInterface) {
32
27
  class RootInterface extends _MprisInterface {
@@ -1 +1 @@
1
- {"version":3,"file":"root.js","names":["MprisInterface","require","dbus","Variant","property","method","signal","DBusError","ACCESS_READ","ACCESS_WRITE","ACCESS_READWRITE","interface","RootInterface","_decorate","_initialize","_MprisInterface","constructor","player","opts","hasOwnProperty","_Identity","identity","_SupportedUriSchemes","supportedUriSchemes","_SupportedMimeTypes","supportedMimeTypes","_DesktopEntry","desktopEntry","F","d","kind","key","value","decorators","signature","access","CanQuit","_CanQuit","Fullscreen","_Fullscreen","_setPropertyInternal","CanSetFullscreen","_CanSetFullscreen","CanRaise","_CanRaise","HasTrackList","_HasTrackList","Identity","DesktopEntry","SupportedUriSchemes","SupportedMimeTypes","Raise","emit","Quit","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/root.js"],"sourcesContent":["let MprisInterface = require('./mpris-interface');\nlet dbus = require('dbus-next');\nlet Variant = dbus.Variant;\n\nlet {\n property, method, signal, DBusError,\n ACCESS_READ, ACCESS_WRITE, ACCESS_READWRITE\n} = dbus.interface;\n\nclass RootInterface extends MprisInterface {\n constructor(player, opts={}) {\n super('org.mpris.MediaPlayer2', player);\n\n if (opts.hasOwnProperty('identity')) {\n this._Identity = opts.identity;\n }\n if (opts.hasOwnProperty('supportedUriSchemes')) {\n this._SupportedUriSchemes = opts.supportedUriSchemes;\n }\n if (opts.hasOwnProperty('supportedMimeTypes')) {\n this._SupportedMimeTypes = opts.supportedMimeTypes;\n }\n if (opts.hasOwnProperty('desktopEntry')) {\n this._DesktopEntry = opts.desktopEntry;\n }\n }\n\n _CanQuit = true;\n _Fullscreen = false;\n _CanSetFullscreen = false;\n _CanRaise = true;\n _HasTrackList = false;\n _Identity = '';\n // TODO optional properties\n _DesktopEntry = '';\n _SupportedUriSchemes = [];\n _SupportedMimeTypes = [];\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanQuit() {\n return this._CanQuit;\n }\n\n @property({signature: 'b'})\n get Fullscreen() {\n return this._Fullscreen;\n }\n set Fullscreen(value) {\n this._setPropertyInternal('Fullscreen', value);\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanSetFullscreen() {\n return this._CanSetFullscreen;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanRaise() {\n return this._CanRaise;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get HasTrackList() {\n return this._HasTrackList;\n }\n\n @property({signature: 's', access: ACCESS_READ})\n get Identity() {\n return this._Identity;\n }\n\n @property({signature: 's', access: ACCESS_READ})\n get DesktopEntry() {\n return this._DesktopEntry;\n }\n\n @property({signature: 'as', access: ACCESS_READ})\n get SupportedUriSchemes() {\n return this._SupportedUriSchemes;\n }\n\n @property({signature: 'as', access: ACCESS_READ})\n get SupportedMimeTypes() {\n return this._SupportedMimeTypes;\n }\n\n @method({})\n Raise() {\n this.player.emit('raise');\n }\n\n @method({})\n Quit() {\n this.player.emit('quit');\n }\n}\n\nmodule.exports = RootInterface;\n"],"mappings":"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"}
1
+ {"version":3,"file":"root.js","names":["MprisInterface","require","dbus","property","method","ACCESS_READ","interface","RootInterface","_decorate","_initialize","_MprisInterface","constructor","player","opts","hasOwnProperty","_Identity","identity","_SupportedUriSchemes","supportedUriSchemes","_SupportedMimeTypes","supportedMimeTypes","_DesktopEntry","desktopEntry","F","d","kind","key","value","decorators","signature","access","CanQuit","_CanQuit","Fullscreen","_Fullscreen","_setPropertyInternal","CanSetFullscreen","_CanSetFullscreen","CanRaise","_CanRaise","HasTrackList","_HasTrackList","Identity","DesktopEntry","SupportedUriSchemes","SupportedMimeTypes","Raise","emit","Quit","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/root.js"],"sourcesContent":["const MprisInterface = require('./mpris-interface');\nconst dbus = require('dbus-next');\n\n\nconst {\n property,\n method,\n ACCESS_READ\n} = dbus.interface;\n\nclass RootInterface extends MprisInterface {\n constructor(player, opts={}) {\n super('org.mpris.MediaPlayer2', player);\n\n if (opts.hasOwnProperty('identity')) {\n this._Identity = opts.identity;\n }\n if (opts.hasOwnProperty('supportedUriSchemes')) {\n this._SupportedUriSchemes = opts.supportedUriSchemes;\n }\n if (opts.hasOwnProperty('supportedMimeTypes')) {\n this._SupportedMimeTypes = opts.supportedMimeTypes;\n }\n if (opts.hasOwnProperty('desktopEntry')) {\n this._DesktopEntry = opts.desktopEntry;\n }\n }\n\n _CanQuit = true;\n _Fullscreen = false;\n _CanSetFullscreen = false;\n _CanRaise = true;\n _HasTrackList = false;\n _Identity = '';\n // TODO optional properties\n _DesktopEntry = '';\n _SupportedUriSchemes = [];\n _SupportedMimeTypes = [];\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanQuit() {\n return this._CanQuit;\n }\n\n @property({signature: 'b'})\n get Fullscreen() {\n return this._Fullscreen;\n }\n set Fullscreen(value) {\n this._setPropertyInternal('Fullscreen', value);\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanSetFullscreen() {\n return this._CanSetFullscreen;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanRaise() {\n return this._CanRaise;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get HasTrackList() {\n return this._HasTrackList;\n }\n\n @property({signature: 's', access: ACCESS_READ})\n get Identity() {\n return this._Identity;\n }\n\n @property({signature: 's', access: ACCESS_READ})\n get DesktopEntry() {\n return this._DesktopEntry;\n }\n\n @property({signature: 'as', access: ACCESS_READ})\n get SupportedUriSchemes() {\n return this._SupportedUriSchemes;\n }\n\n @property({signature: 'as', access: ACCESS_READ})\n get SupportedMimeTypes() {\n return this._SupportedMimeTypes;\n }\n\n @method({})\n Raise() {\n this.player.emit('raise');\n }\n\n @method({})\n Quit() {\n this.player.emit('quit');\n }\n}\n\nmodule.exports = RootInterface;\n"],"mappings":"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"}
@@ -16,18 +16,14 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
16
16
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
17
17
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
18
18
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
19
- let MprisInterface = require('./mpris-interface');
20
- let dbus = require('dbus-next');
21
- let Variant = dbus.Variant;
22
- let types = require('./types');
23
- let {
19
+ const MprisInterface = require('./mpris-interface');
20
+ const dbus = require('dbus-next');
21
+ const types = require('./types');
22
+ const {
24
23
  property,
25
24
  method,
26
25
  signal,
27
- DBusError,
28
- ACCESS_READ,
29
- ACCESS_WRITE,
30
- ACCESS_READWRITE
26
+ ACCESS_READ
31
27
  } = dbus.interface;
32
28
  let TracklistInterface = _decorate(null, function (_initialize, _MprisInterface) {
33
29
  class TracklistInterface extends _MprisInterface {
@@ -1 +1 @@
1
- {"version":3,"file":"tracklist.js","names":["MprisInterface","require","dbus","Variant","types","property","method","signal","DBusError","ACCESS_READ","ACCESS_WRITE","ACCESS_READWRITE","interface","TracklistInterface","_decorate","_initialize","_MprisInterface","constructor","player","F","d","kind","key","value","setTracks","tracksPlain","setProperty","decorators","signature","access","Tracks","_Tracks","CanEditTracks","_CanEditTracks","inSignature","outSignature","GetTracksMetadata","trackIds","tracks","filter","t","some","id","map","metadataToDbus","AddTrack","uri","afterTrack","setAsCurrent","emit","RemoveTrack","trackId","GoTo","TrackListReplaced","replacedPlain","TrackAdded","metadata","TrackRemoved","path","TrackMetadataChanged","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/tracklist.js"],"sourcesContent":["let MprisInterface = require('./mpris-interface');\nlet dbus = require('dbus-next');\nlet Variant = dbus.Variant;\nlet types = require('./types');\n\nlet {\n property, method, signal, DBusError,\n ACCESS_READ, ACCESS_WRITE, ACCESS_READWRITE\n} = dbus.interface;\n\nclass TracklistInterface extends MprisInterface {\n constructor(player) {\n super('org.mpris.MediaPlayer2.TrackList', player);\n }\n\n _Tracks = [];\n _CanEditTracks = false;\n\n setTracks(tracksPlain) {\n this.setProperty('Tracks', tracksPlain);\n }\n\n @property({signature: 'ao', access: ACCESS_READ})\n get Tracks() {\n return this._Tracks;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanEditTracks() {\n return this._CanEditTracks;\n }\n\n @method({inSignature: 'ao', outSignature: 'aa{sv}'})\n GetTracksMetadata(trackIds) {\n return this.player.tracks.filter((t) => {\n return trackIds.some((id) => id === t['mpris:trackid']);\n }).map(types.metadataToDbus);\n }\n\n @method({inSignature: 'sob'})\n AddTrack(uri, afterTrack, setAsCurrent) {\n this.player.emit('addTrack', { uri, afterTrack, setAsCurrent });\n }\n\n @method({inSignature: 'o'})\n RemoveTrack(trackId) {\n this.player.emit('removeTrack', trackId);\n }\n\n @method({inSignature: 'o'})\n GoTo(trackId) {\n this.player.emit('goTo', trackId);\n }\n\n @signal({signature: 'aoo'})\n TrackListReplaced(replacedPlain) {\n this.setTracks(replacedPlain);\n // TODO what's the active track?\n return [\n this._Tracks,\n '/org/mpris/MediaPlayer2/TrackList/NoTrack'\n ];\n }\n\n @signal({signature: 'a{sv}'})\n TrackAdded(metadata) {\n return types.metadataToDbus(metadata);\n }\n\n @signal({signature: 'o'})\n TrackRemoved(path) {\n return path;\n }\n\n @signal({signature: 'oa{sv}'})\n TrackMetadataChanged(path, metadata){ \n return [\n path,\n types.metadataToDbus(metadata)\n ];\n }\n}\n\nmodule.exports = TracklistInterface;\n"],"mappings":"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"}
1
+ {"version":3,"file":"tracklist.js","names":["MprisInterface","require","dbus","types","property","method","signal","ACCESS_READ","interface","TracklistInterface","_decorate","_initialize","_MprisInterface","constructor","player","F","d","kind","key","value","setTracks","tracksPlain","setProperty","decorators","signature","access","Tracks","_Tracks","CanEditTracks","_CanEditTracks","inSignature","outSignature","GetTracksMetadata","trackIds","tracks","filter","t","some","id","map","metadataToDbus","AddTrack","uri","afterTrack","setAsCurrent","emit","RemoveTrack","trackId","GoTo","TrackListReplaced","replacedPlain","TrackAdded","metadata","TrackRemoved","path","TrackMetadataChanged","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/tracklist.js"],"sourcesContent":["const MprisInterface = require('./mpris-interface');\nconst dbus = require('dbus-next');\nconst types = require('./types');\n\nconst {\n property,\n method,\n signal,\n ACCESS_READ\n} = dbus.interface;\n\nclass TracklistInterface extends MprisInterface {\n constructor(player) {\n super('org.mpris.MediaPlayer2.TrackList', player);\n }\n\n _Tracks = [];\n _CanEditTracks = false;\n\n setTracks(tracksPlain) {\n this.setProperty('Tracks', tracksPlain);\n }\n\n @property({signature: 'ao', access: ACCESS_READ})\n get Tracks() {\n return this._Tracks;\n }\n\n @property({signature: 'b', access: ACCESS_READ})\n get CanEditTracks() {\n return this._CanEditTracks;\n }\n\n @method({inSignature: 'ao', outSignature: 'aa{sv}'})\n GetTracksMetadata(trackIds) {\n return this.player.tracks.filter((t) => {\n return trackIds.some((id) => id === t['mpris:trackid']);\n }).map(types.metadataToDbus);\n }\n\n @method({inSignature: 'sob'})\n AddTrack(uri, afterTrack, setAsCurrent) {\n this.player.emit('addTrack', { uri, afterTrack, setAsCurrent });\n }\n\n @method({inSignature: 'o'})\n RemoveTrack(trackId) {\n this.player.emit('removeTrack', trackId);\n }\n\n @method({inSignature: 'o'})\n GoTo(trackId) {\n this.player.emit('goTo', trackId);\n }\n\n @signal({signature: 'aoo'})\n TrackListReplaced(replacedPlain) {\n this.setTracks(replacedPlain);\n // TODO what's the active track?\n return [\n this._Tracks,\n '/org/mpris/MediaPlayer2/TrackList/NoTrack'\n ];\n }\n\n @signal({signature: 'a{sv}'})\n TrackAdded(metadata) {\n return types.metadataToDbus(metadata);\n }\n\n @signal({signature: 'o'})\n TrackRemoved(path) {\n return path;\n }\n\n @signal({signature: 'oa{sv}'})\n TrackMetadataChanged(path, metadata){ \n return [\n path,\n types.metadataToDbus(metadata)\n ];\n }\n}\n\nmodule.exports = TracklistInterface;\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- let Variant = require('dbus-next').Variant;
4
- let logging = require('../logging');
3
+ const Variant = require('dbus-next').Variant;
4
+ const logging = require('../logging');
5
5
  function guessMetadataSignature(key, value) {
6
6
  if (key === 'mpris:trackid') {
7
7
  return 'o';
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["Variant","require","logging","guessMetadataSignature","key","value","Array","isArray","every","v","warn","metadataToPlain","metadataVariant","metadataPlain","k","Object","keys","undefined","constructor","metadataToDbus","signature","emptyPlaylist","playlistToDbus","playlist","Id","Name","Icon","playlistToPlain","wire","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/types.js"],"sourcesContent":["let Variant = require('dbus-next').Variant;\nlet logging = require('../logging');\n\nfunction guessMetadataSignature(key, value) {\n if (key === 'mpris:trackid') {\n return 'o';\n } else if (key === 'mpris:length') {\n return 'x';\n } else if (typeof value === 'string') {\n return 's';\n } else if (typeof value === 'boolean') {\n return 'b';\n } else if (typeof value === 'number') {\n return 'd';\n } else if (Array.isArray(value) && value.every((v) => typeof v === 'string')) {\n return 'as';\n } else {\n // type not supported yet\n logging.warn(`could not determine metadata type for ${key}: ${value}`);\n return null;\n }\n}\n\nfunction metadataToPlain(metadataVariant) {\n let metadataPlain = {};\n for (let k of Object.keys(metadataVariant)) {\n let value = metadataVariant[k];\n if (value === undefined || value === null) {\n logging.warn(`ignoring a null metadata value for key ${k}`);\n continue;\n }\n if (value.constructor === Variant) {\n metadataPlain[k] = value.value;\n } else {\n metadataPlain[k] = value;\n }\n }\n return metadataPlain;\n}\n\nfunction metadataToDbus(metadataPlain) {\n let metadataVariant = {};\n for (let k of Object.keys(metadataPlain)) {\n let value = metadataPlain[k];\n let signature = guessMetadataSignature(k, value);\n if (signature) {\n metadataVariant[k] = new Variant(signature, value);\n }\n }\n return metadataVariant;\n}\n\nlet emptyPlaylist = ['/', '', ''];\n\nfunction playlistToDbus(playlist) {\n if (!playlist) {\n return emptyPlaylist;\n }\n\n let { Id, Name, Icon } = playlist;\n return [ Id, Name, Icon ];\n}\n\nfunction playlistToPlain(wire) {\n let [ Id, Name, Icon ] = wire;\n return { Id, Name, Icon };\n}\n\nmodule.exports = {\n metadataToPlain,\n metadataToDbus,\n playlistToPlain,\n playlistToDbus,\n emptyPlaylist\n};\n"],"mappings":";;AAAA,IAAIA,OAAO,GAAGC,OAAO,CAAC,WAAW,CAAC,CAACD,OAAO;AAC1C,IAAIE,OAAO,GAAGD,OAAO,CAAC,YAAY,CAAC;AAEnC,SAASE,sBAAsBA,CAACC,GAAG,EAAEC,KAAK,EAAE;EAC1C,IAAID,GAAG,KAAK,eAAe,EAAE;IAC3B,OAAO,GAAG;EACZ,CAAC,MAAM,IAAIA,GAAG,KAAK,cAAc,EAAE;IACjC,OAAO,GAAG;EACZ,CAAC,MAAM,IAAI,OAAOC,KAAK,KAAK,QAAQ,EAAE;IACpC,OAAO,GAAG;EACZ,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,SAAS,EAAE;IACrC,OAAO,GAAG;EACZ,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IACpC,OAAO,GAAG;EACZ,CAAC,MAAM,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,IAAIA,KAAK,CAACG,KAAK,CAAEC,CAAC,IAAK,OAAOA,CAAC,KAAK,QAAQ,CAAC,EAAE;IAC5E,OAAO,IAAI;EACb,CAAC,MAAM;IACL;IACAP,OAAO,CAACQ,IAAI,CAAE,yCAAwCN,GAAI,KAAIC,KAAM,EAAC,CAAC;IACtE,OAAO,IAAI;EACb;AACF;AAEA,SAASM,eAAeA,CAACC,eAAe,EAAE;EACxC,IAAIC,aAAa,GAAG,CAAC,CAAC;EACtB,KAAK,IAAIC,CAAC,IAAIC,MAAM,CAACC,IAAI,CAACJ,eAAe,CAAC,EAAE;IAC1C,IAAIP,KAAK,GAAGO,eAAe,CAACE,CAAC,CAAC;IAC9B,IAAIT,KAAK,KAAKY,SAAS,IAAIZ,KAAK,KAAK,IAAI,EAAE;MACzCH,OAAO,CAACQ,IAAI,CAAE,0CAAyCI,CAAE,EAAC,CAAC;MAC3D;IACF;IACA,IAAIT,KAAK,CAACa,WAAW,KAAKlB,OAAO,EAAE;MACjCa,aAAa,CAACC,CAAC,CAAC,GAAGT,KAAK,CAACA,KAAK;IAChC,CAAC,MAAM;MACLQ,aAAa,CAACC,CAAC,CAAC,GAAGT,KAAK;IAC1B;EACF;EACA,OAAOQ,aAAa;AACtB;AAEA,SAASM,cAAcA,CAACN,aAAa,EAAE;EACrC,IAAID,eAAe,GAAG,CAAC,CAAC;EACxB,KAAK,IAAIE,CAAC,IAAIC,MAAM,CAACC,IAAI,CAACH,aAAa,CAAC,EAAE;IACxC,IAAIR,KAAK,GAAGQ,aAAa,CAACC,CAAC,CAAC;IAC5B,IAAIM,SAAS,GAAGjB,sBAAsB,CAACW,CAAC,EAAET,KAAK,CAAC;IAChD,IAAIe,SAAS,EAAE;MACbR,eAAe,CAACE,CAAC,CAAC,GAAG,IAAId,OAAO,CAACoB,SAAS,EAAEf,KAAK,CAAC;IACpD;EACF;EACA,OAAOO,eAAe;AACxB;AAEA,IAAIS,aAAa,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAEjC,SAASC,cAAcA,CAACC,QAAQ,EAAE;EAChC,IAAI,CAACA,QAAQ,EAAE;IACb,OAAOF,aAAa;EACtB;EAEA,IAAI;IAAEG,EAAE;IAAEC,IAAI;IAAEC;EAAK,CAAC,GAAGH,QAAQ;EACjC,OAAO,CAAEC,EAAE,EAAEC,IAAI,EAAEC,IAAI,CAAE;AAC3B;AAEA,SAASC,eAAeA,CAACC,IAAI,EAAE;EAC7B,IAAI,CAAEJ,EAAE,EAAEC,IAAI,EAAEC,IAAI,CAAE,GAAGE,IAAI;EAC7B,OAAO;IAAEJ,EAAE;IAAEC,IAAI;IAAEC;EAAK,CAAC;AAC3B;AAEAG,MAAM,CAACC,OAAO,GAAG;EACfnB,eAAe;EACfQ,cAAc;EACdQ,eAAe;EACfL,cAAc;EACdD;AACF,CAAC"}
1
+ {"version":3,"file":"types.js","names":["Variant","require","logging","guessMetadataSignature","key","value","Array","isArray","every","v","warn","metadataToPlain","metadataVariant","metadataPlain","k","Object","keys","undefined","constructor","metadataToDbus","signature","emptyPlaylist","playlistToDbus","playlist","Id","Name","Icon","playlistToPlain","wire","module","exports"],"sourceRoot":"../../src/","sources":["interfaces/types.js"],"sourcesContent":["const Variant = require('dbus-next').Variant;\nconst logging = require('../logging');\n\nfunction guessMetadataSignature(key, value) {\n if (key === 'mpris:trackid') {\n return 'o';\n } else if (key === 'mpris:length') {\n return 'x';\n } else if (typeof value === 'string') {\n return 's';\n } else if (typeof value === 'boolean') {\n return 'b';\n } else if (typeof value === 'number') {\n return 'd';\n } else if (Array.isArray(value) && value.every((v) => typeof v === 'string')) {\n return 'as';\n } else {\n // type not supported yet\n logging.warn(`could not determine metadata type for ${key}: ${value}`);\n return null;\n }\n}\n\nfunction metadataToPlain(metadataVariant) {\n let metadataPlain = {};\n for (let k of Object.keys(metadataVariant)) {\n let value = metadataVariant[k];\n if (value === undefined || value === null) {\n logging.warn(`ignoring a null metadata value for key ${k}`);\n continue;\n }\n if (value.constructor === Variant) {\n metadataPlain[k] = value.value;\n } else {\n metadataPlain[k] = value;\n }\n }\n return metadataPlain;\n}\n\nfunction metadataToDbus(metadataPlain) {\n let metadataVariant = {};\n for (let k of Object.keys(metadataPlain)) {\n let value = metadataPlain[k];\n let signature = guessMetadataSignature(k, value);\n if (signature) {\n metadataVariant[k] = new Variant(signature, value);\n }\n }\n return metadataVariant;\n}\n\nlet emptyPlaylist = ['/', '', ''];\n\nfunction playlistToDbus(playlist) {\n if (!playlist) {\n return emptyPlaylist;\n }\n\n let { Id, Name, Icon } = playlist;\n return [ Id, Name, Icon ];\n}\n\nfunction playlistToPlain(wire) {\n let [ Id, Name, Icon ] = wire;\n return { Id, Name, Icon };\n}\n\nmodule.exports = {\n metadataToPlain,\n metadataToDbus,\n playlistToPlain,\n playlistToDbus,\n emptyPlaylist\n};\n"],"mappings":";;AAAA,MAAMA,OAAO,GAAGC,OAAO,CAAC,WAAW,CAAC,CAACD,OAAO;AAC5C,MAAME,OAAO,GAAGD,OAAO,CAAC,YAAY,CAAC;AAErC,SAASE,sBAAsBA,CAACC,GAAG,EAAEC,KAAK,EAAE;EAC1C,IAAID,GAAG,KAAK,eAAe,EAAE;IAC3B,OAAO,GAAG;EACZ,CAAC,MAAM,IAAIA,GAAG,KAAK,cAAc,EAAE;IACjC,OAAO,GAAG;EACZ,CAAC,MAAM,IAAI,OAAOC,KAAK,KAAK,QAAQ,EAAE;IACpC,OAAO,GAAG;EACZ,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,SAAS,EAAE;IACrC,OAAO,GAAG;EACZ,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IACpC,OAAO,GAAG;EACZ,CAAC,MAAM,IAAIC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,IAAIA,KAAK,CAACG,KAAK,CAAEC,CAAC,IAAK,OAAOA,CAAC,KAAK,QAAQ,CAAC,EAAE;IAC5E,OAAO,IAAI;EACb,CAAC,MAAM;IACL;IACAP,OAAO,CAACQ,IAAI,CAAE,yCAAwCN,GAAI,KAAIC,KAAM,EAAC,CAAC;IACtE,OAAO,IAAI;EACb;AACF;AAEA,SAASM,eAAeA,CAACC,eAAe,EAAE;EACxC,IAAIC,aAAa,GAAG,CAAC,CAAC;EACtB,KAAK,IAAIC,CAAC,IAAIC,MAAM,CAACC,IAAI,CAACJ,eAAe,CAAC,EAAE;IAC1C,IAAIP,KAAK,GAAGO,eAAe,CAACE,CAAC,CAAC;IAC9B,IAAIT,KAAK,KAAKY,SAAS,IAAIZ,KAAK,KAAK,IAAI,EAAE;MACzCH,OAAO,CAACQ,IAAI,CAAE,0CAAyCI,CAAE,EAAC,CAAC;MAC3D;IACF;IACA,IAAIT,KAAK,CAACa,WAAW,KAAKlB,OAAO,EAAE;MACjCa,aAAa,CAACC,CAAC,CAAC,GAAGT,KAAK,CAACA,KAAK;IAChC,CAAC,MAAM;MACLQ,aAAa,CAACC,CAAC,CAAC,GAAGT,KAAK;IAC1B;EACF;EACA,OAAOQ,aAAa;AACtB;AAEA,SAASM,cAAcA,CAACN,aAAa,EAAE;EACrC,IAAID,eAAe,GAAG,CAAC,CAAC;EACxB,KAAK,IAAIE,CAAC,IAAIC,MAAM,CAACC,IAAI,CAACH,aAAa,CAAC,EAAE;IACxC,IAAIR,KAAK,GAAGQ,aAAa,CAACC,CAAC,CAAC;IAC5B,IAAIM,SAAS,GAAGjB,sBAAsB,CAACW,CAAC,EAAET,KAAK,CAAC;IAChD,IAAIe,SAAS,EAAE;MACbR,eAAe,CAACE,CAAC,CAAC,GAAG,IAAId,OAAO,CAACoB,SAAS,EAAEf,KAAK,CAAC;IACpD;EACF;EACA,OAAOO,eAAe;AACxB;AAEA,IAAIS,aAAa,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AAEjC,SAASC,cAAcA,CAACC,QAAQ,EAAE;EAChC,IAAI,CAACA,QAAQ,EAAE;IACb,OAAOF,aAAa;EACtB;EAEA,IAAI;IAAEG,EAAE;IAAEC,IAAI;IAAEC;EAAK,CAAC,GAAGH,QAAQ;EACjC,OAAO,CAAEC,EAAE,EAAEC,IAAI,EAAEC,IAAI,CAAE;AAC3B;AAEA,SAASC,eAAeA,CAACC,IAAI,EAAE;EAC7B,IAAI,CAAEJ,EAAE,EAAEC,IAAI,EAAEC,IAAI,CAAE,GAAGE,IAAI;EAC7B,OAAO;IAAEJ,EAAE;IAAEC,IAAI;IAAEC;EAAK,CAAC;AAC3B;AAEAG,MAAM,CAACC,OAAO,GAAG;EACfnB,eAAe;EACfQ,cAAc;EACdQ,eAAe;EACfL,cAAc;EACdD;AACF,CAAC"}
package/dist/logging.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- let loggingEnabled = process.env.MPRIS_SERVICE_DEBUG !== undefined && process.env.MPRIS_SERVICE_DEBUG !== '0';
3
+ const loggingEnabled = process.env.MPRIS_SERVICE_DEBUG !== undefined && process.env.MPRIS_SERVICE_DEBUG !== '0';
4
4
  module.exports.debug = function (message) {
5
5
  if (loggingEnabled) {
6
6
  console.log(message);
@@ -1 +1 @@
1
- {"version":3,"file":"logging.js","names":["loggingEnabled","process","env","MPRIS_SERVICE_DEBUG","undefined","module","exports","debug","message","console","log","warn"],"sourceRoot":"../src/","sources":["logging.js"],"sourcesContent":["let loggingEnabled = (process.env.MPRIS_SERVICE_DEBUG !== undefined && process.env.MPRIS_SERVICE_DEBUG !== '0');\n\nmodule.exports.debug = function(message) {\n if (loggingEnabled) {\n console.log(message);\n }\n};\n\nmodule.exports.warn = function(message) {\n if (loggingEnabled) {\n console.warn(message);\n }\n};\n"],"mappings":";;AAAA,IAAIA,cAAc,GAAIC,OAAO,CAACC,GAAG,CAACC,mBAAmB,KAAKC,SAAS,IAAIH,OAAO,CAACC,GAAG,CAACC,mBAAmB,KAAK,GAAI;AAE/GE,MAAM,CAACC,OAAO,CAACC,KAAK,GAAG,UAASC,OAAO,EAAE;EACvC,IAAIR,cAAc,EAAE;IAClBS,OAAO,CAACC,GAAG,CAACF,OAAO,CAAC;EACtB;AACF,CAAC;AAEDH,MAAM,CAACC,OAAO,CAACK,IAAI,GAAG,UAASH,OAAO,EAAE;EACtC,IAAIR,cAAc,EAAE;IAClBS,OAAO,CAACE,IAAI,CAACH,OAAO,CAAC;EACvB;AACF,CAAC"}
1
+ {"version":3,"file":"logging.js","names":["loggingEnabled","process","env","MPRIS_SERVICE_DEBUG","undefined","module","exports","debug","message","console","log","warn"],"sourceRoot":"../src/","sources":["logging.js"],"sourcesContent":["const loggingEnabled = (process.env.MPRIS_SERVICE_DEBUG !== undefined && process.env.MPRIS_SERVICE_DEBUG !== '0');\n\nmodule.exports.debug = function(message) {\n if (loggingEnabled) {\n console.log(message);\n }\n};\n\nmodule.exports.warn = function(message) {\n if (loggingEnabled) {\n console.warn(message);\n }\n};\n"],"mappings":";;AAAA,MAAMA,cAAc,GAAIC,OAAO,CAACC,GAAG,CAACC,mBAAmB,KAAKC,SAAS,IAAIH,OAAO,CAACC,GAAG,CAACC,mBAAmB,KAAK,GAAI;AAEjHE,MAAM,CAACC,OAAO,CAACC,KAAK,GAAG,UAASC,OAAO,EAAE;EACvC,IAAIR,cAAc,EAAE;IAClBS,OAAO,CAACC,GAAG,CAACF,OAAO,CAAC;EACtB;AACF,CAAC;AAEDH,MAAM,CAACC,OAAO,CAACK,IAAI,GAAG,UAASH,OAAO,EAAE;EACtC,IAAIR,cAAc,EAAE;IAClBS,OAAO,CAACE,IAAI,CAACH,OAAO,CAAC;EACvB;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jellybrick/mpris-service",
3
- "version": "2.1.3",
3
+ "version": "2.1.4",
4
4
  "description": "Node.js implementation for the MPRIS D-Bus Interface Specification to create a mediaplayer service",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/src/index.js CHANGED
@@ -154,16 +154,16 @@ class Player extends EventEmitter {
154
154
  * @property {String} loopStatus - The current loop/repeat status. May be "None", "Track", or "Playlist".
155
155
  * @property {Boolean} shuffle - Whether the player is shuffling.
156
156
  * @property {Object} metadata - The metadata of the current element. If there is a current track, this must have a "mpris:trackid" entry (of D-Bus type "o") at the very least, which contains a D-Bus path that uniquely identifies this track.
157
- * @property {Double} volume - The volume level.
157
+ * @property {Number} volume - The volume level. (Double)
158
158
  * @property {Boolean} canControl - Whether the media player may be controlled over this interface.
159
159
  * @property {Boolean} canPause - Whether playback can be paused using Pause or PlayPause.
160
160
  * @property {Boolean} canPlay - Whether playback can be started using Play or PlayPause.
161
161
  * @property {Boolean} canSeek - Whether the client can control the playback position using Seek and SetPosition.
162
162
  * @property {Boolean} canGoNext - Whether the client can call the Next method on this interface and expect the current track to change.
163
163
  * @property {Boolean} canGoPrevious - Whether the client can call the Previous method on this interface and expect the current track to change.
164
- * @property {Double} rate - The current playback rate.
165
- * @property {Double} minimumRate - The minimum value which the Rate property can take.
166
- * @property {Double} maximumRate - The maximum value which the Rate property can take.
164
+ * @property {Number} rate - The current playback rate. (Double)
165
+ * @property {Number} minimumRate - The minimum value which the Rate property can take. (Double)
166
+ * @property {Number} maximumRate - The maximum value which the Rate property can take. (Double)
167
167
  * @property {Array} playlists - The current playlists set by {@link Player#setPlaylists}. (Not a DBus property).
168
168
  * @property {String} activePlaylist - The id of the currently-active playlist.
169
169
  */
@@ -306,7 +306,7 @@ class Player extends EventEmitter {
306
306
  *
307
307
  * @name Player#getPosition
308
308
  * @function
309
- * @returns {Integer} - The current position of the player in microseconds.
309
+ * @returns {Number} - The current position of the player in microseconds. (Integer)
310
310
  */
311
311
  getPosition() {
312
312
  return 0;
@@ -317,7 +317,7 @@ class Player extends EventEmitter {
317
317
  *
318
318
  * @name Player#seeked
319
319
  * @function
320
- * @param {Integer} position - The position in microseconds.
320
+ * @param {Number} position - The position in microseconds. (Integer)
321
321
  */
322
322
  seeked(position) {
323
323
  let seekTo = Math.floor(position || 0);
@@ -1,14 +1,10 @@
1
1
  const dbus = require('dbus-next');
2
- const Variant = dbus.Variant;
3
2
  const types = require('./types');
4
3
  const deepEqual = require('deep-equal');
5
4
  const constants = require('../constants');
6
5
  const logging = require('../logging');
7
6
 
8
- let {
9
- Interface, property, method, signal, DBusError,
10
- ACCESS_READ, ACCESS_WRITE, ACCESS_READWRITE
11
- } = dbus.interface;
7
+ const { Interface } = dbus.interface;
12
8
 
13
9
  class MprisInterface extends Interface {
14
10
  constructor(name, player) {
@@ -18,7 +14,7 @@ class MprisInterface extends Interface {
18
14
 
19
15
  _setPropertyInternal(property, valueDbus) {
20
16
  // nothing is currently settable internally that needs conversion to plain
21
- this.player.emit(property[0].toLowerCase() + property.substr(1), valueDbus);
17
+ this.player.emit(property[0].toLowerCase() + property.substring(1), valueDbus);
22
18
  }
23
19
 
24
20
  setProperty(property, valuePlain) {
@@ -41,9 +37,9 @@ class MprisInterface extends Interface {
41
37
  if (!deepEqual(this[`_${property}`], valueDbus)) {
42
38
  this[`_${property}`] = valueDbus;
43
39
 
44
- if (property == 'LoopStatus' && !constants.isLoopStatusValid(valuePlain)) {
40
+ if (property === 'LoopStatus' && !constants.isLoopStatusValid(valuePlain)) {
45
41
  logging.warn(`setting player loop status to an invalid value: ${valuePlain}`);
46
- } else if (property == 'PlaybackStatus' && !constants.isPlaybackStatusValid(valuePlain)) {
42
+ } else if (property === 'PlaybackStatus' && !constants.isPlaybackStatusValid(valuePlain)) {
47
43
  logging.warn(`setting player playback status to an invalid value: ${valuePlain}`);
48
44
  } else {
49
45
  let changedProperties = {};
@@ -1,12 +1,15 @@
1
1
  const dbus = require('dbus-next');
2
2
  const MprisInterface = require('./mpris-interface');
3
- const Variant = dbus.Variant;
3
+
4
4
  const constants = require('../constants');
5
5
 
6
- let {
7
- property, method, signal, DBusError,
8
- ACCESS_READ, ACCESS_WRITE, ACCESS_READWRITE
6
+ const {
7
+ property,
8
+ method,
9
+ signal,
10
+ ACCESS_READ
9
11
  } = dbus.interface;
12
+ const DBusError = dbus.DBusError;
10
13
 
11
14
  class PlayerInterface extends MprisInterface {
12
15
  constructor(player) {
@@ -1,12 +1,14 @@
1
1
  // TODO proper import
2
- let MprisInterface = require('./mpris-interface');
3
- let dbus = require('dbus-next');
4
- let Variant = dbus.Variant;
5
- let types = require('./types');
6
-
7
- let {
8
- property, method, signal, DBusError,
9
- ACCESS_READ, ACCESS_WRITE, ACCESS_READWRITE
2
+ const MprisInterface = require('./mpris-interface');
3
+ const dbus = require('dbus-next');
4
+
5
+ const types = require('./types');
6
+
7
+ const {
8
+ property,
9
+ method,
10
+ signal,
11
+ ACCESS_READ
10
12
  } = dbus.interface;
11
13
 
12
14
  class PlaylistsInterface extends MprisInterface {
@@ -1,10 +1,11 @@
1
- let MprisInterface = require('./mpris-interface');
2
- let dbus = require('dbus-next');
3
- let Variant = dbus.Variant;
1
+ const MprisInterface = require('./mpris-interface');
2
+ const dbus = require('dbus-next');
4
3
 
5
- let {
6
- property, method, signal, DBusError,
7
- ACCESS_READ, ACCESS_WRITE, ACCESS_READWRITE
4
+
5
+ const {
6
+ property,
7
+ method,
8
+ ACCESS_READ
8
9
  } = dbus.interface;
9
10
 
10
11
  class RootInterface extends MprisInterface {
@@ -1,11 +1,12 @@
1
- let MprisInterface = require('./mpris-interface');
2
- let dbus = require('dbus-next');
3
- let Variant = dbus.Variant;
4
- let types = require('./types');
1
+ const MprisInterface = require('./mpris-interface');
2
+ const dbus = require('dbus-next');
3
+ const types = require('./types');
5
4
 
6
- let {
7
- property, method, signal, DBusError,
8
- ACCESS_READ, ACCESS_WRITE, ACCESS_READWRITE
5
+ const {
6
+ property,
7
+ method,
8
+ signal,
9
+ ACCESS_READ
9
10
  } = dbus.interface;
10
11
 
11
12
  class TracklistInterface extends MprisInterface {
@@ -1,5 +1,5 @@
1
- let Variant = require('dbus-next').Variant;
2
- let logging = require('../logging');
1
+ const Variant = require('dbus-next').Variant;
2
+ const logging = require('../logging');
3
3
 
4
4
  function guessMetadataSignature(key, value) {
5
5
  if (key === 'mpris:trackid') {
package/src/logging.js CHANGED
@@ -1,4 +1,4 @@
1
- let loggingEnabled = (process.env.MPRIS_SERVICE_DEBUG !== undefined && process.env.MPRIS_SERVICE_DEBUG !== '0');
1
+ const loggingEnabled = (process.env.MPRIS_SERVICE_DEBUG !== undefined && process.env.MPRIS_SERVICE_DEBUG !== '0');
2
2
 
3
3
  module.exports.debug = function(message) {
4
4
  if (loggingEnabled) {