/**
* Provides basis logging and deprecation utilities
*/
export class Logger {
constructor () {
/**
* Enable debug level logging. Set to `false` by default.
* @name enableDebugLog
* @memberof Logger
* @instance
*/
this.enableDebugLog = false;
this._alreadyWarned = {};
}
/**
* Put a warning message to console
* @example
* logger.warn('Invalid use of .tension on CurveLinear');
* @param {String} [msg]
* @returns {Logger}
*/
warn (msg) {
if (console) {
if (console.warn) {
console.warn(msg);
} else if (console.log) {
console.log(msg);
}
}
return this;
}
/**
* Put a warning message to console. It will warn only on unique messages.
* @example
* logger.warnOnce('Invalid use of .tension on CurveLinear');
* @param {String} [msg]
* @returns {Logger}
*/
warnOnce (msg) {
if (!this._alreadyWarned[msg]) {
this._alreadyWarned[msg] = true;
logger.warn(msg);
}
return this;
}
/**
* Put a debug message to console. It is controlled by `logger.enableDebugLog`
* @example
* logger.debug('Total number of slices: ' + numSlices);
* @param {String} [msg]
* @returns {Logger}
*/
debug (msg) {
if (this.enableDebugLog && console) {
if (console.debug) {
console.debug(msg);
} else if (console.log) {
console.log(msg);
}
}
return this;
}
}
export const logger = new Logger();