charm-console
Version:
A beautiful console logger with gradient colors and styles
1 lines • 5.95 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import gradient from 'gradient-string'\n\nconst isBrowser = typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.navigator !== 'undefined'; // 增加navigator检查确保是浏览器环境\n\nfunction getTime() {\n const now = new Date()\n const pad = (n: number) => n.toString().padStart(2, '0')\n const millisec = now.getMilliseconds().toString().padStart(3, '0') // 获取毫秒并格式化为三位\n return `${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())} ${pad(\n now.getHours()\n )}:${pad(now.getMinutes())}:${pad(now.getSeconds())}.${millisec}` // 格式化时间戳包括毫秒\n}\n\n// 渐变背景色(浏览器用 linear-gradient,Node 用多色 ANSI 背景模拟)\nconst browserStyles: Record<string, string> = {\n log: 'background: linear-gradient(90deg, #4ade80, #22c55e); color: #222; padding:2px 8px; border-radius:3px;',\n info: 'background: linear-gradient(90deg, #3b82f6, #2563eb); color: #fff; padding:2px 8px; border-radius:3px;',\n warn: 'background: linear-gradient(90deg, #fde047, #facc15); color: #fff; padding:2px 8px; border-radius:3px;',\n error:\n 'background: linear-gradient(90deg, #ef4444, #dc2626); color: #fff; padding:2px 8px; border-radius:3px;',\n}\n\n// 表情\nconst emojis = {\n log: '🥳',\n info: '🔔',\n warn: '🫵',\n error: '😭',\n}\n\ntype ConsoleMethod = 'log' | 'info' | 'warn' | 'error'\n\n// 3D 立体文字效果的样式\nconst threeDEffects = `\n text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2),\n 0 0 25px rgba(0, 0, 0, 0.4),\n 0 0 5px rgba(0, 0, 0, 0.5);\n transform: scale(1.1);\n`\n\nfunction patchConsole() {\n ;(['log', 'info', 'warn', 'error'] as ConsoleMethod[]).forEach((method) => {\n const original = console[method].bind(console)\n if (isBrowser) {\n console[method] = (...args: any[]) => {\n // 时间戳背景色用 browserStyles[method],文本色强制 #fff,添加3D效果\n const style = browserStyles[method].replace(/color:[^;]+;/, 'color: #fff;') + threeDEffects\n original(`%c${getTime()} ${emojis[method]}:`, style, ...args)\n }\n } else {\n // Node环境下的实现 - 使用渐变色时间戳\n // 为不同日志级别定义渐变色(匹配浏览器端颜色)\n const logGradient = gradient([\n { color: '#A770EF', pos: 0 },\n { color: '#CF8BF3', pos: 0.1 },\n { color: '#22c55e', pos: 1 },\n ])\n const infoGradient = gradient([\n { color: '#A770EF', pos: 0 },\n { color: '#CF8BF3', pos: 0.1 },\n { color: '#2563eb', pos: 1 },\n ])\n const warnGradient = gradient([\n { color: '#A770EF', pos: 0 },\n { color: '#CF8BF3', pos: 0.1 },\n { color: '#facc15', pos: 1 },\n ])\n const errorGradient = gradient([\n { color: '#A770EF', pos: 0 },\n { color: '#CF8BF3', pos: 0.1 },\n { color: '#dc2626', pos: 1 },\n ])\n\n // 根据日志级别获取对应的渐变色\n const getLevelGradient = (level: string) => {\n switch (level) {\n case 'log':\n return logGradient\n case 'info':\n return infoGradient\n case 'warn':\n return warnGradient\n case 'error':\n return errorGradient\n default:\n return logGradient\n }\n }\n console[method] = (...args: any[]) => {\n const timestamp = `[${getTime()}]`\n const gradient = getLevelGradient(method)\n original(gradient(timestamp) + ` ${emojis[method]}:`, ...args)\n }\n }\n })\n}\n\npatchConsole()\n\n\n\n\nexport { patchConsole }\n"],"mappings":"0jBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,kBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAqB,8BAEfC,EAAY,OAAO,OAAW,KAClB,OAAO,OAAO,SAAa,KAC3B,OAAO,OAAO,UAAc,IAE9C,SAASC,GAAU,CACjB,IAAMC,EAAM,IAAI,KACVC,EAAO,GAAc,EAAE,SAAS,EAAE,SAAS,EAAG,GAAG,EACjDC,EAAWF,EAAI,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAG,GAAG,EACjE,MAAO,GAAGA,EAAI,YAAY,CAAC,IAAIC,EAAID,EAAI,SAAS,EAAI,CAAC,CAAC,IAAIC,EAAID,EAAI,QAAQ,CAAC,CAAC,IAAIC,EAC9ED,EAAI,SAAS,CACf,CAAC,IAAIC,EAAID,EAAI,WAAW,CAAC,CAAC,IAAIC,EAAID,EAAI,WAAW,CAAC,CAAC,IAAIE,CAAQ,EACjE,CAGA,IAAMC,EAAwC,CAC5C,IAAK,yGACL,KAAM,yGACN,KAAM,yGACN,MACE,wGACJ,EAGMC,EAAS,CACb,IAAK,YACL,KAAM,YACN,KAAM,YACN,MAAO,WACT,EAKMC,EAAgB;AAAA;AAAA;AAAA;AAAA;AAAA,EAOtB,SAASV,GAAe,CACpB,CAAC,MAAO,OAAQ,OAAQ,OAAO,EAAsB,QAASW,GAAW,CACzE,IAAMC,EAAW,QAAQD,CAAM,EAAE,KAAK,OAAO,EAC7C,GAAIR,EACF,QAAQQ,CAAM,EAAI,IAAIE,IAAgB,CAEpC,IAAMC,EAAQN,EAAcG,CAAM,EAAE,QAAQ,eAAgB,cAAc,EAAID,EAC9EE,EAAS,KAAKR,EAAQ,CAAC,IAAIK,EAAOE,CAAM,CAAC,SAAKG,EAAO,GAAGD,CAAI,CAC9D,MACK,CAGL,IAAME,KAAc,EAAAC,SAAS,CAC3B,CAAE,MAAO,UAAW,IAAK,CAAE,EAC3B,CAAE,MAAO,UAAW,IAAK,EAAI,EAC7B,CAAE,MAAO,UAAW,IAAK,CAAE,CAC7B,CAAC,EACKC,KAAe,EAAAD,SAAS,CAC5B,CAAE,MAAO,UAAW,IAAK,CAAE,EAC3B,CAAE,MAAO,UAAW,IAAK,EAAI,EAC7B,CAAE,MAAO,UAAW,IAAK,CAAE,CAC7B,CAAC,EACKE,KAAe,EAAAF,SAAS,CAC5B,CAAE,MAAO,UAAW,IAAK,CAAE,EAC3B,CAAE,MAAO,UAAW,IAAK,EAAI,EAC7B,CAAE,MAAO,UAAW,IAAK,CAAE,CAC7B,CAAC,EACKG,KAAgB,EAAAH,SAAS,CAC7B,CAAE,MAAO,UAAW,IAAK,CAAE,EAC3B,CAAE,MAAO,UAAW,IAAK,EAAI,EAC7B,CAAE,MAAO,UAAW,IAAK,CAAE,CAC7B,CAAC,EAGKI,EAAoBC,GAAkB,CAC1C,OAAQA,EAAO,CACb,IAAK,MACH,OAAON,EACT,IAAK,OACH,OAAOE,EACT,IAAK,OACH,OAAOC,EACT,IAAK,QACH,OAAOC,EACT,QACE,OAAOJ,CACX,CACF,EACA,QAAQJ,CAAM,EAAI,IAAIE,IAAgB,CACpC,IAAMS,EAAY,IAAIlB,EAAQ,CAAC,IACzBY,EAAWI,EAAiBT,CAAM,EACxCC,EAASI,EAASM,CAAS,EAAI,IAAIb,EAAOE,CAAM,CAAC,SAAK,GAAGE,CAAI,CAC/D,CACF,CACF,CAAC,CACH,CAEAb,EAAa","names":["index_exports","__export","patchConsole","__toCommonJS","import_gradient_string","isBrowser","getTime","now","pad","millisec","browserStyles","emojis","threeDEffects","method","original","args","style","logGradient","gradient","infoGradient","warnGradient","errorGradient","getLevelGradient","level","timestamp"]}