Reorganize shim files

This commit is contained in:
hensm
2021-04-27 07:30:39 +01:00
parent cff7466046
commit dcd6caf1b2
56 changed files with 639 additions and 822 deletions

View File

@@ -9,7 +9,7 @@ import { ReceiverSelectorMediaType } from "./background/receiverSelector";
import { ReceiverSelection, ReceiverSelectionCast, ReceiverSelectionStop }
from "./background/receiverSelector/ReceiverSelector";
import Volume from "./shim/cast/classes/Volume";
import { Volume } from "./shim/cast/dataClasses";
import { MediaInfo } from "./shim/cast/media";

View File

@@ -270,9 +270,10 @@ async function registerMediaElementListeners() {
});
mediaElement.addEventListener("ratechange", () => {
// TODO: Fix types
currentMedia._sendMediaMessage("SET_PLAYBACK_RATE", {
playbackRate: mediaElement.playbackRate
});
} as any);
});
mediaElement.addEventListener("volumechange", () => {

View File

@@ -2,26 +2,11 @@
import { v4 as uuid } from "uuid";
import logger from "../../../lib/logger";
import _Error from "./Error";
import Image from "./Image";
import Receiver from "./Receiver";
import SenderApplication from "./SenderApplication";
import Volume from "./Volume";
import LoadRequest from "../media/classes/LoadRequest";
import Media from "../media/classes/Media";
import QueueLoadRequest from "../media/classes/QueueLoadRequest";
import { ErrorCode
, SessionStatus } from "../enums";
import { RepeatMode } from "../media/enums";
import logger from "../../lib/logger";
import { ListenerObject
, onMessage
, sendMessageResponse } from "../../eventMessageChannel";
, sendMessageResponse } from "../eventMessageChannel";
import { Callbacks
, ErrorCallback
@@ -29,7 +14,18 @@ import { Callbacks
, MediaListener
, MessageListener
, SuccessCallback
, UpdateListener } from "../../types";
, UpdateListener } from "../types";
import { Error as _Error
, Image, Receiver
, SenderApplication, Volume } from "./dataClasses";
import { ErrorCode, SessionStatus } from "./enums";
import { Media
, LoadRequest
, QueueLoadRequest
// Enums
, RepeatMode } from "./media";
type SessionSuccessCallback = (session: Session) => void;

View File

@@ -1,20 +0,0 @@
"use strict";
import Session from "./Session";
import SessionRequest from "./SessionRequest";
import { AutoJoinPolicy
, DefaultActionPolicy } from "../enums";
export default class ApiConfig {
constructor(
public sessionRequest: SessionRequest
, public sessionListener: (session: Session) => void
, public receiverListener: (availability: string) => void
, public autoJoinPolicy: string
= AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED
, public defaultActionPolicy: string
= DefaultActionPolicy.CREATE_SESSION) {}
}

View File

@@ -1,9 +0,0 @@
"use strict";
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.CredentialsData
export default class DialRequest {
constructor(
public credentials: string
, public credentialsData: string) {
}
}

View File

@@ -1,9 +0,0 @@
"use strict";
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.DialRequest
export default class DialRequest {
constructor(
public appName: string
, public launchParameter: (string | null) = null) {
}
}

View File

@@ -1,10 +0,0 @@
"use strict";
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Error
export default class Error {
constructor(
public code: string
, public description: (string | null) = null
, public details: any = null) {
}
}

View File

@@ -1,9 +0,0 @@
"use strict";
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Image
export default class Image {
public width: (number | null) = null;
public height: (number | null) = null;
constructor(public url: string) {}
}

View File

@@ -1,21 +0,0 @@
"use strict";
import ReceiverDisplayStatus from "./ReceiverDisplayStatus";
import Volume from "./Volume";
import { Capability, ReceiverType } from "../enums";
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Receiver
export default class Receiver {
public displayStatus: (ReceiverDisplayStatus | null) = null;
public isActiveInput: (boolean | null) = null;
public receiverType: string = ReceiverType.CAST;
constructor(
public label: string
, public friendlyName: string
, public capabilities: Capability[] = []
, public volume: (Volume | null) = null) {
}
}

View File

@@ -1,13 +0,0 @@
"use strict";
import Image from "./Image";
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.ReceiverDisplayStatus
export default class ReceiverDisplayStatus {
public showStop: (boolean | null) = null;
constructor(
public statusText: string
, public appImages: Image[]) {}
}

View File

@@ -1,9 +0,0 @@
"use strict";
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.SenderApplication
export default class SenderApplication {
public packageId: (string | null) = null;
public url: (string | null) = null;
constructor(public platform: string) {}
}

View File

@@ -1,20 +0,0 @@
"use strict";
import CredentialsData from "./CredentialsData";
import Timeout from "./Timeout";
import { Capability } from "../enums";
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.SessionRequest
export default class SessionRequest {
public language: (string | null) = null;
constructor(
public appId: string
, public capabilities = [ Capability.VIDEO_OUT
, Capability.AUDIO_OUT ]
, public requestSessionTimeout = (new Timeout()).requestSession
, public androidReceiverCompatible = false
, public credentialsData: (CredentialsData | null) = null) {}
}

View File

@@ -1,10 +0,0 @@
"use strict";
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Timeout
export default class Timeout {
public leaveSession = 3000;
public requestSession = 60000;
public sendCustomMessage = 3000;
public setReceiverVolume = 3000;
public stopSession = 3000;
}

View File

@@ -1,15 +0,0 @@
"use strict";
import { VolumeControlType } from "../enums";
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Volume
export default class Volume {
public controlType?: VolumeControlType;
public stepInterval?: number;
constructor(
public level: (number | null) = null
, public muted: (boolean | null) = null) {
}
}

View File

@@ -0,0 +1,114 @@
"use strict";
import Session from "./Session";
import { AutoJoinPolicy
, Capability
, DefaultActionPolicy
, ReceiverType
, VolumeControlType } from "./enums";
export class ApiConfig {
constructor(
public sessionRequest: SessionRequest
, public sessionListener: (session: Session) => void
, public receiverListener: (availability: string) => void
, public autoJoinPolicy: string
= AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED
, public defaultActionPolicy: string
= DefaultActionPolicy.CREATE_SESSION) {}
}
export class CredentialsData {
constructor(
public credentials: string
, public credentialsData: string) {}
}
export class DialRequest {
constructor(
public appName: string
, public launchParameter: (string | null) = null) {}
}
export class Error {
constructor(
public code: string
, public description: (string | null) = null
, public details: any = null) {}
}
export class Image {
public width: (number | null) = null;
public height: (number | null) = null;
constructor(public url: string) {}
}
export class Receiver {
public displayStatus: (ReceiverDisplayStatus | null) = null;
public isActiveInput: (boolean | null) = null;
public receiverType: string = ReceiverType.CAST;
constructor(
public label: string
, public friendlyName: string
, public capabilities: Capability[] = []
, public volume: (Volume | null) = null) {}
}
export class ReceiverDisplayStatus {
public showStop: (boolean | null) = null;
constructor(
public statusText: string
, public appImages: Image[]) {}
}
export class SenderApplication {
public packageId: (string | null) = null;
public url: (string | null) = null;
constructor(public platform: string) {}
}
export class SessionRequest {
public language: (string | null) = null;
constructor(
public appId: string
, public capabilities = [ Capability.VIDEO_OUT
, Capability.AUDIO_OUT ]
, public requestSessionTimeout = (new Timeout()).requestSession
, public androidReceiverCompatible = false
, public credentialsData: (CredentialsData | null) = null) {}
}
export class Timeout {
public leaveSession = 3000;
public requestSession = 60000;
public sendCustomMessage = 3000;
public setReceiverVolume = 3000;
public stopSession = 3000;
}
export class Volume {
public controlType?: VolumeControlType;
public stepInterval?: number;
constructor(
public level: (number | null) = null
, public muted: (boolean | null) = null) {}
}

View File

@@ -2,18 +2,22 @@
import logger from "../../lib/logger";
import ApiConfig from "./classes/ApiConfig";
import CredentialsData from "./classes/CredentialsData";
import DialRequest from "./classes/DialRequest";
import Error_ from "./classes/Error";
import Image_ from "./classes/Image";
import Receiver_ from "./classes/Receiver";
import ReceiverDisplayStatus from "./classes/ReceiverDisplayStatus";
import SenderApplication from "./classes/SenderApplication";
import Session from "./classes/Session";
import SessionRequest from "./classes/SessionRequest";
import Timeout from "./classes/Timeout";
import Volume from "./classes/Volume";
import { Receiver } from "../../types";
import { onMessage, sendMessageResponse } from "../eventMessageChannel";
import Session from "./Session";
import { ApiConfig
, CredentialsData
, DialRequest
, Error as Error_
, Image as Image_
, Receiver as Receiver_
, ReceiverDisplayStatus
, SenderApplication
, SessionRequest
, Timeout
, Volume } from "./dataClasses";
import { AutoJoinPolicy
, Capability
@@ -27,10 +31,27 @@ import { AutoJoinPolicy
, SessionStatus
, VolumeControlType } from "./enums";
import * as media from "./media";
import { Receiver } from "../../types";
import { onMessage, sendMessageResponse } from "../eventMessageChannel";
export * as media from "./media";
export {
// Enums
AutoJoinPolicy, Capability, DefaultActionPolicy, DialAppState, ErrorCode
, ReceiverAction, ReceiverAvailability, ReceiverType, SenderPlatform
, SessionStatus, VolumeControlType
// Classes
, ApiConfig, CredentialsData, DialRequest, ReceiverDisplayStatus
, SenderApplication, Session, SessionRequest, Timeout, Volume
, Error_ as Error
, Image_ as Image
, Receiver_ as Receiver
};
export let isAvailable = false;
export const timeout = new Timeout();
export const VERSION = [ 1, 2 ];
type ReceiverActionListener = (
@@ -55,27 +76,6 @@ let sessionSuccessCallback: RequestSessionSuccessCallback;
let sessionErrorCallback: ErrorCallback;
export {
// Enums
AutoJoinPolicy, Capability, DefaultActionPolicy, DialAppState, ErrorCode
, ReceiverAction, ReceiverAvailability, ReceiverType, SenderPlatform
, SessionStatus, VolumeControlType
// Classes
, ApiConfig, CredentialsData, DialRequest, ReceiverDisplayStatus
, SenderApplication, Session, SessionRequest, Timeout, Volume
, Error_ as Error
, Image_ as Image
, Receiver_ as Receiver
, media
};
export let isAvailable = false;
export const timeout = new Timeout();
export const VERSION = [ 1, 2 ];
export function addReceiverActionListener(
listener: ReceiverActionListener): void {

View File

@@ -1,43 +1,42 @@
"use strict";
import logger from "../../../../lib/logger";
import logger from "../../../lib/logger";
import { v1 as uuid } from "uuid";
import BreakStatus from "./BreakStatus";
import EditTracksInfoRequest from "./EditTracksInfoRequest";
import GetStatusRequest from "./GetStatusRequest";
import LiveSeekableRange from "./LiveSeekableRange";
import MediaInfo from "./MediaInfo";
import PauseRequest from "./PauseRequest";
import PlayRequest from "./PlayRequest";
import QueueData from "./QueueData";
import QueueJumpRequest from "./QueueJumpRequest";
import QueueInsertItemsRequest from "./QueueInsertItemsRequest";
import QueueItem from "./QueueItem";
import QueueSetPropertiesRequest from "./QueueSetPropertiesRequest";
import QueueRemoveItemsRequest from "./QueueRemoveItemsRequest";
import QueueReorderItemsRequest from "./QueueReorderItemsRequest";
import QueueUpdateItemsRequest from "./QueueUpdateItemsRequest";
import SeekRequest from "./SeekRequest";
import StopRequest from "./StopRequest";
import VideoInformation from "./VideoInformation";
import VolumeRequest from "./VolumeRequest";
import { BreakStatus
, EditTracksInfoRequest
, GetStatusRequest
, LiveSeekableRange
, MediaInfo
, PauseRequest
, PlayRequest
, QueueData
, QueueJumpRequest
, QueueInsertItemsRequest
, QueueItem
, QueueSetPropertiesRequest
, QueueRemoveItemsRequest
, QueueReorderItemsRequest
, QueueUpdateItemsRequest
, SeekRequest
, StopRequest
, VideoInformation
, VolumeRequest } from "./dataClasses";
import Volume from "../../classes/Volume";
import { Volume, Error as _Error } from "../dataClasses";
import { PlayerState
, RepeatMode } from "../enums";
, RepeatMode } from "./enums";
import _Error from "../../classes/Error";
import { ErrorCode } from "../../enums";
import { ErrorCode } from "../enums";
import { onMessage, sendMessageResponse } from "../../../eventMessageChannel";
import { onMessage, sendMessageResponse } from "../../eventMessageChannel";
import { Callbacks
, ErrorCallback
, SuccessCallback
, UpdateListener } from "../../../types";
, UpdateListener } from "../../types";
type MediaRequest =
@@ -54,13 +53,12 @@ type MediaRequest =
| StopRequest
| VolumeRequest;
enum MediaMessageType {
Play = "PLAY"
, Load = "LOAD"
, Pause = "PAUSE"
, Seek = "SEEK"
, StopMedia = "STOP_MEDIA"
, Stop = "STOP"
, MediaSetVolume = "MEDIA_SET_VOLUME"
, MediaGetStatus = "MEDIA_GET_STATUS"
, EditTracksInfo = "EDIT_TRACKS_INFO"
@@ -444,12 +442,16 @@ export default class Media {
}
public stop(
stopRequest: StopRequest
stopRequest?: StopRequest
, successCallback?: SuccessCallback
, errorCallback?: ErrorCallback): void {
if (!stopRequest) {
stopRequest = new StopRequest();
}
this._sendMediaMessage(
MediaMessageType.StopMedia
MediaMessageType.Stop
, stopRequest
, () => {
this.#isActive = false;

View File

@@ -1,16 +0,0 @@
"use strict";
import Image from "../../classes/Image";
import { MetadataType } from "../enums";
export default 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;
}

View File

@@ -1,8 +0,0 @@
"use strict";
export default class AudiobookContainerMetadata {
public authors?: string[];
public narrators?: string[];
public publisher?: string;
public releaseDate?: string;
}

View File

@@ -1,11 +0,0 @@
"use strict";
export default class Break {
public duration?: number;
public isEmbedded?: boolean;
public isWatched = false;
constructor(public id: string
, public breakClipIds: string[]
, public position: number) {}
}

View File

@@ -1,22 +0,0 @@
"use strict";
import VastAdsRequest from "./VastAdsRequest";
import { HlsSegmentFormat } from "../enums";
export default 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;
constructor(public id: string) {}
}

View File

@@ -1,9 +0,0 @@
"use strict";
export default class BreakStatus {
public breakClipId?: string;
public breakId?: string;
public currentBreakClipTime?: number;
public currentBreakTime?: number;
public whenSkippable?: number;
}

View File

@@ -1,17 +0,0 @@
"use strict";
import Image from "../../classes/Image";
import MediaMetadata from "../classes/MediaMetadata";
import { ContainerType } from "../enums";
export default class ContainerMetadata {
public containerDuration?: number;
public containerImages?: Image[];
public sections?: MediaMetadata[];
public title?: string;
constructor(public containerType: ContainerType
= ContainerType.GENERIC_CONTAINER) {}
}

View File

@@ -1,10 +0,0 @@
"use strict";
export default class EditTracksInfoRequest {
public requestId = 0;
constructor(
public activeTrackIds: (number[] | null) = null
, public textTrackStyle: (string | null) = null) {
}
}

View File

@@ -1,16 +0,0 @@
"use strict";
import Image from "../../classes/Image";
import { MetadataType } from "../enums";
export default 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;
}

View File

@@ -1,5 +0,0 @@
"use strict";
export default class GetStatusRequest {
public customData: any = null;
}

View File

@@ -1,9 +0,0 @@
"use strict";
export default class LiveSeekableRange {
constructor(
public start?: number
, public end?: number
, public isMovingWindow?: boolean
, public isLiveDone?: boolean) {}
}

View File

@@ -1,21 +0,0 @@
"use strict";
import MediaInfo from "./MediaInfo";
export default 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";
constructor(mediaInfo: MediaInfo) {
this.media = mediaInfo;
}
}

View File

@@ -1,48 +0,0 @@
"use strict";
import Break from "./Break";
import BreakClip from "./BreakClip";
import GenericMediaMetadata from "./GenericMediaMetadata";
import MovieMediaMetadata from "./MovieMediaMetadata";
import MusicTrackMediaMetadata from "./MusicTrackMediaMetadata";
import PhotoMediaMetadata from "./PhotoMediaMetadata";
import TvShowMediaMetadata from "./TvShowMediaMetadata";
import TextTrackStyle from "./TextTrackStyle";
import Track from "./Track";
import UserActionState from "./UserActionState";
import VastAdsRequest from "./VastAdsRequest";
import { HlsSegmentFormat
, HlsVideoSegmentFormat
, StreamType } from "../enums";
type Metadata =
GenericMediaMetadata
| MovieMediaMetadata
| MusicTrackMediaMetadata
| PhotoMediaMetadata
| TvShowMediaMetadata;
export default 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;
constructor(
public contentId: string
, public contentType: string) {}
}

View File

@@ -1,19 +0,0 @@
"use strict";
import { MetadataType } from "../enums";
export default class MediaMetadata {
public queueItemId?: number;
public sectionDuration?: number;
public sectionStartAbsoluteTime?: number;
public sectionStartTimeInContainer?: number;
public sectionStartTimeInMedia?: number;
public type: MetadataType;
public metadataType: MetadataType;
constructor(type: MetadataType) {
this.type = type;
this.metadataType = type;
}
}

View File

@@ -1,17 +0,0 @@
"use strict";
import Image from "../../classes/Image";
import { MetadataType } from "../enums";
export default 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;
}

