44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import { CONSOLE_LEVELS, originalConsoleMethods } from '../logger.js';
|
|
import { fill } from '../object.js';
|
|
import { GLOBAL_OBJ } from '../worldwide.js';
|
|
import { addHandler, maybeInstrument, triggerHandlers } from './_handlers.js';
|
|
|
|
/**
|
|
* Add an instrumentation handler for when a console.xxx method is called.
|
|
*
|
|
* Use at your own risk, this might break without changelog notice, only used internally.
|
|
* @hidden
|
|
*/
|
|
function addConsoleInstrumentationHandler(handler) {
|
|
const type = 'console';
|
|
addHandler(type, handler);
|
|
maybeInstrument(type, instrumentConsole);
|
|
}
|
|
|
|
function instrumentConsole() {
|
|
if (!('console' in GLOBAL_OBJ)) {
|
|
return;
|
|
}
|
|
|
|
CONSOLE_LEVELS.forEach(function (level) {
|
|
if (!(level in GLOBAL_OBJ.console)) {
|
|
return;
|
|
}
|
|
|
|
fill(GLOBAL_OBJ.console, level, function (originalConsoleMethod) {
|
|
originalConsoleMethods[level] = originalConsoleMethod;
|
|
|
|
return function (...args) {
|
|
const handlerData = { args, level };
|
|
triggerHandlers('console', handlerData);
|
|
|
|
const log = originalConsoleMethods[level];
|
|
log && log.apply(GLOBAL_OBJ.console, args);
|
|
};
|
|
});
|
|
});
|
|
}
|
|
|
|
export { addConsoleInstrumentationHandler };
|
|
//# sourceMappingURL=console.js.map
|