UNPKG

@cmtlyt/logger

Version:
19 lines (18 loc) 4.72 kB
var l=(e=>(e.PREVENT_DEFAULT="cl:logger:preventDefault",e.NO_OUTPUT="cl:logger:noOutput",e))(l||{});function F(e){return e.replace(/\s*?\n\s*/g," ")}const{formatContent:M,_formatContent:d}=(()=>{const e=["function","number","boolean","string","symbol","undefined"],t=new Set,r=(n,a=1,c=!1)=>{if(e.includes(typeof n))return!c&&typeof n=="string"?JSON.stringify(n):String(n);if(t.add(n),n instanceof Set)return N(n,a);if(n instanceof Map)return _(n,a);if(n instanceof Error)return n.stack||n.message;if(Array.isArray(n))return P(n,a);try{return A(n,a)}catch{return String(n)}},o=(n,a=1,c=!1)=>t.has(n)?"[Circular]":r(n,a,c).replace(/\s*?\n\s*?\n\s*/g," ");return{formatContent:(n,a=1,c=!1)=>{const u=o(n,a,c);return t.clear(),u},_formatContent:o}})();function P(e,t=1){return`[ ${e.map(r=>`${" ".repeat(t*2)}${d(r,t+1)},`).join(` `)} ${" ".repeat((t-1)*2)}]`}function A(e,t=1){const r=Object.create(null);for(const o in e)r[o]=d(e[o],t+1);return`{ ${Object.entries(r).map(([o,n])=>`${" ".repeat(t*2)}${o}: ${n},`).join(` `)} ${" ".repeat((t-1)*2)}}`}function _(e,t=1){const r=[...e].map(([o,n])=>F(`{ ${d(o)} => ${d(n)} },`));return`Map(${r.length}) [ ${" ".repeat(t*2)}${[...r].join(` ${" ".repeat(t*2)}`)} ${" ".repeat((t-1)*2)}]`}function N(e,t=1){const r=[...e].map(o=>d(o)).map(o=>`${" ".repeat(t*2)}${F(o)}, `);return`Set(${r.length}) { ${r.join("")}${" ".repeat((t-1)*2)}}`}function v(e){return e.length===1?e.charCodeAt(0)>255:/[^\x00-\xFF]/.test(e)}function R(e,t){return e.map(r=>`${r.text}${" ".repeat(Math.max(0,t-r.length))}`).join(`%c %c`)}function I(e){return e.length>1&&e.some(t=>t.hasChinese)?1e3:Math.max(10,Math.max(...e.map(t=>t.length)))}function V(){const e=new Error(" ").stack;if(!e)return"";const t=e.split(` `),r=t.findIndex(a=>a.includes("Proxy"))+1;if(!r)return"\u65E0\u6CD5\u6B63\u786E\u8BFB\u53D6\u4F4D\u7F6E\u8BF7\u4F7F\u7528\u5B9E\u4F8B\u8C03\u7528, \u5982\u9700\u89E3\u6784\u8BF7\u4F7F\u7528bind\u5C06this\u6307\u5411\u5B9E\u4F8B";const o=t[r],n=o.match(/at\s.*?\((.*?)\)/);return n?n[1]:o}function W(e){return e.map(t=>M(t,void 0,!0)).join(" ").split(` `).map(t=>{let r=0,o=!1;for(let n=0,a=t[n];n<t.length;a=t[++n])v(a)?(r+=2,o=!0):r+=1;return{text:t,length:r,hasChinese:o}})}const k="line-height:1.5;",p=`${k}`,J={info:{kind:"info",tagColor:"#000",tagBg:"#d9d9d9",contentColor:"#000",contentBg:"#fff",borderColor:"#d9d9d9"},warn:{kind:"warn",tagColor:"#fff",tagBg:"#fa8c16",contentColor:"#000",contentBg:"#fff",borderColor:"#fa8c16"},error:{kind:"error",tagColor:"#fff",tagBg:"#f5222d",contentColor:"#000",contentBg:"#fff",borderColor:"#f5222d"},debug:{kind:"debug",tagColor:"#fff",tagBg:"#eb2f96",contentColor:"#000",contentBg:"#fff",borderColor:"#eb2f96"},success:{kind:"success",tagColor:"#fff",tagBg:"#389e0d",contentColor:"#000",contentBg:"#fff",borderColor:"#389e0d"}};function K(e){const t={...J};return e&&Object.keys(e).sort().forEach(r=>{const o=e[r],{inherit:n,...a}=o;if(n){const c=t[n];Object.assign(o,{...c,...a})}r in t?Object.assign(t[r],o):t[r]=o}),t}function q(e,t){return e.length===1?[t]:e.map((r,o)=>o===0?[`${t}border-radius:0 0.4rem 0 0;`]:o===e.length-1?[p,`${t}border-top:none;border-top-right-radius:0;`]:[p,`${t}border-top:none;border-radius:0;`]).flat()}function z(e,t,r){const{needTrace:o,noOutput:n}=e,{kind:a,tagColor:c,tagBg:u,contentColor:$,contentBg:i,borderColor:h,style:f,noOutput:s=n,needTrace:m=o}=t;if(s)throw l.NO_OUTPUT;const b=`${a.toUpperCase()}`,g=W(r),C=`${k}padding:0.1rem 0.4rem;border:0.1rem solid ${h};`,{tagStyle:B,contentStyle:y}=f?.(t)||{tagStyle:`${C}color:${c};background:${u};border-radius:0.4rem 0.4rem 0 0;`,contentStyle:`${C}margin-top:-0.12rem;color:${$};background:${i};border-radius:0 0.4rem 0.4rem;`},j=I(g),w=q(g,y),x=R(g,j);let E=`%c${b}%c %c${x}`;const O=[B,p,...w];if(m){const D=V(),L=`${B}margin-top:0.2rem;border-radius:0.4rem 0.4rem 0 0;`,U=`${y}`;E+=`%c %cTRACE%c %c${D}`,O.push(p,L,p,U)}return[E,...O]}const T=new WeakMap;function G(e){switch(e){case l.PREVENT_DEFAULT:case l.NO_OUTPUT:break;default:throw e}}const H={get(e,t,r){const{userOption:o={},conf:n}=T.get(e)||{};if(!n)throw new Error("illegal call");const{getPrintFunc:a=()=>console.log,printFunc:c,onLogBefore:u}=o||{},$=c||a.call(e,t);t in n||console.warn(`not found [${t}] logConfig, please add logConfig, currently using log replacement`);const i=n[t]||{...n.info,kind:t};return(...h)=>{let f=h;try{if(u){let m=!1;const{kind:b}=i,g={kind:b,messages:f,logConf:i,preventDefault:()=>m=!0,changeMessages:C=>f=C};if(u.call(e,g),m)throw l.PREVENT_DEFAULT}const s=z(e,i,f);$?.(...s)}catch(s){G(s)}}}};function S(e){const{logConfig:t}=e||{},r={...e},o=K(t);return T.set(r,{userOption:r,conf:o}),new Proxy(r,H)}const Q=S();export{S as createLogger,Q as logger};