@cantinc/logger
Version:
CANT inc. log system
2 lines (1 loc) • 1.59 kB
JavaScript
var logger=function(){"use strict";const t="undefined"==typeof require?null:require("readline"),e=t?function(){t.moveCursor(process.stdout,0,-1)}:()=>{},o=t?function(){t.clearLine(process.stdout)}:()=>{};let s=0;const n=console.log;console.log=function(){s++,o(),n.apply(this,arguments)};const l=console.warn;console.warn=function(){s++,l.apply(this,arguments)};const i=console.error;console.error=function(){s++,i.apply(this,arguments)};return new class{constructor(){this.deep=[]}_log(t){console.log(t)}log(t){const e=this.deep;let o="",s=0;for(;e[s];)o+="|",s++;this._log(`[32m${o}[39m ${t}`)}moveUp(){return e()}callCallback(t,e){if(e){let o;try{o=e()}catch(e){this.end(t,e.message)}return o instanceof Promise?o.then((e=>(this.end(t),e)),(e=>(this.end(t,e.message),Promise.reject(e)))):(this.end(t),o)}}start(t,e){const o=this.deep;let n="",l=0;for(;o[l];)n+="|",l++;return o[l]=t,this._log(`[32m${n}┌ [39m${t}`),this.lastId=t,this.lastCount=s,this.callCallback(t,e)}end(t,e){const o=this.deep;let n="",l=o.length-1;for(;l>-1;){if(o[l]===t){o[l]="";break}l--}if(l>-1){for(let t=0;t<l;t++)n+=o[t]?"|":" ";let i="";this.lastId===t&&this.lastCount===s?this.moveUp():i="└ ",e&&!n||(n=`[32m${n}`),e?this._log(`${n}[31m${i}✖ [90m${t} [31m${e}[39m`):this._log(`${n}${i}✔ [90m${t}[39m`)}}next(t,e,o){const s=this.deep;let n="",l=s.length-1;for(;l>-1;){if(s[l]===t){s[l]=e;break}l--}if(l>-1)for(let t=0;t<l;t++)n+=s[t]?"|":" ";o?this._log(`[32m${n}[31m├ ✖ [90m${t} [31m⇝[39m ${e} [31m${o}[39m`):this._log(`[32m${n}├ ✔ [90m${t} [32m⇝[39m ${e}`)}}}();