@holz/console-backend
Version:
A console backend for Holz
2 lines (1 loc) • 1.06 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r={fatal:60,error:50,warn:40,info:30,debug:20,trace:10},c=1e3,i=60*c,u=60*i,d=24*u,h=(a,s=a)=>{const t=a.getTime()-s.getTime(),e=Math.abs(t),n=t<0?"":"+";return e>=d?`${n}${Math.round(t/d)}d`:e>=u?`${n}${Math.round(t/u)}h`:e>=i?`${n}${Math.round(t/i)}m`:e>=c?`${n}${Math.round(t/c)}s`:`${n}${t}ms`},v=(a={})=>{const s=a.console??console;let t;return e=>{const n=new Date(e.timestamp),{error:l,...f}=e.context,m=[{include:!0,format:"%s",values:[e.message]},{include:Object.keys(f).length>0,format:"%o",values:[f]},{include:!0,format:"%c%s",values:["color: gray",h(n,t)]},{include:e.origin.length>0,format:"%c%s",values:["color: rgba(128, 128, 128, 0.6); font-style: italic",e.origin.join(":")]},{include:l,format:"%o",values:[l]}].filter(o=>o.include),g=m.map(o=>o.format).join(" "),$=m.flatMap(o=>o.values);s[b[e.level]](g,...$),t=n}},b={[r.trace]:"trace",[r.debug]:"debug",[r.info]:"info",[r.warn]:"warn",[r.error]:"error",[r.fatal]:"error"};exports.createConsoleBackend=v;