View File

@@ -1,23 +0,0 @@
"use strict";
import Image from "../../classes/Image";
import { MetadataType } from "../enums";
export default 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;
}

View File

@@ -1,5 +0,0 @@
"use strict";
export default class PauseRequest {
public customData: any = null;
}

View File

@@ -1,20 +0,0 @@
"use strict";
import Image from "../../classes/Image";
import { MetadataType } from "../enums";
export default 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;
}

View File

@@ -1,5 +0,0 @@
"use strict";
export default class PlayRequest {
public customData: any = null;
}

View File

@@ -1,18 +0,0 @@
"use strict";
import QueueItem from "./QueueItem";
import { RepeatMode } from "../enums";
export default class QueueData {
public shuffle = false;
constructor(public id?: string
, public name?: string
, public description?: string
, public repeatMode?: RepeatMode
, public items?: QueueItem[]
, public startIndex?: number
, public startTime?: number) {}
}

View File

@@ -1,15 +0,0 @@
"use strict";
import QueueItem from "./QueueItem";
export default 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";
constructor(
public items: QueueItem[]) {}
}

View File

@@ -1,19 +0,0 @@
"use strict";
import MediaInfo from "./MediaInfo";
export default 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;
constructor(mediaInfo: MediaInfo) {
this.media = mediaInfo;
}
}

