UNPKG

missionlog

Version:

🚀 lightweight TypeScript abstract logger • level based filtering and optional tagging • supports both ESM & CJS

10 lines (9 loc) • 2.94 kB
"use strict";var L=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var p=(r,e)=>{for(var n in e)L(r,n,{get:e[n],enumerable:!0})},F=(r,e,n,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let l of A(e))!f.call(r,l)&&l!==n&&L(r,l,{get:()=>e[l],enumerable:!(t=_(e,l))||t.enumerable});return r};var T=r=>F(L({},"__esModule",{value:!0}),r);var C={};p(C,{DEFAULT_TAG:()=>b,Log:()=>a,LogLevel:()=>d,log:()=>D,tag:()=>w});module.exports=T(C);/** * @module missionlog * @author Ray Martone * @copyright Copyright (c) 2019-2025 Ray Martone * @license MIT * @description A lightweight TypeScript logger with level-based filtering and tagging. * Drop-in replacement for console.log with additional categorization and filtering capabilities. */var d=(i=>(i.TRACE="TRACE",i.DEBUG="DEBUG",i.INFO="INFO",i.WARN="WARN",i.ERROR="ERROR",i.OFF="OFF",i))(d||{}),b="*",s=new Set,w=new Proxy({},{get(r,e){if(typeof e=="string"&&s.has(e))return e},ownKeys(){return Array.from(s)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}}),c=new Map([[1,"TRACE"],[2,"DEBUG"],[3,"INFO"],[4,"WARN"],[5,"ERROR"],[6,"OFF"]]),g=new Map([["TRACE",1],["DEBUG",2],["INFO",3],["WARN",4],["ERROR",5],["OFF",6]]),h=3,k=2,O=[],a=class{_defaultLevel=h;_tagToLevel=new Map;_levelCache=new Map;_callback;init(e,n){if(this._levelCache.clear(),e)for(let t in e){let l=e[t];this._setTagLevel(t,l)}return n!==void 0&&(this._callback=n),this}_setTagLevel(e,n){let t=g.get(n);t!==void 0?e==="*"?this._defaultLevel=t:(this._tagToLevel.set(e,t),s.add(e)):(console.warn(`Invalid log level "${n}" for tag "${e}". Using default (${c.get(this._defaultLevel)}).`),this._tagToLevel.set(e,k),s.add(e))}_shouldLog(e,n){let t=this._levelCache.get(e);t||(t=new Map,this._levelCache.set(e,t));let l=n||"*",o=t.get(l);if(o!==void 0)return o;let i=this._tagToLevel.get(l)??this._defaultLevel,u=e>=i;return t.set(l,u),u}_log(e,n,...t){if(!this._callback||n===void 0)return;let l,o,i;if(typeof n=="string"&&s.has(n)?(l=n,o=t[0],i=t.slice(1)):(l="*",o=n,i=t),o===void 0||o===""||!this._shouldLog(e,l))return;let u=i.length>0?i.filter(R=>R!==void 0):O,E=c.get(e),v=l==="*"?"":l;this._callback(E,v,o,u)}debug(e,...n){return this._log(2,e,...n),this}error(e,...n){return this._log(5,e,...n),this}info(e,...n){return this._log(3,e,...n),this}log(e,...n){return this._log(3,e,...n),this}trace(e,...n){return this._log(1,e,...n),this}warn(e,...n){return this._log(4,e,...n),this}isLevelEnabled(e,n="*"){let t=g.get(e);return t===void 0?!1:this._shouldLog(t,n)}isDebugEnabled(e="*"){return this.isLevelEnabled("DEBUG",e)}isTraceEnabled(e="*"){return this.isLevelEnabled("TRACE",e)}reset(){return this._tagToLevel.clear(),this._levelCache.clear(),this._defaultLevel=h,this._callback=void 0,s.clear(),this}},D=new a;0&&(module.exports={DEFAULT_TAG,Log,LogLevel,log,tag}); //# sourceMappingURL=index.cjs.js.map