@lensmcp/nest-instrumentation 1.22.2 → 1.22.4

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.
@@ -1,3 +1,3 @@
1
- "use strict";var E=Object.defineProperty;var c=(e,t)=>E(e,"name",{value:t,configurable:!0});var M=Object.defineProperty,u=c((e,t)=>M(e,"name",{value:t,configurable:!0}),"u");import{__decorate as N}from"tslib";import{Injectable as A}from"@nestjs/common";import{Observable as x}from"rxjs";import{catchError as O,tap as R}from"rxjs/operators";import{fingerprint as D,ulid as y}from"@lensmcp/core";import{activeMemoryOptions as _,onFlowStart as H,onFlowSettled as F}from"@lensmcp/memory-tracker";import{LENSMCP_CONTEXT_STORAGE as G}from"./context.js";import{activeOptions as h}from"./state.js";let C=class{static{c(this,"$")}static{u(this,"TraceInterceptor")}intercept(e,t){const s=h();if(!s.trace.requests)return t.handle();const a=e.switchToHttp(),r=a.getRequest(),i=a.getResponse(),o=w(r.headers?.["x-request-id"])??y(),n={sessionId:s.sessionId,requestId:o,flowId:w(r.headers?.["x-lensmcp-flow-id"]),originNodeId:w(r.headers?.["x-lensmcp-origin-node-id"]),traceparent:w(r.headers?.traceparent),dbCallCount:0},m=(r.method??"GET").toUpperCase(),p=r.route?.path??r.url??"<unknown>",f=e.getClass?.()?.name,g=e.getHandler?.()?.name,q=Date.now(),$=s.memory.mode!=="off";$&&H(o);const v=u(()=>{if(!$)return;const l=_()?.settleMs??1e3;setTimeout(()=>F(o),l).unref?.()},"settleAndCheck");return new x(l=>{let T;return G.run(n,()=>{T=t.handle().pipe(R({next:u(I=>l.next(I),"next"),complete:u(()=>{k(s.projectName,n,m,p,i.statusCode??200,q),b(n,f,g,q,"ok"),v(),l.complete()},"complete")}),O(I=>{const d=I,j=typeof d?.getStatus=="function"?d.getStatus():typeof d?.status=="number"&&d.status>=100?d.status:typeof d?.statusCode=="number"&&d.statusCode>=100?d.statusCode:i.statusCode&&i.statusCode>=400?i.statusCode:500;return k(s.projectName,n,m,p,j,q,I),b(n,f,g,q,"error"),v(),l.error(I),new x})).subscribe()}),()=>T?.unsubscribe()})}};C=N([A()],C);export{C as TraceInterceptor};function w(e){if(typeof e=="string")return e;if(Array.isArray(e)&&typeof e[0]=="string")return e[0]}c(w,"q"),u(w,"stringHeader");function b(e,t,s,a,r){if(!t||!s)return;const i=h(),o=Date.now()-a,n=`${t}.${s}`;i.emit({id:y(),sessionId:e.sessionId,timestamp:Date.now(),source:"nestjs",category:"backend",severity:r==="error"?"error":"info",context:{sessionId:e.sessionId,flowId:e.flowId,requestId:e.requestId},fingerprint:D({kind:"method-call",identity:n}),title:`${n} (${o}ms)${r==="error"?" \u2717":""}`,raw:{kind:"span",span:{name:n,role:"controller",flowId:e.flowId,requestId:e.requestId,startTime:a,endTime:Date.now(),durationMs:o,status:r}}})}c(b,"S"),u(b,"emitControllerSpan");function S(e){if(!(e instanceof Error))return{message:String(e)};const t=e.stack?e.stack.split(`
1
+ "use strict";var E=Object.defineProperty;var m=(e,t)=>E(e,"name",{value:t,configurable:!0});var M=Object.defineProperty,u=m((e,t)=>M(e,"name",{value:t,configurable:!0}),"u");import{__decorate as A}from"tslib";import{Injectable as O}from"@nestjs/common";import{Observable as x}from"rxjs";import{catchError as R,tap as _}from"rxjs/operators";import{fingerprint as D,ulid as y}from"@lensmcp/core";import{activeMemoryOptions as H,onFlowStart as P,onFlowSettled as F}from"@lensmcp/memory-tracker";import{LENSMCP_CONTEXT_STORAGE as G}from"./context.js";import{activeOptions as h}from"./state.js";let b=class{static{m(this,"$")}static{u(this,"TraceInterceptor")}intercept(e,t){const r=h();if(!r.trace.requests)return t.handle();const a=e.switchToHttp(),s=a.getRequest(),i=a.getResponse(),o=g(s.headers?.["x-request-id"])??y(),n={sessionId:r.sessionId,requestId:o,flowId:g(s.headers?.["x-lensmcp-flow-id"]),originNodeId:g(s.headers?.["x-lensmcp-origin-node-id"]),traceparent:g(s.headers?.traceparent),dbCallCount:0},d=(s.method??"GET").toUpperCase(),f=s.route?.path??s.url??"<unknown>",p=e.getClass?.()?.name,l=e.getHandler?.()?.name,q=Date.now(),$=r.memory.mode!=="off";$&&P(o);const T=u(()=>{if(!$)return;const I=H()?.settleMs??1e3;setTimeout(()=>F(o),I).unref?.()},"settleAndCheck");return new x(I=>{let j;return G.run(n,()=>{j=t.handle().pipe(_({next:u(w=>I.next(w),"next"),complete:u(()=>{v(r.projectName,n,d,f,i.statusCode??200,q),k(n,p,l,q,"ok"),T(),I.complete()},"complete")}),R(w=>{const c=w,S=typeof c?.getStatus=="function"?c.getStatus():typeof c?.status=="number"&&c.status>=100?c.status:typeof c?.statusCode=="number"&&c.statusCode>=100?c.statusCode:i.statusCode&&i.statusCode>=400?i.statusCode:500;return v(r.projectName,n,d,f,S,q,w),k(n,p,l,q,"error"),T(),I.error(w),new x})).subscribe()}),()=>j?.unsubscribe()})}};b=A([O()],b);export{b as TraceInterceptor};function g(e){if(typeof e=="string")return e;if(Array.isArray(e)&&typeof e[0]=="string")return e[0]}m(g,"y"),u(g,"stringHeader");function k(e,t,r,a,s){if(!t||!r)return;const i=h(),o=Date.now()-a,n=`${t}.${r}`,d={id:y(),sessionId:e.sessionId,timestamp:Date.now(),source:"nestjs",category:"backend",severity:s==="error"?"error":"info",context:{sessionId:e.sessionId,flowId:e.flowId,requestId:e.requestId},fingerprint:D({kind:"method-call",identity:n}),title:`${n} (${o}ms)${s==="error"?" \u2717":""}`,raw:{kind:"span",span:{name:n,role:"controller",flowId:e.flowId,requestId:e.requestId,startTime:a,endTime:Date.now(),durationMs:o,status:s}}};C(d,h().projectName),i.emit(d)}m(k,"b"),u(k,"emitControllerSpan");function N(e){if(!(e instanceof Error))return{message:String(e)};const t=e.stack?e.stack.split(`
2
2
  `).slice(0,30).join(`
3
- `):void 0;return{...e.name?{name:e.name}:{},message:e.message,...t?{stack:t}:{}}}c(S,"G"),u(S,"errorDetail");function k(e,t,s,a,r,i,o){const n=h(),m=Date.now()-i,p=r>=500||o!==void 0,f={id:y(),sessionId:t.sessionId,timestamp:Date.now(),source:"nestjs",category:"backend",severity:p?"error":"info",context:{sessionId:t.sessionId,flowId:t.flowId,requestId:t.requestId,originNodeId:t.originNodeId,traceparent:t.traceparent},fingerprint:D({kind:"server-request",identity:`${s}:${a}:${Math.floor(r/100)}xx`}),title:`${s} ${a} \u2192 ${r} (${m}ms)`,message:o instanceof Error?o.message:void 0,raw:{kind:"server-request",request:{method:s,route:a,status:r,durationMs:m,startedAt:i,endedAt:Date.now(),flowId:t.flowId,requestId:t.requestId,...o?{error:S(o)}:{}}}},g={...f,id:y(),raw:{kind:"span",span:{name:`nest.request ${s} ${a}`,traceId:t.traceparent,flowId:t.flowId,requestId:t.requestId,startTime:i,endTime:Date.now(),durationMs:m,status:p?"error":"ok"}}};n.emit(f),n.emit(g)}c(k,"b"),u(k,"emitRequest");
3
+ `):void 0;return{...e.name?{name:e.name}:{},message:e.message,...t?{stack:t}:{}}}m(N,"P"),u(N,"errorDetail");function C(e,t){if(!t)return;const r=e.raw;r&&r.project===void 0&&(r.project=t)}m(C,"C"),u(C,"stampProject");function v(e,t,r,a,s,i,o){const n=h(),d=Date.now()-i,f=s>=500||o!==void 0,p={id:y(),sessionId:t.sessionId,timestamp:Date.now(),source:"nestjs",category:"backend",severity:f?"error":"info",context:{sessionId:t.sessionId,flowId:t.flowId,requestId:t.requestId,originNodeId:t.originNodeId,traceparent:t.traceparent},fingerprint:D({kind:"server-request",identity:`${r}:${a}:${Math.floor(s/100)}xx`}),title:`${r} ${a} \u2192 ${s} (${d}ms)`,message:o instanceof Error?o.message:void 0,raw:{kind:"server-request",request:{method:r,route:a,status:s,durationMs:d,startedAt:i,endedAt:Date.now(),flowId:t.flowId,requestId:t.requestId,...o?{error:N(o)}:{}}}},l={...p,id:y(),raw:{kind:"span",span:{name:`nest.request ${r} ${a}`,traceId:t.traceparent,flowId:t.flowId,requestId:t.requestId,startTime:i,endTime:Date.now(),durationMs:d,status:f?"error":"ok"}}};C(p,e),C(l,e),n.emit(p),n.emit(l)}m(v,"j"),u(v,"emitRequest");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lensmcp/nest-instrumentation",
3
- "version": "1.22.2",
3
+ "version": "1.22.4",
4
4
  "type": "module",
5
5
  "main": "./index.js",
6
6
  "module": "./index.js",
@@ -14,9 +14,9 @@
14
14
  }
15
15
  },
16
16
  "dependencies": {
17
- "@lensmcp/core": "1.22.2",
18
- "@lensmcp/memory-tracker": "1.22.2",
19
- "@lensmcp/protocol-types": "1.22.2",
17
+ "@lensmcp/core": "1.22.4",
18
+ "@lensmcp/memory-tracker": "1.22.4",
19
+ "@lensmcp/protocol-types": "1.22.4",
20
20
  "tslib": "^2.3.0"
21
21
  },
22
22
  "peerDependencies": {