UNPKG

@cantinc/logger

Version:
2 lines (1 loc) 1.59 kB
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(`${o} ${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(`${n}┌ ${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=`${n}`),e?this._log(`${n}${i}✖ ${t} ${e}`):this._log(`${n}${i}✔ ${t}`)}}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(`${n}├ ✖ ${t} ⇝ ${e} ${o}`):this._log(`${n}├ ✔ ${t} ⇝ ${e}`)}}}();