@lensmcp/node-instrumentation 1.18.12 → 1.18.14
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.
- package/index.js +1 -1
- package/lib/emit.js +3 -3
- package/lib/flood-guard.js +1 -1
- package/lib/flow-context.js +1 -1
- package/lib/install.js +1 -1
- package/lib/require-hook.js +1 -1
- package/lib/tap-bullmq.js +1 -1
- package/lib/tap-egress.js +1 -1
- package/lib/tap-exec.js +1 -1
- package/lib/tap-fs.js +1 -1
- package/lib/tap-nest.js +1 -1
- package/lib/tap-pg.js +1 -1
- package/lib/tap-redis.js +1 -1
- package/lib/tap-stdout.js +2 -2
- package/package.json +2 -2
- package/register.js +1 -1
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var p=(t,r)=>a(t,"name",{value:r,configurable:!0});var o=Object.defineProperty,i=p((t,r)=>o(t,"name",{value:r,configurable:!0}),"i"),n=Object.defineProperty,e=i((t,r)=>n(t,"name",{value:r,configurable:!0}),"e");Object.defineProperty(exports,"__esModule",{value:!0}),exports.installLensmcpNodeInstrumentation=exports.installChildAppBridge=exports.nestTap=exports.bullmqTap=exports.redisTap=exports.pgTap=exports.tapExec=exports.tapFs=exports.tapEgress=exports.installRequireHook=exports.createEventFloodGuard=exports.maybeRotateEventFile=exports.EVENT_MAX_FILES=exports.EVENT_MAX_BYTES=exports.EVENT_FILE=exports.PROJECT=exports.isLensWriting=exports.lensEmit=void 0;var emit_1=require("./lib/emit");Object.defineProperty(exports,"lensEmit",{enumerable:!0,get:e(function(){return emit_1.lensEmit},"get")}),Object.defineProperty(exports,"isLensWriting",{enumerable:!0,get:e(function(){return emit_1.isLensWriting},"get")}),Object.defineProperty(exports,"PROJECT",{enumerable:!0,get:e(function(){return emit_1.PROJECT},"get")}),Object.defineProperty(exports,"EVENT_FILE",{enumerable:!0,get:e(function(){return emit_1.EVENT_FILE},"get")}),Object.defineProperty(exports,"EVENT_MAX_BYTES",{enumerable:!0,get:e(function(){return emit_1.EVENT_MAX_BYTES},"get")}),Object.defineProperty(exports,"EVENT_MAX_FILES",{enumerable:!0,get:e(function(){return emit_1.EVENT_MAX_FILES},"get")}),Object.defineProperty(exports,"maybeRotateEventFile",{enumerable:!0,get:e(function(){return emit_1.maybeRotateEventFile},"get")});var flood_guard_1=require("./lib/flood-guard");Object.defineProperty(exports,"createEventFloodGuard",{enumerable:!0,get:e(function(){return flood_guard_1.createEventFloodGuard},"get")});var require_hook_1=require("./lib/require-hook");Object.defineProperty(exports,"installRequireHook",{enumerable:!0,get:e(function(){return require_hook_1.installRequireHook},"get")});var tap_egress_1=require("./lib/tap-egress");Object.defineProperty(exports,"tapEgress",{enumerable:!0,get:e(function(){return tap_egress_1.tapEgress},"get")});var tap_fs_1=require("./lib/tap-fs");Object.defineProperty(exports,"tapFs",{enumerable:!0,get:e(function(){return tap_fs_1.tapFs},"get")});var tap_exec_1=require("./lib/tap-exec");Object.defineProperty(exports,"tapExec",{enumerable:!0,get:e(function(){return tap_exec_1.tapExec},"get")});var tap_pg_1=require("./lib/tap-pg");Object.defineProperty(exports,"pgTap",{enumerable:!0,get:e(function(){return tap_pg_1.pgTap},"get")});var tap_redis_1=require("./lib/tap-redis");Object.defineProperty(exports,"redisTap",{enumerable:!0,get:e(function(){return tap_redis_1.redisTap},"get")});var tap_bullmq_1=require("./lib/tap-bullmq");Object.defineProperty(exports,"bullmqTap",{enumerable:!0,get:e(function(){return tap_bullmq_1.bullmqTap},"get")});var tap_nest_1=require("./lib/tap-nest");Object.defineProperty(exports,"nestTap",{enumerable:!0,get:e(function(){return tap_nest_1.nestTap},"get")}),Object.defineProperty(exports,"installChildAppBridge",{enumerable:!0,get:e(function(){return tap_nest_1.installChildAppBridge},"get")});var install_1=require("./lib/install");Object.defineProperty(exports,"installLensmcpNodeInstrumentation",{enumerable:!0,get:e(function(){return install_1.installLensmcpNodeInstrumentation},"get")});
|
package/lib/emit.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`;maybeRotateEventFile(exports.EVENT_FILE,
|
|
3
|
-
`;maybeRotateEventFile(exports.EVENT_FILE,
|
|
1
|
+
"use strict";var _=Object.defineProperty;var p=(e,t)=>_(e,"name",{value:t,configurable:!0});var u=Object.defineProperty,E=p((e,t)=>u(e,"name",{value:t,configurable:!0}),"E"),d=Object.defineProperty,i=E((e,t)=>d(e,"name",{value:t,configurable:!0}),"i");Object.defineProperty(exports,"__esModule",{value:!0}),exports.EVENT_FILE=exports.PROJECT=exports.EVENT_MAX_FILES=exports.EVENT_MAX_BYTES=void 0,exports.maybeRotateEventFile=maybeRotateEventFile,exports.isLensWriting=isLensWriting,exports.lensEmit=lensEmit,exports.lensLog=lensLog;const tslib_1=require("tslib"),nodeFs=tslib_1.__importStar(require("node:fs")),node_path_1=require("node:path"),flood_guard_1=require("./flood-guard"),appendFileSync=nodeFs.appendFileSync,mkdirSync=nodeFs.mkdirSync,statSync=nodeFs.statSync,renameSync=nodeFs.renameSync,unlinkSync=nodeFs.unlinkSync;exports.EVENT_MAX_BYTES=(()=>{const e=Number(process.env.LENSMCP_EVENT_MAX_BYTES);return Number.isFinite(e)&&e>0?e:50*1024*1024})(),exports.EVENT_MAX_FILES=(()=>{const e=Number(process.env.LENSMCP_EVENT_MAX_FILES);return Number.isFinite(e)&&e>=1&&e<=20?Math.floor(e):5})();const ROTATE_CHECK_BYTES=1024*1024,bytesSinceCheck=new Map;function maybeRotateEventFile(e,t,r){const s=(bytesSinceCheck.get(e)??0)+t;if(s<ROTATE_CHECK_BYTES&&r===void 0){bytesSinceCheck.set(e,s);return}bytesSinceCheck.set(e,0);const c=r?.maxBytes??exports.EVENT_MAX_BYTES,n=r?.maxFiles??exports.EVENT_MAX_FILES;try{if(statSync(e).size<=c)return}catch{return}try{unlinkSync(`${e}.${n}`)}catch{}for(let o=n-1;o>=1;o--)try{renameSync(`${e}.${o}`,`${e}.${o+1}`)}catch{}try{renameSync(e,`${e}.1`)}catch{}}p(maybeRotateEventFile,"maybeRotateEventFile"),E(maybeRotateEventFile,"maybeRotateEventFile"),i(maybeRotateEventFile,"maybeRotateEventFile"),exports.PROJECT=process.env.LENSMCP_PROJECT||process.env.SERVICE_NAME||"app",exports.EVENT_FILE=process.env.LENSMCP_EVENT_FILE||`${process.cwd()}/.lensmcp/events.jsonl`;let writing=!1,dirReady=!1;const emitGuard=(0,flood_guard_1.createEventFloodGuard)({burst:30,perSec:5}),logGuard=(0,flood_guard_1.createEventFloodGuard)({burst:120,perSec:20});function isLensWriting(){return writing}p(isLensWriting,"isLensWriting"),E(isLensWriting,"isLensWriting"),i(isLensWriting,"isLensWriting");function lensEmit(e,t,r,s,c,n){try{writing=!0;const o=c??`${e}:${String(s.name??e)}`,a=emitGuard.admit(o);if(!a.ok)return;dirReady||(mkdirSync((0,node_path_1.dirname)(exports.EVENT_FILE),{recursive:!0}),dirReady=!0);const l=JSON.stringify({id:Date.now().toString(36)+Math.random().toString(36).slice(2,10),sessionId:"pending",timestamp:Date.now(),source:e,category:"cluster",severity:t,context:{sessionId:"pending",projectName:exports.PROJECT,...n?.flowId?{flowId:n.flowId}:{},...n?.requestId?{requestId:n.requestId}:{},...n?.originNodeId?{originNodeId:n.originNodeId}:{}},fingerprint:o,title:r,raw:{project:exports.PROJECT,...s,...a.suppressed>0?{floodSuppressed:a.suppressed}:{}}})+`
|
|
2
|
+
`;maybeRotateEventFile(exports.EVENT_FILE,l.length),appendFileSync(exports.EVENT_FILE,l)}catch{}finally{writing=!1}}p(lensEmit,"lensEmit"),E(lensEmit,"lensEmit"),i(lensEmit,"lensEmit");function lensLog(e,t){try{writing=!0;const r=logGuard.admit(`log:${exports.PROJECT}`);if(!r.ok)return;dirReady||(mkdirSync((0,node_path_1.dirname)(exports.EVENT_FILE),{recursive:!0}),dirReady=!0);const s=JSON.stringify({id:Date.now().toString(36)+Math.random().toString(36).slice(2,10),sessionId:"pending",timestamp:Date.now(),source:"nestjs",category:"runtime",severity:e,context:{sessionId:"pending",projectName:exports.PROJECT},fingerprint:`log:${exports.PROJECT}`,title:t,raw:{project:exports.PROJECT,kind:"log",...r.suppressed>0?{floodSuppressed:r.suppressed}:{}}})+`
|
|
3
|
+
`;maybeRotateEventFile(exports.EVENT_FILE,s.length),appendFileSync(exports.EVENT_FILE,s)}catch{}finally{writing=!1}}p(lensLog,"lensLog"),E(lensLog,"lensLog"),i(lensLog,"lensLog");
|
package/lib/flood-guard.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var b=Object.defineProperty;var u=(t,r)=>b(t,"name",{value:r,configurable:!0});var m=Object.defineProperty,i=u((t,r)=>m(t,"name",{value:r,configurable:!0}),"i"),p=Object.defineProperty,o=i((t,r)=>p(t,"name",{value:r,configurable:!0}),"o");Object.defineProperty(exports,"__esModule",{value:!0}),exports.createEventFloodGuard=createEventFloodGuard;function envPerSec(){const t=process.env.LENSMCP_EVENT_MAX_EPS;if(t===void 0||t==="")return;if(t==="off")return"off";const r=Number(t);if(Number.isFinite(r))return r<=0?"off":r}u(envPerSec,"envPerSec"),i(envPerSec,"envPerSec"),o(envPerSec,"envPerSec");function createEventFloodGuard(t){const r=envPerSec();if(r==="off")return{admit:o(()=>({ok:!0,suppressed:0}),"admit")};const c=r??t?.perSec??5,l=Math.max(1,t?.burst??Math.max(30,c*4)),f=t?.maxKeys??2048,n=new Map,v=o(a=>{for(const[s,e]of n)a-e.lastSeenAt>6e4&&n.delete(s);n.size>f&&n.clear()},"evictStale");return{admit(a){const s=Date.now();let e=n.get(a);e||(n.size>=f&&v(s),e={tokens:l,lastRefillAt:s,suppressed:0,lastSeenAt:s},n.set(a,e)),e.lastSeenAt=s;const d=s-e.lastRefillAt;if(d>0&&(e.tokens=Math.min(l,e.tokens+d/1e3*c),e.lastRefillAt=s),e.tokens>=1){e.tokens-=1;const S=e.suppressed;return e.suppressed=0,{ok:!0,suppressed:S}}return e.suppressed+=1,{ok:!1,suppressed:0}}}}u(createEventFloodGuard,"createEventFloodGuard"),i(createEventFloodGuard,"createEventFloodGuard"),o(createEventFloodGuard,"createEventFloodGuard");
|
package/lib/flow-context.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var u=(e,t)=>i(e,"name",{value:t,configurable:!0});var l=Object.defineProperty,r=u((e,t)=>l(e,"name",{value:t,configurable:!0}),"r"),o=Object.defineProperty,n=r((e,t)=>o(e,"name",{value:t,configurable:!0}),"n");Object.defineProperty(exports,"__esModule",{value:!0}),exports.primeFlowContext=primeFlowContext,exports.runInFlowContext=runInFlowContext,exports.liveFlowContext=liveFlowContext,exports.flowContext=flowContext;let getCtx=null,runWith=null;function primeFlowContext(){try{const e=require("@lensmcp/nest-instrumentation");getCtx=e.currentLensmcpContext,runWith=e.runInLensmcpContext}catch{}}u(primeFlowContext,"primeFlowContext"),r(primeFlowContext,"primeFlowContext"),n(primeFlowContext,"primeFlowContext");function runInFlowContext(e,t){if(!runWith)return t();try{return runWith({sessionId:"pending",requestId:e.requestId,...e.flowId?{flowId:e.flowId}:{}},t)}catch{return t()}}u(runInFlowContext,"runInFlowContext"),r(runInFlowContext,"runInFlowContext"),n(runInFlowContext,"runInFlowContext");function liveFlowContext(){try{return getCtx?.()}catch{return}}u(liveFlowContext,"liveFlowContext"),r(liveFlowContext,"liveFlowContext"),n(liveFlowContext,"liveFlowContext");function flowContext(){const e=liveFlowContext();if(e)return{...e.flowId?{flowId:e.flowId}:{},...e.requestId?{requestId:e.requestId}:{},...e.originNodeId?{originNodeId:e.originNodeId}:{}}}u(flowContext,"flowContext"),r(flowContext,"flowContext"),n(flowContext,"flowContext");
|
package/lib/install.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var n=(t,r)=>i(t,"name",{value:r,configurable:!0});var p=Object.defineProperty,a=n((t,r)=>p(t,"name",{value:r,configurable:!0}),"a"),s=Object.defineProperty,e=a((t,r)=>s(t,"name",{value:r,configurable:!0}),"e");Object.defineProperty(exports,"__esModule",{value:!0}),exports.installLensmcpNodeInstrumentation=installLensmcpNodeInstrumentation;const require_hook_1=require("./require-hook"),flow_context_1=require("./flow-context"),tap_egress_1=require("./tap-egress"),tap_fs_1=require("./tap-fs"),tap_exec_1=require("./tap-exec"),tap_pg_1=require("./tap-pg"),tap_redis_1=require("./tap-redis"),tap_bullmq_1=require("./tap-bullmq"),tap_nest_1=require("./tap-nest"),tap_stdout_1=require("./tap-stdout");function installLensmcpNodeInstrumentation(){const t=globalThis;if(!t.__lensmcpNodeInstrumented&&(t.__lensmcpNodeInstrumented=!0,process.env.LENSMCP_AUTO!=="0")){try{(0,flow_context_1.primeFlowContext)()}catch{}try{(0,tap_egress_1.tapEgress)()}catch{}try{(0,tap_fs_1.tapFs)()}catch{}try{(0,tap_exec_1.tapExec)()}catch{}try{(0,tap_stdout_1.tapStdout)()}catch{}try{(0,require_hook_1.installRequireHook)({pg:tap_pg_1.pgTap,ioredis:tap_redis_1.redisTap,bullmq:tap_bullmq_1.bullmqTap,"@nestjs/core":tap_nest_1.nestTap})}catch{}try{(0,tap_nest_1.installChildAppBridge)()}catch{}}}n(installLensmcpNodeInstrumentation,"installLensmcpNodeInstrumentation"),a(installLensmcpNodeInstrumentation,"installLensmcpNodeInstrumentation"),e(installLensmcpNodeInstrumentation,"installLensmcpNodeInstrumentation");
|
package/lib/require-hook.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var f=Object.defineProperty;var u=(e,o)=>f(e,"name",{value:o,configurable:!0});var l=Object.defineProperty,s=u((e,o)=>l(e,"name",{value:o,configurable:!0}),"s"),a=Object.defineProperty,r=s((e,o)=>a(e,"name",{value:o,configurable:!0}),"r");Object.defineProperty(exports,"__esModule",{value:!0}),exports.installRequireHook=installRequireHook;const tapped=new Set;function runTap(e,o,d){try{o(d)!==!1&&tapped.add(e)}catch{tapped.add(e)}}u(runTap,"runTap"),s(runTap,"runTap"),r(runTap,"runTap");function installRequireHook(e){const o=require("node:module"),d=o._load;o._load=function(n,...i){const c=d.call(this,n,...i),t=e[n];return t&&!tapped.has(n)&&runTap(n,t,c),c};for(const n of Object.keys(e)){if(tapped.has(n))continue;const i=e[n];if(i)try{const c=require.resolve(n),t=require.cache[c];t&&runTap(n,i,t.exports)}catch{}}}u(installRequireHook,"installRequireHook"),s(installRequireHook,"installRequireHook"),r(installRequireHook,"installRequireHook");
|
package/lib/tap-bullmq.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var y=Object.defineProperty;var p=(o,e)=>y(o,"name",{value:e,configurable:!0});var w=Object.defineProperty,f=p((o,e)=>w(o,"name",{value:e,configurable:!0}),"f"),q=Object.defineProperty,l=f((o,e)=>q(o,"name",{value:e,configurable:!0}),"l");Object.defineProperty(exports,"__esModule",{value:!0}),exports.bullmqTap=bullmqTap;const emit_1=require("./emit"),flow_context_1=require("./flow-context");function jobFlow(o){const e=o?.opts?.__lensmcpFlow;return e&&typeof e=="object"?e:void 0}p(jobFlow,"jobFlow"),f(jobFlow,"jobFlow"),l(jobFlow,"jobFlow");const jobLegId=l((o,e)=>`job:${o}#${e?.id??"?"}`,"jobLegId"),publishers=new Map;function bullmqTap(o){const e=o;if(typeof e?.Queue!="function"||typeof e?.Worker!="function")return!1;try{tapQueueAdd(e)}catch{}try{tapWorkerEmit(e)}catch{}try{tapWorkerProcess(e)}catch{}return!0}p(bullmqTap,"bullmqTap"),f(bullmqTap,"bullmqTap"),l(bullmqTap,"bullmqTap");function tapWorkerProcess(o){const e=o.Worker?.prototype,i=e?.callProcessJob;if(!e||typeof i!="function"||i.__lensmcp)return;const u=l(async function(t,...s){const c=jobFlow(t);if(!c?.flowId)return i.call(this,t,...s);const r=String(this?.name??t?.queueName??"queue"),a=jobLegId(r,t),n=Date.now(),m={flowId:c.flowId,requestId:a};return(0,flow_context_1.runInFlowContext)(m,async()=>{try{const d=await i.call(this,t,...s);return(0,emit_1.lensEmit)("queue","info",`process ${t?.name}#${t?.id} (${Date.now()-n}ms)`,{queue:r,kind:"queue-process",job:t?.name,jobId:t?.id,startedAt:n,durationMs:Date.now()-n,status:"ok"},`queue:${r}`,m),d}catch(d){throw(0,emit_1.lensEmit)("queue","error",`process ${t?.name}#${t?.id} failed (${Date.now()-n}ms)`,{queue:r,kind:"queue-process",job:t?.name,jobId:t?.id,startedAt:n,durationMs:Date.now()-n,status:"error",error:String(d?.message??d)},`queue:${r}`,m),d}})},"wrapped");u.__lensmcp=!0,e.callProcessJob=u}p(tapWorkerProcess,"tapWorkerProcess"),f(tapWorkerProcess,"tapWorkerProcess"),l(tapWorkerProcess,"tapWorkerProcess");function tapQueueAdd(o){const e=o.Queue?.prototype,i=e?.add;if(!e||typeof i!="function"||i.__lensmcp)return;const u=l(async function(t,...s){const c=Date.now(),r=(0,flow_context_1.flowContext)();if(r?.flowId){const n=s[1]??{};s[1]={...n,__lensmcpFlow:{flowId:r.flowId,...r.requestId?{originRequestId:r.requestId}:{}}}}const a=await i.call(this,t,...s);try{const n=String(this?.name??"queue"),m=s[0];let d;try{const b=JSON.stringify(m);d=b&&b!=="undefined"?b.length>300?b.slice(0,299)+"\u2026":b:void 0}catch{}(0,emit_1.lensEmit)("queue","info",`enqueued ${t}#${a?.id} \u2192 ${n}`,{queue:n,kind:"queue-enqueued",job:t,jobId:a?.id,...d?{data:d}:{},startedAt:c,durationMs:Date.now()-c},`queue:${n}`,r),ensureStatePublisher(n,this)}catch{}return a},"wrapped");u.__lensmcp=!0,e.add=u}p(tapQueueAdd,"tapQueueAdd"),f(tapQueueAdd,"tapQueueAdd"),l(tapQueueAdd,"tapQueueAdd");function tapWorkerEmit(o){const e=o.Worker?.prototype,i=e?.emit;if(!e||typeof i!="function"||i.__lensmcp)return;const u=l(function(t,...s){try{observeWorkerEvent(this,String(t),s)}catch{}return i.call(this,t,...s)},"wrapped");u.__lensmcp=!0,e.emit=u}p(tapWorkerEmit,"tapWorkerEmit"),f(tapWorkerEmit,"tapWorkerEmit"),l(tapWorkerEmit,"tapWorkerEmit");function observeWorkerEvent(o,e,i){if(e!=="active"&&e!=="completed"&&e!=="failed")return;const u=String(o.name??"queue"),t=i[0],s=jobFlow(t),c=s?.flowId?{flowId:s.flowId,requestId:jobLegId(u,t)}:void 0;if(e==="active")(0,emit_1.lensEmit)("queue","info",`processing ${t?.name}#${t?.id}`,{queue:u,kind:"queue-active",jobId:t?.id},`queue:${u}`,c);else if(e==="completed"){let r;try{const a=t?.returnvalue??i[1],n=JSON.stringify(a);r=n&&n!=="undefined"?n.length>160?n.slice(0,159)+"\u2026":n:void 0}catch{}(0,emit_1.lensEmit)("queue","info",`completed ${t?.name}#${t?.id}`,{queue:u,kind:"queue-completed",jobId:t?.id,...r?{returned:r}:{}},`queue:${u}`,c)}else{const r=i[1];(0,emit_1.lensEmit)("queue","error",`job ${t?.id} failed: ${r?.message}`,{queue:u,kind:"queue-failed",jobId:t?.id,error:String(r?.message??r)},`queue:${u}`,c)}if(!publishers.has(u))try{const r=o.opts,a=require("bullmq").Queue;ensureStatePublisher(u,new a(u,{connection:r?.connection}))}catch{}}p(observeWorkerEvent,"observeWorkerEvent"),f(observeWorkerEvent,"observeWorkerEvent"),l(observeWorkerEvent,"observeWorkerEvent");function ensureStatePublisher(o,e){if(publishers.has(o))return;let i="";const u=setInterval(()=>{(async()=>{try{const t=await e.getJobCounts(),s=[];for(const a of["active","waiting","failed","completed","delayed"])for(const n of await e.getJobs([a],0,7)){const m=n?.data?.to;s.push({id:String(n.id),name:n.name,state:a,timestamp:n.timestamp??0,...typeof m=="string"?{to:m}:{}})}s.sort((a,n)=>Number(n.timestamp)-Number(a.timestamp));const c=s.slice(0,8),r=JSON.stringify([t,c.map(a=>`${a.id}${a.state}`)]);if(r===i)return;i=r,(0,emit_1.lensEmit)("queue","info",`queue state: ${t.active??0} active \xB7 ${t.waiting??0} waiting \xB7 ${t.failed??0} failed`,{queue:o,kind:"queue-state",counts:t,recent:c},`queue:${o}`)}catch{}})()},2e3);u.unref?.(),publishers.set(o,u)}p(ensureStatePublisher,"ensureStatePublisher"),f(ensureStatePublisher,"ensureStatePublisher"),l(ensureStatePublisher,"ensureStatePublisher");
|
package/lib/tap-egress.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var h=(n,e)=>m(n,"name",{value:e,configurable:!0});var p=Object.defineProperty,l=h((n,e)=>p(n,"name",{value:e,configurable:!0}),"l"),u=Object.defineProperty,f=l((n,e)=>u(n,"name",{value:e,configurable:!0}),"f");Object.defineProperty(exports,"__esModule",{value:!0}),exports.tapEgress=tapEgress;const emit_1=require("./emit"),flow_context_1=require("./flow-context"),INTERNAL=[/\.local$/i,/^localhost$/i,/^127\./,/^\[?::1\]?$/,/^0\.0\.0\.0$/,/^10\./,/^192\.168\./],isInternal=f(n=>n===""||INTERNAL.some(e=>e.test(n)),"isInternal");function tapEgress(){tapFetch(),tapHttpModule("http"),tapHttpModule("https")}h(tapEgress,"tapEgress"),l(tapEgress,"tapEgress"),f(tapEgress,"tapEgress");function tapFetch(){const n=globalThis;if(typeof n.fetch!="function"||n.__lensmcpFetchTap)return;n.__lensmcpFetchTap=!0;const e=n.fetch.bind(globalThis);n.fetch=(async(o,s)=>{let t="";try{t=new URL(typeof o=="string"?o:o instanceof URL?o.href:o.url).hostname}catch{}if(isInternal(t))return e(o,s);const a=Date.now(),d=(0,flow_context_1.flowContext)(),i=(0,flow_context_1.liveFlowContext)();i&&(i.externalCallCount=(i.externalCallCount??0)+1);const c=String(s?.method??"GET").toUpperCase();try{const r=await e(o,s);return(0,emit_1.lensEmit)("external","info",`egress ${c} ${t} \u2192 ${r.status}`,{name:t,kind:"egress",method:c,host:t,status:r.status,startedAt:a,durationMs:Date.now()-a},void 0,d),r}catch(r){throw(0,emit_1.lensEmit)("external","error",`egress ${c} ${t} failed`,{name:t,kind:"egress",method:c,host:t,error:String(r?.message??r),startedAt:a,durationMs:Date.now()-a},void 0,d),r}})}h(tapFetch,"tapFetch"),l(tapFetch,"tapFetch"),f(tapFetch,"tapFetch");function tapHttpModule(n){const e=require(`node:${n}`),o=e.request;if(typeof o!="function"||o.__lensmcp)return;const s=f(function(...t){const a=o.apply(this,t);try{observe(t,a)}catch{}return a},"wrapped");s.__lensmcp=!0,e.request=s,typeof e.get=="function"&&(e.get=function(...t){const a=s.apply(this,t);return a.end(),a})}h(tapHttpModule,"tapHttpModule"),l(tapHttpModule,"tapHttpModule"),f(tapHttpModule,"tapHttpModule");function observe(n,e){const{host:o,method:s}=parseTarget(n);if(isInternal(o))return;const t=Date.now(),a=(0,flow_context_1.flowContext)(),d=(0,flow_context_1.liveFlowContext)();d&&(d.externalCallCount=(d.externalCallCount??0)+1);let i=!1;e.once("response",(...c)=>{if(i)return;i=!0;const r=c[0];(0,emit_1.lensEmit)("external","info",`egress ${s} ${o} \u2192 ${r?.statusCode??"?"}`,{name:o,kind:"egress",method:s,host:o,...r?.statusCode!=null?{status:r.statusCode}:{},startedAt:t,durationMs:Date.now()-t},void 0,a)}),e.once("error",(...c)=>{if(i)return;i=!0;const r=c[0];(0,emit_1.lensEmit)("external","error",`egress ${s} ${o} failed`,{name:o,kind:"egress",method:s,host:o,error:String(r?.message??r),startedAt:t,durationMs:Date.now()-t},void 0,a)})}h(observe,"observe"),l(observe,"observe"),f(observe,"observe");function parseTarget(n){let e="",o="GET";for(const s of n)if(typeof s=="string")try{e=new URL(s).hostname}catch{}else if(s instanceof URL)e=s.hostname;else if(s&&typeof s=="object"){const t=s;if(typeof t.method=="string"&&(o=t.method.toUpperCase()),typeof t.socketPath=="string")return{host:"",method:o};typeof t.hostname=="string"&&t.hostname?e=t.hostname:typeof t.host=="string"&&t.host&&(e=t.host.split(":")[0]??"")}return{host:e,method:o}}h(parseTarget,"parseTarget"),l(parseTarget,"parseTarget"),f(parseTarget,"parseTarget");
|
package/lib/tap-exec.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var d=(n,e)=>m(n,"name",{value:e,configurable:!0});var f=Object.defineProperty,l=d((n,e)=>f(n,"name",{value:e,configurable:!0}),"l"),x=Object.defineProperty,u=l((n,e)=>x(n,"name",{value:e,configurable:!0}),"u");Object.defineProperty(exports,"__esModule",{value:!0}),exports.tapExec=tapExec;const emit_1=require("./emit"),fmtCmd=u((n,e)=>{const r=Array.isArray(e)?e.map(String).slice(0,8).join(" "):"";return`${String(n)}${r?" "+r:""}`.slice(0,200)},"fmtCmd");function wrap(n,e,r){const t=n[e];if(typeof t!="function"||t.__lensmcp)return;const c=r(t);c.__lensmcp=!0,n[e]=c}d(wrap,"wrap"),l(wrap,"wrap"),u(wrap,"wrap");function observeChild(n,e,r){if(!r||typeof r.once!="function")return;const t=r;if(t.__lensmcpObserved)return;t.__lensmcpObserved=!0;const c=Date.now();r.once("exit",(...o)=>{const i=o[0],a=o[1];(0,emit_1.lensEmit)("exec",i===0?"info":"error",`exec ${e.split(" ")[0]} \u2192 ${i??a}`,{name:"exec",kind:"exec",cmd:e,via:n,...i!=null?{code:i}:{},...a?{signal:a}:{},durationMs:Date.now()-c,...r.pid?{pid:r.pid}:{}})}),r.once("error",(...o)=>{const i=o[0];(0,emit_1.lensEmit)("exec","error",`exec ${e.split(" ")[0]} failed to start`,{name:"exec",kind:"exec",cmd:e,via:n,error:String(i?.message??i),durationMs:Date.now()-c})})}d(observeChild,"observeChild"),l(observeChild,"observeChild"),u(observeChild,"observeChild");function tapExec(){const n=require("node:child_process");for(const e of["spawn","fork"])wrap(n,e,r=>function(t,...c){const o=Array.isArray(c[0])?c[0]:[],i=r.call(this,t,...c);try{observeChild(e,fmtCmd(t,o),i)}catch{}return i});wrap(n,"exec",e=>function(r,...t){const c=e.call(this,r,...t);try{observeChild("exec",String(r).slice(0,200),c)}catch{}return c}),wrap(n,"execFile",e=>function(r,...t){const c=Array.isArray(t[0])?t[0]:[],o=e.call(this,r,...t);try{observeChild("execFile",fmtCmd(r,c),o)}catch{}return o});for(const e of["execSync","execFileSync","spawnSync"])wrap(n,e,r=>function(t,...c){const o=Array.isArray(c[0])?c[0]:[],i=e==="execSync"?String(t).slice(0,200):fmtCmd(t,o),a=Date.now();try{const s=r.call(this,t,...c),p=s&&typeof s=="object"&&"status"in s?s.status??0:0;return(0,emit_1.lensEmit)("exec",p===0?"info":"error",`exec ${i.split(" ")[0]} \u2192 ${p}`,{name:"exec",kind:"exec",cmd:i,via:e,code:p,durationMs:Date.now()-a,sync:!0}),s}catch(s){throw(0,emit_1.lensEmit)("exec","error",`exec ${i.split(" ")[0]} failed`,{name:"exec",kind:"exec",cmd:i,via:e,error:String(s?.message??s),durationMs:Date.now()-a,sync:!0}),s}})}d(tapExec,"tapExec"),l(tapExec,"tapExec"),u(tapExec,"tapExec");
|
package/lib/tap-fs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var h=Object.defineProperty;var f=(t,s)=>h(t,"name",{value:s,configurable:!0});var d=Object.defineProperty,c=f((t,s)=>d(t,"name",{value:s,configurable:!0}),"c"),u=Object.defineProperty,l=c((t,s)=>u(t,"name",{value:s,configurable:!0}),"l");Object.defineProperty(exports,"__esModule",{value:!0}),exports.tapFs=tapFs;const tslib_1=require("tslib"),os=tslib_1.__importStar(require("node:os")),emit_1=require("./emit"),bucket={reads:0,writes:0,bytesRead:0,bytesWritten:0,paths:new Map};let timer=null;const TMP=os.tmpdir(),CWD=process.cwd(),SKIP=["node_modules","/.nx/","/dist/","/.git/",".lensmcp"];function trackedPath(t){if((0,emit_1.isLensWriting)())return null;const s=typeof t=="string"?t:Buffer.isBuffer(t)?t.toString():t instanceof URL?t.pathname:null;return!s||s===emit_1.EVENT_FILE||s.startsWith(TMP)||SKIP.some(r=>s.includes(r))?null:s}f(trackedPath,"trackedPath"),c(trackedPath,"trackedPath"),l(trackedPath,"trackedPath");function record(t,s,r=0){const e=trackedPath(s);if(!e)return;t==="read"?(bucket.reads+=1,bucket.bytesRead+=r):(bucket.writes+=1,bucket.bytesWritten+=r);const n=e.startsWith(CWD)?e.slice(CWD.length+1):e;bucket.paths.size<50&&bucket.paths.set(n,(bucket.paths.get(n)??0)+1),timer||(timer=setTimeout(flush,1e3),timer.unref?.())}f(record,"record"),c(record,"record"),l(record,"record");function flush(){timer=null;const{reads:t,writes:s,bytesRead:r,bytesWritten:e}=bucket;if(t+s===0)return;const n=[...bucket.paths.entries()].sort((i,a)=>a[1]-i[1]).slice(0,3).map(([i])=>i);bucket.reads=bucket.writes=bucket.bytesRead=bucket.bytesWritten=0,bucket.paths.clear(),(0,emit_1.lensEmit)("fs","info",`fs ${t} reads \xB7 ${s} writes`,{name:"fs",kind:"fs-ops",reads:t,writes:s,bytesRead:r,bytesWritten:e,top:n},`fs:${emit_1.PROJECT}`)}f(flush,"flush"),c(flush,"flush"),l(flush,"flush");const byteLen=l(t=>typeof t=="string"?Buffer.byteLength(t):Buffer.isBuffer(t)?t.length:0,"byteLen");function wrap(t,s,r){const e=t?.[s];if(!t||typeof e!="function"||e.__lensmcp)return;const n=r(e);n.__lensmcp=!0;try{t[s]=n}catch{}}f(wrap,"wrap"),c(wrap,"wrap"),l(wrap,"wrap");function tapFs(){const t=require("node:fs");wrap(t,"readFileSync",r=>function(e,...n){const i=r.call(this,e,...n);return record("read",e,byteLen(i)),i}),wrap(t,"writeFileSync",r=>function(e,n,...i){const a=r.call(this,e,n,...i);return record("write",e,byteLen(n)),a}),wrap(t,"appendFileSync",r=>function(e,n,...i){const a=r.call(this,e,n,...i);return record("write",e,byteLen(n)),a}),wrap(t,"readFile",r=>function(e,...n){const i=n[n.length-1];return typeof i=="function"&&(n[n.length-1]=(a,o)=>{a||record("read",e,byteLen(o)),i(a,o)}),r.call(this,e,...n)});for(const r of["writeFile","appendFile"])wrap(t,r,e=>function(n,i,...a){const o=a[a.length-1];return typeof o=="function"&&(a[a.length-1]=p=>{p||record("write",n,byteLen(i)),o(p)}),e.call(this,n,i,...a)});const s=t.promises;wrap(s,"readFile",r=>async function(e,...n){const i=await r.call(this,e,...n);return record("read",e,byteLen(i)),i});for(const r of["writeFile","appendFile"])wrap(s,r,e=>async function(n,i,...a){const o=await e.call(this,n,i,...a);return record("write",n,byteLen(i)),o});wrap(t,"createReadStream",r=>function(e,...n){return record("read",e,0),r.call(this,e,...n)}),wrap(t,"createWriteStream",r=>function(e,...n){return record("write",e,0),r.call(this,e,...n)})}f(tapFs,"tapFs"),c(tapFs,"tapFs"),l(tapFs,"tapFs");
|
package/lib/tap-nest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var y=Object.defineProperty;var p=(e,t)=>y(e,"name",{value:t,configurable:!0});var d=Object.defineProperty,c=p((e,t)=>d(e,"name",{value:t,configurable:!0}),"c"),f=Object.defineProperty,s=c((e,t)=>f(e,"name",{value:t,configurable:!0}),"s");Object.defineProperty(exports,"__esModule",{value:!0}),exports.installChildAppBridge=installChildAppBridge,exports.nestTap=nestTap;const emit_1=require("./emit"),WRAPPED=Symbol.for("lensmcp.wrappedRoot"),captures=[],waiters=[];function pushCapture(e){const t=waiters.shift();t?(clearTimeout(t.timer),t.resolve(e)):captures.push(e)}p(pushCapture,"pushCapture"),c(pushCapture,"pushCapture"),s(pushCapture,"pushCapture");function nextCapture(e=6e4){const t=captures.shift();return t?Promise.resolve(t):new Promise((n,o)=>{const i={resolve:n,reject:o,timer:setTimeout(()=>{const r=waiters.indexOf(i);r>=0&&waiters.splice(r,1),o(new Error("[lensmcp] no NestJS app captured within 60s \u2014 does main.ts call app.listen()? (zero-touch pods boot by running your main and intercepting listen)"))},e)};i.timer.unref?.(),waiters.push(i)})}p(nextCapture,"nextCapture"),c(nextCapture,"nextCapture"),s(nextCapture,"nextCapture");function installChildAppBridge(){if(process.env.APP_RUNNER!=="1")return;const e=global,t=s(()=>nextCapture(),"factory");e.createChildApp=t,e.__lensmcpCreateChildApp=t}p(installChildAppBridge,"installChildAppBridge"),c(installChildAppBridge,"installChildAppBridge"),s(installChildAppBridge,"installChildAppBridge");function nestTap(e){const t=e,n=t?.NestFactory,o=n?.create;if(!n||typeof o!="function")return!1;if(o.__lensmcp)return!0;const i=s(async function(r,...l){let a=r;const u=r,m=!!(u?.[WRAPPED]||u?.module?.[WRAPPED]);if(process.env.LENSMCP_NEST!=="0"&&!m)try{a=await buildLensmcpRoot(r)}catch{a=r}return o.call(this??n,a,...l)},"wrapped");if(i.__lensmcp=!0,n.create=i,process.env.APP_RUNNER==="1"){const r=t?.NestApplication?.prototype,l=r?.listen;if(r&&typeof l=="function"&&!l.__lensmcp){const a=s(async function(u,...m){return captureApp(this,u).catch(h=>(console.error("[lensmcp] pod capture failed, falling back to TCP listen:",h),l.call(this,u,...m)))},"listenWrapped");a.__lensmcp=!0,r.listen=a}}return!0}p(nestTap,"nestTap"),c(nestTap,"nestTap"),s(nestTap,"nestTap");async function buildLensmcpRoot(e){const t=await import("@lensmcp/nest-instrumentation"),n=require("@nestjs/common"),o=t.LensmcpModule.forRoot({projectName:emit_1.PROJECT,trace:{autoInstrumentMethods:!0},memory:{mode:"light",scope:"all"}});class i{static{p(this,"i")}static{c(this,"n")}static{s(this,"LensmcpZeroTouchRoot")}}return i[WRAPPED]=!0,n.Module({imports:[o,e]})(i),i}p(buildLensmcpRoot,"buildLensmcpRoot"),c(buildLensmcpRoot,"buildLensmcpRoot"),s(buildLensmcpRoot,"buildLensmcpRoot");async function captureApp(e,t){await e.init();let n=e.getHttpAdapter?.()?.getInstance?.();if(typeof n!="function"){const o=n;o?.ready&&await o.ready(),typeof o?.routing=="function"&&(n=s((i,r)=>o.routing(i,r),"handler"))}if(typeof n!="function")throw new Error("[lensmcp] cannot derive a request handler from the HTTP adapter");return pushCapture({handler:n,serviceConfig:{port:t??process.env.PORT??0},close:s(()=>Promise.resolve(e.close()).then(()=>{}),"close")}),e.getHttpServer?.()}p(captureApp,"captureApp"),c(captureApp,"captureApp"),s(captureApp,"captureApp");
|
package/lib/tap-pg.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var L=Object.defineProperty;var f=(e,t)=>L(e,"name",{value:t,configurable:!0});var x=Object.defineProperty,c=f((e,t)=>x(e,"name",{value:t,configurable:!0}),"c"),E=Object.defineProperty,n=c((e,t)=>E(e,"name",{value:t,configurable:!0}),"n");Object.defineProperty(exports,"__esModule",{value:!0}),exports.pgTap=pgTap;const emit_1=require("./emit"),flow_context_1=require("./flow-context"),SKIP_OPS=new Set(["BEGIN","COMMIT","ROLLBACK","SET","SHOW","DEALLOCATE","DISCARD"]);function parseSql(e){const t=(e.match(/^\s*(\w+)/)?.[1]??"query").toUpperCase(),r=e.match(/\b(?:from|into|update|join|table(?:\s+if\s+not\s+exists)?)\s+"?([\w$.]+)"?/i)?.[1]?.split(".").pop();return{op:t,...r?{table:r}:{}}}f(parseSql,"parseSql"),c(parseSql,"parseSql"),n(parseSql,"parseSql");const oneLine=n(e=>e.replace(/\s+/g," ").trim(),"oneLine"),clip=n((e,t)=>e.length>t?e.slice(0,t-1)+"\u2026":e,"clip");function paramPreview(e){if(!(!Array.isArray(e)||e.length===0))return e.slice(0,10).map(t=>{if(t==null)return String(t);const r=typeof t=="string"?t:(()=>{try{return JSON.stringify(t)}catch{return String(t)}})();return clip(r,80)})}f(paramPreview,"paramPreview"),c(paramPreview,"paramPreview"),n(paramPreview,"paramPreview");const rowsOf=n(e=>e?.rowCount??e?.rows?.length??0,"rowsOf");function resultPreview(e){const t=e?.rows;if(!(!Array.isArray(t)||t.length===0))try{return clip(JSON.stringify(t.slice(0,2)),240)}catch{return}}f(resultPreview,"resultPreview"),c(resultPreview,"resultPreview"),n(resultPreview,"resultPreview");function pgTap(e){const t=e?.Client?.prototype,r=t?.query;if(!t||typeof r!="function")return!1;if(r.__lensmcp)return!0;const q=n(function(a,s,d){const u=a,b=typeof u=="string"?u:u?.text;if(!b||u&&typeof u=="object"&&typeof u.submit=="function")return r.call(this,a,s,d);const{op:C,table:i}=parseSql(b);if(SKIP_OPS.has(C))return r.call(this,a,s,d);const p=C.toLowerCase(),_=`db:${p}:${i??"query"}`,g=Date.now(),S=(0,flow_context_1.flowContext)(),h=(0,flow_context_1.liveFlowContext)();h&&(h.dbCallCount=(h.dbCallCount??0)+1);const A=clip(oneLine(b),500),w=paramPreview(Array.isArray(s)?s:a?.values),v=n((o,y)=>{const l=Date.now()-g;if(o)(0,emit_1.lensEmit)("db","error",`${p}${i?" "+i:""} failed (${l}ms)`,{name:"postgres",kind:"db-query",op:p,...i?{table:i}:{},query:A,...w?{params:w}:{},startedAt:g,error:String(o?.message??o),durationMs:l},`db:error:${p}:${i??"query"}`,S);else{const $=rowsOf(y),P=resultPreview(y);(0,emit_1.lensEmit)("db","info",`${p} ${i??"query"} (${$} rows, ${l}ms)`,{name:"postgres",kind:"db-query",op:p,...i?{table:i}:{},query:A,...w?{params:w}:{},...P?{result:P}:{},startedAt:g,rows:$,durationMs:l},_,S)}},"done"),O=typeof d=="function"?d:typeof s=="function"?s:void 0;if(O){const o=n((y,l)=>{try{v(y,l)}catch{}O(y,l)},"wrappedCb");return typeof s=="function"?r.call(this,a,o):r.call(this,a,s,o)}const m=r.call(this,a,s);return m&&typeof m.then=="function"&&m.then(o=>v(void 0,o),o=>v(o,void 0)),m},"wrapped");return q.__lensmcp=!0,t.query=q,!0}f(pgTap,"pgTap"),c(pgTap,"pgTap"),n(pgTap,"pgTap");
|
package/lib/tap-redis.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var v=Object.defineProperty;var l=(t,e)=>v(t,"name",{value:e,configurable:!0});var b=Object.defineProperty,a=l((t,e)=>b(t,"name",{value:e,configurable:!0}),"a"),h=Object.defineProperty,c=a((t,e)=>h(t,"name",{value:e,configurable:!0}),"c");Object.defineProperty(exports,"__esModule",{value:!0}),exports.redisTap=redisTap;const emit_1=require("./emit"),flow_context_1=require("./flow-context"),HOUSEKEEPING=new Set(["info","ping","hello","auth","select","client","cluster","command","subscribe","psubscribe","unsubscribe","punsubscribe","echo","quit","wait","script","config","debug","memory","readonly","readwrite"]),MAX_PER_SEC=30;let emitted=0,windowStart=0;function isBullTraffic(t){const e=String(t.name??"").toLowerCase();if(e==="eval"||e==="evalsha")return!0;const r=t.args??[];for(let n=0;n<Math.min(r.length,4);n++){const s=String(r[n]??"");if(s.startsWith("bull:")||s.startsWith("{bull"))return!0}return!1}l(isBullTraffic,"isBullTraffic"),a(isBullTraffic,"isBullTraffic"),c(isBullTraffic,"isBullTraffic");function redisTap(t){const e=t,r=(e?.default??e)?.prototype,n=r?.sendCommand;if(!r||typeof n!="function")return!1;if(n.__lensmcp)return!0;const s=c(function(i,u){const m=n.call(this,i,u);try{observe(i)}catch{}return m},"wrapped");return s.__lensmcp=!0,r.sendCommand=s,!0}l(redisTap,"redisTap"),a(redisTap,"redisTap"),c(redisTap,"redisTap");const clip=c((t,e)=>t.length>e?t.slice(0,e-1)+"\u2026":t,"clip");function commandLine(t,e){const r=e.slice(0,6).map((n,s)=>{const i=String(n??"");return s>0&&i.length>48?`\u2026(${(i.length/1024).toFixed(1)}kb)`:clip(i,64)});return[t.toUpperCase(),...r].join(" ")}l(commandLine,"commandLine"),a(commandLine,"commandLine"),c(commandLine,"commandLine");function observe(t){const e=String(t?.name??"").toLowerCase();if(!e||HOUSEKEEPING.has(e)||isBullTraffic(t))return;const r=(0,flow_context_1.liveFlowContext)();r&&(r.redisCallCount=(r.redisCallCount??0)+1);const n=Date.now();if(n-windowStart>1e3&&(windowStart=n,emitted=0),++emitted>MAX_PER_SEC)return;const s=t?.args??[],i=String(s[0]??""),u=(0,flow_context_1.flowContext)(),m=commandLine(e,s),p={name:"cache",kind:"redis-op",op:e,key:i,command:m,startedAt:n};if(e==="get"&&t.promise&&typeof t.promise.then=="function"){const f=n;t.promise.then(d=>{const o=d!=null;(0,emit_1.lensEmit)("redis","info",`cache ${o?"hit":"miss"} ${i}`,{...p,hit:o,durationMs:Date.now()-f,...o?{value:clip(String(d),120)}:{}},"redis:cache",u)},()=>{});return}if(e==="set"){const f=s.map(g=>String(g)),d=f.findIndex(g=>g.toUpperCase()==="EX"),o=d>=0?Number(f[d+1]):void 0;(0,emit_1.lensEmit)("redis","info",o?`cache set ${i} (ttl ${o}s)`:`cache set ${i}`,{...p,...o?{ttlSec:o}:{}},"redis:cache",u);return}(0,emit_1.lensEmit)("redis","info",`cache ${e} ${i}`,p,"redis:cache",u)}l(observe,"observe"),a(observe,"observe"),c(observe,"observe");
|
package/lib/tap-stdout.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`)){const r=
|
|
1
|
+
"use strict";var d=Object.defineProperty;var i=(t,e)=>d(t,"name",{value:e,configurable:!0});var b=Object.defineProperty,o=i((t,e)=>b(t,"name",{value:e,configurable:!0}),"o"),u=Object.defineProperty,s=o((t,e)=>u(t,"name",{value:e,configurable:!0}),"s");Object.defineProperty(exports,"__esModule",{value:!0}),exports.tapStdout=tapStdout;const emit_1=require("./emit"),ANSI=new RegExp("\x1B\\[[0-9;]*m","g");function severityOf(t,e){return/\bFATAL\b/.test(t)?"fatal":/\bERROR\b/.test(t)?"error":/\bWARN\b/.test(t)?"warning":/\bDEBUG\b/.test(t)||/\bVERBOSE\b/.test(t)?"debug":/\bLOG\b/.test(t)?"info":e}i(severityOf,"severityOf"),o(severityOf,"severityOf"),s(severityOf,"severityOf");function emitChunk(t,e){for(const c of t.split(`
|
|
2
|
+
`)){const r=c.replace(ANSI,"").replace(/\s+$/,"");r.trim()&&(0,emit_1.lensLog)(severityOf(r,e),r)}}i(emitChunk,"emitChunk"),o(emitChunk,"emitChunk"),s(emitChunk,"emitChunk");function tapStdout(){if(process.env.LENSMCP_LOGS==="0"||process.env.APP_RUNNER!=="1")return;const t=[[process.stdout,"info"],[process.stderr,"error"]];for(const[e,c]of t){if(e.write.__lensmcp)continue;const r=e.write.bind(e),p=s(function(n,...a){try{if(!(0,emit_1.isLensWriting)()){const f=typeof n=="string"?n:Buffer.isBuffer(n)?n.toString("utf8"):"";f&&f.indexOf("[lensmcp]")===-1&&emitChunk(f,c)}}catch{}return r(n,...a)},"wrapped");p.__lensmcp=!0,e.write=p}}i(tapStdout,"tapStdout"),o(tapStdout,"tapStdout"),s(tapStdout,"tapStdout");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lensmcp/node-instrumentation",
|
|
3
|
-
"version": "1.18.
|
|
3
|
+
"version": "1.18.14",
|
|
4
4
|
"main": "./index.js",
|
|
5
5
|
"types": "./index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@lensmcp/nest-instrumentation": "1.18.
|
|
18
|
+
"@lensmcp/nest-instrumentation": "1.18.14",
|
|
19
19
|
"tslib": "^2.3.0"
|
|
20
20
|
},
|
|
21
21
|
"optionalDependencies": {
|
package/register.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var o=Object.defineProperty;var a=(t,n)=>o(t,"name",{value:n,configurable:!0});var i=Object.defineProperty,r=a((t,n)=>i(t,"name",{value:n,configurable:!0}),"r"),s=Object.defineProperty,e=r((t,n)=>s(t,"name",{value:n,configurable:!0}),"e");Object.defineProperty(exports,"__esModule",{value:!0}),exports.installLensmcpNodeInstrumentation=void 0;const install_1=require("./lib/install");Object.defineProperty(exports,"installLensmcpNodeInstrumentation",{enumerable:!0,get:e(function(){return install_1.installLensmcpNodeInstrumentation},"get")}),(0,install_1.installLensmcpNodeInstrumentation)();
|