UNPKG

@cliqz-oss/firefox-client

Version:
108 lines (94 loc) 2.85 kB
var select = require("js-select"), extend = require("./extend"), ClientMethods = require("./client-methods"), JSObject = require("./jsobject"); module.exports = Console; function Console(client, actor) { this.initialize(client, actor); this.on("consoleAPICall", this.onConsoleAPI.bind(this)); this.on("pageError", this.onPageError.bind(this)); } Console.prototype = extend(ClientMethods, { types: ["PageError", "ConsoleAPI"], /** * Response object: * -empty- */ startListening: function(cb) { this.request('startListeners', { listeners: this.types }, cb); }, /** * Response object: * -empty- */ stopListening: function(cb) { this.request('stopListeners', { listeners: this.types }, cb); }, /** * Event object: * level - "log", etc. * filename - file with call * lineNumber - line number of call * functionName - function log called from * timeStamp - ms timestamp of call * arguments - array of the arguments to log call * private - */ onConsoleAPI: function(event) { var message = this.transformConsoleCall(event.message); this.emit("console-api-call", message); }, /** * Event object: * errorMessage - string error message * sourceName - file error * lineText * lineNumber - line number of error * columnNumber - column number of error * category - usually "content javascript", * timeStamp - time in ms of error occurance * warning - whether it's a warning * error - whether it's an error * exception - whether it's an exception * strict - * private - */ onPageError: function(event) { this.emit("page-error", event.pageError); }, /** * Response object: array of page error or console call objects. */ getCachedLogs: function(cb) { var message = { messageTypes: this.types }; this.request('getCachedMessages', message, function(resp) { select(resp, ".messages > *").update(this.transformConsoleCall.bind(this)); return resp.messages; }.bind(this), cb); }, /** * Response object: * -empty- */ clearCachedLogs: function(cb) { this.request('clearMessagesCache', cb); }, /** * Response object: * input - original input * result - result of the evaluation, a value or JSObject * timestamp - timestamp in ms of the evaluation * exception - any exception as a result of the evaluation */ evaluateJS: function(text, cb) { this.request('evaluateJS', { text: text }, function(resp) { return select(resp, ".result, .exception") .update(this.createJSObject.bind(this)); }.bind(this), cb) }, transformConsoleCall: function(message) { return select(message, ".arguments > *").update(this.createJSObject.bind(this)); } })