@jellybrick/mpris-service 2.1.3

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.
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+
3
+ function _decorate(decorators, factory, superClass, mixins) { var api = _getDecoratorsApi(); if (mixins) { for (var i = 0; i < mixins.length; i++) { api = mixins[i](api); } } var r = factory(function initialize(O) { api.initializeInstanceElements(O, decorated.elements); }, superClass); var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators); api.initializeClassElements(r.F, decorated.elements); return api.runClassFinishers(r.F, decorated.finishers); }
4
+ function _getDecoratorsApi() { _getDecoratorsApi = function () { return api; }; var api = { elementsDefinitionOrder: [["method"], ["field"]], initializeInstanceElements: function (O, elements) { ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { if (element.kind === kind && element.placement === "own") { this.defineClassElement(O, element); } }, this); }, this); }, initializeClassElements: function (F, elements) { var proto = F.prototype; ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { var placement = element.placement; if (element.kind === kind && (placement === "static" || placement === "prototype")) { var receiver = placement === "static" ? F : proto; this.defineClassElement(receiver, element); } }, this); }, this); }, defineClassElement: function (receiver, element) { var descriptor = element.descriptor; if (element.kind === "field") { var initializer = element.initializer; descriptor = { enumerable: descriptor.enumerable, writable: descriptor.writable, configurable: descriptor.configurable, value: initializer === void 0 ? void 0 : initializer.call(receiver) }; } Object.defineProperty(receiver, element.key, descriptor); }, decorateClass: function (elements, decorators) { var newElements = []; var finishers = []; var placements = { static: [], prototype: [], own: [] }; elements.forEach(function (element) { this.addElementPlacement(element, placements); }, this); elements.forEach(function (element) { if (!_hasDecorators(element)) return newElements.push(element); var elementFinishersExtras = this.decorateElement(element, placements); newElements.push(elementFinishersExtras.element); newElements.push.apply(newElements, elementFinishersExtras.extras); finishers.push.apply(finishers, elementFinishersExtras.finishers); }, this); if (!decorators) { return { elements: newElements, finishers: finishers }; } var result = this.decorateConstructor(newElements, decorators); finishers.push.apply(finishers, result.finishers); result.finishers = finishers; return result; }, addElementPlacement: function (element, placements, silent) { var keys = placements[element.placement]; if (!silent && keys.indexOf(element.key) !== -1) { throw new TypeError("Duplicated element (" + element.key + ")"); } keys.push(element.key); }, decorateElement: function (element, placements) { var extras = []; var finishers = []; for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { var keys = placements[element.placement]; keys.splice(keys.indexOf(element.key), 1); var elementObject = this.fromElementDescriptor(element); var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); element = elementFinisherExtras.element; this.addElementPlacement(element, placements); if (elementFinisherExtras.finisher) { finishers.push(elementFinisherExtras.finisher); } var newExtras = elementFinisherExtras.extras; if (newExtras) { for (var j = 0; j < newExtras.length; j++) { this.addElementPlacement(newExtras[j], placements); } extras.push.apply(extras, newExtras); } } return { element: element, finishers: finishers, extras: extras }; }, decorateConstructor: function (elements, decorators) { var finishers = []; for (var i = decorators.length - 1; i >= 0; i--) { var obj = this.fromClassDescriptor(elements); var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); if (elementsAndFinisher.finisher !== undefined) { finishers.push(elementsAndFinisher.finisher); } if (elementsAndFinisher.elements !== undefined) { elements = elementsAndFinisher.elements; for (var j = 0; j < elements.length - 1; j++) { for (var k = j + 1; k < elements.length; k++) { if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { throw new TypeError("Duplicated element (" + elements[j].key + ")"); } } } } } return { elements: elements, finishers: finishers }; }, fromElementDescriptor: function (element) { var obj = { kind: element.kind, key: element.key, placement: element.placement, descriptor: element.descriptor }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); if (element.kind === "field") obj.initializer = element.initializer; return obj; }, toElementDescriptors: function (elementObjects) { if (elementObjects === undefined) return; return _toArray(elementObjects).map(function (elementObject) { var element = this.toElementDescriptor(elementObject); this.disallowProperty(elementObject, "finisher", "An element descriptor"); this.disallowProperty(elementObject, "extras", "An element descriptor"); return element; }, this); }, toElementDescriptor: function (elementObject) { var kind = String(elementObject.kind); if (kind !== "method" && kind !== "field") { throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); } var key = _toPropertyKey(elementObject.key); var placement = String(elementObject.placement); if (placement !== "static" && placement !== "prototype" && placement !== "own") { throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); } var descriptor = elementObject.descriptor; this.disallowProperty(elementObject, "elements", "An element descriptor"); var element = { kind: kind, key: key, placement: placement, descriptor: Object.assign({}, descriptor) }; if (kind !== "field") { this.disallowProperty(elementObject, "initializer", "A method descriptor"); } else { this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); element.initializer = elementObject.initializer; } return element; }, toElementFinisherExtras: function (elementObject) { var element = this.toElementDescriptor(elementObject); var finisher = _optionalCallableProperty(elementObject, "finisher"); var extras = this.toElementDescriptors(elementObject.extras); return { element: element, finisher: finisher, extras: extras }; }, fromClassDescriptor: function (elements) { var obj = { kind: "class", elements: elements.map(this.fromElementDescriptor, this) }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); return obj; }, toClassDescriptor: function (obj) { var kind = String(obj.kind); if (kind !== "class") { throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); } this.disallowProperty(obj, "key", "A class descriptor"); this.disallowProperty(obj, "placement", "A class descriptor"); this.disallowProperty(obj, "descriptor", "A class descriptor"); this.disallowProperty(obj, "initializer", "A class descriptor"); this.disallowProperty(obj, "extras", "A class descriptor"); var finisher = _optionalCallableProperty(obj, "finisher"); var elements = this.toElementDescriptors(obj.elements); return { elements: elements, finisher: finisher }; }, runClassFinishers: function (constructor, finishers) { for (var i = 0; i < finishers.length; i++) { var newConstructor = (0, finishers[i])(constructor); if (newConstructor !== undefined) { if (typeof newConstructor !== "function") { throw new TypeError("Finishers must return a constructor."); } constructor = newConstructor; } } return constructor; }, disallowProperty: function (obj, name, objectType) { if (obj[name] !== undefined) { throw new TypeError(objectType + " can't have a ." + name + " property."); } } }; return api; }
5
+ function _createElementDescriptor(def) { var key = _toPropertyKey(def.key); var descriptor; if (def.kind === "method") { descriptor = { value: def.value, writable: true, configurable: true, enumerable: false }; } else if (def.kind === "get") { descriptor = { get: def.value, configurable: true, enumerable: false }; } else if (def.kind === "set") { descriptor = { set: def.value, configurable: true, enumerable: false }; } else if (def.kind === "field") { descriptor = { configurable: true, writable: true, enumerable: true }; } var element = { kind: def.kind === "field" ? "field" : "method", key: key, placement: def.static ? "static" : def.kind === "field" ? "own" : "prototype", descriptor: descriptor }; if (def.decorators) element.decorators = def.decorators; if (def.kind === "field") element.initializer = def.value; return element; }
6
+ function _coalesceGetterSetter(element, other) { if (element.descriptor.get !== undefined) { other.descriptor.get = element.descriptor.get; } else { other.descriptor.set = element.descriptor.set; } }
7
+ function _coalesceClassElements(elements) { var newElements = []; var isSameElement = function (other) { return other.kind === "method" && other.key === element.key && other.placement === element.placement; }; for (var i = 0; i < elements.length; i++) { var element = elements[i]; var other; if (element.kind === "method" && (other = newElements.find(isSameElement))) { if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { if (_hasDecorators(element) || _hasDecorators(other)) { throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); } other.descriptor = element.descriptor; } else { if (_hasDecorators(element)) { if (_hasDecorators(other)) { throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); } other.decorators = element.decorators; } _coalesceGetterSetter(element, other); } } else { newElements.push(element); } } return newElements; }
8
+ function _hasDecorators(element) { return element.decorators && element.decorators.length; }
9
+ function _isDataDescriptor(desc) { return desc !== undefined && !(desc.value === undefined && desc.writable === undefined); }
10
+ function _optionalCallableProperty(obj, name) { var value = obj[name]; if (value !== undefined && typeof value !== "function") { throw new TypeError("Expected '" + name + "' to be a function"); } return value; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
12
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
13
+ function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
14
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
15
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
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
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
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 {
23
+ property,
24
+ method,
25
+ signal,
26
+ DBusError,
27
+ ACCESS_READ,
28
+ ACCESS_WRITE,
29
+ ACCESS_READWRITE
30
+ } = dbus.interface;
31
+ let RootInterface = _decorate(null, function (_initialize, _MprisInterface) {
32
+ class RootInterface extends _MprisInterface {
33
+ constructor(player, opts = {}) {
34
+ super('org.mpris.MediaPlayer2', player);
35
+ _initialize(this);
36
+ if (opts.hasOwnProperty('identity')) {
37
+ this._Identity = opts.identity;
38
+ }
39
+ if (opts.hasOwnProperty('supportedUriSchemes')) {
40
+ this._SupportedUriSchemes = opts.supportedUriSchemes;
41
+ }
42
+ if (opts.hasOwnProperty('supportedMimeTypes')) {
43
+ this._SupportedMimeTypes = opts.supportedMimeTypes;
44
+ }
45
+ if (opts.hasOwnProperty('desktopEntry')) {
46
+ this._DesktopEntry = opts.desktopEntry;
47
+ }
48
+ }
49
+
50
+ // TODO optional properties
51
+ }
52
+ return {
53
+ F: RootInterface,
54
+ d: [{
55
+ kind: "field",
56
+ key: "_CanQuit",
57
+ value() {
58
+ return true;
59
+ }
60
+ }, {
61
+ kind: "field",
62
+ key: "_Fullscreen",
63
+ value() {
64
+ return false;
65
+ }
66
+ }, {
67
+ kind: "field",
68
+ key: "_CanSetFullscreen",
69
+ value() {
70
+ return false;
71
+ }
72
+ }, {
73
+ kind: "field",
74
+ key: "_CanRaise",
75
+ value() {
76
+ return true;
77
+ }
78
+ }, {
79
+ kind: "field",
80
+ key: "_HasTrackList",
81
+ value() {
82
+ return false;
83
+ }
84
+ }, {
85
+ kind: "field",
86
+ key: "_Identity",
87
+ value() {
88
+ return '';
89
+ }
90
+ }, {
91
+ kind: "field",
92
+ key: "_DesktopEntry",
93
+ value() {
94
+ return '';
95
+ }
96
+ }, {
97
+ kind: "field",
98
+ key: "_SupportedUriSchemes",
99
+ value() {
100
+ return [];
101
+ }
102
+ }, {
103
+ kind: "field",
104
+ key: "_SupportedMimeTypes",
105
+ value() {
106
+ return [];
107
+ }
108
+ }, {
109
+ kind: "get",
110
+ decorators: [property({
111
+ signature: 'b',
112
+ access: ACCESS_READ
113
+ })],
114
+ key: "CanQuit",
115
+ value: function CanQuit() {
116
+ return this._CanQuit;
117
+ }
118
+ }, {
119
+ kind: "get",
120
+ decorators: [property({
121
+ signature: 'b'
122
+ })],
123
+ key: "Fullscreen",
124
+ value: function Fullscreen() {
125
+ return this._Fullscreen;
126
+ }
127
+ }, {
128
+ kind: "set",
129
+ key: "Fullscreen",
130
+ value: function Fullscreen(value) {
131
+ this._setPropertyInternal('Fullscreen', value);
132
+ }
133
+ }, {
134
+ kind: "get",
135
+ decorators: [property({
136
+ signature: 'b',
137
+ access: ACCESS_READ
138
+ })],
139
+ key: "CanSetFullscreen",
140
+ value: function CanSetFullscreen() {
141
+ return this._CanSetFullscreen;
142
+ }
143
+ }, {
144
+ kind: "get",
145
+ decorators: [property({
146
+ signature: 'b',
147
+ access: ACCESS_READ
148
+ })],
149
+ key: "CanRaise",
150
+ value: function CanRaise() {
151
+ return this._CanRaise;
152
+ }
153
+ }, {
154
+ kind: "get",
155
+ decorators: [property({
156
+ signature: 'b',
157
+ access: ACCESS_READ
158
+ })],
159
+ key: "HasTrackList",
160
+ value: function HasTrackList() {
161
+ return this._HasTrackList;
162
+ }
163
+ }, {
164
+ kind: "get",
165
+ decorators: [property({
166
+ signature: 's',
167
+ access: ACCESS_READ
168
+ })],
169
+ key: "Identity",
170
+ value: function Identity() {
171
+ return this._Identity;
172
+ }
173
+ }, {
174
+ kind: "get",
175
+ decorators: [property({
176
+ signature: 's',
177
+ access: ACCESS_READ
178
+ })],
179
+ key: "DesktopEntry",
180
+ value: function DesktopEntry() {
181
+ return this._DesktopEntry;
182
+ }
183
+ }, {
184
+ kind: "get",
185
+ decorators: [property({
186
+ signature: 'as',
187
+ access: ACCESS_READ
188
+ })],
189
+ key: "SupportedUriSchemes",
190
+ value: function SupportedUriSchemes() {
191
+ return this._SupportedUriSchemes;
192
+ }
193
+ }, {
194
+ kind: "get",
195
+ decorators: [property({
196
+ signature: 'as',
197
+ access: ACCESS_READ
198
+ })],
199
+ key: "SupportedMimeTypes",
200
+ value: function SupportedMimeTypes() {
201
+ return this._SupportedMimeTypes;
202
+ }
203
+ }, {
204
+ kind: "method",
205
+ decorators: [method({})],
206
+ key: "Raise",
207
+ value: function Raise() {
208
+ this.player.emit('raise');
209
+ }
210
+ }, {
211
+ kind: "method",
212
+ decorators: [method({})],
213
+ key: "Quit",
214
+ value: function Quit() {
215
+ this.player.emit('quit');
216
+ }
217
+ }]
218
+ };
219
+ }, MprisInterface);
220
+ module.exports = RootInterface;
221
+ //# sourceMappingURL=root.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+
3
+ function _decorate(decorators, factory, superClass, mixins) { var api = _getDecoratorsApi(); if (mixins) { for (var i = 0; i < mixins.length; i++) { api = mixins[i](api); } } var r = factory(function initialize(O) { api.initializeInstanceElements(O, decorated.elements); }, superClass); var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators); api.initializeClassElements(r.F, decorated.elements); return api.runClassFinishers(r.F, decorated.finishers); }
4
+ function _getDecoratorsApi() { _getDecoratorsApi = function () { return api; }; var api = { elementsDefinitionOrder: [["method"], ["field"]], initializeInstanceElements: function (O, elements) { ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { if (element.kind === kind && element.placement === "own") { this.defineClassElement(O, element); } }, this); }, this); }, initializeClassElements: function (F, elements) { var proto = F.prototype; ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { var placement = element.placement; if (element.kind === kind && (placement === "static" || placement === "prototype")) { var receiver = placement === "static" ? F : proto; this.defineClassElement(receiver, element); } }, this); }, this); }, defineClassElement: function (receiver, element) { var descriptor = element.descriptor; if (element.kind === "field") { var initializer = element.initializer; descriptor = { enumerable: descriptor.enumerable, writable: descriptor.writable, configurable: descriptor.configurable, value: initializer === void 0 ? void 0 : initializer.call(receiver) }; } Object.defineProperty(receiver, element.key, descriptor); }, decorateClass: function (elements, decorators) { var newElements = []; var finishers = []; var placements = { static: [], prototype: [], own: [] }; elements.forEach(function (element) { this.addElementPlacement(element, placements); }, this); elements.forEach(function (element) { if (!_hasDecorators(element)) return newElements.push(element); var elementFinishersExtras = this.decorateElement(element, placements); newElements.push(elementFinishersExtras.element); newElements.push.apply(newElements, elementFinishersExtras.extras); finishers.push.apply(finishers, elementFinishersExtras.finishers); }, this); if (!decorators) { return { elements: newElements, finishers: finishers }; } var result = this.decorateConstructor(newElements, decorators); finishers.push.apply(finishers, result.finishers); result.finishers = finishers; return result; }, addElementPlacement: function (element, placements, silent) { var keys = placements[element.placement]; if (!silent && keys.indexOf(element.key) !== -1) { throw new TypeError("Duplicated element (" + element.key + ")"); } keys.push(element.key); }, decorateElement: function (element, placements) { var extras = []; var finishers = []; for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { var keys = placements[element.placement]; keys.splice(keys.indexOf(element.key), 1); var elementObject = this.fromElementDescriptor(element); var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); element = elementFinisherExtras.element; this.addElementPlacement(element, placements); if (elementFinisherExtras.finisher) { finishers.push(elementFinisherExtras.finisher); } var newExtras = elementFinisherExtras.extras; if (newExtras) { for (var j = 0; j < newExtras.length; j++) { this.addElementPlacement(newExtras[j], placements); } extras.push.apply(extras, newExtras); } } return { element: element, finishers: finishers, extras: extras }; }, decorateConstructor: function (elements, decorators) { var finishers = []; for (var i = decorators.length - 1; i >= 0; i--) { var obj = this.fromClassDescriptor(elements); var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); if (elementsAndFinisher.finisher !== undefined) { finishers.push(elementsAndFinisher.finisher); } if (elementsAndFinisher.elements !== undefined) { elements = elementsAndFinisher.elements; for (var j = 0; j < elements.length - 1; j++) { for (var k = j + 1; k < elements.length; k++) { if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { throw new TypeError("Duplicated element (" + elements[j].key + ")"); } } } } } return { elements: elements, finishers: finishers }; }, fromElementDescriptor: function (element) { var obj = { kind: element.kind, key: element.key, placement: element.placement, descriptor: element.descriptor }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); if (element.kind === "field") obj.initializer = element.initializer; return obj; }, toElementDescriptors: function (elementObjects) { if (elementObjects === undefined) return; return _toArray(elementObjects).map(function (elementObject) { var element = this.toElementDescriptor(elementObject); this.disallowProperty(elementObject, "finisher", "An element descriptor"); this.disallowProperty(elementObject, "extras", "An element descriptor"); return element; }, this); }, toElementDescriptor: function (elementObject) { var kind = String(elementObject.kind); if (kind !== "method" && kind !== "field") { throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); } var key = _toPropertyKey(elementObject.key); var placement = String(elementObject.placement); if (placement !== "static" && placement !== "prototype" && placement !== "own") { throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); } var descriptor = elementObject.descriptor; this.disallowProperty(elementObject, "elements", "An element descriptor"); var element = { kind: kind, key: key, placement: placement, descriptor: Object.assign({}, descriptor) }; if (kind !== "field") { this.disallowProperty(elementObject, "initializer", "A method descriptor"); } else { this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); element.initializer = elementObject.initializer; } return element; }, toElementFinisherExtras: function (elementObject) { var element = this.toElementDescriptor(elementObject); var finisher = _optionalCallableProperty(elementObject, "finisher"); var extras = this.toElementDescriptors(elementObject.extras); return { element: element, finisher: finisher, extras: extras }; }, fromClassDescriptor: function (elements) { var obj = { kind: "class", elements: elements.map(this.fromElementDescriptor, this) }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); return obj; }, toClassDescriptor: function (obj) { var kind = String(obj.kind); if (kind !== "class") { throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); } this.disallowProperty(obj, "key", "A class descriptor"); this.disallowProperty(obj, "placement", "A class descriptor"); this.disallowProperty(obj, "descriptor", "A class descriptor"); this.disallowProperty(obj, "initializer", "A class descriptor"); this.disallowProperty(obj, "extras", "A class descriptor"); var finisher = _optionalCallableProperty(obj, "finisher"); var elements = this.toElementDescriptors(obj.elements); return { elements: elements, finisher: finisher }; }, runClassFinishers: function (constructor, finishers) { for (var i = 0; i < finishers.length; i++) { var newConstructor = (0, finishers[i])(constructor); if (newConstructor !== undefined) { if (typeof newConstructor !== "function") { throw new TypeError("Finishers must return a constructor."); } constructor = newConstructor; } } return constructor; }, disallowProperty: function (obj, name, objectType) { if (obj[name] !== undefined) { throw new TypeError(objectType + " can't have a ." + name + " property."); } } }; return api; }
5
+ function _createElementDescriptor(def) { var key = _toPropertyKey(def.key); var descriptor; if (def.kind === "method") { descriptor = { value: def.value, writable: true, configurable: true, enumerable: false }; } else if (def.kind === "get") { descriptor = { get: def.value, configurable: true, enumerable: false }; } else if (def.kind === "set") { descriptor = { set: def.value, configurable: true, enumerable: false }; } else if (def.kind === "field") { descriptor = { configurable: true, writable: true, enumerable: true }; } var element = { kind: def.kind === "field" ? "field" : "method", key: key, placement: def.static ? "static" : def.kind === "field" ? "own" : "prototype", descriptor: descriptor }; if (def.decorators) element.decorators = def.decorators; if (def.kind === "field") element.initializer = def.value; return element; }
6
+ function _coalesceGetterSetter(element, other) { if (element.descriptor.get !== undefined) { other.descriptor.get = element.descriptor.get; } else { other.descriptor.set = element.descriptor.set; } }
7
+ function _coalesceClassElements(elements) { var newElements = []; var isSameElement = function (other) { return other.kind === "method" && other.key === element.key && other.placement === element.placement; }; for (var i = 0; i < elements.length; i++) { var element = elements[i]; var other; if (element.kind === "method" && (other = newElements.find(isSameElement))) { if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { if (_hasDecorators(element) || _hasDecorators(other)) { throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); } other.descriptor = element.descriptor; } else { if (_hasDecorators(element)) { if (_hasDecorators(other)) { throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); } other.decorators = element.decorators; } _coalesceGetterSetter(element, other); } } else { newElements.push(element); } } return newElements; }
8
+ function _hasDecorators(element) { return element.decorators && element.decorators.length; }
9
+ function _isDataDescriptor(desc) { return desc !== undefined && !(desc.value === undefined && desc.writable === undefined); }
10
+ function _optionalCallableProperty(obj, name) { var value = obj[name]; if (value !== undefined && typeof value !== "function") { throw new TypeError("Expected '" + name + "' to be a function"); } return value; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
12
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
13
+ function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
14
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
15
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
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
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
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 {
24
+ property,
25
+ method,
26
+ signal,
27
+ DBusError,
28
+ ACCESS_READ,
29
+ ACCESS_WRITE,
30
+ ACCESS_READWRITE
31
+ } = dbus.interface;
32
+ let TracklistInterface = _decorate(null, function (_initialize, _MprisInterface) {
33
+ class TracklistInterface extends _MprisInterface {
34
+ constructor(player) {
35
+ super('org.mpris.MediaPlayer2.TrackList', player);
36
+ _initialize(this);
37
+ }
38
+ }
39
+ return {
40
+ F: TracklistInterface,
41
+ d: [{
42
+ kind: "field",
43
+ key: "_Tracks",
44
+ value() {
45
+ return [];
46
+ }
47
+ }, {
48
+ kind: "field",
49
+ key: "_CanEditTracks",
50
+ value() {
51
+ return false;
52
+ }
53
+ }, {
54
+ kind: "method",
55
+ key: "setTracks",
56
+ value: function setTracks(tracksPlain) {
57
+ this.setProperty('Tracks', tracksPlain);
58
+ }
59
+ }, {
60
+ kind: "get",
61
+ decorators: [property({
62
+ signature: 'ao',
63
+ access: ACCESS_READ
64
+ })],
65
+ key: "Tracks",
66
+ value: function Tracks() {
67
+ return this._Tracks;
68
+ }
69
+ }, {
70
+ kind: "get",
71
+ decorators: [property({
72
+ signature: 'b',
73
+ access: ACCESS_READ
74
+ })],
75
+ key: "CanEditTracks",
76
+ value: function CanEditTracks() {
77
+ return this._CanEditTracks;
78
+ }
79
+ }, {
80
+ kind: "method",
81
+ decorators: [method({
82
+ inSignature: 'ao',
83
+ outSignature: 'aa{sv}'
84
+ })],
85
+ key: "GetTracksMetadata",
86
+ value: function GetTracksMetadata(trackIds) {
87
+ return this.player.tracks.filter(t => {
88
+ return trackIds.some(id => id === t['mpris:trackid']);
89
+ }).map(types.metadataToDbus);
90
+ }
91
+ }, {
92
+ kind: "method",
93
+ decorators: [method({
94
+ inSignature: 'sob'
95
+ })],
96
+ key: "AddTrack",
97
+ value: function AddTrack(uri, afterTrack, setAsCurrent) {
98
+ this.player.emit('addTrack', {
99
+ uri,
100
+ afterTrack,
101
+ setAsCurrent
102
+ });
103
+ }
104
+ }, {
105
+ kind: "method",
106
+ decorators: [method({
107
+ inSignature: 'o'
108
+ })],
109
+ key: "RemoveTrack",
110
+ value: function RemoveTrack(trackId) {
111
+ this.player.emit('removeTrack', trackId);
112
+ }
113
+ }, {
114
+ kind: "method",
115
+ decorators: [method({
116
+ inSignature: 'o'
117
+ })],
118
+ key: "GoTo",
119
+ value: function GoTo(trackId) {
120
+ this.player.emit('goTo', trackId);
121
+ }
122
+ }, {
123
+ kind: "method",
124
+ decorators: [signal({
125
+ signature: 'aoo'
126
+ })],
127
+ key: "TrackListReplaced",
128
+ value: function TrackListReplaced(replacedPlain) {
129
+ this.setTracks(replacedPlain);
130
+ // TODO what's the active track?
131
+ return [this._Tracks, '/org/mpris/MediaPlayer2/TrackList/NoTrack'];
132
+ }
133
+ }, {
134
+ kind: "method",
135
+ decorators: [signal({
136
+ signature: 'a{sv}'
137
+ })],
138
+ key: "TrackAdded",
139
+ value: function TrackAdded(metadata) {
140
+ return types.metadataToDbus(metadata);
141
+ }
142
+ }, {
143
+ kind: "method",
144
+ decorators: [signal({
145
+ signature: 'o'
146
+ })],
147
+ key: "TrackRemoved",
148
+ value: function TrackRemoved(path) {
149
+ return path;
150
+ }
151
+ }, {
152
+ kind: "method",
153
+ decorators: [signal({
154
+ signature: 'oa{sv}'
155
+ })],
156
+ key: "TrackMetadataChanged",
157
+ value: function TrackMetadataChanged(path, metadata) {
158
+ return [path, types.metadataToDbus(metadata)];
159
+ }
160
+ }]
161
+ };
162
+ }, MprisInterface);
163
+ module.exports = TracklistInterface;
164
+ //# sourceMappingURL=tracklist.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ let Variant = require('dbus-next').Variant;
4
+ let logging = require('../logging');
5
+ function guessMetadataSignature(key, value) {
6
+ if (key === 'mpris:trackid') {
7
+ return 'o';
8
+ } else if (key === 'mpris:length') {
9
+ return 'x';
10
+ } else if (typeof value === 'string') {
11
+ return 's';
12
+ } else if (typeof value === 'boolean') {
13
+ return 'b';
14
+ } else if (typeof value === 'number') {
15
+ return 'd';
16
+ } else if (Array.isArray(value) && value.every(v => typeof v === 'string')) {
17
+ return 'as';
18
+ } else {
19
+ // type not supported yet
20
+ logging.warn(`could not determine metadata type for ${key}: ${value}`);
21
+ return null;
22
+ }
23
+ }
24
+ function metadataToPlain(metadataVariant) {
25
+ let metadataPlain = {};
26
+ for (let k of Object.keys(metadataVariant)) {
27
+ let value = metadataVariant[k];
28
+ if (value === undefined || value === null) {
29
+ logging.warn(`ignoring a null metadata value for key ${k}`);
30
+ continue;
31
+ }
32
+ if (value.constructor === Variant) {
33
+ metadataPlain[k] = value.value;
34
+ } else {
35
+ metadataPlain[k] = value;
36
+ }
37
+ }
38
+ return metadataPlain;
39
+ }
40
+ function metadataToDbus(metadataPlain) {
41
+ let metadataVariant = {};
42
+ for (let k of Object.keys(metadataPlain)) {
43
+ let value = metadataPlain[k];
44
+ let signature = guessMetadataSignature(k, value);
45
+ if (signature) {
46
+ metadataVariant[k] = new Variant(signature, value);
47
+ }
48
+ }
49
+ return metadataVariant;
50
+ }
51
+ let emptyPlaylist = ['/', '', ''];
52
+ function playlistToDbus(playlist) {
53
+ if (!playlist) {
54
+ return emptyPlaylist;
55
+ }
56
+ let {
57
+ Id,
58
+ Name,
59
+ Icon
60
+ } = playlist;
61
+ return [Id, Name, Icon];
62
+ }
63
+ function playlistToPlain(wire) {
64
+ let [Id, Name, Icon] = wire;
65
+ return {
66
+ Id,
67
+ Name,
68
+ Icon
69
+ };
70
+ }
71
+ module.exports = {
72
+ metadataToPlain,
73
+ metadataToDbus,
74
+ playlistToPlain,
75
+ playlistToDbus,
76
+ emptyPlaylist
77
+ };
78
+ //# sourceMappingURL=types.js.map
@@ -0,0 +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"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ let loggingEnabled = process.env.MPRIS_SERVICE_DEBUG !== undefined && process.env.MPRIS_SERVICE_DEBUG !== '0';
4
+ module.exports.debug = function (message) {
5
+ if (loggingEnabled) {
6
+ console.log(message);
7
+ }
8
+ };
9
+ module.exports.warn = function (message) {
10
+ if (loggingEnabled) {
11
+ console.warn(message);
12
+ }
13
+ };
14
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +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"}
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@jellybrick/mpris-service",
3
+ "version": "2.1.3",
4
+ "description": "Node.js implementation for the MPRIS D-Bus Interface Specification to create a mediaplayer service",
5
+ "main": "dist/index.js",
6
+ "scripts": {
7
+ "test": "gulp && dbus-run-session -- jest",
8
+ "coverage": "gulp && dbus-run-session -- jest --coverage",
9
+ "build": "gulp",
10
+ "doc": "jsdoc --verbose -c jsdoc.conf --readme README.md --package package.json src/index.js -d doc",
11
+ "prepublish": "gulp"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/JellyBrick/mpris-service.git"
16
+ },
17
+ "keywords": [
18
+ "mpris",
19
+ "media",
20
+ "player",
21
+ "dbus"
22
+ ],
23
+ "author": "JellyBrick <shlee1503@naver.com>",
24
+ "license": "MIT",
25
+ "bugs": {
26
+ "url": "https://github.com/JellyBrick/mpris-service/issues"
27
+ },
28
+ "homepage": "https://github.com/JellyBrick/mpris-service",
29
+ "dependencies": {
30
+ "dbus-next": "^0.10.2",
31
+ "deep-equal": "^2.2.2",
32
+ "source-map-support": "^0.5.12"
33
+ },
34
+ "devDependencies": {
35
+ "@babel/core": "^7.23.0",
36
+ "@babel/plugin-proposal-decorators": "^7.23.0",
37
+ "@babel/plugin-transform-private-methods": "^7.22.5",
38
+ "@babel/preset-env": "^7.22.20",
39
+ "gulp": "^4.0.2",
40
+ "gulp-babel": "^8.0.0",
41
+ "gulp-cli": "^2.3.0",
42
+ "gulp-sourcemaps": "^3.0.0",
43
+ "jest": "^29.7.0",
44
+ "jsbi": "^4.3.0",
45
+ "jsdoc": "^4.0.2"
46
+ },
47
+ "jest": {
48
+ "testEnvironment": "node"
49
+ },
50
+ "engine": {
51
+ "node": ">=18.x.0"
52
+ }
53
+ }
@@ -0,0 +1,31 @@
1
+ const constants = {
2
+ PLAYBACK_STATUS_PLAYING: 'Playing',
3
+ PLAYBACK_STATUS_PAUSED: 'Paused',
4
+ PLAYBACK_STATUS_STOPPED: 'Stopped',
5
+
6
+ LOOP_STATUS_NONE: 'None',
7
+ LOOP_STATUS_TRACK: 'Track',
8
+ LOOP_STATUS_PLAYLIST: 'Playlist'
9
+ };
10
+
11
+ const playbackStatuses = [
12
+ constants.PLAYBACK_STATUS_PLAYING,
13
+ constants.PLAYBACK_STATUS_PAUSED,
14
+ constants.PLAYBACK_STATUS_STOPPED
15
+ ];
16
+
17
+ const loopStatuses = [
18
+ constants.LOOP_STATUS_NONE,
19
+ constants.LOOP_STATUS_PLAYLIST,
20
+ constants.LOOP_STATUS_TRACK
21
+ ];
22
+
23
+ constants.isLoopStatusValid = function(value) {
24
+ return loopStatuses.includes(value);
25
+ };
26
+
27
+ constants.isPlaybackStatusValid = function(value) {
28
+ return playbackStatuses.includes(value);
29
+ };
30
+
31
+ module.exports = constants;