@stacksjs/logging 0.70.354 → 0.70.356

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +4 -4
  2. package/package.json +7 -7
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  // @bun
2
- var N=import.meta.require;import{AsyncLocalStorage as w}from"async_hooks";import X from"process";import{Logger as k}from"@stacksjs/clarity";import{handleError as C}from"@stacksjs/error-handling";import{ExitCode as W}from"@stacksjs/types";var j=null,T=null,D=new Set;function V(B){return D.add(B),B.finally(()=>D.delete(B)).catch(()=>{}),B}var O=!1;function E(){if(O)return;O=!0,X.on("beforeExit",()=>{G.flush()})}var M=new Set(["debug","info","success","warning","error"]);function b(B,H="info"){if(!B)return H;let J=B.toLowerCase();if(J==="warn")return"warning";if(M.has(J))return J;return X.stderr.write(`[logging] Ignoring invalid LOG_LEVEL="${B}" (expected: ${[...M].join(", ")}); using "${H}".
2
+ var N=import.meta.require;import{AsyncLocalStorage as w}from"async_hooks";import X from"process";import{Logger as k}from"@stacksjs/clarity";import{handleError as E}from"@stacksjs/error-handling";import{ExitCode as T}from"@stacksjs/types";var j=null,P=null,D=new Set;function V(B){return D.add(B),B.finally(()=>D.delete(B)).catch(()=>{}),B}var O=!1;function C(){if(O)return;O=!0,X.on("beforeExit",()=>{G.flush()})}var M=new Set(["debug","info","success","warning","error"]);function b(B,H="info"){if(!B)return H;let J=B.toLowerCase();if(J==="warn")return"warning";if(M.has(J))return J;return X.stderr.write(`[logging] Ignoring invalid LOG_LEVEL="${B}" (expected: ${[...M].join(", ")}); using "${H}".
3
3
  `),H}function h(B){if(B==="json"||B==="text")return B;if(B)X.stderr.write(`[logging] Ignoring invalid LOG_FORMAT="${B}" (expected "json" or "text").
4
4
  `);return X.env.NODE_ENV==="production"?"json":"text"}function L(B){let H=B.envLevel?b(B.envLevel):B.cfgLevel?b(B.cfgLevel):"info",J=B.envFormat?h(B.envFormat):B.cfgFormat==="json"||B.cfgFormat==="text"?B.cfgFormat:B.isProduction?"json":"text";return{level:H,format:J,writeToFile:B.cfgWriteToFile??!0}}function q(B,H=0){if(H>8)return{name:"Error",message:"[cause chain truncated]"};if(B instanceof Error)return{name:B.name,message:B.message,stack:B.stack,cause:B.cause!=null?q(B.cause,H+1):void 0};if(typeof B==="string")return{name:"Error",message:B};if(B==null)return{name:"Error",message:String(B)};try{return{name:"Error",message:JSON.stringify(A(B))}}catch{return{name:"Error",message:String(B)}}}function S(B){let H=B.stack||`${B.name}: ${B.message}`,J=B.cause;while(J)H+=`
5
- caused by: ${J.stack||`${J.name}: ${J.message}`}`,J=J.cause;return H}function A(B,H=0){if(B instanceof Error)return q(B);if(H>=4||B===null||typeof B!=="object")return B;if(Array.isArray(B))return B.map((U)=>A(U,H+1));let J=Object.getPrototypeOf(B);if(J!==Object.prototype&&J!==null)return B;let Q={};for(let[U,Z]of Object.entries(B))Q[U]=A(Z,H+1);return Q}function _(B){return A(B)}var F=new w;function a(B,H){return F.run(B,H)}function y(){let B=F.getStore(),H=f();if(!H)return B;return{trace_id:H,...B}}function f(){try{let H=globalThis[Symbol.for("stacks.router.traceStorage")]?.getStore?.();if(H)return H;return globalThis[Symbol.for("stacks.router.requestStorage")]?.getStore?.()?._requestId}catch{return}}async function x(){if(j)return;if(T)return T;return E(),T=(async()=>{let B,H,J,Q;try{let K=(await import("@stacksjs/config")).logging;if(K){if(B=K.level,H=K.format,typeof K.writeToFile==="boolean")Q=K.writeToFile;if(K.logsPath)J=(await import("path")).dirname(K.logsPath)}}catch{}let{level:U,format:Z,writeToFile:I}=L({envLevel:X.env.LOG_LEVEL,envFormat:X.env.LOG_FORMAT,cfgLevel:B,cfgFormat:H,cfgWriteToFile:Q,isProduction:X.env.NODE_ENV==="production"}),P=J;if(!P)try{P=(await import("@stacksjs/path")).projectPath("storage/logs")}catch{P="storage/logs"}j=new k("stacks",{level:U,logDirectory:P,showTags:!1,fancy:Z!=="json",format:Z,writeToFile:I})})(),T}async function $(){return await x(),j}function Y(...B){let H=B.filter((Q)=>Q!==void 0).map((Q)=>{if(Q instanceof Error)return S(q(Q));if(typeof Q==="object"&&Q!==null)return JSON.stringify(A(Q),null,2);return String(Q)}).join(" "),J=F.getStore();if(J?.requestId)return`[${J.requestId}] ${H}`;return H}var v=new Set(["shouldExit","silent","message"]);function d(B){if(!B||typeof B!=="object"||B instanceof Error)return!1;if(!(("shouldExit"in B)||("silent"in B)))return!1;return Object.keys(B).every((H)=>v.has(H))}var G={info:async(...B)=>{let H=Y(...B);await(await $()).info(H)},success:async(B)=>{await(await $()).success(B)},warn:async(B,H)=>{let J=await $();if(H==null){await J.warn(B);return}let Q=A(H);await J.warn(B,Q)},warning:async(B)=>{await(await $()).warn(B)},error:async(B,H,J)=>{let Q=d(H)?H:void 0,U;if(typeof B==="string")U=B;else U=S(q(B));if(H!==void 0&&!Q)U=`${U} ${S(q(H))}`;let Z={...y(),...J};if(Object.keys(Z).length>0)try{U=`${U} ${JSON.stringify(_(Z))}`}catch{}if(await(await $()).error(U),Q?.shouldExit)C(B,Q)},debug:async(...B)=>{let H=(X.env.LOG_LEVEL||"info").toLowerCase();if(H==="info"||H==="warn"||H==="error")return;let J=Y(...B);await(await $()).debug(J)},dump:async(...B)=>{let H=Y(...B);await(await $()).debug(`DUMP: ${H}`)},dd:async(...B)=>{let H=Y(...B);await(await $()).error(H),X.exit(W.FatalError)},echo:async(...B)=>{let H=Y(...B);await(await $()).info(`ECHO: ${H}`)},time:(B)=>{let H=performance.now();return async(J)=>{let Q=performance.now()-H,U=await $(),Z=J?` ${JSON.stringify(_(J))}`:"";await U.info(`${B}: ${Q.toFixed(2)}ms${Z}`)}},syncWarn:(B)=>{X.stderr.write(`${B}
5
+ caused by: ${J.stack||`${J.name}: ${J.message}`}`,J=J.cause;return H}function A(B,H=0){if(B instanceof Error)return q(B);if(H>=4||B===null||typeof B!=="object")return B;if(Array.isArray(B))return B.map((U)=>A(U,H+1));let J=Object.getPrototypeOf(B);if(J!==Object.prototype&&J!==null)return B;let Q={};for(let[U,Z]of Object.entries(B))Q[U]=A(Z,H+1);return Q}function _(B){return A(B)}var F=new w;function o(B,H){return F.run(B,H)}function y(){let B=F.getStore(),H=f();if(!H)return B;return{trace_id:H,...B}}function f(){try{let H=globalThis[Symbol.for("stacks.router.traceStorage")]?.getStore?.();if(H)return H;return globalThis[Symbol.for("stacks.router.requestStorage")]?.getStore?.()?._requestId}catch{return}}async function x(){if(j)return;if(P)return P;return C(),P=(async()=>{let B,H,J,Q;try{let K=(await import("@stacksjs/config")).logging;if(K){if(B=K.level,H=K.format,typeof K.writeToFile==="boolean")Q=K.writeToFile;if(K.logsPath)J=(await import("path")).dirname(K.logsPath)}}catch{}let{level:U,format:Z,writeToFile:I}=L({envLevel:X.env.LOG_LEVEL,envFormat:X.env.LOG_FORMAT,cfgLevel:B,cfgFormat:H,cfgWriteToFile:Q,isProduction:X.env.NODE_ENV==="production"}),W=J;if(!W)try{W=(await import("@stacksjs/path")).projectPath("storage/logs")}catch{W="storage/logs"}j=new k("stacks",{level:U,logDirectory:W,showTags:!1,fancy:Z!=="json",format:Z,writeToFile:I})})(),P}async function $(){return await x(),j}function Y(...B){let H=B.filter((Q)=>Q!==void 0).map((Q)=>{if(Q instanceof Error)return S(q(Q));if(typeof Q==="object"&&Q!==null)return JSON.stringify(A(Q),null,2);return String(Q)}).join(" "),J=F.getStore();if(J?.requestId)return`[${J.requestId}] ${H}`;return H}var v=new Set(["shouldExit","silent","message"]);function d(B){if(!B||typeof B!=="object"||B instanceof Error)return!1;if(!(("shouldExit"in B)||("silent"in B)))return!1;return Object.keys(B).every((H)=>v.has(H))}var G={info:async(...B)=>{let H=Y(...B);await(await $()).info(H)},success:async(B)=>{await(await $()).success(B)},warn:async(B,H)=>{let J=await $();if(H==null){await J.warn(B);return}let Q=A(H);await J.warn(B,Q)},warning:async(B)=>{await(await $()).warn(B)},error:async(B,H,J)=>{let Q=d(H)?H:void 0,U;if(typeof B==="string")U=B;else U=S(q(B));if(H!==void 0&&!Q)U=`${U} ${S(q(H))}`;let Z={...y(),...J};if(Object.keys(Z).length>0)try{U=`${U} ${JSON.stringify(_(Z))}`}catch{}if(await(await $()).error(U),Q?.shouldExit)E(B,Q)},debug:async(...B)=>{let H=(X.env.LOG_LEVEL||"info").toLowerCase();if(H==="info"||H==="warn"||H==="error")return;let J=Y(...B);await(await $()).debug(J)},dump:async(...B)=>{let H=Y(...B);await(await $()).debug(`DUMP: ${H}`)},dd:async(...B)=>{let H=Y(...B);await(await $()).error(H),X.exit(T.FatalError)},echo:async(...B)=>{let H=Y(...B);await(await $()).info(`ECHO: ${H}`)},time:(B)=>{let H=performance.now();return async(J)=>{let Q=performance.now()-H,U=await $(),Z=J?` ${JSON.stringify(_(J))}`:"";await U.info(`${B}: ${Q.toFixed(2)}ms${Z}`)}},syncWarn:(B)=>{X.stderr.write(`${B}
6
6
  `)},syncError:(B)=>{X.stderr.write(`${B}
7
- `)},fatal:(B,H=W.FatalError)=>{X.stderr.write(`${B}
8
- `),X.exit(H)},exit:async(B,H=W.Success)=>{if(B)await G.success(B);await G.flush(),X.exit(H)},flush:async()=>{if(D.size>0)await Promise.allSettled([...D]);if(!j&&!T)return;try{let B=await $(),H=B.flush;if(typeof H==="function")await H.call(B)}catch{}}};async function s(...B){for(let H of B)await G.debug(H)}async function t(...B){let H=Y(...B);console.log(H),X.exit(W.FatalError)}async function r(...B){await G.debug(...B)}function c(B){if(B&&typeof B==="object"){let H=B;if(typeof H.status==="number")return H.status;if(typeof H.statusCode==="number")return H.statusCode}return}function e(B,H={}){let J=H.status??c(B),Q=typeof J==="number"&&J>=400&&J<500,U=H.label??"Unhandled error",Z={...H.context,...J!=null?{status:J}:{}};if(Q){G.debug(`${U} (client error ${J}): ${q(B).message}`);return}G.error(U,B,Z)}function R(B,H,J){let Q=y(),U={event:H,traceId:Q?.requestId,...J};if(B==="warn")V(G.warn(`[${H}]`,U));else V(G[B](U))}var u={request(B,H,J,Q,U={}){let Z=J>=500?"error":J>=400?"warn":"info";R(Z,"http.request",{method:B,path:H,status:J,durationMs:Q,...U})},query(B,H,J={}){R("debug","db.query",{sql:B,durationMs:H,...J})},slowQuery(B,H,J={}){R("warn","db.slow_query",{sql:B,durationMs:H,...J})},job(B,H,J={}){R(H==="failed"?"error":"info",`job.${H}`,{jobName:B,...J})},cache(B,H,J={}){R("debug",`cache.${B}`,{key:H,...J})}};G.struct=u;export{a as withLogContext,u as struct,L as resolveLogSettings,e as report,S as renderNormalizedError,b as parseLogLevel,h as parseLogFormat,q as normalizeError,_ as normalizeContext,$ as logger,G as log,y as getLogContext,Y as formatMessage,r as echo,s as dump,t as dd};
7
+ `)},fatal:(B,H=T.FatalError)=>{X.stderr.write(`${B}
8
+ `),X.exit(H)},exit:async(B,H=T.Success)=>{if(B)await(H===T.Success?G.success(B):G.error(B));await G.flush(),X.exit(H)},flush:async()=>{if(D.size>0)await Promise.allSettled([...D]);if(!j&&!P)return;try{let B=await $(),H=B.flush;if(typeof H==="function")await H.call(B)}catch{}}};async function s(...B){for(let H of B)await G.debug(H)}async function t(...B){let H=Y(...B);console.log(H),X.exit(T.FatalError)}async function r(...B){await G.debug(...B)}function c(B){if(B&&typeof B==="object"){let H=B;if(typeof H.status==="number")return H.status;if(typeof H.statusCode==="number")return H.statusCode}return}function e(B,H={}){let J=H.status??c(B),Q=typeof J==="number"&&J>=400&&J<500,U=H.label??"Unhandled error",Z={...H.context,...J!=null?{status:J}:{}};if(Q){G.debug(`${U} (client error ${J}): ${q(B).message}`);return}G.error(U,B,Z)}function R(B,H,J){let Q=y(),U={event:H,traceId:Q?.requestId,...J};if(B==="warn")V(G.warn(`[${H}]`,U));else V(G[B](U))}var u={request(B,H,J,Q,U={}){let Z=J>=500?"error":J>=400?"warn":"info";R(Z,"http.request",{method:B,path:H,status:J,durationMs:Q,...U})},query(B,H,J={}){R("debug","db.query",{sql:B,durationMs:H,...J})},slowQuery(B,H,J={}){R("warn","db.slow_query",{sql:B,durationMs:H,...J})},job(B,H,J={}){R(H==="failed"?"error":"info",`job.${H}`,{jobName:B,...J})},cache(B,H,J={}){R("debug",`cache.${B}`,{key:H,...J})}};G.struct=u;export{o as withLogContext,u as struct,L as resolveLogSettings,e as report,S as renderNormalizedError,b as parseLogLevel,h as parseLogFormat,q as normalizeError,_ as normalizeContext,$ as logger,G as log,y as getLogContext,Y as formatMessage,r as echo,s as dump,t as dd};
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/logging",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.70.354",
5
+ "version": "0.70.356",
6
6
  "description": "The Stacks logging system.",
7
7
  "author": "Chris Breuer",
8
8
  "contributors": [
@@ -61,12 +61,12 @@
61
61
  "@stacksjs/clarity": "^0.3.31"
62
62
  },
63
63
  "devDependencies": {
64
- "@stacksjs/cli": "0.70.354",
65
- "@stacksjs/config": "0.70.354",
66
- "@stacksjs/error-handling": "0.70.354",
67
- "@stacksjs/path": "0.70.354",
68
- "@stacksjs/storage": "0.70.354",
69
- "@stacksjs/validation": "0.70.354",
64
+ "@stacksjs/cli": "0.70.356",
65
+ "@stacksjs/config": "0.70.356",
66
+ "@stacksjs/error-handling": "0.70.356",
67
+ "@stacksjs/path": "0.70.356",
68
+ "@stacksjs/storage": "0.70.356",
69
+ "@stacksjs/validation": "0.70.356",
70
70
  "better-dx": "^0.2.17"
71
71
  }
72
72
  }