View File

@@ -1,15 +0,0 @@
"use strict";
import QueueItem from "./QueueItem";
import { RepeatMode } from "../enums";
export default class QueueJumpRequest {
public jump: (number | null) = null;
public currentItemId: (number | null) = null;
public sessionId: (number | null) = null;
public requestId: (number | null) = null;
public type = "QUEUE_UPDATE";
}

View File

@@ -1,18 +0,0 @@
"use strict";
import QueueItem from "./QueueItem";
import { RepeatMode } from "../enums";
export default 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";
constructor(
public items: QueueItem[]) {}
}

View File

@@ -1,11 +0,0 @@
"use strict";
export default class QueueRemoveItemsRequest {
public customData: any = null;
public requestId: (number | null) = null;
public sessionId: (string | null) = null;
public type = "QUEUE_REMOVE";
constructor(
public itemIds: number[]) {}
}

View File

@@ -1,12 +0,0 @@
"use strict";
export default 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";
constructor(
public itemIds: number[]) {}
}

View File

@@ -1,9 +0,0 @@
"use strict";
export default 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";
}

View File

@@ -1,14 +0,0 @@
"use strict";
import QueueItem from "./QueueItem";
export default class QueueUpdateItemsRequest {
public customData: any = null;
public requestId: (number | null) = null;
public sessionId: (string | null) = null;
public type = "QUEUE_UPDATE";
constructor(
public items: QueueItem[]) {}
}

