Skip to content

Commit

Permalink
feat(polyfills): handle polyfills to support safari 9, ie11, ie10 and…
Browse files Browse the repository at this point in the history
… ie9 (#10)
  • Loading branch information
Dan Ziv authored and OrenMe committed Jul 30, 2017
1 parent 6eda21c commit 2dc37f5
Show file tree
Hide file tree
Showing 14 changed files with 38,288 additions and 25,843 deletions.
63,961 changes: 38,153 additions & 25,808 deletions dist/kaltura-player.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/kaltura-player.js.map

Large diffs are not rendered by default.

20 changes: 15 additions & 5 deletions dist/kaltura-player.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/kaltura-player.min.js.map

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,13 @@
"webpack-dev-server": "latest"
},
"dependencies": {
"babel-polyfill": "^6.23.0",
"hls.js": "^0.7.9",
"js-logger": "^1.3.0",
"playkit-js": "git+https://github.com/kaltura/playkit-js.git#develop",
"playkit-js-dash": "git+https://github.com/kaltura/playkit-js-dash.git#develop",
"playkit-js-hls": "git+https://github.com/kaltura/playkit-js-hls.git#develop",
"playkit-js-kanalytics": "git+https://github.com/kaltura/playkit-js-kanalytics.git#develop",
"playkit-js-providers": "git+https://github.com/kaltura/playkit-js-providers.git#develop",
"playkit-js-ui": "git+https://github.com/kaltura/playkit-js-ui.git#develop",
"shaka-player": "latest"
Expand Down
9 changes: 5 additions & 4 deletions src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,18 @@
var config = {
partnerId: 1091,
entryId: '0_wifqaipd',
ks: '',
env: {
baseUrl: "http://qa-apache-testing-ubu-01.dev.kaltura.com/",
beUrl: "http://qa-apache-testing-ubu-01.dev.kaltura.com/api_v3"
},
playback: {
autoplay: true
plugins: {
kanalytics: {
beUrl: "http://qa-apache-testing-ubu-01.dev.kaltura.com/api_v3"
}
}
};
KalturaPlayer.setup('player-placeholder', config)
.then((response) => {
.then(function (response) {
window.player = response.player;
window.provider = response.provider;
});
Expand Down
15 changes: 10 additions & 5 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
// @flow
import 'babel-polyfill' // Important! must be first import to support older browsers compatibility
import PolyfillManager from './polyfill/polyfill-manager'
import './polyfill/all'

PolyfillManager.installAll();

// Import core
import * as Playkit from 'playkit-js'
Expand All @@ -8,16 +13,16 @@ import OvpProvider from 'playkit-js-providers/dist/ovpProvider'

// Import UI
import PlaykitUI from 'playkit-js-ui'
import '../node_modules/playkit-js-ui/src/styles/style.css'

// Import media source adapters
import 'playkit-js-hls';
import 'playkit-js-dash';
import 'playkit-js-hls'
import 'playkit-js-dash'

// Import plugins
import 'playkit-js-kanalytics'

// Import setup method
import setup from './setup'

// TODO: Import plugins

export {Playkit, OvpProvider, PlaykitUI, setup};

2 changes: 2 additions & 0 deletions src/polyfill/all.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import './performance-now'

24 changes: 24 additions & 0 deletions src/polyfill/performance-now.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import PolyfillManager from './polyfill-manager'
import LoggerFactory from '../utils/logger'

export default class PerformanceNowPolyfill {
static id: string = 'performance.now';
static _logger: any = LoggerFactory.getLogger('PerformanceNowPolyfill');

static install(): void {
if (global.performance && global.performance.now) {
PerformanceNowPolyfill._logger.debug('No need to install polyfill');
return;
}
PerformanceNowPolyfill._logger.debug('Installing polyfill');
var startTime = Date.now();
if (!global.performance) {
global.performance = {};
}
global.performance.now = function () {
return Date.now() - startTime;
};
}
}

PolyfillManager.register(PerformanceNowPolyfill);
18 changes: 18 additions & 0 deletions src/polyfill/polyfill-manager.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import LoggerFactory from '../utils/logger'

export default class PolyfillManager {
static _polyfills: Array<Function> = [];
static _logger: any = LoggerFactory.getLogger('PolyfillManager');

static register(polyfill: Function): void {
PolyfillManager._logger.debug('Register <' + polyfill.id + '> polyfill');
PolyfillManager._polyfills.push(polyfill);
}

static installAll(): void {
PolyfillManager._logger.debug('Installing all polyfills');
for (let i = 0; i < PolyfillManager._polyfills.length; i++) {
PolyfillManager._polyfills[i].install();
}
}
}
9 changes: 8 additions & 1 deletion src/setup.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@
import {loadPlayer, Utils} from 'playkit-js'
import PlaykitUI from 'playkit-js-ui'
import OvpProvider from 'playkit-js-providers/dist/ovpProvider'
import handleSessionId from './session-id'
import handleSessionId from './utils/session-id'
import LoggerFactory from './utils/logger'
import './assets/style.css'

const CONTAINER_CLASS_NAME: string = 'kaltura-player-container';
const logger = LoggerFactory.getLogger('Setup');

/**
* Setup the kaltura player.
Expand All @@ -16,7 +18,9 @@ const CONTAINER_CLASS_NAME: string = 'kaltura-player-container';
export default function setup(targetId: string, userConfig: ?Object): Promise<*> {
let response = {};
let playerConfig = extractPlayerConfig(userConfig);
logger.debug('Extract player config', playerConfig);
let providerConfig = extractProviderConfig(userConfig);
logger.debug('Extract provider config', providerConfig);
return new Promise((resolve, reject) => {
// Create player container
let containerId = createKalturaPlayerContainer(targetId);
Expand All @@ -31,16 +35,19 @@ export default function setup(targetId: string, userConfig: ?Object): Promise<*>
buildUI(response.player, playerConfig);
// Handle provider config
if (providerConfig.partnerId) {
logger.debug('Partner id provided, creating ovp provider');
response.provider = new OvpProvider(providerConfig.partnerId, providerConfig.ks, providerConfig.env);
return response.provider.getConfig(providerConfig.entryId, providerConfig.uiConfId)
.then(data => {
Utils.Object.mergeDeep(playerConfig, data);
response.player.configure(playerConfig);
logger.debug('Finish setup, returning response', response);
resolve(response);
}).catch(error => {
reject(error);
});
}
logger.debug('Finish setup, returning response', response);
resolve(response);
});
}
Expand Down
28 changes: 28 additions & 0 deletions src/utils/logger.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
//@flow
import * as JsLogger from 'js-logger';

class LoggerFactory {
constructor(options?: Object) {
JsLogger.useDefaults(options || {});
}

getLogger(name?: string) {
if (!name) {
return JsLogger;
}
return JsLogger.get(name);
}
}

const Logger = new LoggerFactory({defaultLevel: JsLogger.DEBUG});
const LOG_LEVEL: { [level: string]: Object } = {
"DEBUG": JsLogger.DEBUG,
"INFO": JsLogger.INFO,
"TIME": JsLogger.TIME,
"WARN": JsLogger.WARN,
"ERROR": JsLogger.ERROR,
"OFF": JsLogger.OFF
};

export default Logger;
export {LOG_LEVEL};
File renamed without changes.
38 changes: 20 additions & 18 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1002,8 +1002,8 @@ caniuse-api@^1.5.2:
lodash.uniq "^4.5.0"

caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
version "1.0.30000702"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000702.tgz#a60cd30f3ef44ae7b5ed12e9d9b70d4bff6352cb"
version "1.0.30000704"
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000704.tgz#8c5aa6fed8058e65c70f2c1f5d63f7088650705c"

caseless@~0.12.0:
version "0.12.0"
Expand Down Expand Up @@ -1901,10 +1901,6 @@ ent@~2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"

enumify@latest:
version "1.0.4"
resolved "https://registry.yarnpkg.com/enumify/-/enumify-1.0.4.tgz#2bb6263071dd4551e54c55755707fad24a40cd7e"

errno@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
Expand Down Expand Up @@ -4118,16 +4114,22 @@ pkg-dir@^1.0.0:
version "1.0.0"
resolved "git+https://github.com/kaltura/playkit-js-hls.git#3d8de87e59a152883441a61135218f74615b56cc"

"playkit-js-kanalytics@git+https://github.com/kaltura/playkit-js-kanalytics.git#develop":
version "1.0.0"
resolved "git+https://github.com/kaltura/playkit-js-kanalytics.git#ee3130122b22ee4ba59ac50ede24763bc2f5b9a6"
dependencies:
playkit-js "git+https://github.com/kaltura/playkit-js.git#develop"
playkit-js-providers "git+https://github.com/kaltura/playkit-js-providers.git#develop"

"playkit-js-providers@git+https://github.com/kaltura/playkit-js-providers.git#develop":
version "1.0.0"
resolved "git+https://github.com/kaltura/playkit-js-providers.git#a6c44b1571443177a348f11f6e5ce97528d9c089"
resolved "git+https://github.com/kaltura/playkit-js-providers.git#a414f8d62e1d8c5dddda22ac78392f7f4c1fe812"
dependencies:
enumify latest
js-logger "^1.3.0"

"playkit-js-ui@git+https://github.com/kaltura/playkit-js-ui.git#develop":
version "1.0.0"
resolved "git+https://github.com/kaltura/playkit-js-ui.git#856b2390f70b4834cb4e35229494bafba7d30760"
resolved "git+https://github.com/kaltura/playkit-js-ui.git#85a62e728c1bb85daf33bae098c72ad93ee44fe8"
dependencies:
js-logger "^1.3.0"
preact "^8.1.0"
Expand All @@ -4138,7 +4140,7 @@ pkg-dir@^1.0.0:

"playkit-js@git+https://github.com/kaltura/playkit-js.git#develop":
version "0.2.0"
resolved "git+https://github.com/kaltura/playkit-js.git#1133a1730a46459d38a21d8e7b5bd5c2b3f162d6"
resolved "git+https://github.com/kaltura/playkit-js.git#ad9af3d97c1da5fa410b9643b570dd845e520d80"
dependencies:
js-logger "^1.3.0"
ua-parser-js "^0.7.13"
Expand Down Expand Up @@ -4394,8 +4396,8 @@ postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0
supports-color "^3.2.3"

postcss@^6.0.1:
version "6.0.7"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.7.tgz#6a097477c46d13d0560a817d69abc0bae549d0a0"
version "6.0.8"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.8.tgz#89067a9ce8b11f8a84cbc5117efc30419a0857b3"
dependencies:
chalk "^2.0.1"
source-map "^0.5.6"
Expand Down Expand Up @@ -5213,8 +5215,8 @@ string-width@^1.0.1, string-width@^1.0.2:
strip-ansi "^3.0.0"

string-width@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.0.tgz#030664561fc146c9423ec7d978fe2457437fe6d0"
version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
dependencies:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
Expand Down Expand Up @@ -5326,8 +5328,8 @@ table@^3.7.8:
string-width "^2.0.0"

tapable@^0.2.5, tapable@~0.2.5:
version "0.2.6"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d"
version "0.2.7"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.7.tgz#e46c0daacbb2b8a98b9b0cea0f4052105817ed5c"

tar-pack@^3.4.0:
version "3.4.0"
Expand Down Expand Up @@ -5477,8 +5479,8 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"

ua-parser-js@^0.7.13:
version "0.7.13"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.13.tgz#cd9dd2f86493b3f44dbeeef3780fda74c5ee14be"
version "0.7.14"
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.14.tgz#110d53fa4c3f326c121292bbeac904d2e03387ca"

uglify-js@^2.6, uglify-js@^2.8.29:
version "2.8.29"
Expand Down

0 comments on commit 2dc37f5

Please sign in to comment.