Permalink
Cannot retrieve contributors at this time
53 lines (45 sloc)
1.6 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
codeql-action/node_modules/nise/lib/configure-logger/index.js
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"use strict"; | |
// cache a reference to setTimeout, so that our reference won't be stubbed out | |
// when using fake timers and errors will still get logged | |
// https://github.com/cjohansen/Sinon.JS/issues/381 | |
var realSetTimeout = setTimeout; | |
function configureLogger(config) { | |
// eslint-disable-next-line no-param-reassign | |
config = config || {}; | |
// Function which prints errors. | |
if (!config.hasOwnProperty("logger")) { | |
// eslint-disable-next-line no-empty-function | |
config.logger = function() {}; | |
} | |
// When set to true, any errors logged will be thrown immediately; | |
// If set to false, the errors will be thrown in separate execution frame. | |
if (!config.hasOwnProperty("useImmediateExceptions")) { | |
config.useImmediateExceptions = true; | |
} | |
// wrap realSetTimeout with something we can stub in tests | |
if (!config.hasOwnProperty("setTimeout")) { | |
config.setTimeout = realSetTimeout; | |
} | |
return function logError(label, e) { | |
var msg = `${label} threw exception: `; | |
var err = { | |
name: e.name || label, | |
message: e.message || e.toString(), | |
stack: e.stack | |
}; | |
function throwLoggedError() { | |
err.message = msg + err.message; | |
throw err; | |
} | |
config.logger(`${msg}[${err.name}] ${err.message}`); | |
if (err.stack) { | |
config.logger(err.stack); | |
} | |
if (config.useImmediateExceptions) { | |
throwLoggedError(); | |
} else { | |
config.setTimeout(throwLoggedError, 0); | |
} | |
}; | |
} | |
module.exports = configureLogger; |