View File

@@ -1,7 +0,0 @@
"use strict";
export default class SeekRequest {
public currentTime: (number | null) = null;
public customData: any = null;
public resumeState: (string | null) = null;
}

View File

@@ -1,5 +0,0 @@
"use strict";
export default class StopRequest {
public customData: any = null;
}

View File

@@ -1,16 +0,0 @@
"use strict";
export default 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;
}

View File

@@ -1,14 +0,0 @@
"use strict";
export default 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;
constructor(
public trackId: number
, public type: string) {}
}

View File

@@ -1,21 +0,0 @@
"use strict";
import Image from "../../classes/Image";
import { MetadataType } from "../enums";
export default 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;
}

View File

@@ -1,11 +0,0 @@
"use strict";
import { UserAction } from "../enums";
export default class UserActionState {
public customData: any = null;
constructor(
public userAction: UserAction) {}
}

View File

@@ -1,6 +0,0 @@
"use strict";
export default class VastAdsRequest {
public adsResponse?: string;
public adTagUrl?: string;
}

View File

@@ -1,11 +0,0 @@
"use strict";
import { HdrType } from "../enums";
export default class VideoInformation {
constructor(
public width: number
, public height: number
, public hdrType: HdrType) {}
}

View File

@@ -1,11 +0,0 @@
"use strict";
import Volume from "../../classes/Volume";
export default class VolumeRequest {
public customData: any = null;
constructor(
public volume: Volume) {}
}

