From b266279babdd9a69e5495e03132adfffa3cf06c0 Mon Sep 17 00:00:00 2001 From: Terry Mun Date: Wed, 1 Aug 2018 10:35:45 +0200 Subject: [PATCH 1/5] Updated typings to match Vimeo's player.js v2.6.3, updated tests to reflect new methods, properties, and events --- types/vimeo__player/index.d.ts | 14 +++++- types/vimeo__player/vimeo__player-tests.ts | 50 +++++++++++++++++++++- 2 files changed, 61 insertions(+), 3 deletions(-) diff --git a/types/vimeo__player/index.d.ts b/types/vimeo__player/index.d.ts index d5f224975e..4e5b21e82d 100755 --- a/types/vimeo__player/index.d.ts +++ b/types/vimeo__player/index.d.ts @@ -1,8 +1,9 @@ -// Type definitions for @vimeo/player 2.0 +// Type definitions for @vimeo/player 2.6.3 // Project: https://github.com/vimeo/player.js // Definitions by: Denis Yılmaz // Felix Albert // Tim Chen +// Terry Mun // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped export function myMethod(a: string): string; @@ -22,7 +23,8 @@ export interface InvalidCuePoint extends Error {name: "InvalidCuePoint"; message export interface RangeError extends Error {name: "RangeError"; message: string; method: string; } export interface TypeError extends Error {name: "TypeError"; message: string; method: string; } -export type EventName = "play" | "pause" | "ended" | "timeupdate" | "progress" | "seeked" | "texttrackchange" | "cuechange" | "cuepoint" | "volumechange" | "error" | "loaded" | string; +export type EventName = "play" | "pause" | "ended" | "timeupdate" | "progress" | "seeked" | "texttrackchange" | + "cuechange" | "cuepoint" | "volumechange" | "playbackratechange" | "bufferstart" | "bufferend" | "error" | "loaded" | string; export type EventCallback = (data: any) => any; export class Player { @@ -51,6 +53,8 @@ export class Player { getLoop(): VimeoPromise; setLoop(loop: boolean): VimeoPromise; getPaused(): VimeoPromise; + getPlaybackRate(): VimeoPromise; + setPlaybackRate(playbackRate: number): VimeoPromise; getTextTracks(): VimeoPromise; getVideoEmbedCode(): VimeoPromise; getVideoId(): VimeoPromise; @@ -85,14 +89,20 @@ export interface Options { url?: string; autopause?: boolean; autoplay?: boolean; + background?: boolean; byline?: boolean; color?: string; height?: number; loop?: boolean; maxheight?: number; maxwidth?: number; + muted?: boolean; + playsinline?: boolean; portrait?: boolean; + responsive?: boolean; + speed?: boolean; title?: boolean; + transparent?: boolean; width?: number; } diff --git a/types/vimeo__player/vimeo__player-tests.ts b/types/vimeo__player/vimeo__player-tests.ts index bf5a637762..0dbba1a3a8 100644 --- a/types/vimeo__player/vimeo__player-tests.ts +++ b/types/vimeo__player/vimeo__player-tests.ts @@ -6,7 +6,21 @@ let player: Player ; player = new Player('handstick', { id: 19231868, - width: 640 + width: 640, + + // Use default values for settings, to test typings + autopause: true, + autoplay: false, + background: false, + byline: true, + color: '#00adef', + loop: false, + muted: false, + playsinline: true, + portrait: true, + speed: false, + title: true, + transparent: true }); const onPlay = (data: any) => { @@ -281,12 +295,33 @@ player.getPaused().then((paused) => { // an error occurred }); +player.getPlaybackRate().then((playbackRate) => { + // playbackRate = a numeric value of the current playback rate +}).catch((error) => { + // an error occurred +}); + +player.setPlaybackRate(0.5).then((playbackRate) => { + // playback rate was set +}).catch((error) => { + switch (error.name) { + case 'RangeError': + // the playback rate was less than 0.5 or greater than 2 + break; + + default: + // some other error occurred + break; + } +}); + player.getTextTracks().then((tracks) => { // tracks = an array of track objects tracks.forEach((track) => { console.log(track.label); console.log(track.kind); console.log(track.language); + console.log(track.mode); }); }).catch((error) => { // an error occurred @@ -436,6 +471,19 @@ player.on('volumechange', (data) => { console.log(data.volume); }); +player.on('playbackratechange', (data) => { + // data is an object containing properties specific to that event + console.log(data.playbackRate); +}); + +player.on('bufferstart', (data) => { + // no associated data with this event +}); + +player.on('bufferend', (data) => { + // no associated data with this event +}); + player.on('error', (data) => { // data is an object containing properties specific to that event console.log(data.message); From 2924d2ed0388c5e6c388db7686ba7a699492cbf9 Mon Sep 17 00:00:00 2001 From: Terry Mun Date: Wed, 1 Aug 2018 11:21:31 +0200 Subject: [PATCH 2/5] Cleanup of unused boilerplate lines --- types/vimeo__player/index.d.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/types/vimeo__player/index.d.ts b/types/vimeo__player/index.d.ts index 4e5b21e82d..edf98de573 100755 --- a/types/vimeo__player/index.d.ts +++ b/types/vimeo__player/index.d.ts @@ -6,9 +6,6 @@ // Terry Mun // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -export function myMethod(a: string): string; -export function myOtherMethod(a: number): number; - export type CallbackFunction = (...args: any[]) => any; export interface Error {name: string; message: string; method: string; } From 2bf892910b946867fc2e83d07ad638c278969c5e Mon Sep 17 00:00:00 2001 From: Terry Mun Date: Wed, 1 Aug 2018 11:21:46 +0200 Subject: [PATCH 3/5] setPlaybackRate may return RangeError --- types/vimeo__player/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/vimeo__player/index.d.ts b/types/vimeo__player/index.d.ts index edf98de573..181edb4f97 100755 --- a/types/vimeo__player/index.d.ts +++ b/types/vimeo__player/index.d.ts @@ -51,7 +51,7 @@ export class Player { setLoop(loop: boolean): VimeoPromise; getPaused(): VimeoPromise; getPlaybackRate(): VimeoPromise; - setPlaybackRate(playbackRate: number): VimeoPromise; + setPlaybackRate(playbackRate: number): VimeoPromise; getTextTracks(): VimeoPromise; getVideoEmbedCode(): VimeoPromise; getVideoId(): VimeoPromise; From bbfa43d8364e412f93ba67a49666520a0f05c014 Mon Sep 17 00:00:00 2001 From: Terry Mun Date: Wed, 1 Aug 2018 12:52:32 +0200 Subject: [PATCH 4/5] options argument in constructor is optional --- types/vimeo__player/index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/vimeo__player/index.d.ts b/types/vimeo__player/index.d.ts index 181edb4f97..6fac1db7d9 100755 --- a/types/vimeo__player/index.d.ts +++ b/types/vimeo__player/index.d.ts @@ -25,7 +25,7 @@ export type EventName = "play" | "pause" | "ended" | "timeupdate" | "progress" | export type EventCallback = (data: any) => any; export class Player { - constructor(element: HTMLIFrameElement|HTMLElement|string, options: Options); + constructor(element: HTMLIFrameElement|HTMLElement|string, options?: Options); on(event: EventName, callback: EventCallback): void; off(event: EventName, callback?: EventCallback): void; From e2761ccf91a7dc3f9f5bfd065b2b459815561810 Mon Sep 17 00:00:00 2001 From: Terry Mun Date: Tue, 14 Aug 2018 09:08:16 +0200 Subject: [PATCH 5/5] Removed typings for unexposed internals Both `playerMap` and `readyMap` are internal weakmaps in Vimeo's player.js and are never exposed, so there is no need to export their types. --- types/vimeo__player/index.d.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/types/vimeo__player/index.d.ts b/types/vimeo__player/index.d.ts index 6fac1db7d9..cf7475f246 100755 --- a/types/vimeo__player/index.d.ts +++ b/types/vimeo__player/index.d.ts @@ -111,6 +111,4 @@ export interface VimeoPromise extends Promise { } /*~ You can declare properties of the module using const, let, or var */ -export const playerMap: WeakMap; -export const readyMap: WeakMap; export default Player;