lib/logging/index.js
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
const utils = require('../utils')
let websocket = null
const sep = '\n/* ### NEXT TESTCASE ############################## */'
const color = {
red: '\u{1b}[1;31m',
green: '\u{1b}[1;32m',
clear: '\u{1b}[0m'
}
if (utils.platform.name.isWindows) {
color.red = ''
color.green = ''
color.clear = ''
}
class logger {
static console (msg) {
if (websocket) {
websocket.send(msg)
}
if (typeof window === 'undefined') {
try {
print(msg) // eslint-disable-line no-undef
} catch (e) {
console.log(msg)
}
} else if (window.dump) {
dump(msg) // eslint-disable-line no-undef
} else if (window.console && window.console.log) {
console.log(msg)
} else {
throw new Error('Unable to run console logger.')
}
}
static dump (msg) {
this.console(msg)
}
static dumpln (msg) {
this.dump(`${msg}\n`)
}
static log (msg) {
this.dumpln(`/*L*/ ${utils.script.safely(msg)}`)
}
static info (msg) {
this.dumpln(`/*L*/ /* ${msg} */`)
}
static error (msg) {
this.dumpln(color.red + msg + color.clear)
}
static ok (msg) { // eslint-disable-line no-unused-vars
this.dumpln(color.green + msg + color.green)
}
static JSError (msg) {
this.error(`/* ERROR: ${msg} */`)
}
static comment (msg) {
this.dumpln(`/*L*/ // ${msg}`)
}
static separator () {
this.dumpln(color.green + sep + color.clear)
}
static traceback () {
this.error('===[ Traceback ] ===')
try {
throw new Error()
} catch (e) {
this.dump(e.stack || e.stacktrace || '')
}
}
}
module.exports = logger