console-listener
Version:
A lightweight utility to intercept and handle console method calls.
1 lines • 4.4 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../src/index.js"],"sourcesContent":["class ConsoleListener {\n // 是否为内部调用\n #isInternalCall\n\n constructor() {\n this.consoleMethods = [\n \"assert\",\n \"clear\",\n \"count\",\n \"debug\",\n \"dir\",\n \"dirxml\",\n \"error\",\n \"exception\",\n \"group\",\n \"groupCollapsed\",\n \"groupEnd\",\n \"info\",\n \"log\",\n \"profile\",\n \"profileEnd\",\n \"table\",\n \"time\",\n \"timeEnd\",\n \"timeStamp\",\n \"trace\",\n \"warn\",\n ]\n\n this.allHandlers = []\n this.methodObj = {}\n this.#isInternalCall = false\n\n this.initializeMethods()\n }\n\n initializeMethods() {\n for (const method of this.consoleMethods) {\n this.methodObj[method] = { handlers: [] }\n this.overrideMethod(method)\n }\n }\n\n overrideMethod(methodName) {\n if (!console[methodName]) return\n const originalMethod = console[methodName]\n\n console[methodName] = (...args) => {\n if (this.#isInternalCall) {\n // 如果是内部调用,直接执行原始方法,防止递归\n originalMethod(...args)\n return\n }\n\n // 否则,正常触发监听器\n this.#isInternalCall = true\n\n for (const handler of this.methodObj[methodName].handlers) {\n handler(...args)\n }\n\n for (const handler of this.allHandlers) {\n handler(methodName, ...args)\n }\n\n this.#isInternalCall = false\n\n originalMethod(...args)\n }\n }\n\n on(methodName, callback) {\n if (typeof methodName === \"function\") {\n this.allHandlers.push(methodName)\n } else if (typeof methodName === \"string\" && methodName in this.methodObj) {\n this.methodObj[methodName].handlers.push(callback)\n } else if (typeof methodName === \"object\") {\n for (const key in methodName) {\n if (key === \"all\") {\n this.allHandlers.push(methodName[key])\n } else if (key in this.methodObj) {\n this.methodObj[key].handlers.push(methodName[key])\n }\n }\n }\n }\n}\n\nexport default ConsoleListener\n"],"names":["ConsoleListener","constructor","consoleMethods","allHandlers","methodObj","initializeMethods","method","handlers","overrideMethod","methodName","console","originalMethod","args","handler","on","callback","push","key"],"mappings":"AAAA,MAAMA,eAAe,CAAC;AACpB;AACA,EAAA,eAAe;AAEfC,EAAAA,WAAWA,GAAG;IACZ,IAAI,CAACC,cAAc,GAAG,CACpB,QAAQ,EACR,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,EACL,QAAQ,EACR,OAAO,EACP,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,UAAU,EACV,MAAM,EACN,KAAK,EACL,SAAS,EACT,YAAY,EACZ,OAAO,EACP,MAAM,EACN,SAAS,EACT,WAAW,EACX,OAAO,EACP,MAAM,CACP;IAED,IAAI,CAACC,WAAW,GAAG,EAAE;AACrB,IAAA,IAAI,CAACC,SAAS,GAAG,EAAE;AACnB,IAAA,IAAI,CAAC,eAAe,GAAG,KAAK;IAE5B,IAAI,CAACC,iBAAiB,EAAE;AAC1B;AAEAA,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,KAAK,MAAMC,MAAM,IAAI,IAAI,CAACJ,cAAc,EAAE;AACxC,MAAA,IAAI,CAACE,SAAS,CAACE,MAAM,CAAC,GAAG;AAAEC,QAAAA,QAAQ,EAAE;OAAI;AACzC,MAAA,IAAI,CAACC,cAAc,CAACF,MAAM,CAAC;AAC7B;AACF;EAEAE,cAAcA,CAACC,UAAU,EAAE;AACzB,IAAA,IAAI,CAACC,OAAO,CAACD,UAAU,CAAC,EAAE;AAC1B,IAAA,MAAME,cAAc,GAAGD,OAAO,CAACD,UAAU,CAAC;AAE1CC,IAAAA,OAAO,CAACD,UAAU,CAAC,GAAG,CAAC,GAAGG,IAAI,KAAK;AACjC,MAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB;QACAD,cAAc,CAAC,GAAGC,IAAI,CAAC;AACvB,QAAA;AACF;;AAEA;AACA,MAAA,IAAI,CAAC,eAAe,GAAG,IAAI;MAE3B,KAAK,MAAMC,OAAO,IAAI,IAAI,CAACT,SAAS,CAACK,UAAU,CAAC,CAACF,QAAQ,EAAE;QACzDM,OAAO,CAAC,GAAGD,IAAI,CAAC;AAClB;AAEA,MAAA,KAAK,MAAMC,OAAO,IAAI,IAAI,CAACV,WAAW,EAAE;AACtCU,QAAAA,OAAO,CAACJ,UAAU,EAAE,GAAGG,IAAI,CAAC;AAC9B;AAEA,MAAA,IAAI,CAAC,eAAe,GAAG,KAAK;MAE5BD,cAAc,CAAC,GAAGC,IAAI,CAAC;KACxB;AACH;AAEAE,EAAAA,EAAEA,CAACL,UAAU,EAAEM,QAAQ,EAAE;AACvB,IAAA,IAAI,OAAON,UAAU,KAAK,UAAU,EAAE;AACpC,MAAA,IAAI,CAACN,WAAW,CAACa,IAAI,CAACP,UAAU,CAAC;AACnC,KAAC,MAAM,IAAI,OAAOA,UAAU,KAAK,QAAQ,IAAIA,UAAU,IAAI,IAAI,CAACL,SAAS,EAAE;MACzE,IAAI,CAACA,SAAS,CAACK,UAAU,CAAC,CAACF,QAAQ,CAACS,IAAI,CAACD,QAAQ,CAAC;AACpD,KAAC,MAAM,IAAI,OAAON,UAAU,KAAK,QAAQ,EAAE;AACzC,MAAA,KAAK,MAAMQ,GAAG,IAAIR,UAAU,EAAE;QAC5B,IAAIQ,GAAG,KAAK,KAAK,EAAE;UACjB,IAAI,CAACd,WAAW,CAACa,IAAI,CAACP,UAAU,CAACQ,GAAG,CAAC,CAAC;AACxC,SAAC,MAAM,IAAIA,GAAG,IAAI,IAAI,CAACb,SAAS,EAAE;AAChC,UAAA,IAAI,CAACA,SAAS,CAACa,GAAG,CAAC,CAACV,QAAQ,CAACS,IAAI,CAACP,UAAU,CAACQ,GAAG,CAAC,CAAC;AACpD;AACF;AACF;AACF;AACF;;;;"}