From 53427e1077333861c929590ce6cb5d0003dc3296 Mon Sep 17 00:00:00 2001 From: hensm Date: Thu, 29 Apr 2021 05:07:42 +0100 Subject: [PATCH] Misc shim refactoring --- ext/src/global.d.ts | 1 + ext/src/shim/cast/Session.ts | 38 +-- ext/src/shim/cast/dataClasses.ts | 44 +-- ext/src/shim/cast/media/Media.ts | 172 ++++++----- ext/src/shim/cast/media/dataClasses.ts | 388 ++++++++++++------------- 5 files changed, 320 insertions(+), 323 deletions(-) diff --git a/ext/src/global.d.ts b/ext/src/global.d.ts index 8b1ff97..cb568c5 100644 --- a/ext/src/global.d.ts +++ b/ext/src/global.d.ts @@ -3,6 +3,7 @@ declare const MIRRORING_APP_ID: string; declare const APPLICATION_NAME: string; declare const APPLICATION_VERSION: string; +declare type Nullable = T | null; declare interface Object { // eslint-disable-next-line @typescript-eslint/ban-types diff --git a/ext/src/shim/cast/Session.ts b/ext/src/shim/cast/Session.ts index fe5f59a..c40e671 100644 --- a/ext/src/shim/cast/Session.ts +++ b/ext/src/shim/cast/Session.ts @@ -143,12 +143,12 @@ export default class Session { } }) - public media: Media[]; - public namespaces: Array<{ name: string }>; - public senderApps: SenderApplication[]; - public status: SessionStatus; - public statusText: string | null; - public transportId: string; + media: Media[]; + namespaces: Array<{ name: string }>; + senderApps: SenderApplication[]; + status: SessionStatus; + statusText: Nullable; + transportId: string; constructor( public sessionId: string @@ -182,11 +182,11 @@ export default class Session { } - public addMediaListener(_mediaListener: MediaListener) { + addMediaListener(_mediaListener: MediaListener) { logger.info("STUB :: Session#addMediaListener"); } - public addMessageListener( + addMessageListener( namespace: string , listener: MessageListener) { @@ -205,18 +205,18 @@ export default class Session { }); } - public addUpdateListener(listener: UpdateListener) { + addUpdateListener(listener: UpdateListener) { this.#updateListeners.add(listener); } - public leave( + leave( _successCallback?: SuccessCallback , _errorCallback?: ErrorCallback): void { logger.info("STUB :: Session#leave"); } - public loadMedia( + loadMedia( loadRequest: LoadRequest , successCallback?: LoadSuccessCallback , errorCallback?: ErrorCallback): void { @@ -274,7 +274,7 @@ export default class Session { }); } - public queueLoad( + queueLoad( _queueLoadRequest: QueueLoadRequest , _successCallback?: LoadSuccessCallback , _errorCallback?: ErrorCallback): void { @@ -282,25 +282,25 @@ export default class Session { logger.info("STUB :: Session#queueLoad"); } - public removeMediaListener(_mediaListener: MediaListener): void { + removeMediaListener(_mediaListener: MediaListener): void { logger.info("STUB :: Session#removeMediaListener"); } - public removeMessageListener( + removeMessageListener( namespace: string , listener: MessageListener): void { this.#messageListeners.get(namespace)?.delete(listener); } - public removeUpdateListener( + removeUpdateListener( _namespace: string , listener: UpdateListener): void { this.#updateListeners.delete(listener); } - public sendMessage( + sendMessage( namespace: string , message: {} | string , successCallback?: SuccessCallback @@ -324,7 +324,7 @@ export default class Session { ]); } - public setReceiverMuted( + setReceiverMuted( muted: boolean , successCallback?: SuccessCallback , errorCallback?: ErrorCallback) { @@ -336,7 +336,7 @@ export default class Session { .catch(errorCallback); } - public setReceiverVolumeLevel( + setReceiverVolumeLevel( newLevel: number , successCallback?: SuccessCallback , errorCallback?: ErrorCallback): void { @@ -348,7 +348,7 @@ export default class Session { .catch(errorCallback); } - public stop( + stop( successCallback?: SuccessCallback , errorCallback?: ErrorCallback): void { diff --git a/ext/src/shim/cast/dataClasses.ts b/ext/src/shim/cast/dataClasses.ts index e2c9cee..7ee7033 100644 --- a/ext/src/shim/cast/dataClasses.ts +++ b/ext/src/shim/cast/dataClasses.ts @@ -32,41 +32,41 @@ export class CredentialsData { export class DialRequest { constructor( public appName: string - , public launchParameter: (string | null) = null) {} + , public launchParameter: Nullable = null) {} } export class Error { constructor( public code: string - , public description: (string | null) = null + , public description: Nullable = null , public details: any = null) {} } export class Image { - public width: (number | null) = null; - public height: (number | null) = null; + width: Nullable = null; + height: Nullable = null; constructor(public url: string) {} } export class Receiver { - public displayStatus: (ReceiverDisplayStatus | null) = null; - public isActiveInput: (boolean | null) = null; - public receiverType: string = ReceiverType.CAST; + displayStatus: Nullable = null; + isActiveInput: Nullable = null; + receiverType: string = ReceiverType.CAST; constructor( public label: string , public friendlyName: string , public capabilities: Capability[] = [] - , public volume: (Volume | null) = null) {} + , public volume: Nullable = null) {} } export class ReceiverDisplayStatus { - public showStop: (boolean | null) = null; + showStop: Nullable = null; constructor( public statusText: string @@ -75,15 +75,15 @@ export class ReceiverDisplayStatus { export class SenderApplication { - public packageId: (string | null) = null; - public url: (string | null) = null; + packageId: Nullable = null; + url: Nullable = null; constructor(public platform: string) {} } export class SessionRequest { - public language: (string | null) = null; + language: Nullable = null; constructor( public appId: string @@ -91,24 +91,24 @@ export class SessionRequest { , Capability.AUDIO_OUT ] , public requestSessionTimeout = (new Timeout()).requestSession , public androidReceiverCompatible = false - , public credentialsData: (CredentialsData | null) = null) {} + , public credentialsData: Nullable = null) {} } export class Timeout { - public leaveSession = 3000; - public requestSession = 60000; - public sendCustomMessage = 3000; - public setReceiverVolume = 3000; - public stopSession = 3000; + leaveSession = 3000; + requestSession = 60000; + sendCustomMessage = 3000; + setReceiverVolume = 3000; + stopSession = 3000; } export class Volume { - public controlType?: VolumeControlType; - public stepInterval?: number; + controlType?: VolumeControlType; + stepInterval?: number; constructor( - public level: (number | null) = null - , public muted: (boolean | null) = null) {} + public level: Nullable = null + , public muted: Nullable = null) {} } diff --git a/ext/src/shim/cast/media/Media.ts b/ext/src/shim/cast/media/Media.ts index 28b6d87..9d4226b 100644 --- a/ext/src/shim/cast/media/Media.ts +++ b/ext/src/shim/cast/media/Media.ts @@ -103,24 +103,24 @@ export default class Media { } }); - public activeTrackIds: (number[] | null) = null; - public breakStatus?: BreakStatus; - public currentItemId: (number | null) = null; - public customData: any = null; - public currentTime = 0; - public idleReason: (string | null) = null; - public items: (QueueItem[] | null) = null; - public liveSeekableRange?: LiveSeekableRange; - public loadingItemId: (number | null) = null; - public media: (MediaInfo | null) = null; - public playbackRate = 1; - public playerState: string = PlayerState.IDLE; - public preloadedItemId: (number | null) = null; - public queueData?: QueueData; - public repeatMode: string = RepeatMode.OFF; - public supportedMediaCommands: string[] = []; - public videoInfo?: VideoInformation; - public volume: Volume = new Volume(); + activeTrackIds: Nullable = null; + breakStatus?: BreakStatus; + currentItemId: Nullable = null; + customData: any = null; + currentTime = 0; + idleReason: Nullable = null; + items: Nullable = null; + liveSeekableRange?: LiveSeekableRange; + loadingItemId: Nullable = null; + media: Nullable = null; + playbackRate = 1; + playerState: string = PlayerState.IDLE; + preloadedItemId: Nullable = null; + queueData?: QueueData; + repeatMode: string = RepeatMode.OFF; + supportedMediaCommands: string[] = []; + videoInfo?: VideoInformation; + volume: Volume = new Volume(); constructor( @@ -139,14 +139,14 @@ export default class Media { }); } - public addUpdateListener(listener: UpdateListener): void { + addUpdateListener(listener: UpdateListener) { this.#updateListeners.add(listener); } - public editTracksInfo( + editTracksInfo( editTracksInfoRequest: EditTracksInfoRequest , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { this.#sendMediaMessage( { type: "EDIT_TRACKS_INFO", ...editTracksInfoRequest }) @@ -154,26 +154,32 @@ export default class Media { .catch(errorCallback); } - public getEstimatedBreakClipTime() { + getEstimatedBreakClipTime() { logger.info("STUB :: Media#getEstimatedBreakClipTime"); } - public getEstimatedBreakTime() { + getEstimatedBreakTime() { logger.info("STUB :: Media#getEstimatedBreakTime"); } - public getEstimatedLiveSeekableRange() { + getEstimatedLiveSeekableRange() { logger.info("STUB :: Media#getEstimatedLiveSeekableRange"); } - public getEstimatedTime(): number { + /** + * Estimate the current playback position based on the last + * time reported by the receiver and the current playback + * rate. + */ + getEstimatedTime(): number { if (this.playerState === PlayerState.PLAYING) { let estimatedTime = this.currentTime + (this.playbackRate * ( Date.now() - this.#lastCurrentTime) / 1000); // Enforce valid range - if (this.media?.duration && estimatedTime > this.media.duration) { - estimatedTime = this.media.duration; - } else if (estimatedTime < 0) { + if (estimatedTime < 0) { estimatedTime = 0; + } else if (this.media?.duration && + estimatedTime > this.media.duration) { + estimatedTime = this.media.duration; } return estimatedTime; @@ -182,14 +188,14 @@ export default class Media { return this.currentTime; } - public getStatus( - getStatusRequest?: GetStatusRequest + /** + * Request media status from the receiver application. This + * will also trigger any added media update listeners. + */ + getStatus( + getStatusRequest = new GetStatusRequest() , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { - - if (!getStatusRequest) { - getStatusRequest = new GetStatusRequest(); - } + , errorCallback?: ErrorCallback) { this.#sendMediaMessage( { type: "MEDIA_GET_STATUS", ...getStatusRequest }) @@ -197,14 +203,10 @@ export default class Media { .catch(errorCallback); } - public pause( - pauseRequest?: PauseRequest + pause( + pauseRequest = new PauseRequest() , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { - - if (!pauseRequest) { - pauseRequest = new PauseRequest(); - } + , errorCallback?: ErrorCallback) { this.#sendMediaMessage( { type: "PAUSE", ...pauseRequest }) @@ -212,14 +214,10 @@ export default class Media { .catch(errorCallback); } - public play( - playRequest?: PlayRequest + play( + playRequest = new PlayRequest() , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { - - if (!playRequest) { - playRequest = new PlayRequest(); - } + , errorCallback?: ErrorCallback) { this.#sendMediaMessage( { type: "PLAY", ...playRequest }) @@ -227,20 +225,20 @@ export default class Media { .catch(errorCallback); } - public queueAppendItem( + queueAppendItem( item: QueueItem , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { this.#sendMediaMessage(new QueueInsertItemsRequest([ item ])) .then(successCallback) .catch(errorCallback); } - public queueInsertItems( + queueInsertItems( queueInsertItemsRequest: QueueInsertItemsRequest , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { this.#sendMediaMessage(queueInsertItemsRequest) .then(successCallback) @@ -248,10 +246,10 @@ export default class Media { } - public queueJumpToItem( + queueJumpToItem( itemId: number , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { if (this.items?.find(item => item.itemId === itemId)) { const jumpRequest = new QueueJumpRequest(); @@ -263,12 +261,13 @@ export default class Media { } } - public queueMoveItemToNewIndex( + queueMoveItemToNewIndex( itemId: number , newIndex: number , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { + // Return early if not in queue if (!this.items) { return; } @@ -302,9 +301,9 @@ export default class Media { } } - public queueNext( + queueNext( successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { const jumpRequest = new QueueJumpRequest(); jumpRequest.jump = 1; @@ -314,9 +313,9 @@ export default class Media { .catch(errorCallback); } - public queuePrev( + queuePrev( successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { const jumpRequest = new QueueJumpRequest(); jumpRequest.jump = -1; @@ -326,46 +325,43 @@ export default class Media { .catch(errorCallback); } - public queueRemoveItem( + queueRemoveItem( itemId: number , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { const item = this.items?.find(item => item.itemId === itemId); if (item) { - const queueRemoveItemsRequest = - new QueueRemoveItemsRequest([ itemId ]); - - this.#sendMediaMessage(queueRemoveItemsRequest) - .then(successCallback) - .catch(errorCallback); + this.queueRemoveItems( + new QueueRemoveItemsRequest([ itemId ]) + , successCallback, errorCallback); } } - public queueRemoveItems( + queueRemoveItems( queueRemoveItemsRequest: QueueRemoveItemsRequest , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { - this.#sendMediaMessage(queueRemoveItemsRequest) - .then(successCallback) - .catch(errorCallback); + this.#sendMediaMessage(queueRemoveItemsRequest) + .then(successCallback) + .catch(errorCallback); } - public queueReorderItems( + queueReorderItems( queueReorderItemsRequest: QueueReorderItemsRequest , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { this.#sendMediaMessage(queueReorderItemsRequest) .then(successCallback) .catch(errorCallback); } - public queueSetRepeatMode( + queueSetRepeatMode( repeatMode: string , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { const setPropertiesRequest = new QueueSetPropertiesRequest(); setPropertiesRequest.repeatMode = repeatMode; @@ -375,24 +371,24 @@ export default class Media { .catch(errorCallback); } - public queueUpdateItems( + queueUpdateItems( queueUpdateItemsRequest: QueueUpdateItemsRequest , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { this.#sendMediaMessage(queueUpdateItemsRequest) .then(successCallback) .catch(errorCallback); } - public removeUpdateListener(listener: UpdateListener) { + removeUpdateListener(listener: UpdateListener) { this.#updateListeners.delete(listener); } - public seek( + seek( seekRequest: SeekRequest , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { this.#sendMediaMessage( { type: "SEEK", ...seekRequest }) @@ -400,10 +396,10 @@ export default class Media { .catch(errorCallback); } - public setVolume( + setVolume( volumeRequest: VolumeRequest , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { this.#sendMediaMessage( { type: "MEDIA_SET_VOLUME", ...volumeRequest }) @@ -411,10 +407,10 @@ export default class Media { .catch(errorCallback); } - public stop( + stop( stopRequest?: StopRequest , successCallback?: SuccessCallback - , errorCallback?: ErrorCallback): void { + , errorCallback?: ErrorCallback) { if (!stopRequest) { stopRequest = new StopRequest(); @@ -433,7 +429,7 @@ export default class Media { }).catch(errorCallback); } - public supportsCommand(command: string): boolean { + supportsCommand(command: string): boolean { return this.supportedMediaCommands.includes(command); } diff --git a/ext/src/shim/cast/media/dataClasses.ts b/ext/src/shim/cast/media/dataClasses.ts index bda34ee..6fc0abc 100644 --- a/ext/src/shim/cast/media/dataClasses.ts +++ b/ext/src/shim/cast/media/dataClasses.ts @@ -13,28 +13,28 @@ import { ContainerType export class AudiobookChapterMediaMetadata { - public bookTitle?: string; - public chapterNumber?: number; - public chapterTitle?: string; - public images?: Image[]; - public subtitle?: string; - public title?: string; - public type = MetadataType.AUDIOBOOK_CHAPTER; + bookTitle?: string; + chapterNumber?: number; + chapterTitle?: string; + images?: Image[]; + subtitle?: string; + title?: string; + type = MetadataType.AUDIOBOOK_CHAPTER; } export class AudiobookContainerMetadata { - public authors?: string[]; - public narrators?: string[]; - public publisher?: string; - public releaseDate?: string; + authors?: string[]; + narrators?: string[]; + publisher?: string; + releaseDate?: string; } export class Break { - public duration?: number; - public isEmbedded?: boolean; - public isWatched = false; + duration?: number; + isEmbedded?: boolean; + isWatched = false; constructor( public id: string @@ -44,36 +44,36 @@ export class Break { export class BreakClip { - public clickThroughUrl?: string; - public contentId?: string; - public contentType?: string; - public contentUrl?: string; - public customData?: {}; - public duration?: number; - public hlsSegmentFormat?: HlsSegmentFormat; - public posterUrl?: string; - public title?: string; - public vastAdsRequest?: VastAdsRequest; - public whenSkippable?: number; + clickThroughUrl?: string; + contentId?: string; + contentType?: string; + contentUrl?: string; + customData?: {}; + duration?: number; + hlsSegmentFormat?: HlsSegmentFormat; + posterUrl?: string; + title?: string; + vastAdsRequest?: VastAdsRequest; + whenSkippable?: number; constructor(public id: string) {} } export class BreakStatus { - public breakClipId?: string; - public breakId?: string; - public currentBreakClipTime?: number; - public currentBreakTime?: number; - public whenSkippable?: number; + breakClipId?: string; + breakId?: string; + currentBreakClipTime?: number; + currentBreakTime?: number; + whenSkippable?: number; } export class ContainerMetadata { - public containerDuration?: number; - public containerImages?: Image[]; - public sections?: MediaMetadata[]; - public title?: string; + containerDuration?: number; + containerImages?: Image[]; + sections?: MediaMetadata[]; + title?: string; constructor( public containerType: ContainerType = @@ -82,28 +82,28 @@ export class ContainerMetadata { export class EditTracksInfoRequest { - public requestId = 0; + requestId = 0; constructor( - public activeTrackIds: (number[] | null) = null - , public textTrackStyle: (string | null) = null) { + public activeTrackIds: Nullable = null + , public textTrackStyle: Nullable = null) { } } export class GenericMediaMetadata { - public images: (Image[] | undefined) = undefined; - public metadataType: number = MetadataType.GENERIC; - public releaseDate: (string | undefined) = undefined; - public releaseYear: (number | undefined) = undefined; - public subtitle: (string | undefined) = undefined; - public title: (string | undefined) = undefined; - public type: number = MetadataType.GENERIC; + images?: Image[]; + metadataType: number = MetadataType.GENERIC; + releaseDate?: string; + releaseYear?: number; + subtitle?: string; + title?: string; + type: number = MetadataType.GENERIC; } export class GetStatusRequest { - public customData: any = null; + customData: any = null; } @@ -117,16 +117,16 @@ export class LiveSeekableRange { export class LoadRequest { - public activeTrackIds: (number[] | null) = null; - public atvCredentials?: string; - public atvCredentialsType?: string; - public autoplay: (boolean | null) = true; - public currentTime: (number | null) = null; - public customData: any = null; - public media: MediaInfo; - public requestId = 0; - public sessionId: (string | null) = null; - public type = "LOAD"; + activeTrackIds: Nullable = null; + atvCredentials?: string; + atvCredentialsType?: string; + autoplay: Nullable = true; + currentTime: Nullable = null; + customData: any = null; + media: MediaInfo; + requestId = 0; + sessionId: Nullable = null; + type = "LOAD"; constructor(mediaInfo: MediaInfo) { this.media = mediaInfo; @@ -142,22 +142,22 @@ type Metadata = | TvShowMediaMetadata; export class MediaInfo { - public atvEntity?: string; - public breakClips?: BreakClip[]; - public breaks?: Break[]; - public customData: any = null; - public contentUrl?: string; - public duration: (number | null) = null; - public entity?: string; - public hlsSegmentFormat?: HlsSegmentFormat; - public hlsVideoSegmentFormat?: HlsVideoSegmentFormat; - public metadata: (Metadata | null) = null; - public startAbsoluteTime?: number; - public streamType: string = StreamType.BUFFERED; - public textTrackStyle: (TextTrackStyle | null) = null; - public tracks: (Track[] | null) = null; - public userActionStates?: UserActionState[]; - public vmapAdsRequest?: VastAdsRequest; + atvEntity?: string; + breakClips?: BreakClip[]; + breaks?: Break[]; + customData: any = null; + contentUrl?: string; + duration: Nullable = null; + entity?: string; + hlsSegmentFormat?: HlsSegmentFormat; + hlsVideoSegmentFormat?: HlsVideoSegmentFormat; + metadata: Nullable = null; + startAbsoluteTime?: number; + streamType: string = StreamType.BUFFERED; + textTrackStyle: Nullable = null; + tracks: Nullable = null; + userActionStates?: UserActionState[]; + vmapAdsRequest?: VastAdsRequest; constructor( public contentId: string @@ -166,13 +166,13 @@ export class MediaInfo { export class MediaMetadata { - public queueItemId?: number; - public sectionDuration?: number; - public sectionStartAbsoluteTime?: number; - public sectionStartTimeInContainer?: number; - public sectionStartTimeInMedia?: number; - public type: MetadataType; - public metadataType: MetadataType; + queueItemId?: number; + sectionDuration?: number; + sectionStartAbsoluteTime?: number; + sectionStartTimeInContainer?: number; + sectionStartTimeInMedia?: number; + type: MetadataType; + metadataType: MetadataType; constructor(type: MetadataType) { this.type = type; @@ -182,62 +182,62 @@ export class MediaMetadata { export class MovieMediaMetadata { - public images: (Image[] | undefined) = undefined; - public metadataType: number = MetadataType.MOVIE; - public releaseDate: (string | undefined) = undefined; - public releaseYear: (number | undefined) = undefined; - public studio: (string | undefined) = undefined; - public subtitle: (string | undefined) = undefined; - public title: (string | undefined) = undefined; - public type: number = MetadataType.MOVIE; + images?: Image[]; + metadataType: number = MetadataType.MOVIE; + releaseDate?: string; + releaseYear?: number; + studio?: string; + subtitle?: string; + title?: string; + type: number = MetadataType.MOVIE; } export class MusicTrackMediaMetadata { - public albumArtist: (string | undefined) = undefined; - public albumName: (string | undefined) = undefined; - public artist: (string | undefined) = undefined; - public artistName: (string | undefined) = undefined; - public composer: (string | undefined) = undefined; - public discNumber: (number | undefined) = undefined; - public images: (Image[] | undefined) = undefined; - public metadataType: number = MetadataType.MUSIC_TRACK; - public releaseDate: (string | undefined) = undefined; - public releaseYear: (number | undefined) = undefined; - public songName: (string | undefined) = undefined; - public title: (string | undefined) = undefined; - public trackNumber: (number | undefined) = undefined; - public type: number = MetadataType.MUSIC_TRACK; + albumArtist?: string; + albumName?: string; + artist?: string; + artistName?: string; + composer?: string; + discNumber?: number; + images?: Image[]; + metadataType: number = MetadataType.MUSIC_TRACK; + releaseDate?: string; + releaseYear?: number; + songName?: string; + title?: string; + trackNumber?: number; + type: number = MetadataType.MUSIC_TRACK; } export class PauseRequest { - public customData: any = null; + customData: any = null; } export class PhotoMediaMetadata { - public artist: (string | undefined) = undefined; - public creationDateTime: (string | undefined) = undefined; - public height: (number | undefined) = undefined; - public images: (Image[] | undefined) = undefined; - public latitude: (number | undefined) = undefined; - public location: (string | undefined) = undefined; - public longitude: (number | undefined) = undefined; - public metadataType: number = MetadataType.PHOTO; - public title: (string | undefined) = undefined; - public type: number = MetadataType.PHOTO; - public width: (number | undefined) = undefined; + artist?: string; + creationDateTime?: string; + height?: number; + images?: Image[]; + latitude?: number; + location?: string; + longitude?: number; + metadataType: number = MetadataType.PHOTO; + title?: string; + type: number = MetadataType.PHOTO; + width?: number; } export class PlayRequest { - public customData: any = null; + customData: any = null; } export class QueueData { - public shuffle = false; + shuffle = false; constructor( public id?: string @@ -251,11 +251,11 @@ export class QueueData { export class QueueInsertItemsRequest { - public customData: any = null; - public insertBefore: (number | null) = null; - public requestId: (number | null) = null; - public sessionId: (string | null) = null; - public type = "QUEUE_INSERT"; + customData: any = null; + insertBefore: Nullable = null; + requestId: Nullable = null; + sessionId: Nullable = null; + type = "QUEUE_INSERT"; constructor( public items: QueueItem[]) {} @@ -263,14 +263,14 @@ export class QueueInsertItemsRequest { export class QueueItem { - public activeTrackIds: (number[] | null) = null; - public autoplay = true; - public customData: any = null; - public itemId: (number | null) = null; - public media: MediaInfo; - public playbackDuration: (number | null) = null; - public preloadTime = 0; - public startTime = 0; + activeTrackIds: Nullable = null; + autoplay = true; + customData: any = null; + itemId: Nullable = null; + media: MediaInfo; + playbackDuration: Nullable = null; + preloadTime = 0; + startTime = 0; constructor(mediaInfo: MediaInfo) { this.media = mediaInfo; @@ -279,22 +279,22 @@ export class QueueItem { export class QueueJumpRequest { - public jump: (number | null) = null; - public currentItemId: (number | null) = null; - public sessionId: (number | null) = null; - public requestId: (number | null) = null; + jump: Nullable = null; + currentItemId: Nullable = null; + sessionId: Nullable = null; + requestId: Nullable = null; - public type = "QUEUE_UPDATE"; + type = "QUEUE_UPDATE"; } export class QueueLoadRequest { - public customData: any = null; - public repeatMode: string = RepeatMode.OFF; - public requestId: (number | null) = null; - public sessionId: (string | null) = null; - public startIndex = 0; - public type = "QUEUE_LOAD"; + customData: any = null; + repeatMode: string = RepeatMode.OFF; + requestId: Nullable = null; + sessionId: Nullable = null; + startIndex = 0; + type = "QUEUE_LOAD"; constructor( public items: QueueItem[]) {} @@ -302,10 +302,10 @@ export class QueueLoadRequest { export class QueueRemoveItemsRequest { - public customData: any = null; - public requestId: (number | null) = null; - public sessionId: (string | null) = null; - public type = "QUEUE_REMOVE"; + customData: any = null; + requestId: Nullable = null; + sessionId: Nullable = null; + type = "QUEUE_REMOVE"; constructor( public itemIds: number[]) {} @@ -313,11 +313,11 @@ export class QueueRemoveItemsRequest { export class QueueReorderItemsRequest { - public customData: any = null; - public insertBefore: (number | null) = null; - public requestId: (number | null) = null; - public sessionId: (string | null) = null; - public type = "QUEUE_REORDER"; + customData: any = null; + insertBefore: Nullable = null; + requestId: Nullable = null; + sessionId: Nullable = null; + type = "QUEUE_REORDER"; constructor( public itemIds: number[]) {} @@ -325,19 +325,19 @@ export class QueueReorderItemsRequest { export class QueueSetPropertiesRequest { - public customData: any = null; - public repeatMode: (string | null) = null; - public requestId: (number | null) = null; - public sessionId: (string | null) = null; - public type = "QUEUE_UPDATE"; + customData: any = null; + repeatMode: Nullable = null; + requestId: Nullable = null; + sessionId: Nullable = null; + type = "QUEUE_UPDATE"; } export class QueueUpdateItemsRequest { - public customData: any = null; - public requestId: (number | null) = null; - public sessionId: (string | null) = null; - public type = "QUEUE_UPDATE"; + customData: any = null; + requestId: Nullable = null; + sessionId: Nullable = null; + type = "QUEUE_UPDATE"; constructor( public items: QueueItem[]) {} @@ -345,40 +345,40 @@ export class QueueUpdateItemsRequest { export class SeekRequest { - public currentTime: (number | null) = null; - public customData: any = null; - public resumeState: (string | null) = null; + currentTime: Nullable = null; + customData: any = null; + resumeState: Nullable = null; } export class StopRequest { - public customData: any = null; + customData: any = null; } export class TextTrackStyle { - public backgroundColor: (string | null) = null; - public customData: any = null; - public edgeColor: (string | null) = null; - public edgeType: (string | null) = null; - public fontFamily: (string | null) = null; - public fontGenericFamily: (string | null) = null; - public fontScale: (number | null) = null; - public fontStyle: (string | null) = null; - public foregroundColor: (string | null) = null; - public windowColor: (string | null) = null; - public windowRoundedCornerRadius: (number | null) = null; - public windowType: (string | null) = null; + backgroundColor: Nullable = null; + customData: any = null; + edgeColor: Nullable = null; + edgeType: Nullable = null; + fontFamily: Nullable = null; + fontGenericFamily: Nullable = null; + fontScale: Nullable = null; + fontStyle: Nullable = null; + foregroundColor: Nullable = null; + windowColor: Nullable = null; + windowRoundedCornerRadius: Nullable = null; + windowType: Nullable = null; } export class Track { - public customData: any = null; - public language: (string | null) = null; - public name: (string | null) = null; - public subtype: (string | null) = null; - public trackContentId: (string | null) = null; - public trackContentType: (string | null) = null; + customData: any = null; + language: Nullable = null; + name: Nullable = null; + subtype: Nullable = null; + trackContentId: Nullable = null; + trackContentType: Nullable = null; constructor( public trackId: number @@ -387,23 +387,23 @@ export class Track { export class TvShowMediaMetadata { - public episode: (number | undefined) = undefined; - public episodeNumber: (number | undefined) = undefined; - public episodeTitle: (string | undefined) = undefined; - public images: (Image[] | undefined) = undefined; - public metadataType: number = MetadataType.TV_SHOW; - public originalAirdate: (string | undefined) = undefined; - public releaseYear: (number | undefined) = undefined; - public season: (number | undefined) = undefined; - public seasonNumber: (number | undefined) = undefined; - public seriesTitle: (string | undefined) = undefined; - public title: (string | undefined) = undefined; - public type: number = MetadataType.TV_SHOW; + episode?: number; + episodeNumber?: number; + episodeTitle?: string; + images?: Image[]; + metadataType: number = MetadataType.TV_SHOW; + originalAirdate?: string; + releaseYear?: number; + season?: number; + seasonNumber?: number; + seriesTitle?: string; + title?: string; + type: number = MetadataType.TV_SHOW; } export class UserActionState { - public customData: any = null; + customData: any = null; constructor( public userAction: UserAction) {} @@ -411,8 +411,8 @@ export class UserActionState { export class VastAdsRequest { - public adsResponse?: string; - public adTagUrl?: string; + adsResponse?: string; + adTagUrl?: string; } @@ -425,7 +425,7 @@ export class VideoInformation { export class VolumeRequest { - public customData: any = null; + customData: any = null; constructor( public volume: Volume) {}