mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-11 18:19:58 +00:00
Enable strict mode for extension build
This commit is contained in:
@@ -4,6 +4,6 @@
|
||||
export default class DialRequest {
|
||||
constructor (
|
||||
public appName: string
|
||||
, public launchParameter: string = null) {
|
||||
, public launchParameter: (string | null) = null) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
export default class Error {
|
||||
constructor (
|
||||
public code: string
|
||||
, public description: string = null
|
||||
, public description: (string | null) = null
|
||||
, public details: any = null) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Image
|
||||
export default class Image {
|
||||
public width: number = null;
|
||||
public height: number = null;
|
||||
public width: (number | null) = null;
|
||||
public height: (number | null) = null;
|
||||
|
||||
constructor (public url: string) {}
|
||||
}
|
||||
|
||||
@@ -8,14 +8,14 @@ import { ReceiverType } from "../enums";
|
||||
|
||||
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.Receiver
|
||||
export default class Receiver {
|
||||
public displayStatus: ReceiverDisplayStatus = null;
|
||||
public isActiveInput: boolean = null;
|
||||
public displayStatus: (ReceiverDisplayStatus | null) = null;
|
||||
public isActiveInput: (boolean | null) = null;
|
||||
public receiverType: string = ReceiverType.CAST;
|
||||
|
||||
constructor (
|
||||
public label: string
|
||||
, public friendlyName: string
|
||||
, public capabilities: string[] = []
|
||||
, public volume: Volume = null) {
|
||||
, public volume: (Volume | null) = null) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import Image from "./Image";
|
||||
|
||||
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.ReceiverDisplayStatus
|
||||
export default class ReceiverDisplayStatus {
|
||||
public showStop: boolean = null;
|
||||
public showStop: (boolean | null) = null;
|
||||
|
||||
constructor (
|
||||
public statusText: string
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.SenderApplication
|
||||
export default class SenderApplication {
|
||||
public packageId: string = null;
|
||||
public url: string = null;
|
||||
public packageId: (string | null) = null;
|
||||
public url: (string | null) = null;
|
||||
|
||||
constructor (public platform: string) {}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ export default class Session {
|
||||
public namespaces: Array<{ name: "string" }>;
|
||||
public senderApps: SenderApplication[];
|
||||
public status: SessionStatus;
|
||||
public statusText: string;
|
||||
public statusText: string | null;
|
||||
public transportId: string;
|
||||
|
||||
constructor (
|
||||
@@ -102,12 +102,15 @@ export default class Session {
|
||||
switch (message.subject) {
|
||||
case "shim:/session/stopped": {
|
||||
// Disconnect from extension messages
|
||||
_listener.get(this).disconnect();
|
||||
_listener.get(this)?.disconnect();
|
||||
|
||||
this.status = SessionStatus.STOPPED;
|
||||
|
||||
for (const listener of _updateListeners.get(this)) {
|
||||
listener(false);
|
||||
const updateListeners = _updateListeners.get(this);
|
||||
if (updateListeners) {
|
||||
for (const listener of updateListeners) {
|
||||
listener(false);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -147,8 +150,11 @@ export default class Session {
|
||||
}
|
||||
}
|
||||
|
||||
for (const listener of _updateListeners.get(this)) {
|
||||
listener(true);
|
||||
const updateListeners = _updateListeners.get(this);
|
||||
if (updateListeners) {
|
||||
for (const listener of updateListeners) {
|
||||
listener(true);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -156,19 +162,28 @@ export default class Session {
|
||||
|
||||
|
||||
case "shim:/session/impl_addMessageListener": {
|
||||
const { namespace, data } = message.data;
|
||||
for (const listener of
|
||||
_messageListeners.get(this).get(namespace)) {
|
||||
listener(namespace, data);
|
||||
const { namespace, data }
|
||||
: { namespace: string, data: string } = message.data;
|
||||
|
||||
const messageListeners = _messageListeners
|
||||
.get(this)?.get(namespace);
|
||||
|
||||
if (messageListeners) {
|
||||
for (const listener of messageListeners) {
|
||||
listener(namespace, data);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case "shim:/session/impl_sendMessage": {
|
||||
const { messageId, error } = message.data;
|
||||
const [ successCallback, errorCallback ]
|
||||
= _sendMessageCallbacks.get(this).get(messageId);
|
||||
const { messageId, error }
|
||||
: { messageId: string, error: boolean } = message.data;
|
||||
|
||||
const [ successCallback, errorCallback ] =
|
||||
_sendMessageCallbacks
|
||||
.get(this)?.get(messageId) ?? [];
|
||||
|
||||
if (error && errorCallback) {
|
||||
errorCallback(new _Error(ErrorCode.SESSION_ERROR));
|
||||
@@ -176,17 +191,16 @@ export default class Session {
|
||||
successCallback();
|
||||
}
|
||||
|
||||
_sendMessageCallbacks.get(this).delete(messageId);
|
||||
_sendMessageCallbacks.get(this)?.delete(messageId);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case "shim:/session/impl_setReceiverMuted": {
|
||||
const { volumeId, error } = message.data;
|
||||
const [ successCallback, errorCallback ]
|
||||
= _setReceiverMutedCallbacks
|
||||
.get(this)
|
||||
.get(volumeId);
|
||||
const [ successCallback, errorCallback ] =
|
||||
_setReceiverMutedCallbacks
|
||||
.get(this)?.get(volumeId) ?? [];
|
||||
|
||||
if (error && errorCallback) {
|
||||
errorCallback(new _Error(ErrorCode.SESSION_ERROR));
|
||||
@@ -194,16 +208,16 @@ export default class Session {
|
||||
successCallback();
|
||||
}
|
||||
|
||||
_setReceiverMutedCallbacks.get(this).delete(volumeId);
|
||||
_setReceiverMutedCallbacks.get(this)?.delete(volumeId);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case "shim:/session/impl_setReceiverVolumeLevel": {
|
||||
const { volumeId, error } = message.data;
|
||||
const [ successCallback, errorCallback ]
|
||||
= _setReceiverVolumeLevelCallbacks.get(this)
|
||||
.get(volumeId);
|
||||
const [ successCallback, errorCallback ] =
|
||||
_setReceiverVolumeLevelCallbacks
|
||||
.get(this)?.get(volumeId) ?? [];
|
||||
|
||||
if (error && errorCallback) {
|
||||
errorCallback(new _Error(ErrorCode.SESSION_ERROR));
|
||||
@@ -211,7 +225,8 @@ export default class Session {
|
||||
successCallback();
|
||||
}
|
||||
|
||||
_setReceiverVolumeLevelCallbacks.get(this).delete(volumeId);
|
||||
_setReceiverVolumeLevelCallbacks
|
||||
.get(this)?.delete(volumeId);
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -219,18 +234,21 @@ export default class Session {
|
||||
case "shim:/session/impl_stop": {
|
||||
const { stopId, error } = message.data;
|
||||
const [ successCallback, errorCallback ]
|
||||
= _stopCallbacks.get(this).get(stopId);
|
||||
= _stopCallbacks.get(this)?.get(stopId) ?? [];
|
||||
|
||||
// Disconnect from extension messages
|
||||
_listener.get(this).disconnect();
|
||||
_listener.get(this)?.disconnect();
|
||||
|
||||
if (error && errorCallback) {
|
||||
errorCallback(new _Error(ErrorCode.SESSION_ERROR));
|
||||
} else {
|
||||
this.status = SessionStatus.STOPPED;
|
||||
|
||||
for (const listener of _updateListeners.get(this)) {
|
||||
listener(false);
|
||||
const updateListeners = _updateListeners.get(this);
|
||||
if (updateListeners) {
|
||||
for (const listener of updateListeners) {
|
||||
listener(false);
|
||||
}
|
||||
}
|
||||
|
||||
if (successCallback) {
|
||||
@@ -238,7 +256,7 @@ export default class Session {
|
||||
}
|
||||
}
|
||||
|
||||
_stopCallbacks.get(this).delete(stopId);
|
||||
_stopCallbacks.get(this)?.delete(stopId);
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -257,11 +275,11 @@ export default class Session {
|
||||
namespace: string
|
||||
, listener: MessageListener) {
|
||||
|
||||
if (!_messageListeners.get(this).has(namespace)) {
|
||||
_messageListeners.get(this).set(namespace, new Set());
|
||||
if (!_messageListeners.get(this)?.has(namespace)) {
|
||||
_messageListeners.get(this)?.set(namespace, new Set());
|
||||
}
|
||||
|
||||
_messageListeners.get(this).get(namespace).add(listener);
|
||||
_messageListeners.get(this)?.get(namespace)?.add(listener);
|
||||
|
||||
sendMessageResponse({
|
||||
subject: "bridge:/session/impl_addMessageListener"
|
||||
@@ -271,7 +289,7 @@ export default class Session {
|
||||
}
|
||||
|
||||
public addUpdateListener (listener: UpdateListener) {
|
||||
_updateListeners.get(this).add(listener);
|
||||
_updateListeners.get(this)?.add(listener);
|
||||
}
|
||||
|
||||
public leave (
|
||||
@@ -286,7 +304,7 @@ export default class Session {
|
||||
, _id: _id.get(this)
|
||||
});
|
||||
|
||||
_leaveCallbacks.get(this).set(id, [
|
||||
_leaveCallbacks.get(this)?.set(id, [
|
||||
successCallback
|
||||
, errorCallback
|
||||
]);
|
||||
@@ -322,12 +340,17 @@ export default class Session {
|
||||
const message = JSON.parse(data);
|
||||
|
||||
if (message.status && message.status.length > 0) {
|
||||
const sessionId = _id.get(this);
|
||||
if (!sessionId) {
|
||||
return;
|
||||
}
|
||||
|
||||
hasResponded = true;
|
||||
|
||||
const media = new Media(
|
||||
this.sessionId
|
||||
, message.status[0].mediaSessionId
|
||||
, _id.get(this));
|
||||
, sessionId);
|
||||
|
||||
media.media = loadRequest.media;
|
||||
this.media = [ media ];
|
||||
@@ -361,14 +384,14 @@ export default class Session {
|
||||
namespace: string
|
||||
, listener: MessageListener): void {
|
||||
|
||||
_messageListeners.get(this).get(namespace).delete(listener);
|
||||
_messageListeners.get(this)?.get(namespace)?.delete(listener);
|
||||
}
|
||||
|
||||
public removeUpdateListener (
|
||||
_namespace: string
|
||||
, listener: UpdateListener): void {
|
||||
|
||||
_updateListeners.get(this).delete(listener);
|
||||
_updateListeners.get(this)?.delete(listener);
|
||||
}
|
||||
|
||||
public sendMessage (
|
||||
@@ -389,7 +412,7 @@ export default class Session {
|
||||
, _id: _id.get(this)
|
||||
});
|
||||
|
||||
_sendMessageCallbacks.get(this).set(messageId, [
|
||||
_sendMessageCallbacks.get(this)?.set(messageId, [
|
||||
successCallback
|
||||
, errorCallback
|
||||
]);
|
||||
@@ -408,7 +431,7 @@ export default class Session {
|
||||
, _id: _id.get(this)
|
||||
});
|
||||
|
||||
_setReceiverMutedCallbacks.get(this).set(volumeId, [
|
||||
_setReceiverMutedCallbacks.get(this)?.set(volumeId, [
|
||||
successCallback
|
||||
, errorCallback
|
||||
]);
|
||||
@@ -427,7 +450,7 @@ export default class Session {
|
||||
, _id: _id.get(this)
|
||||
});
|
||||
|
||||
_setReceiverVolumeLevelCallbacks.get(this).set(volumeId, [
|
||||
_setReceiverVolumeLevelCallbacks.get(this)?.set(volumeId, [
|
||||
successCallback
|
||||
, errorCallback
|
||||
]);
|
||||
@@ -445,7 +468,7 @@ export default class Session {
|
||||
, _id: _id.get(this)
|
||||
});
|
||||
|
||||
_stopCallbacks.get(this).set(stopId, [
|
||||
_stopCallbacks.get(this)?.set(stopId, [
|
||||
successCallback
|
||||
, errorCallback
|
||||
]);
|
||||
@@ -456,6 +479,6 @@ export default class Session {
|
||||
this.sendMessage(
|
||||
"urn:x-cast:com.google.cast.media"
|
||||
, message
|
||||
, null, null);
|
||||
, () => {}, () => {});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import Timeout from "./Timeout";
|
||||
|
||||
// https://developers.google.com/cast/docs/reference/chrome/chrome.cast.SessionRequest
|
||||
export default class SessionRequest {
|
||||
public language: string = null;
|
||||
public language: (string | null) = null;
|
||||
public dialRequest: any = null;
|
||||
|
||||
constructor (
|
||||
|
||||
@@ -5,11 +5,11 @@ 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;
|
||||
public controlType?: VolumeControlType;
|
||||
public stepInterval?: number;
|
||||
|
||||
constructor (
|
||||
public level: number = null
|
||||
, public muted: boolean = null) {
|
||||
public level: (number | null) = null
|
||||
, public muted: (boolean | null) = null) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -129,8 +129,8 @@ export function removeReceiverActionListener (
|
||||
}
|
||||
|
||||
export function requestSession (
|
||||
successCallback?: RequestSessionSuccessCallback
|
||||
, errorCallback?: ErrorCallback
|
||||
successCallback: RequestSessionSuccessCallback
|
||||
, errorCallback: ErrorCallback
|
||||
, _sessionRequest: SessionRequest = apiConfig.sessionRequest): void {
|
||||
|
||||
console.info("fx_cast (Debug): cast.requestSession");
|
||||
@@ -176,8 +176,8 @@ export function requestSession (
|
||||
|
||||
export function _requestSession (
|
||||
_receiver: Receiver
|
||||
, successCallback?: RequestSessionSuccessCallback
|
||||
, errorCallback?: ErrorCallback): void {
|
||||
, successCallback: RequestSessionSuccessCallback
|
||||
, errorCallback: ErrorCallback): void {
|
||||
|
||||
console.info("fx_cast (Debug): cast._requestSession");
|
||||
|
||||
@@ -241,7 +241,7 @@ export function _requestSession (
|
||||
const lastSession = sessionList[sessionList.length - 1];
|
||||
|
||||
if (lastSession.status !== SessionStatus.STOPPED) {
|
||||
lastSession.stop(createSession, null);
|
||||
lastSession.stop(createSession, () => {});
|
||||
}
|
||||
} else {
|
||||
createSession();
|
||||
@@ -354,7 +354,7 @@ onMessage(async message => {
|
||||
const lastSession = sessionList[sessionList.length - 1];
|
||||
|
||||
if (lastSession.status !== SessionStatus.STOPPED) {
|
||||
lastSession.stop(createSession, null);
|
||||
lastSession.stop(createSession, () => {});
|
||||
}
|
||||
} else {
|
||||
createSession();
|
||||
@@ -380,9 +380,11 @@ onMessage(async message => {
|
||||
|
||||
case "shim:/launchApp": {
|
||||
const receiver: Receiver = message.data.receiver;
|
||||
_requestSession(receiver, session => {
|
||||
apiConfig.sessionListener(session);
|
||||
});
|
||||
_requestSession(receiver
|
||||
, session => {
|
||||
apiConfig.sessionListener(session);
|
||||
}
|
||||
, () => {});
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ export default class EditTracksInfoRequest {
|
||||
public requestId = 0;
|
||||
|
||||
constructor (
|
||||
public activeTrackIds: number[] = null
|
||||
, public textTrackStyle: string = null) {
|
||||
public activeTrackIds: (number[] | null) = null
|
||||
, public textTrackStyle: (string | null) = null) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,11 +6,11 @@ import { MetadataType } from "../enums";
|
||||
|
||||
|
||||
export default class GenericMediaMetadata {
|
||||
public images: Image[] = undefined;
|
||||
public images: (Image[] | undefined) = undefined;
|
||||
public metadataType: number = MetadataType.GENERIC;
|
||||
public releaseDate: string = undefined;
|
||||
public releaseYear: number = undefined;
|
||||
public subtitle: string = undefined;
|
||||
public title: string = undefined;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -4,13 +4,13 @@ import MediaInfo from "./MediaInfo";
|
||||
|
||||
|
||||
export default class LoadRequest {
|
||||
public activeTrackIds: number[] = null;
|
||||
public autoplay: boolean = true;
|
||||
public currentTime: number = null;
|
||||
public activeTrackIds: (number[] | null) = null;
|
||||
public autoplay: (boolean | null) = true;
|
||||
public currentTime: (number | null) = null;
|
||||
public customData: any = null;
|
||||
public media: MediaInfo;
|
||||
public requestId: number = 0;
|
||||
public sessionId: string = null;
|
||||
public sessionId: (string | null) = null;
|
||||
public type: string = "LOAD";
|
||||
|
||||
constructor (mediaInfo: MediaInfo) {
|
||||
|
||||
@@ -40,17 +40,17 @@ const _lastCurrentTime = new WeakMap<Media, number>();
|
||||
|
||||
|
||||
export default class Media {
|
||||
public activeTrackIds: number[] = null;
|
||||
public currentItemId: number = null;
|
||||
public activeTrackIds: (number[] | null) = null;
|
||||
public currentItemId: (number | null) = null;
|
||||
public customData: any = null;
|
||||
public currentTime: number = 0;
|
||||
public idleReason: string = null;
|
||||
public items: QueueItem[] = null;
|
||||
public loadingItemId: number = null;
|
||||
public media: MediaInfo = null;
|
||||
public idleReason: (string | null) = null;
|
||||
public items: (QueueItem[] | null) = null;
|
||||
public loadingItemId: (number | null) = null;
|
||||
public media: (MediaInfo | null) = null;
|
||||
public playbackRate: number = 1;
|
||||
public playerState: string = PlayerState.IDLE;
|
||||
public preloadedItemId: number = null;
|
||||
public preloadedItemId: (number | null) = null;
|
||||
public repeatMode: string = RepeatMode.OFF;
|
||||
public supportedMediaCommands: string[] = [];
|
||||
public volume: Volume = new Volume();
|
||||
@@ -66,8 +66,6 @@ export default class Media {
|
||||
_updateListeners.set(this, new Set());
|
||||
_sendMediaMessageCallbacks.set(this, new Map());
|
||||
|
||||
_lastCurrentTime.set(this, undefined);
|
||||
|
||||
|
||||
sendMessageResponse({
|
||||
subject: "bridge:/media/initialize"
|
||||
@@ -109,19 +107,23 @@ export default class Media {
|
||||
}
|
||||
|
||||
// Call update listeners
|
||||
for (const listener of _updateListeners.get(this)) {
|
||||
listener(true);
|
||||
const updateListeners = _updateListeners.get(this);
|
||||
if (updateListeners) {
|
||||
for (const listener of updateListeners) {
|
||||
listener(true);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case "shim:/media/sendMediaMessageResponse": {
|
||||
const { messageId, error } = message.data;
|
||||
const { messageId, error }
|
||||
: { messageId: string, error: any } = message.data;
|
||||
|
||||
const [ successCallback, errorCallback ]
|
||||
= _sendMediaMessageCallbacks
|
||||
.get(this)
|
||||
.get(messageId);
|
||||
.get(this)?.get(messageId) ?? [];
|
||||
|
||||
if (error && errorCallback) {
|
||||
errorCallback(new _Error(ErrorCode.SESSION_ERROR));
|
||||
@@ -137,7 +139,7 @@ export default class Media {
|
||||
}
|
||||
|
||||
public addUpdateListener (listener: UpdateListener): void {
|
||||
_updateListeners.get(this).add(listener);
|
||||
_updateListeners.get(this)?.add(listener);
|
||||
}
|
||||
|
||||
public editTracksInfo (
|
||||
@@ -149,12 +151,13 @@ export default class Media {
|
||||
}
|
||||
|
||||
public getEstimatedTime (): number {
|
||||
if (!this.currentTime) {
|
||||
const lastTime = _lastCurrentTime.get(this);
|
||||
|
||||
if (this.currentTime === undefined || lastTime === undefined) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return this.currentTime
|
||||
+ ((Date.now() / 1000) - _lastCurrentTime.get(this));
|
||||
return this.currentTime + ((Date.now() / 1000) - lastTime);
|
||||
}
|
||||
|
||||
public getStatus (
|
||||
@@ -167,7 +170,7 @@ export default class Media {
|
||||
}
|
||||
|
||||
public pause (
|
||||
_pauseRequest: PauseRequest
|
||||
_pauseRequest?: PauseRequest
|
||||
, successCallback?: SuccessCallback
|
||||
, errorCallback?: ErrorCallback): void {
|
||||
|
||||
@@ -254,7 +257,7 @@ export default class Media {
|
||||
}
|
||||
|
||||
public removeUpdateListener (listener: UpdateListener) {
|
||||
_updateListeners.get(this).delete(listener);
|
||||
_updateListeners.get(this)?.delete(listener);
|
||||
}
|
||||
|
||||
public seek (
|
||||
@@ -307,7 +310,7 @@ export default class Media {
|
||||
|
||||
const messageId = uuid();
|
||||
|
||||
_sendMediaMessageCallbacks.get(this).set(messageId, [
|
||||
_sendMediaMessageCallbacks.get(this)?.set(messageId, [
|
||||
successCallback
|
||||
, errorCallback
|
||||
]);
|
||||
|
||||
@@ -20,12 +20,12 @@ type Metadata =
|
||||
| TvShowMediaMetadata;
|
||||
|
||||
export default class MediaInfo {
|
||||
public customData: string = null;
|
||||
public duration: number = null;
|
||||
public metadata: Metadata = null;
|
||||
public customData: any = null;
|
||||
public duration: (number | null) = null;
|
||||
public metadata: (Metadata | null) = null;
|
||||
public streamType: string = StreamType.BUFFERED;
|
||||
public textTrackStyle: TextTrackStyle = null;
|
||||
public tracks: Track[] = null;
|
||||
public textTrackStyle: (TextTrackStyle | null) = null;
|
||||
public tracks: (Track[] | null) = null;
|
||||
|
||||
constructor (
|
||||
public contentId: string
|
||||
|
||||
@@ -6,12 +6,12 @@ import { MetadataType } from "../enums";
|
||||
|
||||
|
||||
export default class MovieMediaMetadata {
|
||||
public images: Image[] = undefined;
|
||||
public images: (Image[] | undefined) = undefined;
|
||||
public metadataType: number = MetadataType.MOVIE;
|
||||
public releaseDate: string = undefined;
|
||||
public releaseYear: number = undefined;
|
||||
public studio: string = undefined;
|
||||
public subtitle: string = undefined;
|
||||
public title: string = undefined;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -6,18 +6,18 @@ import { MetadataType } from "../enums";
|
||||
|
||||
|
||||
export default class MusicTrackMediaMetadata {
|
||||
public albumArtist: string = undefined;
|
||||
public albumName: string = undefined;
|
||||
public artist: string = undefined;
|
||||
public artistName: string = undefined;
|
||||
public composer: string = undefined;
|
||||
public discNumber: number = undefined;
|
||||
public images: Image[] = undefined;
|
||||
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;
|
||||
public releaseYear: number = undefined;
|
||||
public songName: string = undefined;
|
||||
public title: string = undefined;
|
||||
public trackNumber: number = undefined;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -6,15 +6,15 @@ import { MetadataType } from "../enums";
|
||||
|
||||
|
||||
export default class PhotoMediaMetadata {
|
||||
public artist: string = undefined;
|
||||
public creationDateTime: string = undefined;
|
||||
public height: number = undefined;
|
||||
public images: Image[] = undefined;
|
||||
public latitude: number = undefined;
|
||||
public location: string = undefined;
|
||||
public longitude: number = undefined;
|
||||
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;
|
||||
public title: (string | undefined) = undefined;
|
||||
public type: number = MetadataType.PHOTO;
|
||||
public width: number = undefined;
|
||||
public width: (number | undefined) = undefined;
|
||||
}
|
||||
|
||||
@@ -5,9 +5,9 @@ import QueueItem from "./QueueItem";
|
||||
|
||||
export default class QueueInsertItemsRequest {
|
||||
public customData: any = null;
|
||||
public insertBefore: number = null;
|
||||
public requestId: number = null;
|
||||
public sessionId: string = null;
|
||||
public insertBefore: (number | null) = null;
|
||||
public requestId: (number | null) = null;
|
||||
public sessionId: (string | null) = null;
|
||||
public type: string = "QUEUE_INSERT";
|
||||
|
||||
constructor (
|
||||
|
||||
@@ -4,12 +4,12 @@ import MediaInfo from "./MediaInfo";
|
||||
|
||||
|
||||
export default class QueueItem {
|
||||
public activeTrackIds: number[] = null;
|
||||
public activeTrackIds: (number[] | null) = null;
|
||||
public autoplay: boolean = true;
|
||||
public customData: any = null;
|
||||
public itemId: number = null;
|
||||
public itemId: (number | null) = null;
|
||||
public media: MediaInfo;
|
||||
public playbackDuration: number = null;
|
||||
public playbackDuration: (number | null) = null;
|
||||
public preloadTime: number = 0;
|
||||
public startTime: number = 0;
|
||||
|
||||
|
||||
@@ -8,8 +8,8 @@ import { RepeatMode } from "../enums";
|
||||
export default class QueueLoadRequest {
|
||||
public customData: any = null;
|
||||
public repeatMode: string = RepeatMode.OFF;
|
||||
public requestId: number = null;
|
||||
public sessionId: string = null;
|
||||
public requestId: (number | null) = null;
|
||||
public sessionId: (string | null) = null;
|
||||
public startIndex: number = 0;
|
||||
public type: string = "QUEUE_LOAD";
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
export default class QueueRemoveItemsRequest {
|
||||
public customData: any = null;
|
||||
public requestId: number = null;
|
||||
public sessionId: string = null;
|
||||
public requestId: (number | null) = null;
|
||||
public sessionId: (string | null) = null;
|
||||
public type: string = "QUEUE_REMOVE";
|
||||
|
||||
constructor (
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
export default class QueueReorderItemsRequest {
|
||||
public customData: any = null;
|
||||
public insertBefore: number = null;
|
||||
public requestId: number = null;
|
||||
public sessionId: string = null;
|
||||
public insertBefore: (number | null) = null;
|
||||
public requestId: (number | null) = null;
|
||||
public sessionId: (string | null) = null;
|
||||
public type: string = "QUEUE_REORDER";
|
||||
|
||||
constructor (
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
export default class QueueSetPropertiesRequest {
|
||||
public customData: any = null;
|
||||
public repeatMode: string = null;
|
||||
public requestId: number = null;
|
||||
public sessionId: string = null;
|
||||
public repeatMode: (string | null) = null;
|
||||
public requestId: (number | null) = null;
|
||||
public sessionId: (string | null) = null;
|
||||
public type: string = "QUEUE_UPDATE";
|
||||
}
|
||||
|
||||
@@ -5,8 +5,8 @@ import QueueItem from "./QueueItem";
|
||||
|
||||
export default class QueueUpdateItemsRequest {
|
||||
public customData: any = null;
|
||||
public requestId: number = null;
|
||||
public sessionId: string = null;
|
||||
public requestId: (number | null) = null;
|
||||
public sessionId: (string | null) = null;
|
||||
public type: string = "QUEUE_UPDATE";
|
||||
|
||||
constructor (
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
export default class SeekRequest {
|
||||
public currentTime: number = null;
|
||||
public currentTime: (number | null) = null;
|
||||
public customData: any = null;
|
||||
public resumeState: string = null;
|
||||
public resumeState: (string | null) = null;
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
"use strict";
|
||||
|
||||
export default class TextTrackStyle {
|
||||
public backgroundColor: string = null;
|
||||
public backgroundColor: (string | null) = null;
|
||||
public customData: any = null;
|
||||
public edgeColor: string = null;
|
||||
public edgeType: string = null;
|
||||
public fontFamily: string = null;
|
||||
public fontGenericFamily: string = null;
|
||||
public fontScale: number = null;
|
||||
public fontStyle: string = null;
|
||||
public foregroundColor: string = null;
|
||||
public windowColor: string = null;
|
||||
public windowRoundedCornerRadius: number = null;
|
||||
public windowType: string = 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;
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
export default class Track {
|
||||
public customData: any = null;
|
||||
public language: string = null;
|
||||
public name: string = null;
|
||||
public subtype: string = null;
|
||||
public trackContentId: string = null;
|
||||
public trackContentType: string = 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
|
||||
|
||||
@@ -6,16 +6,16 @@ import { MetadataType } from "../enums";
|
||||
|
||||
|
||||
export default class TvShowMediaMetadata {
|
||||
public episode: number = undefined;
|
||||
public episodeNumber: number = undefined;
|
||||
public episodeTitle: string = undefined;
|
||||
public images: Image[] = undefined;
|
||||
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;
|
||||
public releaseYear: number = undefined;
|
||||
public season: number = undefined;
|
||||
public seasonNumber: number = undefined;
|
||||
public seriesTitle: string = undefined;
|
||||
public title: string = undefined;
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import { CAST_LOADER_SCRIPT_URL
|
||||
* URLs, replace it with the standard API URL, the request for
|
||||
* which is handled in the main script.
|
||||
*/
|
||||
const { get, set } = Reflect.getOwnPropertyDescriptor(
|
||||
const desc = Reflect.getOwnPropertyDescriptor(
|
||||
HTMLScriptElement.prototype.wrappedJSObject, "src");
|
||||
|
||||
Reflect.defineProperty(
|
||||
@@ -23,13 +23,13 @@ Reflect.defineProperty(
|
||||
|
||||
configurable: true
|
||||
, enumerable: true
|
||||
, get
|
||||
, get: desc?.get
|
||||
|
||||
, set: exportFunction(function (value) {
|
||||
, set: exportFunction(function setFunc (this: HTMLScriptElement, value) {
|
||||
if (CAST_SCRIPT_URLS.includes(value)) {
|
||||
return set.call(this, CAST_LOADER_SCRIPT_URL);
|
||||
return desc?.set?.call(this, CAST_LOADER_SCRIPT_URL);
|
||||
}
|
||||
|
||||
return set.call(this, value);
|
||||
return desc?.set?.call(this, value);
|
||||
}, window)
|
||||
});
|
||||
|
||||
@@ -25,12 +25,14 @@ export function onMessage (listener: ListenerFunc): ListenerObject {
|
||||
ev.stopPropagation();
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
document.addEventListener(
|
||||
"__castMessage"
|
||||
, on__castMessage, true);
|
||||
|
||||
return {
|
||||
disconnect () {
|
||||
// @ts-ignore
|
||||
document.removeEventListener(
|
||||
"__castMessage"
|
||||
, on__castMessage, true);
|
||||
@@ -52,12 +54,14 @@ export function onMessageResponse (listener: ListenerFunc): ListenerObject {
|
||||
listener(JSON.parse(ev.detail));
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
document.addEventListener(
|
||||
"__castMessageResponse"
|
||||
, on__castMessageResponse, true);
|
||||
|
||||
return {
|
||||
disconnect () {
|
||||
// @ts-ignore
|
||||
document.removeEventListener(
|
||||
"__castMessageResponse"
|
||||
, on__castMessageResponse, true);
|
||||
|
||||
@@ -5,8 +5,8 @@ import * as cast from "../../cast";
|
||||
|
||||
export default class CastOptions {
|
||||
public autoJoinPolicy: string = cast.AutoJoinPolicy.TAB_AND_ORIGIN_SCOPED;
|
||||
public language: string = null;
|
||||
public receiverApplicationId: string = null;
|
||||
public language: (string | null) = null;
|
||||
public receiverApplicationId: (string | null) = null;
|
||||
public resumeSavedSession: boolean = true;
|
||||
|
||||
constructor (options: CastOptions = ({} as CastOptions)) {
|
||||
|
||||
@@ -15,19 +15,19 @@ export default class RemotePlayer {
|
||||
public canControlVolume = false;
|
||||
public canPause = false;
|
||||
public canSeek = false;
|
||||
public controller: RemotePlayerController = null;
|
||||
public controller: (RemotePlayerController | null) = null;
|
||||
public currentTime = 0;
|
||||
public displayName = "";
|
||||
public displayStatus = "";
|
||||
public duration = 0;
|
||||
public imageUrl: string = null;
|
||||
public imageUrl: (string | null) = null;
|
||||
public isConnected = false;
|
||||
public isMediaLoaded = false;
|
||||
public isMuted = false;
|
||||
public isPaused = false;
|
||||
public mediaInfo: cast.media.MediaInfo = null;
|
||||
public playerState: string = null;
|
||||
public savedPlayerState: SavedPlayerState = null;
|
||||
public mediaInfo: (cast.media.MediaInfo | null) = null;
|
||||
public playerState: (string | null) = null;
|
||||
public savedPlayerState: (SavedPlayerState | null) = null;
|
||||
public statusText = "";
|
||||
public title = "";
|
||||
public volumeLevel = 1;
|
||||
|
||||
@@ -10,7 +10,7 @@ export default class SessionStateEventData extends EventData {
|
||||
constructor (
|
||||
public session: CastSession
|
||||
, public sessionState: string
|
||||
, public errorCode: string = null) {
|
||||
, public errorCode: (string | null) = null) {
|
||||
|
||||
super(SessionEventType.APPLICATION_STATUS_CHANGED);
|
||||
}
|
||||
|
||||
@@ -11,5 +11,5 @@ export type MessageListener = (namespace: string, message: string) => void;
|
||||
export type UpdateListener = (isAlive: boolean) => void;
|
||||
export type LoadSuccessCallback = (media: Media) => void;
|
||||
|
||||
export type Callbacks = [ SuccessCallback, ErrorCallback ];
|
||||
export type Callbacks = [ SuccessCallback?, ErrorCallback? ];
|
||||
export type CallbacksMap = Map<string, Callbacks>;
|
||||
|
||||
Reference in New Issue
Block a user