View File

@@ -0,0 +1,432 @@
"use strict";
import { Image, Volume } from "../dataClasses";
import { ContainerType
, HdrType
, HlsSegmentFormat
, HlsVideoSegmentFormat
, MetadataType
, RepeatMode
, StreamType
, UserAction } from "./enums";
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;
}
export class AudiobookContainerMetadata {
public authors?: string[];
public narrators?: string[];
public publisher?: string;
public releaseDate?: string;
}
export class Break {
public duration?: number;
public isEmbedded?: boolean;
public isWatched = false;
constructor(
public id: string
, public breakClipIds: string[]
, public position: number) {}
}
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;
constructor(public id: string) {}
}
export class BreakStatus {
public breakClipId?: string;
public breakId?: string;
public currentBreakClipTime?: number;
public currentBreakTime?: number;
public whenSkippable?: number;
}
export class ContainerMetadata {
public containerDuration?: number;
public containerImages?: Image[];
public sections?: MediaMetadata[];
public title?: string;
constructor(
public containerType: ContainerType =
ContainerType.GENERIC_CONTAINER) {}
}
export class EditTracksInfoRequest {
public requestId = 0;
constructor(
public activeTrackIds: (number[] | null) = null
, public textTrackStyle: (string | null) = 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;
}
export class GetStatusRequest {
public customData: any = null;
}
export class LiveSeekableRange {
constructor(
public start?: number
, public end?: number
, public isMovingWindow?: boolean
, public isLiveDone?: boolean) {}
}
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";
constructor(mediaInfo: MediaInfo) {
this.media = mediaInfo;
}
}
type Metadata =
GenericMediaMetadata
| MovieMediaMetadata
| MusicTrackMediaMetadata
| PhotoMediaMetadata
| 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;
constructor(
public contentId: string
, public contentType: string) {}
}
export class MediaMetadata {
public queueItemId?: number;
public sectionDuration?: number;
public sectionStartAbsoluteTime?: number;
public sectionStartTimeInContainer?: number;
public sectionStartTimeInMedia?: number;
public type: MetadataType;
public metadataType: MetadataType;
constructor(type: MetadataType) {
this.type = type;
this.metadataType = type;
}
}
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;
}
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;
}
export class PauseRequest {
public 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;
}
export class PlayRequest {
public customData: any = null;
}
export class QueueData {
public shuffle = false;
constructor(
public id?: string
, public name?: string
, public description?: string
, public repeatMode?: RepeatMode
, public items?: QueueItem[]
, public startIndex?: number
, public startTime?: number) {}
}
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";
constructor(
public items: QueueItem[]) {}
}
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;
constructor(mediaInfo: MediaInfo) {
this.media = mediaInfo;
}
}
export class QueueJumpRequest {
public jump: (number | null) = null;
public currentItemId: (number | null) = null;
public sessionId: (number | null) = null;
public requestId: (number | null) = null;
public 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";
constructor(
public items: QueueItem[]) {}
}
export class QueueRemoveItemsRequest {
public customData: any = null;
public requestId: (number | null) = null;
public sessionId: (string | null) = null;
public type = "QUEUE_REMOVE";
constructor(
public itemIds: number[]) {}
}
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";
constructor(
public itemIds: number[]) {}
}
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";
}
export class QueueUpdateItemsRequest {
public customData: any = null;
public requestId: (number | null) = null;
public sessionId: (string | null) = null;
public type = "QUEUE_UPDATE";
constructor(
public items: QueueItem[]) {}
}
export class SeekRequest {
public currentTime: (number | null) = null;
public customData: any = null;
public resumeState: (string | null) = null;
}
export class StopRequest {
public 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;
}
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;
constructor(
public trackId: number
, public type: string) {}
}
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;
}
export class UserActionState {
public customData: any = null;
constructor(
public userAction: UserAction) {}
}
export class VastAdsRequest {
public adsResponse?: string;
public adTagUrl?: string;
}
export class VideoInformation {
constructor(
public width: number
, public height: number
, public hdrType: HdrType) {}
}
export class VolumeRequest {
public customData: any = null;
constructor(
public volume: Volume) {}
}

