console-listener
Version:
A lightweight utility to intercept and handle console method calls.
3 lines (2 loc) • 1.03 kB
JavaScript
define((function(){"use strict";return class{#e;constructor(){this.consoleMethods=["assert","clear","count","debug","dir","dirxml","error","exception","group","groupCollapsed","groupEnd","info","log","profile","profileEnd","table","time","timeEnd","timeStamp","trace","warn"],this.allHandlers=[],this.methodObj={},this.#e=!1,this.initializeMethods()}initializeMethods(){for(const e of this.consoleMethods)this.methodObj[e]={handlers:[]},this.overrideMethod(e)}overrideMethod(e){if(!console[e])return;const t=console[e];console[e]=(...s)=>{if(this.#e)t(...s);else{this.#e=!0;for(const t of this.methodObj[e].handlers)t(...s);for(const t of this.allHandlers)t(e,...s);this.#e=!1,t(...s)}}}on(e,t){if("function"==typeof e)this.allHandlers.push(e);else if("string"==typeof e&&e in this.methodObj)this.methodObj[e].handlers.push(t);else if("object"==typeof e)for(const t in e)"all"===t?this.allHandlers.push(e[t]):t in this.methodObj&&this.methodObj[t].handlers.push(e[t])}}}));
//# sourceMappingURL=console-listener.amd.min.js.map