New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@svrooij/sonos

Package Overview
Dependencies
Maintainers
1
Versions
85
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@svrooij/sonos - npm Package Compare versions

Comparing version 2.6.0-beta.7 to 2.6.0-beta.8

12

lib/helpers/metadata-helper.js

@@ -56,4 +56,6 @@ "use strict";

// See https://github.com/svrooij/node-sonos-ts/issues/93 if you found and album art uri that doesn't work.
const art = uri.replace(/&/gi, '&'); // .replace(/%25/g, '%').replace(/%3a/gi, ':');
track.AlbumArtUri = art.startsWith('http') ? art : `http://${host}:${port}${art}`;
if (typeof uri === 'string' && uri.length > 0) {
const art = uri.replace(/&/gi, '&'); // .replace(/%25/g, '%').replace(/%3a/gi, ':');
track.AlbumArtUri = art.startsWith('http') ? art : `http://${host}:${port}${art}`;
}
}

@@ -156,2 +158,8 @@ if (didlItem.res) {

}
if (trackUri.startsWith('x-rincon-mp3radio://http')) {
track.TrackUri = trackUri;
track.ItemId = '-1';
//track.UpnpClass = 'object.item.audioItem.audioBroadcast';
return track;
}
if (trackUri.startsWith('x-rincon-cpcontainer:1006206ccatalog')) { // Amazon prime container

@@ -158,0 +166,0 @@ track.TrackUri = trackUri;

@@ -32,2 +32,6 @@ export declare enum SonosEvents {

/**
* This event is emitted if the group id changed
*/
GroupId = "groupid",
/**
* This event is emitted if the groupname changes.

@@ -34,0 +38,0 @@ */

@@ -36,2 +36,6 @@ "use strict";

/**
* This event is emitted if the group id changed
*/
SonosEvents["GroupId"] = "groupid";
/**
* This event is emitted if the groupname changes.

@@ -38,0 +42,0 @@ */

@@ -20,2 +20,3 @@ import { TransportState, ExtendedTransportState } from './transport-state';

coordinator: (uuid: string) => void;
groupid: (id: string) => void;
groupname: (name: string) => void;

@@ -22,0 +23,0 @@ subscriptionError: (error: EventsError) => void;

2

lib/services/alarm-clock.service.d.ts

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -58,3 +58,3 @@ const base_service_1 = __importDefault(require("./base-service"));

*/
async CreateAlarm(input) { return await this.SoapRequestWithBody('CreateAlarm', input); }
CreateAlarm(input) { return this.SoapRequestWithBody('CreateAlarm', input); }
/**

@@ -65,11 +65,11 @@ * Delete an alarm

*/
async DestroyAlarm(input) { return await this.SoapRequestWithBodyNoResponse('DestroyAlarm', input); }
async GetDailyIndexRefreshTime() { return await this.SoapRequest('GetDailyIndexRefreshTime'); }
async GetFormat() { return await this.SoapRequest('GetFormat'); }
async GetHouseholdTimeAtStamp(input) { return await this.SoapRequestWithBody('GetHouseholdTimeAtStamp', input); }
async GetTimeNow() { return await this.SoapRequest('GetTimeNow'); }
async GetTimeServer() { return await this.SoapRequest('GetTimeServer'); }
async GetTimeZone() { return await this.SoapRequest('GetTimeZone'); }
async GetTimeZoneAndRule() { return await this.SoapRequest('GetTimeZoneAndRule'); }
async GetTimeZoneRule(input) { return await this.SoapRequestWithBody('GetTimeZoneRule', input); }
DestroyAlarm(input) { return this.SoapRequestWithBodyNoResponse('DestroyAlarm', input); }
GetDailyIndexRefreshTime() { return this.SoapRequest('GetDailyIndexRefreshTime'); }
GetFormat() { return this.SoapRequest('GetFormat'); }
GetHouseholdTimeAtStamp(input) { return this.SoapRequestWithBody('GetHouseholdTimeAtStamp', input); }
GetTimeNow() { return this.SoapRequest('GetTimeNow'); }
GetTimeServer() { return this.SoapRequest('GetTimeServer'); }
GetTimeZone() { return this.SoapRequest('GetTimeZone'); }
GetTimeZoneAndRule() { return this.SoapRequest('GetTimeZoneAndRule'); }
GetTimeZoneRule(input) { return this.SoapRequestWithBody('GetTimeZoneRule', input); }
/**

@@ -79,8 +79,8 @@ * Get the AlarmList as XML

*/
async ListAlarms() { return await this.SoapRequest('ListAlarms'); }
async SetDailyIndexRefreshTime(input) { return await this.SoapRequestWithBodyNoResponse('SetDailyIndexRefreshTime', input); }
async SetFormat(input) { return await this.SoapRequestWithBodyNoResponse('SetFormat', input); }
async SetTimeNow(input) { return await this.SoapRequestWithBodyNoResponse('SetTimeNow', input); }
async SetTimeServer(input) { return await this.SoapRequestWithBodyNoResponse('SetTimeServer', input); }
async SetTimeZone(input) { return await this.SoapRequestWithBodyNoResponse('SetTimeZone', input); }
ListAlarms() { return this.SoapRequest('ListAlarms'); }
SetDailyIndexRefreshTime(input) { return this.SoapRequestWithBodyNoResponse('SetDailyIndexRefreshTime', input); }
SetFormat(input) { return this.SoapRequestWithBodyNoResponse('SetFormat', input); }
SetTimeNow(input) { return this.SoapRequestWithBodyNoResponse('SetTimeNow', input); }
SetTimeServer(input) { return this.SoapRequestWithBodyNoResponse('SetTimeServer', input); }
SetTimeZone(input) { return this.SoapRequestWithBodyNoResponse('SetTimeZone', input); }
/**

@@ -102,3 +102,3 @@ * Update an alarm, all parameters are required.

*/
async UpdateAlarm(input) { return await this.SoapRequestWithBodyNoResponse('UpdateAlarm', input); }
UpdateAlarm(input) { return this.SoapRequestWithBodyNoResponse('UpdateAlarm', input); }
// #endregion

@@ -105,0 +105,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -35,9 +35,9 @@ const base_service_1 = __importDefault(require("./base-service"));

// #region actions
async GetAudioInputAttributes() { return await this.SoapRequest('GetAudioInputAttributes'); }
async GetLineInLevel() { return await this.SoapRequest('GetLineInLevel'); }
async SelectAudio(input) { return await this.SoapRequestWithBodyNoResponse('SelectAudio', input); }
async SetAudioInputAttributes(input) { return await this.SoapRequestWithBodyNoResponse('SetAudioInputAttributes', input); }
async SetLineInLevel(input) { return await this.SoapRequestWithBodyNoResponse('SetLineInLevel', input); }
async StartTransmissionToGroup(input) { return await this.SoapRequestWithBody('StartTransmissionToGroup', input); }
async StopTransmissionToGroup(input) { return await this.SoapRequestWithBodyNoResponse('StopTransmissionToGroup', input); }
GetAudioInputAttributes() { return this.SoapRequest('GetAudioInputAttributes'); }
GetLineInLevel() { return this.SoapRequest('GetLineInLevel'); }
SelectAudio(input) { return this.SoapRequestWithBodyNoResponse('SelectAudio', input); }
SetAudioInputAttributes(input) { return this.SoapRequestWithBodyNoResponse('SetAudioInputAttributes', input); }
SetLineInLevel(input) { return this.SoapRequestWithBodyNoResponse('SetLineInLevel', input); }
StartTransmissionToGroup(input) { return this.SoapRequestWithBody('StartTransmissionToGroup', input); }
StopTransmissionToGroup(input) { return this.SoapRequestWithBodyNoResponse('StopTransmissionToGroup', input); }
// #endregion

@@ -44,0 +44,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -14,3 +14,3 @@ import BaseService from './base-service';

/**
* Service that controls stuff related to transport (play/pause/next/special urls)
* Service that controls stuff related to transport (play/pause/next/special URLs)
*

@@ -17,0 +17,0 @@ * @export

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -19,3 +19,3 @@ const base_service_1 = __importDefault(require("./base-service"));

/**
* Service that controls stuff related to transport (play/pause/next/special urls)
* Service that controls stuff related to transport (play/pause/next/special URLs)
*

@@ -66,3 +66,3 @@ * @export

// #region actions
async AddMultipleURIsToQueue(input) { return await this.SoapRequestWithBody('AddMultipleURIsToQueue', input); }
AddMultipleURIsToQueue(input) { return this.SoapRequestWithBody('AddMultipleURIsToQueue', input); }
/**

@@ -78,5 +78,5 @@ * Adds songs to the SONOS queue

*/
async AddURIToQueue(input) { return await this.SoapRequestWithBody('AddURIToQueue', input); }
async AddURIToSavedQueue(input) { return await this.SoapRequestWithBody('AddURIToSavedQueue', input); }
async BackupQueue(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('BackupQueue', input); }
AddURIToQueue(input) { return this.SoapRequestWithBody('AddURIToQueue', input); }
AddURIToSavedQueue(input) { return this.SoapRequestWithBody('AddURIToSavedQueue', input); }
BackupQueue(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('BackupQueue', input); }
/**

@@ -87,7 +87,7 @@ * Leave the current group and revert to a single player.

*/
async BecomeCoordinatorOfStandaloneGroup(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('BecomeCoordinatorOfStandaloneGroup', input); }
async BecomeGroupCoordinator(input) { return await this.SoapRequestWithBodyNoResponse('BecomeGroupCoordinator', input); }
async BecomeGroupCoordinatorAndSource(input) { return await this.SoapRequestWithBodyNoResponse('BecomeGroupCoordinatorAndSource', input); }
async ChangeCoordinator(input) { return await this.SoapRequestWithBodyNoResponse('ChangeCoordinator', input); }
async ChangeTransportSettings(input) { return await this.SoapRequestWithBodyNoResponse('ChangeTransportSettings', input); }
BecomeCoordinatorOfStandaloneGroup(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('BecomeCoordinatorOfStandaloneGroup', input); }
BecomeGroupCoordinator(input) { return this.SoapRequestWithBodyNoResponse('BecomeGroupCoordinator', input); }
BecomeGroupCoordinatorAndSource(input) { return this.SoapRequestWithBodyNoResponse('BecomeGroupCoordinatorAndSource', input); }
ChangeCoordinator(input) { return this.SoapRequestWithBodyNoResponse('ChangeCoordinator', input); }
ChangeTransportSettings(input) { return this.SoapRequestWithBodyNoResponse('ChangeTransportSettings', input); }
/**

@@ -100,4 +100,4 @@ * Stop playing after set sleep timer or cancel

*/
async ConfigureSleepTimer(input) { return await this.SoapRequestWithBodyNoResponse('ConfigureSleepTimer', input); }
async CreateSavedQueue(input) { return await this.SoapRequestWithBody('CreateSavedQueue', input); }
ConfigureSleepTimer(input) { return this.SoapRequestWithBodyNoResponse('ConfigureSleepTimer', input); }
CreateSavedQueue(input) { return this.SoapRequestWithBody('CreateSavedQueue', input); }
/**

@@ -111,4 +111,4 @@ * Delegates the coordinator role to another player in the same group

*/
async DelegateGroupCoordinationTo(input) { return await this.SoapRequestWithBodyNoResponse('DelegateGroupCoordinationTo', input); }
async EndDirectControlSession(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('EndDirectControlSession', input); }
DelegateGroupCoordinationTo(input) { return this.SoapRequestWithBodyNoResponse('DelegateGroupCoordinationTo', input); }
EndDirectControlSession(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('EndDirectControlSession', input); }
/**

@@ -120,3 +120,3 @@ * Get crossfade mode

*/
async GetCrossfadeMode(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetCrossfadeMode', input); }
GetCrossfadeMode(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetCrossfadeMode', input); }
/**

@@ -128,4 +128,4 @@ * Get current transport actions such as Set, Stop, Pause, Play, X_DLNA_SeekTime, Next, X_DLNA_SeekTrackNr

*/
async GetCurrentTransportActions(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetCurrentTransportActions', input); }
async GetDeviceCapabilities(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetDeviceCapabilities', input); }
GetCurrentTransportActions(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetCurrentTransportActions', input); }
GetDeviceCapabilities(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetDeviceCapabilities', input); }
/**

@@ -136,3 +136,3 @@ * Get information about the current playing media (queue)

*/
async GetMediaInfo(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetMediaInfo', input); }
GetMediaInfo(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetMediaInfo', input); }
/**

@@ -143,3 +143,3 @@ * Get information about current position (position in queue and time in current song)

*/
async GetPositionInfo(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetPositionInfo', input); }
GetPositionInfo(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetPositionInfo', input); }
/**

@@ -151,4 +151,4 @@ * Get time left on sleeptimer.

*/
async GetRemainingSleepTimerDuration(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetRemainingSleepTimerDuration', input); }
async GetRunningAlarmProperties(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetRunningAlarmProperties', input); }
GetRemainingSleepTimerDuration(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetRemainingSleepTimerDuration', input); }
GetRunningAlarmProperties(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetRunningAlarmProperties', input); }
/**

@@ -160,3 +160,3 @@ * Get current transport status, speed and state such as PLAYING, STOPPED, PLAYING, PAUSED_PLAYBACK, TRANSITIONING, NO_MEDIA_PRESENT

*/
async GetTransportInfo(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetTransportInfo', input); }
GetTransportInfo(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetTransportInfo', input); }
/**

@@ -168,3 +168,3 @@ * Get transport settings

*/
async GetTransportSettings(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetTransportSettings', input); }
GetTransportSettings(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetTransportSettings', input); }
/**

@@ -176,4 +176,4 @@ * Go to next song

*/
async Next(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('Next', input); }
async NotifyDeletedURI(input) { return await this.SoapRequestWithBodyNoResponse('NotifyDeletedURI', input); }
Next(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('Next', input); }
NotifyDeletedURI(input) { return this.SoapRequestWithBodyNoResponse('NotifyDeletedURI', input); }
/**

@@ -184,3 +184,3 @@ * Pause playback

*/
async Pause(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('Pause', input); }
Pause(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('Pause', input); }
/**

@@ -192,3 +192,3 @@ * Start playing the set TransportURI

*/
async Play(input) { return await this.SoapRequestWithBodyNoResponse('Play', input); }
Play(input) { return this.SoapRequestWithBodyNoResponse('Play', input); }
/**

@@ -200,3 +200,3 @@ * Go to previous song

*/
async Previous(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('Previous', input); }
Previous(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('Previous', input); }
/**

@@ -208,4 +208,4 @@ * Flushes the SONOS queue.

*/
async RemoveAllTracksFromQueue(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('RemoveAllTracksFromQueue', input); }
async RemoveTrackFromQueue(input) { return await this.SoapRequestWithBodyNoResponse('RemoveTrackFromQueue', input); }
RemoveAllTracksFromQueue(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('RemoveAllTracksFromQueue', input); }
RemoveTrackFromQueue(input) { return this.SoapRequestWithBodyNoResponse('RemoveTrackFromQueue', input); }
/**

@@ -219,6 +219,6 @@ * Removes the specified range of songs from the SONOS queue.

*/
async RemoveTrackRangeFromQueue(input) { return await this.SoapRequestWithBody('RemoveTrackRangeFromQueue', input); }
async ReorderTracksInQueue(input) { return await this.SoapRequestWithBodyNoResponse('ReorderTracksInQueue', input); }
async ReorderTracksInSavedQueue(input) { return await this.SoapRequestWithBody('ReorderTracksInSavedQueue', input); }
async RunAlarm(input) { return await this.SoapRequestWithBodyNoResponse('RunAlarm', input); }
RemoveTrackRangeFromQueue(input) { return this.SoapRequestWithBody('RemoveTrackRangeFromQueue', input); }
ReorderTracksInQueue(input) { return this.SoapRequestWithBodyNoResponse('ReorderTracksInQueue', input); }
ReorderTracksInSavedQueue(input) { return this.SoapRequestWithBody('ReorderTracksInSavedQueue', input); }
RunAlarm(input) { return this.SoapRequestWithBodyNoResponse('RunAlarm', input); }
/**

@@ -232,3 +232,3 @@ * Saves the current SONOS queue as a SONOS playlist and outputs objectID

*/
async SaveQueue(input) { return await this.SoapRequestWithBody('SaveQueue', input); }
SaveQueue(input) { return this.SoapRequestWithBody('SaveQueue', input); }
/**

@@ -242,3 +242,3 @@ * Seek track in queue, time delta or absolute time in song

*/
async Seek(input) { return await this.SoapRequestWithBodyNoResponse('Seek', input); }
Seek(input) { return this.SoapRequestWithBodyNoResponse('Seek', input); }
/**

@@ -252,3 +252,3 @@ * Set the transport URI to a song, a stream, the queue, another player-rincon and a lot more

*/
async SetAVTransportURI(input) { return await this.SoapRequestWithBodyNoResponse('SetAVTransportURI', input); }
SetAVTransportURI(input) { return this.SoapRequestWithBodyNoResponse('SetAVTransportURI', input); }
/**

@@ -261,4 +261,4 @@ * Set crossfade mode

*/
async SetCrossfadeMode(input) { return await this.SoapRequestWithBodyNoResponse('SetCrossfadeMode', input); }
async SetNextAVTransportURI(input) { return await this.SoapRequestWithBodyNoResponse('SetNextAVTransportURI', input); }
SetCrossfadeMode(input) { return this.SoapRequestWithBodyNoResponse('SetCrossfadeMode', input); }
SetNextAVTransportURI(input) { return this.SoapRequestWithBodyNoResponse('SetNextAVTransportURI', input); }
/**

@@ -271,3 +271,3 @@ * Set the PlayMode

*/
async SetPlayMode(input) { return await this.SoapRequestWithBodyNoResponse('SetPlayMode', input); }
SetPlayMode(input) { return this.SoapRequestWithBodyNoResponse('SetPlayMode', input); }
/**

@@ -279,4 +279,4 @@ * Snooze the current alarm for some time.

*/
async SnoozeAlarm(input) { return await this.SoapRequestWithBodyNoResponse('SnoozeAlarm', input); }
async StartAutoplay(input) { return await this.SoapRequestWithBodyNoResponse('StartAutoplay', input); }
SnoozeAlarm(input) { return this.SoapRequestWithBodyNoResponse('SnoozeAlarm', input); }
StartAutoplay(input) { return this.SoapRequestWithBodyNoResponse('StartAutoplay', input); }
/**

@@ -287,3 +287,3 @@ * Stop playback

*/
async Stop(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('Stop', input); }
Stop(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('Stop', input); }
// #endregion

@@ -290,0 +290,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -35,5 +35,5 @@ const base_service_1 = __importDefault(require("./base-service"));

// #region actions
async GetCurrentConnectionIDs() { return await this.SoapRequest('GetCurrentConnectionIDs'); }
async GetCurrentConnectionInfo(input) { return await this.SoapRequestWithBody('GetCurrentConnectionInfo', input); }
async GetProtocolInfo() { return await this.SoapRequest('GetProtocolInfo'); }
GetCurrentConnectionIDs() { return this.SoapRequest('GetCurrentConnectionIDs'); }
GetCurrentConnectionInfo(input) { return this.SoapRequestWithBody('GetCurrentConnectionInfo', input); }
GetProtocolInfo() { return this.SoapRequest('GetProtocolInfo'); }
// #endregion

@@ -40,0 +40,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -33,9 +33,9 @@ import BaseService from './base-service';

/**
* Browse for content: Music library (A), share(S:), Sonos playlists(SQ:), Sonos favorites(FV:2), radio stations(R:0/0), radio shows(R:0/1). Recommendation: Send one request, check the `TotalMatches` and - if necessary - do additional requests with higher `StartingIndex`. In case of duplicates only the first is returned! Example: albums with same title, even if artists are different
* Browse for content: Music library (A), share(S:), Sonos playlists(SQ:), Sonos favorites(FV:2), radio stations(R:0/0), radio shows(R:0/1), queue(Q:)). Recommendation: Send one request, check the `TotalMatches` and - if necessary - do additional requests with higher `StartingIndex`. In case of duplicates only the first is returned! Example: albums with same title, even if artists are different
*
* @param {string} input.ObjectID - The search query, (`A:ARTIST` / `A:ALBUMARTIST` / `A:ALBUM` / `A:GENRE` / `A:COMPOSER` / `A:TRACKS` / `A:PLAYLISTS` / `S:` / `SQ:` / `FV:2` / `R:0/0` / `R:0/1`) with optionally `:search+query` behind it.
* @param {string} input.ObjectID - The search query, (`A:ARTIST` / `A:ALBUMARTIST` / `A:ALBUM` / `A:GENRE` / `A:COMPOSER` / `A:TRACKS` / `A:PLAYLISTS` / `FV:2` / `Q:`/ `R:0/0` / `R:0/1` / `S:` / `SQ:`) with optionally `:search+query` behind it.
* @param {string} input.BrowseFlag - How to browse [ 'BrowseMetadata' / 'BrowseDirectChildren' ]
* @param {string} input.Filter - Which fields should be returned `*` for all.
* @param {number} input.StartingIndex - Paging, where to start, usually 0
* @param {number} input.RequestedCount - Paging, number of items, maximum is 1,000. This parameter does NOT restrict the number of items being searched (filter) but only the number being returned.
* @param {number} input.RequestedCount - Paging, number of items, maximum is 1,000. This parameter does NOT restrict the number of items being searched (filter) but only the number being returned. Using 0 is equivalent to 1,000
* @param {string} input.SortCriteria - Sort the results based on metadata fields. `+upnp:artist,+dc:title` for sorting on artist then on title.

@@ -63,2 +63,5 @@ * @remarks (1) If the title contains an apostrophe the returned uri will contain a `'`. (2) Some libraries support a BrowseAndParse, so you don't have to parse the xml.

}): Promise<FindPrefixResponse>;
/**
* Get the current album art display option such as &#x60;WMP&#x60;, &#x60;ITUNES&#x60; or &#x60;NONE&#x60;
*/
GetAlbumArtistDisplayOption(): Promise<GetAlbumArtistDisplayOptionResponse>;

@@ -74,2 +77,7 @@ GetAllPrefixLocations(input: {

GetSystemUpdateID(): Promise<GetSystemUpdateIDResponse>;
/**
* Updates the music library (share) index
*
* @param {string} input.AlbumArtistDisplayOption - `WMP`, `ITUNES` or `NONE`
*/
RefreshShareIndex(input: {

@@ -76,0 +84,0 @@ AlbumArtistDisplayOption: string;

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -63,28 +63,36 @@ const base_service_1 = __importDefault(require("./base-service"));

/**
* Browse for content: Music library (A), share(S:), Sonos playlists(SQ:), Sonos favorites(FV:2), radio stations(R:0/0), radio shows(R:0/1). Recommendation: Send one request, check the &#x60;TotalMatches&#x60; and - if necessary - do additional requests with higher &#x60;StartingIndex&#x60;. In case of duplicates only the first is returned! Example: albums with same title, even if artists are different
* Browse for content: Music library (A), share(S:), Sonos playlists(SQ:), Sonos favorites(FV:2), radio stations(R:0/0), radio shows(R:0/1), queue(Q:)). Recommendation: Send one request, check the &#x60;TotalMatches&#x60; and - if necessary - do additional requests with higher &#x60;StartingIndex&#x60;. In case of duplicates only the first is returned! Example: albums with same title, even if artists are different
*
* @param {string} input.ObjectID - The search query, (`A:ARTIST` / `A:ALBUMARTIST` / `A:ALBUM` / `A:GENRE` / `A:COMPOSER` / `A:TRACKS` / `A:PLAYLISTS` / `S:` / `SQ:` / `FV:2` / `R:0/0` / `R:0/1`) with optionally `:search+query` behind it.
* @param {string} input.ObjectID - The search query, (`A:ARTIST` / `A:ALBUMARTIST` / `A:ALBUM` / `A:GENRE` / `A:COMPOSER` / `A:TRACKS` / `A:PLAYLISTS` / `FV:2` / `Q:`/ `R:0/0` / `R:0/1` / `S:` / `SQ:`) with optionally `:search+query` behind it.
* @param {string} input.BrowseFlag - How to browse [ 'BrowseMetadata' / 'BrowseDirectChildren' ]
* @param {string} input.Filter - Which fields should be returned `*` for all.
* @param {number} input.StartingIndex - Paging, where to start, usually 0
* @param {number} input.RequestedCount - Paging, number of items, maximum is 1,000. This parameter does NOT restrict the number of items being searched (filter) but only the number being returned.
* @param {number} input.RequestedCount - Paging, number of items, maximum is 1,000. This parameter does NOT restrict the number of items being searched (filter) but only the number being returned. Using 0 is equivalent to 1,000
* @param {string} input.SortCriteria - Sort the results based on metadata fields. `+upnp:artist,+dc:title` for sorting on artist then on title.
* @remarks (1) If the title contains an apostrophe the returned uri will contain a `&apos;`. (2) Some libraries support a BrowseAndParse, so you don't have to parse the xml.
*/
async Browse(input) { return await this.SoapRequestWithBody('Browse', input); }
async CreateObject(input) { return await this.SoapRequestWithBody('CreateObject', input); }
async DestroyObject(input) { return await this.SoapRequestWithBodyNoResponse('DestroyObject', input); }
async FindPrefix(input) { return await this.SoapRequestWithBody('FindPrefix', input); }
async GetAlbumArtistDisplayOption() { return await this.SoapRequest('GetAlbumArtistDisplayOption'); }
async GetAllPrefixLocations(input) { return await this.SoapRequestWithBody('GetAllPrefixLocations', input); }
async GetBrowseable() { return await this.SoapRequest('GetBrowseable'); }
async GetLastIndexChange() { return await this.SoapRequest('GetLastIndexChange'); }
async GetSearchCapabilities() { return await this.SoapRequest('GetSearchCapabilities'); }
async GetShareIndexInProgress() { return await this.SoapRequest('GetShareIndexInProgress'); }
async GetSortCapabilities() { return await this.SoapRequest('GetSortCapabilities'); }
async GetSystemUpdateID() { return await this.SoapRequest('GetSystemUpdateID'); }
async RefreshShareIndex(input) { return await this.SoapRequestWithBodyNoResponse('RefreshShareIndex', input); }
async RequestResort(input) { return await this.SoapRequestWithBodyNoResponse('RequestResort', input); }
async SetBrowseable(input) { return await this.SoapRequestWithBodyNoResponse('SetBrowseable', input); }
async UpdateObject(input) { return await this.SoapRequestWithBodyNoResponse('UpdateObject', input); }
Browse(input) { return this.SoapRequestWithBody('Browse', input); }
CreateObject(input) { return this.SoapRequestWithBody('CreateObject', input); }
DestroyObject(input) { return this.SoapRequestWithBodyNoResponse('DestroyObject', input); }
FindPrefix(input) { return this.SoapRequestWithBody('FindPrefix', input); }
/**
* Get the current album art display option such as &#x60;WMP&#x60;, &#x60;ITUNES&#x60; or &#x60;NONE&#x60;
*/
GetAlbumArtistDisplayOption() { return this.SoapRequest('GetAlbumArtistDisplayOption'); }
GetAllPrefixLocations(input) { return this.SoapRequestWithBody('GetAllPrefixLocations', input); }
GetBrowseable() { return this.SoapRequest('GetBrowseable'); }
GetLastIndexChange() { return this.SoapRequest('GetLastIndexChange'); }
GetSearchCapabilities() { return this.SoapRequest('GetSearchCapabilities'); }
GetShareIndexInProgress() { return this.SoapRequest('GetShareIndexInProgress'); }
GetSortCapabilities() { return this.SoapRequest('GetSortCapabilities'); }
GetSystemUpdateID() { return this.SoapRequest('GetSystemUpdateID'); }
/**
* Updates the music library (share) index
*
* @param {string} input.AlbumArtistDisplayOption - `WMP`, `ITUNES` or `NONE`
*/
RefreshShareIndex(input) { return this.SoapRequestWithBodyNoResponse('RefreshShareIndex', input); }
RequestResort(input) { return this.SoapRequestWithBodyNoResponse('RequestResort', input); }
SetBrowseable(input) { return this.SoapRequestWithBodyNoResponse('SetBrowseable', input); }
UpdateObject(input) { return this.SoapRequestWithBodyNoResponse('UpdateObject', input); }
// #endregion

@@ -91,0 +99,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -28,2 +28,8 @@ import BaseService from './base-service';

}): Promise<boolean>;
/**
* Adds satellites and/or a sub woofer to a (main) player. The satellites become hidden. The main player RINCON_* is mandatory. RR: right - rear, LF: left - front, SW: subwoofer
*
* @param {string} input.HTSatChanMapSet - example: `RINCON_000PPP1400:LF,RF;RINCON_000RRR1400:RR;RINCON_000SSS1400:LR;RINCON_000QQQ1400:SW`
* @remarks Not all speakers support satellites or sub woofer. Satellites should be of same type (e.g. Play:1)
*/
AddHTSatellite(input: {

@@ -36,3 +42,3 @@ HTSatChanMapSet: string;

* @param {string} input.ChannelMapSet - example: `RINCON_B8E9375831C001400:LF,LF;RINCON_000E58FE3AEA01400:RF,RF`
* @remarks No all speakers support StereoPairs
* @remarks Not all speakers support StereoPairs
*/

@@ -81,2 +87,8 @@ CreateStereoPair(input: {

}): Promise<boolean>;
/**
* Removes a satellite or a sub woofer from (main) player. The satellite becomes visible.
*
* @param {string} input.SatRoomUUID - example: `RINCON_000RRR1400`
* @remarks Not all speakers support satellites or sub woofer. Multiples RINCON_* are not allowed.
*/
RemoveHTSatellite(input: {

@@ -97,3 +109,3 @@ SatRoomUUID: string;

* @param {string} input.ChannelMapSet - example: `RINCON_B8E9375831C001400:LF,LF;RINCON_000E58FE3AEA01400:RF,RF`
* @remarks No all speakers support StereoPairs
* @remarks Not all speakers support StereoPairs
*/

@@ -100,0 +112,0 @@ SeparateStereoPair(input: {

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -35,47 +35,59 @@ const base_service_1 = __importDefault(require("./base-service"));

// #region actions
async AddBondedZones(input) { return await this.SoapRequestWithBodyNoResponse('AddBondedZones', input); }
async AddHTSatellite(input) { return await this.SoapRequestWithBodyNoResponse('AddHTSatellite', input); }
AddBondedZones(input) { return this.SoapRequestWithBodyNoResponse('AddBondedZones', input); }
/**
* Adds satellites and/or a sub woofer to a (main) player. The satellites become hidden. The main player RINCON_* is mandatory. RR: right - rear, LF: left - front, SW: subwoofer
*
* @param {string} input.HTSatChanMapSet - example: `RINCON_000PPP1400:LF,RF;RINCON_000RRR1400:RR;RINCON_000SSS1400:LR;RINCON_000QQQ1400:SW`
* @remarks Not all speakers support satellites or sub woofer. Satellites should be of same type (e.g. Play:1)
*/
AddHTSatellite(input) { return this.SoapRequestWithBodyNoResponse('AddHTSatellite', input); }
/**
* Create a stereo pair (left, right speakers), right one becomes hidden
*
* @param {string} input.ChannelMapSet - example: `RINCON_B8E9375831C001400:LF,LF;RINCON_000E58FE3AEA01400:RF,RF`
* @remarks No all speakers support StereoPairs
* @remarks Not all speakers support StereoPairs
*/
async CreateStereoPair(input) { return await this.SoapRequestWithBodyNoResponse('CreateStereoPair', input); }
async EnterConfigMode(input) { return await this.SoapRequestWithBody('EnterConfigMode', input); }
async ExitConfigMode(input) { return await this.SoapRequestWithBodyNoResponse('ExitConfigMode', input); }
async GetAutoplayLinkedZones(input) { return await this.SoapRequestWithBody('GetAutoplayLinkedZones', input); }
async GetAutoplayRoomUUID(input) { return await this.SoapRequestWithBody('GetAutoplayRoomUUID', input); }
async GetAutoplayVolume(input) { return await this.SoapRequestWithBody('GetAutoplayVolume', input); }
CreateStereoPair(input) { return this.SoapRequestWithBodyNoResponse('CreateStereoPair', input); }
EnterConfigMode(input) { return this.SoapRequestWithBody('EnterConfigMode', input); }
ExitConfigMode(input) { return this.SoapRequestWithBodyNoResponse('ExitConfigMode', input); }
GetAutoplayLinkedZones(input) { return this.SoapRequestWithBody('GetAutoplayLinkedZones', input); }
GetAutoplayRoomUUID(input) { return this.SoapRequestWithBody('GetAutoplayRoomUUID', input); }
GetAutoplayVolume(input) { return this.SoapRequestWithBody('GetAutoplayVolume', input); }
/**
* Get the current button lock state
*/
async GetButtonLockState() { return await this.SoapRequest('GetButtonLockState'); }
async GetButtonState() { return await this.SoapRequest('GetButtonState'); }
async GetHouseholdID() { return await this.SoapRequest('GetHouseholdID'); }
async GetHTForwardState() { return await this.SoapRequest('GetHTForwardState'); }
GetButtonLockState() { return this.SoapRequest('GetButtonLockState'); }
GetButtonState() { return this.SoapRequest('GetButtonState'); }
GetHouseholdID() { return this.SoapRequest('GetHouseholdID'); }
GetHTForwardState() { return this.SoapRequest('GetHTForwardState'); }
/**
* Get the current LED state
*/
async GetLEDState() { return await this.SoapRequest('GetLEDState'); }
async GetUseAutoplayVolume(input) { return await this.SoapRequestWithBody('GetUseAutoplayVolume', input); }
async GetZoneAttributes() { return await this.SoapRequest('GetZoneAttributes'); }
GetLEDState() { return this.SoapRequest('GetLEDState'); }
GetUseAutoplayVolume(input) { return this.SoapRequestWithBody('GetUseAutoplayVolume', input); }
GetZoneAttributes() { return this.SoapRequest('GetZoneAttributes'); }
/**
* Get information about this specific speaker
*/
async GetZoneInfo() { return await this.SoapRequest('GetZoneInfo'); }
async RemoveBondedZones(input) { return await this.SoapRequestWithBodyNoResponse('RemoveBondedZones', input); }
async RemoveHTSatellite(input) { return await this.SoapRequestWithBodyNoResponse('RemoveHTSatellite', input); }
async RoomDetectionStartChirping(input) { return await this.SoapRequestWithBody('RoomDetectionStartChirping', input); }
async RoomDetectionStopChirping(input) { return await this.SoapRequestWithBodyNoResponse('RoomDetectionStopChirping', input); }
GetZoneInfo() { return this.SoapRequest('GetZoneInfo'); }
RemoveBondedZones(input) { return this.SoapRequestWithBodyNoResponse('RemoveBondedZones', input); }
/**
* Removes a satellite or a sub woofer from (main) player. The satellite becomes visible.
*
* @param {string} input.SatRoomUUID - example: `RINCON_000RRR1400`
* @remarks Not all speakers support satellites or sub woofer. Multiples RINCON_* are not allowed.
*/
RemoveHTSatellite(input) { return this.SoapRequestWithBodyNoResponse('RemoveHTSatellite', input); }
RoomDetectionStartChirping(input) { return this.SoapRequestWithBody('RoomDetectionStartChirping', input); }
RoomDetectionStopChirping(input) { return this.SoapRequestWithBodyNoResponse('RoomDetectionStopChirping', input); }
/**
* Separate a stereo pair
*
* @param {string} input.ChannelMapSet - example: `RINCON_B8E9375831C001400:LF,LF;RINCON_000E58FE3AEA01400:RF,RF`
* @remarks No all speakers support StereoPairs
* @remarks Not all speakers support StereoPairs
*/
async SeparateStereoPair(input) { return await this.SoapRequestWithBodyNoResponse('SeparateStereoPair', input); }
async SetAutoplayLinkedZones(input) { return await this.SoapRequestWithBodyNoResponse('SetAutoplayLinkedZones', input); }
async SetAutoplayRoomUUID(input) { return await this.SoapRequestWithBodyNoResponse('SetAutoplayRoomUUID', input); }
async SetAutoplayVolume(input) { return await this.SoapRequestWithBodyNoResponse('SetAutoplayVolume', input); }
SeparateStereoPair(input) { return this.SoapRequestWithBodyNoResponse('SeparateStereoPair', input); }
SetAutoplayLinkedZones(input) { return this.SoapRequestWithBodyNoResponse('SetAutoplayLinkedZones', input); }
SetAutoplayRoomUUID(input) { return this.SoapRequestWithBodyNoResponse('SetAutoplayRoomUUID', input); }
SetAutoplayVolume(input) { return this.SoapRequestWithBodyNoResponse('SetAutoplayVolume', input); }
/**

@@ -86,3 +98,3 @@ * Set the button lock state

*/
async SetButtonLockState(input) { return await this.SoapRequestWithBodyNoResponse('SetButtonLockState', input); }
SetButtonLockState(input) { return this.SoapRequestWithBodyNoResponse('SetButtonLockState', input); }
/**

@@ -93,5 +105,5 @@ * Set the LED state

*/
async SetLEDState(input) { return await this.SoapRequestWithBodyNoResponse('SetLEDState', input); }
async SetUseAutoplayVolume(input) { return await this.SoapRequestWithBodyNoResponse('SetUseAutoplayVolume', input); }
async SetZoneAttributes(input) { return await this.SoapRequestWithBodyNoResponse('SetZoneAttributes', input); }
SetLEDState(input) { return this.SoapRequestWithBodyNoResponse('SetLEDState', input); }
SetUseAutoplayVolume(input) { return this.SoapRequestWithBodyNoResponse('SetUseAutoplayVolume', input); }
SetZoneAttributes(input) { return this.SoapRequestWithBodyNoResponse('SetZoneAttributes', input); }
// #endregion

@@ -98,0 +110,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -35,6 +35,6 @@ const base_service_1 = __importDefault(require("./base-service"));

// #region actions
async AddMember(input) { return await this.SoapRequestWithBody('AddMember', input); }
async RemoveMember(input) { return await this.SoapRequestWithBodyNoResponse('RemoveMember', input); }
async ReportTrackBufferingResult(input) { return await this.SoapRequestWithBodyNoResponse('ReportTrackBufferingResult', input); }
async SetSourceAreaIds(input) { return await this.SoapRequestWithBodyNoResponse('SetSourceAreaIds', input); }
AddMember(input) { return this.SoapRequestWithBody('AddMember', input); }
RemoveMember(input) { return this.SoapRequestWithBodyNoResponse('RemoveMember', input); }
ReportTrackBufferingResult(input) { return this.SoapRequestWithBodyNoResponse('ReportTrackBufferingResult', input); }
SetSourceAreaIds(input) { return this.SoapRequestWithBodyNoResponse('SetSourceAreaIds', input); }
// #endregion

@@ -41,0 +41,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -50,3 +50,3 @@ const base_service_1 = __importDefault(require("./base-service"));

*/
async GetGroupMute(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetGroupMute', input); }
GetGroupMute(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetGroupMute', input); }
/**

@@ -58,3 +58,3 @@ * Get the group volume.

*/
async GetGroupVolume(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetGroupVolume', input); }
GetGroupVolume(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetGroupVolume', input); }
/**

@@ -67,3 +67,3 @@ * (Un-/)Mute the entire group

*/
async SetGroupMute(input) { return await this.SoapRequestWithBodyNoResponse('SetGroupMute', input); }
SetGroupMute(input) { return this.SoapRequestWithBodyNoResponse('SetGroupMute', input); }
/**

@@ -76,3 +76,3 @@ * Change group volume. Players volume will be changed proportionally based on last snapshot

*/
async SetGroupVolume(input) { return await this.SoapRequestWithBodyNoResponse('SetGroupVolume', input); }
SetGroupVolume(input) { return this.SoapRequestWithBodyNoResponse('SetGroupVolume', input); }
/**

@@ -85,3 +85,3 @@ * Relatively change group volume - returns final group volume. Players volume will be changed proportionally based on last snapshot

*/
async SetRelativeGroupVolume(input) { return await this.SoapRequestWithBody('SetRelativeGroupVolume', input); }
SetRelativeGroupVolume(input) { return this.SoapRequestWithBody('SetRelativeGroupVolume', input); }
/**

@@ -93,3 +93,3 @@ * Creates a new group volume snapshot, the volume ratio between all players. It is used by SetGroupVolume and SetRelativeGroupVolume

*/
async SnapshotGroupVolume(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('SnapshotGroupVolume', input); }
SnapshotGroupVolume(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('SnapshotGroupVolume', input); }
// #endregion

@@ -96,0 +96,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -35,10 +35,10 @@ const base_service_1 = __importDefault(require("./base-service"));

// #region actions
async CommitLearnedIRCodes(input) { return await this.SoapRequestWithBodyNoResponse('CommitLearnedIRCodes', input); }
async GetIRRepeaterState() { return await this.SoapRequest('GetIRRepeaterState'); }
async GetLEDFeedbackState() { return await this.SoapRequest('GetLEDFeedbackState'); }
async IdentifyIRRemote(input) { return await this.SoapRequestWithBodyNoResponse('IdentifyIRRemote', input); }
async IsRemoteConfigured() { return await this.SoapRequest('IsRemoteConfigured'); }
async LearnIRCode(input) { return await this.SoapRequestWithBodyNoResponse('LearnIRCode', input); }
async SetIRRepeaterState(input) { return await this.SoapRequestWithBodyNoResponse('SetIRRepeaterState', input); }
async SetLEDFeedbackState(input) { return await this.SoapRequestWithBodyNoResponse('SetLEDFeedbackState', input); }
CommitLearnedIRCodes(input) { return this.SoapRequestWithBodyNoResponse('CommitLearnedIRCodes', input); }
GetIRRepeaterState() { return this.SoapRequest('GetIRRepeaterState'); }
GetLEDFeedbackState() { return this.SoapRequest('GetLEDFeedbackState'); }
IdentifyIRRemote(input) { return this.SoapRequestWithBodyNoResponse('IdentifyIRRemote', input); }
IsRemoteConfigured() { return this.SoapRequest('IsRemoteConfigured'); }
LearnIRCode(input) { return this.SoapRequestWithBodyNoResponse('LearnIRCode', input); }
SetIRRepeaterState(input) { return this.SoapRequestWithBodyNoResponse('SetIRRepeaterState', input); }
SetLEDFeedbackState(input) { return this.SoapRequestWithBodyNoResponse('SetLEDFeedbackState', input); }
// #endregion

@@ -45,0 +45,0 @@ responseProperties() {

@@ -5,3 +5,3 @@ /**

* Stephan van Rooij
* https://svrooij.io/sonos-api-docs
* https://sonos.svrooij.io/
*

@@ -8,0 +8,0 @@ * This file is generated, do not edit manually.

@@ -21,3 +21,3 @@ "use strict";

* Stephan van Rooij
* https://svrooij.io/sonos-api-docs
* https://sonos.svrooij.io/
*

@@ -24,0 +24,0 @@ * This file is generated, do not edit manually.

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -35,3 +35,3 @@ const base_service_1 = __importDefault(require("./base-service"));

// #region actions
async GetSessionId(input) { return await this.SoapRequestWithBody('GetSessionId', input); }
GetSessionId(input) { return this.SoapRequestWithBody('GetSessionId', input); }
/**

@@ -41,4 +41,4 @@ * Load music service list as xml

*/
async ListAvailableServices() { return await this.SoapRequest('ListAvailableServices'); }
async UpdateAvailableServices() { return await this.SoapRequestNoResponse('UpdateAvailableServices'); }
ListAvailableServices() { return this.SoapRequest('ListAvailableServices'); }
UpdateAvailableServices() { return this.SoapRequestNoResponse('UpdateAvailableServices'); }
// #endregion

@@ -45,0 +45,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -35,3 +35,3 @@ const base_service_1 = __importDefault(require("./base-service"));

// #region actions
async QPlayAuth(input) { return await this.SoapRequestWithBody('QPlayAuth', input); }
QPlayAuth(input) { return this.SoapRequestWithBody('QPlayAuth', input); }
// #endregion

@@ -38,0 +38,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -35,13 +35,13 @@ const base_service_1 = __importDefault(require("./base-service"));

// #region actions
async AddMultipleURIs(input) { return await this.SoapRequestWithBody('AddMultipleURIs', input); }
async AddURI(input) { return await this.SoapRequestWithBody('AddURI', input); }
async AttachQueue(input) { return await this.SoapRequestWithBody('AttachQueue', input); }
async Backup() { return await this.SoapRequestNoResponse('Backup'); }
async Browse(input) { return await this.SoapRequestWithBody('Browse', input); }
async CreateQueue(input) { return await this.SoapRequestWithBody('CreateQueue', input); }
async RemoveAllTracks(input) { return await this.SoapRequestWithBody('RemoveAllTracks', input); }
async RemoveTrackRange(input) { return await this.SoapRequestWithBody('RemoveTrackRange', input); }
async ReorderTracks(input) { return await this.SoapRequestWithBody('ReorderTracks', input); }
async ReplaceAllTracks(input) { return await this.SoapRequestWithBody('ReplaceAllTracks', input); }
async SaveAsSonosPlaylist(input) { return await this.SoapRequestWithBody('SaveAsSonosPlaylist', input); }
AddMultipleURIs(input) { return this.SoapRequestWithBody('AddMultipleURIs', input); }
AddURI(input) { return this.SoapRequestWithBody('AddURI', input); }
AttachQueue(input) { return this.SoapRequestWithBody('AttachQueue', input); }
Backup() { return this.SoapRequestNoResponse('Backup'); }
Browse(input) { return this.SoapRequestWithBody('Browse', input); }
CreateQueue(input) { return this.SoapRequestWithBody('CreateQueue', input); }
RemoveAllTracks(input) { return this.SoapRequestWithBody('RemoveAllTracks', input); }
RemoveTrackRange(input) { return this.SoapRequestWithBody('RemoveTrackRange', input); }
ReorderTracks(input) { return this.SoapRequestWithBody('ReorderTracks', input); }
ReplaceAllTracks(input) { return this.SoapRequestWithBody('ReplaceAllTracks', input); }
SaveAsSonosPlaylist(input) { return this.SoapRequestWithBody('SaveAsSonosPlaylist', input); }
// #endregion

@@ -48,0 +48,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -40,3 +40,3 @@ const base_service_1 = __importDefault(require("./base-service"));

*/
async GetBass(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetBass', input); }
GetBass(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetBass', input); }
/**

@@ -49,4 +49,4 @@ * Get equalizer value

*/
async GetEQ(input) { return await this.SoapRequestWithBody('GetEQ', input); }
async GetHeadphoneConnected(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetHeadphoneConnected', input); }
GetEQ(input) { return this.SoapRequestWithBody('GetEQ', input); }
GetHeadphoneConnected(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetHeadphoneConnected', input); }
/**

@@ -58,7 +58,7 @@ * Whether or not Loudness is on

*/
async GetLoudness(input) { return await this.SoapRequestWithBody('GetLoudness', input); }
async GetMute(input) { return await this.SoapRequestWithBody('GetMute', input); }
async GetOutputFixed(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetOutputFixed', input); }
async GetRoomCalibrationStatus(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetRoomCalibrationStatus', input); }
async GetSupportsOutputFixed(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetSupportsOutputFixed', input); }
GetLoudness(input) { return this.SoapRequestWithBody('GetLoudness', input); }
GetMute(input) { return this.SoapRequestWithBody('GetMute', input); }
GetOutputFixed(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetOutputFixed', input); }
GetRoomCalibrationStatus(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetRoomCalibrationStatus', input); }
GetSupportsOutputFixed(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetSupportsOutputFixed', input); }
/**

@@ -69,3 +69,3 @@ * Get treble

*/
async GetTreble(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('GetTreble', input); }
GetTreble(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('GetTreble', input); }
/**

@@ -77,9 +77,9 @@ * Get volume

*/
async GetVolume(input) { return await this.SoapRequestWithBody('GetVolume', input); }
async GetVolumeDB(input) { return await this.SoapRequestWithBody('GetVolumeDB', input); }
async GetVolumeDBRange(input) { return await this.SoapRequestWithBody('GetVolumeDBRange', input); }
async RampToVolume(input) { return await this.SoapRequestWithBody('RampToVolume', input); }
async ResetBasicEQ(input = { InstanceID: 0 }) { return await this.SoapRequestWithBody('ResetBasicEQ', input); }
async ResetExtEQ(input) { return await this.SoapRequestWithBodyNoResponse('ResetExtEQ', input); }
async RestoreVolumePriorToRamp(input) { return await this.SoapRequestWithBodyNoResponse('RestoreVolumePriorToRamp', input); }
GetVolume(input) { return this.SoapRequestWithBody('GetVolume', input); }
GetVolumeDB(input) { return this.SoapRequestWithBody('GetVolumeDB', input); }
GetVolumeDBRange(input) { return this.SoapRequestWithBody('GetVolumeDBRange', input); }
RampToVolume(input) { return this.SoapRequestWithBody('RampToVolume', input); }
ResetBasicEQ(input = { InstanceID: 0 }) { return this.SoapRequestWithBody('ResetBasicEQ', input); }
ResetExtEQ(input) { return this.SoapRequestWithBodyNoResponse('ResetExtEQ', input); }
RestoreVolumePriorToRamp(input) { return this.SoapRequestWithBodyNoResponse('RestoreVolumePriorToRamp', input); }
/**

@@ -91,4 +91,4 @@ * Set bass level, between -10 and 10

*/
async SetBass(input) { return await this.SoapRequestWithBodyNoResponse('SetBass', input); }
async SetChannelMap(input) { return await this.SoapRequestWithBodyNoResponse('SetChannelMap', input); }
SetBass(input) { return this.SoapRequestWithBodyNoResponse('SetBass', input); }
SetChannelMap(input) { return this.SoapRequestWithBodyNoResponse('SetChannelMap', input); }
/**

@@ -102,3 +102,3 @@ * Set equalizer value for different types

*/
async SetEQ(input) { return await this.SoapRequestWithBodyNoResponse('SetEQ', input); }
SetEQ(input) { return this.SoapRequestWithBodyNoResponse('SetEQ', input); }
/**

@@ -111,8 +111,8 @@ * Set loudness on / off

*/
async SetLoudness(input) { return await this.SoapRequestWithBodyNoResponse('SetLoudness', input); }
async SetMute(input) { return await this.SoapRequestWithBodyNoResponse('SetMute', input); }
async SetOutputFixed(input) { return await this.SoapRequestWithBodyNoResponse('SetOutputFixed', input); }
async SetRelativeVolume(input) { return await this.SoapRequestWithBody('SetRelativeVolume', input); }
async SetRoomCalibrationStatus(input) { return await this.SoapRequestWithBodyNoResponse('SetRoomCalibrationStatus', input); }
async SetRoomCalibrationX(input) { return await this.SoapRequestWithBodyNoResponse('SetRoomCalibrationX', input); }
SetLoudness(input) { return this.SoapRequestWithBodyNoResponse('SetLoudness', input); }
SetMute(input) { return this.SoapRequestWithBodyNoResponse('SetMute', input); }
SetOutputFixed(input) { return this.SoapRequestWithBodyNoResponse('SetOutputFixed', input); }
SetRelativeVolume(input) { return this.SoapRequestWithBody('SetRelativeVolume', input); }
SetRoomCalibrationStatus(input) { return this.SoapRequestWithBodyNoResponse('SetRoomCalibrationStatus', input); }
SetRoomCalibrationX(input) { return this.SoapRequestWithBodyNoResponse('SetRoomCalibrationX', input); }
/**

@@ -124,5 +124,5 @@ * Set treble level

*/
async SetTreble(input) { return await this.SoapRequestWithBodyNoResponse('SetTreble', input); }
async SetVolume(input) { return await this.SoapRequestWithBodyNoResponse('SetVolume', input); }
async SetVolumeDB(input) { return await this.SoapRequestWithBodyNoResponse('SetVolumeDB', input); }
SetTreble(input) { return this.SoapRequestWithBodyNoResponse('SetTreble', input); }
SetVolume(input) { return this.SoapRequestWithBodyNoResponse('SetVolume', input); }
SetVolumeDB(input) { return this.SoapRequestWithBodyNoResponse('SetVolumeDB', input); }
// #endregion

@@ -129,0 +129,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import { SonosUpnpError } from '../models/sonos-upnp-error';

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -35,9 +35,9 @@ const base_service_1 = __importDefault(require("./base-service"));

// #region actions
async AddAccountX(input) { return await this.SoapRequestWithBody('AddAccountX', input); }
async AddOAuthAccountX(input) { return await this.SoapRequestWithBody('AddOAuthAccountX', input); }
async DoPostUpdateTasks() { return await this.SoapRequestNoResponse('DoPostUpdateTasks'); }
async EditAccountMd(input) { return await this.SoapRequestWithBodyNoResponse('EditAccountMd', input); }
async EditAccountPasswordX(input) { return await this.SoapRequestWithBodyNoResponse('EditAccountPasswordX', input); }
async EnableRDM(input) { return await this.SoapRequestWithBodyNoResponse('EnableRDM', input); }
async GetRDM() { return await this.SoapRequest('GetRDM'); }
AddAccountX(input) { return this.SoapRequestWithBody('AddAccountX', input); }
AddOAuthAccountX(input) { return this.SoapRequestWithBody('AddOAuthAccountX', input); }
DoPostUpdateTasks() { return this.SoapRequestNoResponse('DoPostUpdateTasks'); }
EditAccountMd(input) { return this.SoapRequestWithBodyNoResponse('EditAccountMd', input); }
EditAccountPasswordX(input) { return this.SoapRequestWithBodyNoResponse('EditAccountPasswordX', input); }
EnableRDM(input) { return this.SoapRequestWithBodyNoResponse('EnableRDM', input); }
GetRDM() { return this.SoapRequest('GetRDM'); }
/**

@@ -49,6 +49,6 @@ * Get a saved string.

*/
async GetString(input) { return await this.SoapRequestWithBody('GetString', input); }
async GetWebCode(input) { return await this.SoapRequestWithBody('GetWebCode', input); }
async ProvisionCredentialedTrialAccountX(input) { return await this.SoapRequestWithBody('ProvisionCredentialedTrialAccountX', input); }
async RefreshAccountCredentialsX(input) { return await this.SoapRequestWithBodyNoResponse('RefreshAccountCredentialsX', input); }
GetString(input) { return this.SoapRequestWithBody('GetString', input); }
GetWebCode(input) { return this.SoapRequestWithBody('GetWebCode', input); }
ProvisionCredentialedTrialAccountX(input) { return this.SoapRequestWithBody('ProvisionCredentialedTrialAccountX', input); }
RefreshAccountCredentialsX(input) { return this.SoapRequestWithBodyNoResponse('RefreshAccountCredentialsX', input); }
/**

@@ -60,7 +60,7 @@ * Remove a saved string

*/
async Remove(input) { return await this.SoapRequestWithBodyNoResponse('Remove', input); }
async RemoveAccount(input) { return await this.SoapRequestWithBodyNoResponse('RemoveAccount', input); }
async ReplaceAccountX(input) { return await this.SoapRequestWithBody('ReplaceAccountX', input); }
async ResetThirdPartyCredentials() { return await this.SoapRequestNoResponse('ResetThirdPartyCredentials'); }
async SetAccountNicknameX(input) { return await this.SoapRequestWithBodyNoResponse('SetAccountNicknameX', input); }
Remove(input) { return this.SoapRequestWithBodyNoResponse('Remove', input); }
RemoveAccount(input) { return this.SoapRequestWithBodyNoResponse('RemoveAccount', input); }
ReplaceAccountX(input) { return this.SoapRequestWithBody('ReplaceAccountX', input); }
ResetThirdPartyCredentials() { return this.SoapRequestNoResponse('ResetThirdPartyCredentials'); }
SetAccountNicknameX(input) { return this.SoapRequestWithBodyNoResponse('SetAccountNicknameX', input); }
/**

@@ -73,3 +73,3 @@ * Save a string in the system

*/
async SetString(input) { return await this.SoapRequestWithBodyNoResponse('SetString', input); }
SetString(input) { return this.SoapRequestWithBodyNoResponse('SetString', input); }
// #endregion

@@ -76,0 +76,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -28,10 +28,10 @@ const base_service_1 = __importDefault(require("./base-service"));

// #region actions
async Next(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('Next', input); }
async Pause(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('Pause', input); }
async Play(input) { return await this.SoapRequestWithBodyNoResponse('Play', input); }
async Previous(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('Previous', input); }
async SetVolume(input) { return await this.SoapRequestWithBodyNoResponse('SetVolume', input); }
async StartTransmission(input) { return await this.SoapRequestWithBody('StartTransmission', input); }
async Stop(input = { InstanceID: 0 }) { return await this.SoapRequestWithBodyNoResponse('Stop', input); }
async StopTransmission(input) { return await this.SoapRequestWithBodyNoResponse('StopTransmission', input); }
Next(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('Next', input); }
Pause(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('Pause', input); }
Play(input) { return this.SoapRequestWithBodyNoResponse('Play', input); }
Previous(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('Previous', input); }
SetVolume(input) { return this.SoapRequestWithBodyNoResponse('SetVolume', input); }
StartTransmission(input) { return this.SoapRequestWithBody('StartTransmission', input); }
Stop(input = { InstanceID: 0 }) { return this.SoapRequestWithBodyNoResponse('Stop', input); }
StopTransmission(input) { return this.SoapRequestWithBodyNoResponse('StopTransmission', input); }
// #endregion

@@ -38,0 +38,0 @@ responseProperties() {

@@ -7,3 +7,3 @@ /**

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -10,0 +10,0 @@ import BaseService from './base-service';

@@ -13,3 +13,3 @@ "use strict";

*
* This file is generated, do not edit manually. https://svrooij.io/sonos-api-docs
* This file is generated, do not edit manually. https://sonos.svrooij.io/
*/

@@ -35,8 +35,8 @@ const base_service_1 = __importDefault(require("./base-service"));

// #region actions
async BeginSoftwareUpdate(input) { return await this.SoapRequestWithBodyNoResponse('BeginSoftwareUpdate', input); }
async CheckForUpdate(input) { return await this.SoapRequestWithBody('CheckForUpdate', input); }
BeginSoftwareUpdate(input) { return this.SoapRequestWithBodyNoResponse('BeginSoftwareUpdate', input); }
CheckForUpdate(input) { return this.SoapRequestWithBody('CheckForUpdate', input); }
/**
* Get information about the current Zone
*/
async GetZoneGroupAttributes() { return await this.SoapRequest('GetZoneGroupAttributes'); }
GetZoneGroupAttributes() { return this.SoapRequest('GetZoneGroupAttributes'); }
/**

@@ -46,7 +46,7 @@ * Get all the Sonos groups, (as XML)

*/
async GetZoneGroupState() { return await this.SoapRequest('GetZoneGroupState'); }
async RegisterMobileDevice(input) { return await this.SoapRequestWithBodyNoResponse('RegisterMobileDevice', input); }
async ReportAlarmStartedRunning() { return await this.SoapRequestNoResponse('ReportAlarmStartedRunning'); }
async ReportUnresponsiveDevice(input) { return await this.SoapRequestWithBodyNoResponse('ReportUnresponsiveDevice', input); }
async SubmitDiagnostics(input) { return await this.SoapRequestWithBody('SubmitDiagnostics', input); }
GetZoneGroupState() { return this.SoapRequest('GetZoneGroupState'); }
RegisterMobileDevice(input) { return this.SoapRequestWithBodyNoResponse('RegisterMobileDevice', input); }
ReportAlarmStartedRunning() { return this.SoapRequestNoResponse('ReportAlarmStartedRunning'); }
ReportUnresponsiveDevice(input) { return this.SoapRequestWithBodyNoResponse('ReportUnresponsiveDevice', input); }
SubmitDiagnostics(input) { return this.SoapRequestWithBody('SubmitDiagnostics', input); }
// #endregion

@@ -53,0 +53,0 @@ responseProperties() {

@@ -5,3 +5,3 @@ /**

* Stephan van Rooij
* https://svrooij.io/sonos-api-docs
* https://sonos.svrooij.io/
*

@@ -54,3 +54,3 @@ * This file is generated, do not edit manually.

/**
* Service that controls stuff related to transport (play/pause/next/special urls)
* Service that controls stuff related to transport (play/pause/next/special URLs)
* will be initialized on first use.

@@ -57,0 +57,0 @@ *

@@ -10,3 +10,3 @@ "use strict";

* Stephan van Rooij
* https://svrooij.io/sonos-api-docs
* https://sonos.svrooij.io/
*

@@ -70,3 +70,3 @@ * This file is generated, do not edit manually.

/**
* Service that controls stuff related to transport (play/pause/next/special urls)
* Service that controls stuff related to transport (play/pause/next/special URLs)
* will be initialized on first use.

@@ -73,0 +73,0 @@ *

@@ -22,2 +22,3 @@ /// <reference types="node" />

private groupName;
private groupId;
private coordinator;

@@ -37,2 +38,3 @@ /**

managerEvents: EventEmitter;
groupId?: string;
} | undefined);

@@ -357,2 +359,10 @@ /**

get GroupName(): string | undefined;
/**
* Get the GroupId, if device is created by the SonosManager.
*
* @readonly
* @type {(string | undefined)}
* @memberof SonosDevice
*/
get GroupId(): string | undefined;
private currentPlayMode?;

@@ -359,0 +369,0 @@ /**

@@ -8,3 +8,2 @@ "use strict";

const node_fetch_1 = __importDefault(require("node-fetch"));
const ws_1 = __importDefault(require("ws"));
const sonos_device_base_1 = __importDefault(require("./sonos-device-base"));

@@ -53,2 +52,3 @@ const models_1 = require("./models");

this.groupName = groupConfig.name;
this.groupId = groupConfig.groupId;
if (groupConfig.coordinator !== undefined && uuid !== groupConfig.coordinator.uuid) {

@@ -569,2 +569,3 @@ this.coordinator = groupConfig.coordinator;

async PlayNotificationAudioClip(options) {
var _a, _b;
this.debug('PlayNotificationAudioClip(%o)', options);

@@ -577,31 +578,27 @@ if (options.onlyWhenPlaying === true && this.CurrentTransportStateSimple === models_1.TransportState.Stopped) {

}
if (!this.uuid.startsWith('RINCON')) {
await this.LoadUuid(true);
}
const previousValue = process.env.NODE_TLS_REJECT_UNAUTHORIZED;
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
// Have no idea if this should be public
// https://github.com/bencevans/node-sonos/issues/530#issuecomment-1430039043
const apiKey = '123e4567-e89b-12d3-a456-426655440000';
return new Promise((resolve, reject) => {
const ws = new ws_1.default(`wss://${this.host}:1443/websocket/api`, 'v1.api.smartspeaker.audio', {
headers: {
'X-Sonos-Api-Key': apiKey,
},
// Ignore certificate errors
rejectUnauthorized: false,
});
ws.on('error', (err) => {
reject(err);
});
// On socket opened send a message, and close the socket
ws.on('open', () => {
var _a, _b;
ws.send(`[{"namespace":"audioClip:1","command":"loadAudioClip","playerId":"${this.uuid}","sessionId":null,"cmdId":null},{"name": "Sonos TS Notification", "appId": "io.svrooij.sonos-ts", "streamUrl": "${options.trackUri}", "volume": ${(_b = (_a = options.volume) !== null && _a !== void 0 ? _a : this.volume) !== null && _b !== void 0 ? _b : 25} }]`, (err) => {
ws.close();
if (err) {
reject(err);
return;
}
resolve(true);
});
});
const body = {
name: 'Sonos TS Notification',
appId: 'io.svrooij.sonos-ts',
streamUrl: options.trackUri,
volume: (_b = (_a = options.volume) !== null && _a !== void 0 ? _a : this.volume) !== null && _b !== void 0 ? _b : 25,
};
return (0, node_fetch_1.default)(`https://${this.host}:1443/api/v1/players/local/audioClip`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Sonos-Api-Key': apiKey,
},
body: JSON.stringify(body),
}).then((response) => {
if (response.ok) {
return true;
}
throw new Error(`Playing AudioClip failed ${response.status} ${response.statusText}`);
}).finally(() => {
process.env.NODE_TLS_REJECT_UNAUTHORIZED = previousValue;
});

@@ -846,2 +843,9 @@ }

}
if (data.groupdId && data.groupdId !== this.groupId) {
this.groupId = data.groupdId;
this.debug('GroupId changed for %s to %s', this.uuid, this.groupId);
if (this.events !== undefined) {
this.events.emit(models_1.SonosEvents.GroupId, this.groupId);
}
}
}

@@ -869,2 +873,12 @@ /**

/**
* Get the GroupId, if device is created by the SonosManager.
*
* @readonly
* @type {(string | undefined)}
* @memberof SonosDevice
*/
get GroupId() {
return this.groupId;
}
/**
* Current play mode, only set when subscribed to events.

@@ -871,0 +885,0 @@ *

@@ -93,3 +93,3 @@ "use strict";

groups.forEach((g) => {
const coordinator = new sonos_device_1.default(g.coordinator.host, g.coordinator.port, g.coordinator.uuid, g.coordinator.name, { name: g.name, managerEvents: this.events });
const coordinator = new sonos_device_1.default(g.coordinator.host, g.coordinator.port, g.coordinator.uuid, g.coordinator.name, { name: g.name, managerEvents: this.events, groupId: g.groupId });
if (this.devices.findIndex((v) => v.Uuid === coordinator.Uuid) === -1)

@@ -100,3 +100,3 @@ this.devices.push(coordinator);

if (this.devices.findIndex((v) => v.Uuid === m.uuid) === -1) {
this.devices.push(new sonos_device_1.default(m.host, m.port, m.uuid, m.name, { coordinator: m.uuid === g.coordinator.uuid ? undefined : coordinator, name: g.name, managerEvents: this.events }));
this.devices.push(new sonos_device_1.default(m.host, m.port, m.uuid, m.name, { coordinator: m.uuid === g.coordinator.uuid ? undefined : coordinator, name: g.name, managerEvents: this.events, groupId: g.groupId }));
}

@@ -118,3 +118,3 @@ });

if (coordinator === undefined) {
coordinator = new sonos_device_1.default(g.coordinator.host, g.coordinator.port, g.coordinator.uuid, g.coordinator.name, { coordinator: undefined, name: g.name, managerEvents: this.events });
coordinator = new sonos_device_1.default(g.coordinator.host, g.coordinator.port, g.coordinator.uuid, g.coordinator.name, { coordinator: undefined, name: g.name, managerEvents: this.events, groupId: g.groupId });
this.devices.push(coordinator);

@@ -127,3 +127,3 @@ this.events.emit('NewDevice', coordinator);

.forEach((m) => {
const newDevice = new sonos_device_1.default(m.host, m.port, m.uuid, m.name, { coordinator: m.uuid === g.coordinator.uuid ? undefined : coordinator, name: g.name, managerEvents: this.events });
const newDevice = new sonos_device_1.default(m.host, m.port, m.uuid, m.name, { coordinator: m.uuid === g.coordinator.uuid ? undefined : coordinator, name: g.name, managerEvents: this.events, groupId: g.groupId });
this.devices.push(newDevice);

@@ -133,3 +133,3 @@ this.events.emit('NewDevice', newDevice);

g.members.forEach((m) => {
this.events.emit(m.uuid, { coordinator: g.coordinator.uuid === m.uuid ? undefined : coordinator, name: g.name });
this.events.emit(m.uuid, { coordinator: g.coordinator.uuid === m.uuid ? undefined : coordinator, name: g.name, groupId: g.groupId });
});

@@ -136,0 +136,0 @@ });

{
"name": "@svrooij/sonos",
"version": "2.6.0-beta.7",
"version": "2.6.0-beta.8",
"description": "A node library to control your sonos devices, written in typescript",

@@ -9,3 +9,5 @@ "main": "lib/index.js",

"build": "tsc",
"generate": "npx @svrooij/sonos-docs combine && npx @svrooij/sonos-docs generate ./.generator/ts/ ./",
"generate": "npm run generate:prepare && npm run generate:files",
"generate:prepare": "npx @svrooij/sonos-docs@1.3.0 combine",
"generate:files": "npx @svrooij/sonos-docs@1.3.0 generate ./.generator/ts/ ./",
"lint": "eslint ./src/*.ts ./src/**/*.ts",

@@ -29,3 +31,3 @@ "lint:fix": "eslint ./src/*.ts ./src/**/*.ts --fix",

],
"author": "Stephan van Rooij <sonos@svrooij.io> (https://svrooij.io)",
"author": "Stephan van Rooij <stephan+sonos@svrooij.io> (https://svrooij.io)",
"license": "MIT",

@@ -35,3 +37,3 @@ "bugs": {

},
"homepage": "https://svrooij.io/node-sonos-ts/",
"homepage": "https://sonos-ts.svrooij.io/",
"devDependencies": {

@@ -38,0 +40,0 @@ "@types/chai": "^4.2.16",

@@ -9,3 +9,2 @@ # Sonos (the typescript version)

[![Join us on Discord][badge_discord]][link_discord]
[![Support me on Github][badge_sponsor]][link_sponsor]

@@ -25,3 +24,3 @@ [![Follow on Twitter][badge_twitter]][link_twitter]

- [x] Auto generated client (supporting all features the normal app does). [Sonos api documentation and generator](https://svrooij.io/sonos-api-docs/)
- [x] Auto generated client (supporting all features the normal app does). [Sonos api documentation and generator][link_sonos-docs]
- [x] Auto discovery or one known device as starting point.

@@ -38,7 +37,7 @@ - [x] Support for logical devices (grouped speakers) from the start.

See **[Documentation](https://svrooij.github.io/node-sonos-ts/getting-started.html)**
See **[Documentation](https://sonos-ts.svrooij.io/getting-started.html)**
[![Sonos typescript this library][badge_sonos-typescript]][link_sonos-typescript] [![Join us on Discord][badge_discord]][link_discord]
[![Sonos typescript this library][badge_sonos-typescript]][link_sonos-typescript]
If you need help using this library, [join us on discord][link_discord].
If you need help using this library, check out the [questions section](https://github.com/svrooij/node-sonos-ts/discussions/categories/q-a) on this repository.

@@ -124,2 +123,3 @@ ## Use Sonos manager (recommended)

|[sonos-cli](https://github.com/svrooij/sonos-cli)|[@svrooij](https://github.com/svrooij)|An experimental command line interface for your sonos devices.|
|[node-red-contrib-sonos-plus](https://github.com/hklages/node-red-contrib-sonos-plus)|[@hklages](https://github.com/hklages)|A node-red node to control your sonos devices|

@@ -134,3 +134,2 @@ Also using this library, but not in the list? Send a PR.

[![Sonos typescript this library][badge_sonos-typescript]][link_sonos-typescript]
[![Join us on Discord][badge_discord]][link_discord]
[![Support me on Github][badge_sponsor]][link_sponsor]

@@ -206,3 +205,2 @@ [![Follow on Twitter][badge_twitter]][link_twitter]

[badge_coverage]: https://img.shields.io/coverallsCoverage/github/svrooij/node-sonos-ts?style=for-the-badge&branch=beta
[badge_discord]: https://img.shields.io/discord/782374564054564875?style=for-the-badge
[badge_issues]: https://img.shields.io/github/issues/svrooij/node-sonos-ts?style=for-the-badge

@@ -218,10 +216,9 @@ [badge_npm]: https://img.shields.io/npm/v/@svrooij/sonos?style=for-the-badge

[link_build]: https://github.com/svrooij/node-sonos-ts/actions
[link_discord]: https://discord.gg/VMtG6Ft36J
[link_issues]: https://github.com/svrooij/node-sonos-ts/issues
[link_npm]: https://www.npmjs.com/package/@svrooij/sonos
[link_sonos-cli]: https://github.com/svrooij/sonos-cli
[link_sonos-docs]: https://svrooij.io/sonos-api-docs
[link_sonos-mqtt]: https://svrooij.io/sonos2mqtt
[link_sonos-typescript]: https://svrooij.io/node-sonos-ts
[link_sonos-docs]: https://sonos.svrooij.io/
[link_sonos-mqtt]: https://sonos2mqtt.svrooij.io/
[link_sonos-typescript]: https://sonos-ts.svrooij.io/
[link_sponsor]: https://github.com/sponsors/svrooij
[link_twitter]: https://twitter.com/svrooij
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc