Skip to content

Commit

Permalink
fix(FEC-10524): stub logger and get logger from Kaltura player. (#547)
Browse files Browse the repository at this point in the history
Issue: we bundling a few js-logger on Kaltura player.
Solution: get logger from Kaltura player and add stub whenever we don't get it from Kaltura player.
  • Loading branch information
Yuvalke committed Oct 5, 2020
1 parent e2ba5b4 commit e1196e3
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 36 deletions.
2 changes: 1 addition & 1 deletion docs/configuration.md
Expand Up @@ -16,7 +16,7 @@ var uiManager = new playkit.ui.UIManager(player, config);
targetId: string,
debugActions?: boolean, // optional
forceTouchUI?: boolean, // optional
log?: UILogConfigObject, // optional
logger?: loggerType, // optional
components?: Object, // optional
uiComponents: Array<Object>, //optional
translations: Object, // optional
Expand Down
5 changes: 0 additions & 5 deletions flow-typed/types/log-config.js

This file was deleted.

3 changes: 2 additions & 1 deletion flow-typed/types/ui-options.js
@@ -1,10 +1,11 @@
// @flow
import {loggerType} from '../../src/utils/logger';

declare type UIOptionsObject = {
targetId: string,
debugActions?: boolean,
forceTouchUI?: boolean,
log?: UILogConfigObject,
logger?: loggerType,
components?: ComponentsConfig,
uiComponents?: Array<KPUIComponent>,
translations?: {[langKey: string]: Object},
Expand Down
1 change: 0 additions & 1 deletion package.json
Expand Up @@ -32,7 +32,6 @@
"access": "public"
},
"dependencies": {
"js-logger": "^1.6.0",
"preact": "^10.3.4",
"preact-i18n": "^2.0.0-preactx.2",
"react-redux": "^7.2.0",
Expand Down
14 changes: 4 additions & 10 deletions src/ui-manager.js
Expand Up @@ -6,7 +6,7 @@ import {IntlProvider} from 'preact-i18n';
import {createStore, compose} from 'redux';
import {copyDeep} from './utils/copy-deep';
import {mergeDeep} from './utils/merge-deep';
import {LogLevel, getLogLevel, setLogLevel, setLogHandler} from './utils/logger';
import {getLogLevel, setLogLevel, setLogger, type LogLevelType, LogLevel} from './utils/logger';
import {EventType} from './event/event-type';
import {setEnv} from './utils/key-map';
import {PlayerAreaProvider} from './components/player-area';
Expand Down Expand Up @@ -51,13 +51,7 @@ class UIManager {
* @memberof UIManager
*/
constructor(player: Object, config: UIOptionsObject) {
if (config.log && config.log.level && this.LogLevel[config.log.level]) {
setLogLevel(this.LogLevel[config.log.level]);
}
if (config.log && typeof config.log.handler === 'function') {
setLogHandler(config.log.handler);
}

setLogger(config.logger);
this._uiComponents = [...(config.uiComponents || [])];
this.player = player;
this.targetId = config.targetId;
Expand Down Expand Up @@ -241,10 +235,10 @@ class UIManager {

/**
* Get the ui manager log level.
* @returns {Object} - The log levels of the player.
* @returns {LogLevelType} - The log levels of the player.
* @public
*/
get LogLevel(): {[level: string]: Object} {
get LogLevel(): LogLevelType {
return LogLevel;
}

Expand Down
60 changes: 42 additions & 18 deletions src/utils/logger.js
@@ -1,37 +1,61 @@
//@flow
import * as JsLogger from 'js-logger';

export type LogLevelObject = {value: number, name: string};
export type LogLevelType = {[level: string]: LogLevelObject};
export type loggerFunctionType = {
trace: Function,
debug: Function,
info: Function,
log: Function,
warn: Function,
error: Function,
time: Function,
timeEnd: Function,
getLevel: Function,
setLevel: Function
};

const LogLevel: LogLevelType = {
DEBUG: JsLogger.DEBUG,
INFO: JsLogger.INFO,
TIME: JsLogger.TIME,
WARN: JsLogger.WARN,
ERROR: JsLogger.ERROR,
OFF: JsLogger.OFF
export type LoggerType = {
getLogger: loggerFunctionType,
LogLevel: LogLevelType
};

JsLogger.useDefaults({defaultLevel: JsLogger.ERROR});
let JsLogger = {
get: () => ({
trace: () => {},
debug: () => {},
info: () => {},
log: () => {},
warn: () => {},
error: () => {},
time: () => {},
timeEnd: () => {},
getLevel: () => {},
setLevel: () => {}
})
};

let LogLevel: LogLevelType = {};
/**
* sets the logger handler
* @param {LogHandlerType} handler - the log level
* set logger
* @param {LoggerType} logger - the logger
* @returns {void}
*/
function setLogHandler(handler: LogHandlerType): void {
JsLogger.setHandler((messages, context) => handler(messages, context));
function setLogger(logger: ?LoggerType): void {
if (logger && typeof logger.getLogger === 'function') {
JsLogger.get = logger.getLogger;
}
if (logger && logger.LogLevel) {
LogLevel = logger.LogLevel;
}
}

/**
* get a logger
* @param {?string} name - the logger name
* @returns {Object} - the logger class
*/
function getLogger(name?: string): Object {
if (!name) {
return JsLogger;
}
//$FlowFixMe
return JsLogger.get(name);
}

Expand All @@ -55,4 +79,4 @@ function setLogLevel(level: LogLevelObject, name?: string): void {
}

export default getLogger;
export {LogLevel, getLogLevel, setLogLevel, setLogHandler};
export {getLogLevel, setLogLevel, setLogger, LogLevel};

0 comments on commit e1196e3

Please sign in to comment.