View File

@@ -1,82 +1,12 @@
"use strict";
import AudiobookChapterMediaMetadata from "./classes/AudiobookChapterMediaMetadata";
import AudiobookContainerMetadata from "./classes/AudiobookContainerMetadata";
import Break from "./classes/Break";
import BreakClip from "./classes/BreakClip";
import BreakStatus from "./classes/BreakStatus";
import ContainerMetadata from "./classes/ContainerMetadata";
import EditTracksInfoRequest from "./classes/EditTracksInfoRequest";
import GenericMediaMetadata from "./classes/GenericMediaMetadata";
import GetStatusRequest from "./classes/GetStatusRequest";
import LiveSeekableRange from "./classes/LiveSeekableRange";
import LoadRequest from "./classes/LoadRequest";
import Media from "./classes/Media";
import MediaInfo from "./classes/MediaInfo";
import MediaMetadata from "./classes/MediaMetadata";
import MovieMediaMetadata from "./classes/MovieMediaMetadata";
import MusicTrackMediaMetadata from "./classes/MusicTrackMediaMetadata";
import PauseRequest from "./classes/PauseRequest";
import PhotoMediaMetadata from "./classes/PhotoMediaMetadata";
import PlayRequest from "./classes/PlayRequest";
import QueueData from "./classes/QueueData";
import QueueInsertItemsRequest from "./classes/QueueInsertItemsRequest";
import QueueItem from "./classes/QueueItem";
import QueueLoadRequest from "./classes/QueueLoadRequest";
import QueueRemoveItemsRequest from "./classes/QueueRemoveItemsRequest";
import QueueReorderItemsRequest from "./classes/QueueReorderItemsRequest";
import QueueSetPropertiesRequest from "./classes/QueueSetPropertiesRequest";
import QueueUpdateItemsRequest from "./classes/QueueUpdateItemsRequest";
import SeekRequest from "./classes/SeekRequest";
import StopRequest from "./classes/StopRequest";
import TextTrackStyle from "./classes/TextTrackStyle";
import Track from "./classes/Track";
import TvShowMediaMetadata from "./classes/TvShowMediaMetadata";
import UserActionState from "./classes/QueueItem";
import VastAdsRequest from "./classes/VastAdsRequest";
import VideoInformation from "./classes/VideoInformation";
import VolumeRequest from "./classes/VolumeRequest";
import { ContainerType
, HdrType
, HlsSegmentFormat
, HlsVideoSegmentFormat
, IdleReason
, MediaCommand
, MetadataType
, PlayerState
, QueueType
, RepeatMode
, ResumeState
, StreamType
, TextTrackEdgeType
, TextTrackFontGenericFamily
, TextTrackFontStyle
, TextTrackType
, TextTrackWindowType
, TrackType
, UserAction } from "./enums";
import Media from "./Media";
export {
// Enums
ContainerType, HdrType, HlsSegmentFormat, HlsVideoSegmentFormat, IdleReason
, MediaCommand, MetadataType, PlayerState, QueueType, RepeatMode, ResumeState
, StreamType, TextTrackEdgeType, TextTrackFontGenericFamily
, TextTrackFontStyle, TextTrackType, TextTrackWindowType, TrackType
, UserAction
export { Media };
// Classes
, AudiobookChapterMediaMetadata, AudiobookContainerMetadata, Break, BreakClip
, BreakStatus, ContainerMetadata, EditTracksInfoRequest, GenericMediaMetadata
, GetStatusRequest, LiveSeekableRange, LoadRequest, Media, MediaInfo
, MediaMetadata, MovieMediaMetadata, MusicTrackMediaMetadata, PauseRequest
, PhotoMediaMetadata, PlayRequest, QueueInsertItemsRequest, QueueData
, QueueItem, QueueLoadRequest, QueueRemoveItemsRequest
, QueueReorderItemsRequest, QueueSetPropertiesRequest, QueueUpdateItemsRequest
, SeekRequest, StopRequest, TextTrackStyle, Track, TvShowMediaMetadata
, UserActionState, VastAdsRequest, VideoInformation, VolumeRequest
};
export * from "./dataClasses";
export * from "./enums";
export const timeout = {
editTracksInfo: 0

View File

@@ -1,10 +1,11 @@
"use strict";
import _Error from "./cast/classes/Error";
import Media from "./cast/media/classes/Media";
import { Error as Error_ } from "./cast/dataClasses";
import { Media } from "./cast/media";
export type SuccessCallback = () => void;
export type ErrorCallback = (err: _Error) => void;
export type ErrorCallback = (err: Error_) => void;
export type MediaListener = (media: Media) => void;
export type MessageListener = (namespace: string, message: string) => void;