@lensmcp/node-instrumentation 1.18.14 → 1.19.0
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 o=Object.defineProperty;var i=(t,r)=>o(t,"name",{value:r,configurable:!0});var 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 u=Object.defineProperty;var E=(e,t)=>u(e,"name",{value:t,configurable:!0});var 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 n=(bytesSinceCheck.get(e)??0)+t;if(n<ROTATE_CHECK_BYTES&&r===void 0){bytesSinceCheck.set(e,n);return}bytesSinceCheck.set(e,0);const p=r?.maxBytes??exports.EVENT_MAX_BYTES,s=r?.maxFiles??exports.EVENT_MAX_FILES;try{if(statSync(e).size<=p)return}catch{return}try{unlinkSync(`${e}.${s}`)}catch{}for(let o=s-1;o>=1;o--)try{renameSync(`${e}.${o}`,`${e}.${o+1}`)}catch{}try{renameSync(e,`${e}.1`)}catch{}}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}E(isLensWriting,"isLensWriting"),i(isLensWriting,"isLensWriting");function lensEmit(e,t,r,n,p,s){try{writing=!0;const o=p??`${e}:${String(n.name??e)}`,c=emitGuard.admit(o);if(!c.ok)return;dirReady||(mkdirSync((0,node_path_1.dirname)(exports.EVENT_FILE),{recursive:!0}),dirReady=!0);const a=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,...s?.flowId?{flowId:s.flowId}:{},...s?.requestId?{requestId:s.requestId}:{},...s?.originNodeId?{originNodeId:s.originNodeId}:{}},fingerprint:o,title:r,raw:{project:exports.PROJECT,...n,...c.suppressed>0?{floodSuppressed:c.suppressed}:{}}})+`
|
|
2
|
+
`;maybeRotateEventFile(exports.EVENT_FILE,a.length),appendFileSync(exports.EVENT_FILE,a)}catch{}finally{writing=!1}}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 n=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,n.length),appendFileSync(exports.EVENT_FILE,n)}catch{}finally{writing=!1}}E(lensLog,"lensLog"),i(lensLog,"lensLog");
|
package/lib/flood-guard.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var i=(t,s)=>m(t,"name",{value:s,configurable:!0});var p=Object.defineProperty,o=i((t,s)=>p(t,"name",{value:s,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 s=Number(t);if(Number.isFinite(s))return s<=0?"off":s}i(envPerSec,"envPerSec"),o(envPerSec,"envPerSec");function createEventFloodGuard(t){const s=envPerSec();if(s==="off")return{admit:o(()=>({ok:!0,suppressed:0}),"admit")};const u=s??t?.perSec??5,c=Math.max(1,t?.burst??Math.max(30,u*4)),f=t?.maxKeys??2048,n=new Map,d=o(a=>{for(const[r,e]of n)a-e.lastSeenAt>6e4&&n.delete(r);n.size>f&&n.clear()},"evictStale");return{admit(a){const r=Date.now();let e=n.get(a);e||(n.size>=f&&d(r),e={tokens:c,lastRefillAt:r,suppressed:0,lastSeenAt:r},n.set(a,e)),e.lastSeenAt=r;const l=r-e.lastRefillAt;if(l>0&&(e.tokens=Math.min(c,e.tokens+l/1e3*u),e.lastRefillAt=r),e.tokens>=1){e.tokens-=1;const v=e.suppressed;return e.suppressed=0,{ok:!0,suppressed:v}}return e.suppressed+=1,{ok:!1,suppressed:0}}}}i(createEventFloodGuard,"createEventFloodGuard"),o(createEventFloodGuard,"createEventFloodGuard");
|
package/lib/flow-context.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var l=Object.defineProperty;var r=(e,t)=>l(e,"name",{value:t,configurable:!0});var 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{}}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()}}r(runInFlowContext,"runInFlowContext"),n(runInFlowContext,"runInFlowContext");function liveFlowContext(){try{return getCtx?.()}catch{return}}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}:{}}}r(flowContext,"flowContext"),n(flowContext,"flowContext");
|
package/lib/install.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var a=(t,r)=>p(t,"name",{value:r,configurable:!0});var 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{}}}a(installLensmcpNodeInstrumentation,"installLensmcpNodeInstrumentation"),e(installLensmcpNodeInstrumentation,"installLensmcpNodeInstrumentation");
|
package/lib/require-hook.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var l=Object.defineProperty;var s=(e,n)=>l(e,"name",{value:n,configurable:!0});var a=Object.defineProperty,r=s((e,n)=>a(e,"name",{value:n,configurable:!0}),"r");Object.defineProperty(exports,"__esModule",{value:!0}),exports.installRequireHook=installRequireHook;const tapped=new Set;function runTap(e,n,u){try{n(u)!==!1&&tapped.add(e)}catch{tapped.add(e)}}s(runTap,"runTap"),r(runTap,"runTap");function installRequireHook(e){const n=require("node:module"),u=n._load;n._load=function(t,...c){const i=u.call(this,t,...c),o=e[t];return o&&!tapped.has(t)&&runTap(t,o,i),i};for(const t of Object.keys(e)){if(tapped.has(t))continue;const c=e[t];if(c)try{const i=require.resolve(t),o=require.cache[i];o&&runTap(t,c,o.exports)}catch{}}}s(installRequireHook,"installRequireHook"),r(installRequireHook,"installRequireHook");
|
package/lib/tap-bullmq.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var w=Object.defineProperty;var f=(u,t)=>w(u,"name",{value:t,configurable:!0});var q=Object.defineProperty,l=f((u,t)=>q(u,"name",{value:t,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(u){const t=u?.opts?.__lensmcpFlow;return t&&typeof t=="object"?t:void 0}f(jobFlow,"jobFlow"),l(jobFlow,"jobFlow");const jobLegId=l((u,t)=>`job:${u}#${t?.id??"?"}`,"jobLegId"),publishers=new Map;function bullmqTap(u){const t=u;if(typeof t?.Queue!="function"||typeof t?.Worker!="function")return!1;try{tapQueueAdd(t)}catch{}try{tapWorkerEmit(t)}catch{}try{tapWorkerProcess(t)}catch{}return!0}f(bullmqTap,"bullmqTap"),l(bullmqTap,"bullmqTap");function tapWorkerProcess(u){const t=u.Worker?.prototype,r=t?.callProcessJob;if(!t||typeof r!="function"||r.__lensmcp)return;const i=l(async function(e,...s){const a=jobFlow(e);if(!a?.flowId)return r.call(this,e,...s);const o=String(this?.name??e?.queueName??"queue"),c=jobLegId(o,e),n=Date.now(),p={flowId:a.flowId,requestId:c};return(0,flow_context_1.runInFlowContext)(p,async()=>{try{const d=await r.call(this,e,...s);return(0,emit_1.lensEmit)("queue","info",`process ${e?.name}#${e?.id} (${Date.now()-n}ms)`,{queue:o,kind:"queue-process",job:e?.name,jobId:e?.id,startedAt:n,durationMs:Date.now()-n,status:"ok"},`queue:${o}`,p),d}catch(d){throw(0,emit_1.lensEmit)("queue","error",`process ${e?.name}#${e?.id} failed (${Date.now()-n}ms)`,{queue:o,kind:"queue-process",job:e?.name,jobId:e?.id,startedAt:n,durationMs:Date.now()-n,status:"error",error:String(d?.message??d)},`queue:${o}`,p),d}})},"wrapped");i.__lensmcp=!0,t.callProcessJob=i}f(tapWorkerProcess,"tapWorkerProcess"),l(tapWorkerProcess,"tapWorkerProcess");function tapQueueAdd(u){const t=u.Queue?.prototype,r=t?.add;if(!t||typeof r!="function"||r.__lensmcp)return;const i=l(async function(e,...s){const a=Date.now(),o=(0,flow_context_1.flowContext)();if(o?.flowId){const n=s[1]??{};s[1]={...n,__lensmcpFlow:{flowId:o.flowId,...o.requestId?{originRequestId:o.requestId}:{}}}}const c=await r.call(this,e,...s);try{const n=String(this?.name??"queue"),p=s[0];let d;try{const m=JSON.stringify(p);d=m&&m!=="undefined"?m.length>300?m.slice(0,299)+"\u2026":m:void 0}catch{}(0,emit_1.lensEmit)("queue","info",`enqueued ${e}#${c?.id} \u2192 ${n}`,{queue:n,kind:"queue-enqueued",job:e,jobId:c?.id,...d?{data:d}:{},startedAt:a,durationMs:Date.now()-a},`queue:${n}`,o),ensureStatePublisher(n,this)}catch{}return c},"wrapped");i.__lensmcp=!0,t.add=i}f(tapQueueAdd,"tapQueueAdd"),l(tapQueueAdd,"tapQueueAdd");function tapWorkerEmit(u){const t=u.Worker?.prototype,r=t?.emit;if(!t||typeof r!="function"||r.__lensmcp)return;const i=l(function(e,...s){try{observeWorkerEvent(this,String(e),s)}catch{}return r.call(this,e,...s)},"wrapped");i.__lensmcp=!0,t.emit=i}f(tapWorkerEmit,"tapWorkerEmit"),l(tapWorkerEmit,"tapWorkerEmit");function observeWorkerEvent(u,t,r){if(t!=="active"&&t!=="completed"&&t!=="failed")return;const i=String(u.name??"queue"),e=r[0],s=jobFlow(e),a=s?.flowId?{flowId:s.flowId,requestId:jobLegId(i,e)}:void 0;if(t==="active")(0,emit_1.lensEmit)("queue","info",`processing ${e?.name}#${e?.id}`,{queue:i,kind:"queue-active",jobId:e?.id},`queue:${i}`,a);else if(t==="completed"){let o;try{const c=e?.returnvalue??r[1],n=JSON.stringify(c);o=n&&n!=="undefined"?n.length>160?n.slice(0,159)+"\u2026":n:void 0}catch{}(0,emit_1.lensEmit)("queue","info",`completed ${e?.name}#${e?.id}`,{queue:i,kind:"queue-completed",jobId:e?.id,...o?{returned:o}:{}},`queue:${i}`,a)}else{const o=r[1];(0,emit_1.lensEmit)("queue","error",`job ${e?.id} failed: ${o?.message}`,{queue:i,kind:"queue-failed",jobId:e?.id,error:String(o?.message??o)},`queue:${i}`,a)}if(!publishers.has(i))try{const o=u.opts,c=require("bullmq").Queue;ensureStatePublisher(i,new c(i,{connection:o?.connection}))}catch{}}f(observeWorkerEvent,"observeWorkerEvent"),l(observeWorkerEvent,"observeWorkerEvent");function ensureStatePublisher(u,t){if(publishers.has(u))return;let r="";const i=setInterval(()=>{(async()=>{try{const e=await t.getJobCounts(),s=[];for(const c of["active","waiting","failed","completed","delayed"])for(const n of await t.getJobs([c],0,7)){const p=n?.data?.to;s.push({id:String(n.id),name:n.name,state:c,timestamp:n.timestamp??0,...typeof p=="string"?{to:p}:{}})}s.sort((c,n)=>Number(n.timestamp)-Number(c.timestamp));const a=s.slice(0,8),o=JSON.stringify([e,a.map(c=>`${c.id}${c.state}`)]);if(o===r)return;r=o,(0,emit_1.lensEmit)("queue","info",`queue state: ${e.active??0} active \xB7 ${e.waiting??0} waiting \xB7 ${e.failed??0} failed`,{queue:u,kind:"queue-state",counts:e,recent:a},`queue:${u}`)}catch{}})()},2e3);i.unref?.(),publishers.set(u,i)}f(ensureStatePublisher,"ensureStatePublisher"),l(ensureStatePublisher,"ensureStatePublisher");
|
package/lib/tap-egress.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var l=(s,n)=>p(s,"name",{value:n,configurable:!0});var u=Object.defineProperty,f=l((s,n)=>u(s,"name",{value:n,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(s=>s===""||INTERNAL.some(n=>n.test(s)),"isInternal");function tapEgress(){tapFetch(),tapHttpModule("http"),tapHttpModule("https")}l(tapEgress,"tapEgress"),f(tapEgress,"tapEgress");function tapFetch(){const s=globalThis;if(typeof s.fetch!="function"||s.__lensmcpFetchTap)return;s.__lensmcpFetchTap=!0;const n=s.fetch.bind(globalThis);s.fetch=(async(e,o)=>{let t="";try{t=new URL(typeof e=="string"?e:e instanceof URL?e.href:e.url).hostname}catch{}if(isInternal(t))return n(e,o);const a=Date.now(),h=(0,flow_context_1.flowContext)(),i=(0,flow_context_1.liveFlowContext)();i&&(i.externalCallCount=(i.externalCallCount??0)+1);const c=String(o?.method??"GET").toUpperCase();try{const r=await n(e,o);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,h),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,h),r}})}l(tapFetch,"tapFetch"),f(tapFetch,"tapFetch");function tapHttpModule(s){const n=require(`node:${s}`),e=n.request;if(typeof e!="function"||e.__lensmcp)return;const o=f(function(...t){const a=e.apply(this,t);try{observe(t,a)}catch{}return a},"wrapped");o.__lensmcp=!0,n.request=o,typeof n.get=="function"&&(n.get=function(...t){const a=o.apply(this,t);return a.end(),a})}l(tapHttpModule,"tapHttpModule"),f(tapHttpModule,"tapHttpModule");function observe(s,n){const{host:e,method:o}=parseTarget(s);if(isInternal(e))return;const t=Date.now(),a=(0,flow_context_1.flowContext)(),h=(0,flow_context_1.liveFlowContext)();h&&(h.externalCallCount=(h.externalCallCount??0)+1);let i=!1;n.once("response",(...c)=>{if(i)return;i=!0;const r=c[0];(0,emit_1.lensEmit)("external","info",`egress ${o} ${e} \u2192 ${r?.statusCode??"?"}`,{name:e,kind:"egress",method:o,host:e,...r?.statusCode!=null?{status:r.statusCode}:{},startedAt:t,durationMs:Date.now()-t},void 0,a)}),n.once("error",(...c)=>{if(i)return;i=!0;const r=c[0];(0,emit_1.lensEmit)("external","error",`egress ${o} ${e} failed`,{name:e,kind:"egress",method:o,host:e,error:String(r?.message??r),startedAt:t,durationMs:Date.now()-t},void 0,a)})}l(observe,"observe"),f(observe,"observe");function parseTarget(s){let n="",e="GET";for(const o of s)if(typeof o=="string")try{n=new URL(o).hostname}catch{}else if(o instanceof URL)n=o.hostname;else if(o&&typeof o=="object"){const t=o;if(typeof t.method=="string"&&(e=t.method.toUpperCase()),typeof t.socketPath=="string")return{host:"",method:e};typeof t.hostname=="string"&&t.hostname?n=t.hostname:typeof t.host=="string"&&t.host&&(n=t.host.split(":")[0]??"")}return{host:n,method:e}}l(parseTarget,"parseTarget"),f(parseTarget,"parseTarget");
|
package/lib/tap-exec.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var f=Object.defineProperty;var l=(t,e)=>f(t,"name",{value:e,configurable:!0});var x=Object.defineProperty,u=l((t,e)=>x(t,"name",{value:e,configurable:!0}),"u");Object.defineProperty(exports,"__esModule",{value:!0}),exports.tapExec=tapExec;const emit_1=require("./emit"),fmtCmd=u((t,e)=>{const c=Array.isArray(e)?e.map(String).slice(0,8).join(" "):"";return`${String(t)}${c?" "+c:""}`.slice(0,200)},"fmtCmd");function wrap(t,e,c){const n=t[e];if(typeof n!="function"||n.__lensmcp)return;const r=c(n);r.__lensmcp=!0,t[e]=r}l(wrap,"wrap"),u(wrap,"wrap");function observeChild(t,e,c){if(!c||typeof c.once!="function")return;const n=c;if(n.__lensmcpObserved)return;n.__lensmcpObserved=!0;const r=Date.now();c.once("exit",(...s)=>{const i=s[0],a=s[1];(0,emit_1.lensEmit)("exec",i===0?"info":"error",`exec ${e.split(" ")[0]} \u2192 ${i??a}`,{name:"exec",kind:"exec",cmd:e,via:t,...i!=null?{code:i}:{},...a?{signal:a}:{},durationMs:Date.now()-r,...c.pid?{pid:c.pid}:{}})}),c.once("error",(...s)=>{const i=s[0];(0,emit_1.lensEmit)("exec","error",`exec ${e.split(" ")[0]} failed to start`,{name:"exec",kind:"exec",cmd:e,via:t,error:String(i?.message??i),durationMs:Date.now()-r})})}l(observeChild,"observeChild"),u(observeChild,"observeChild");function tapExec(){const t=require("node:child_process");for(const e of["spawn","fork"])wrap(t,e,c=>function(n,...r){const s=Array.isArray(r[0])?r[0]:[],i=c.call(this,n,...r);try{observeChild(e,fmtCmd(n,s),i)}catch{}return i});wrap(t,"exec",e=>function(c,...n){const r=e.call(this,c,...n);try{observeChild("exec",String(c).slice(0,200),r)}catch{}return r}),wrap(t,"execFile",e=>function(c,...n){const r=Array.isArray(n[0])?n[0]:[],s=e.call(this,c,...n);try{observeChild("execFile",fmtCmd(c,r),s)}catch{}return s});for(const e of["execSync","execFileSync","spawnSync"])wrap(t,e,c=>function(n,...r){const s=Array.isArray(r[0])?r[0]:[],i=e==="execSync"?String(n).slice(0,200):fmtCmd(n,s),a=Date.now();try{const o=c.call(this,n,...r),d=o&&typeof o=="object"&&"status"in o?o.status??0:0;return(0,emit_1.lensEmit)("exec",d===0?"info":"error",`exec ${i.split(" ")[0]} \u2192 ${d}`,{name:"exec",kind:"exec",cmd:i,via:e,code:d,durationMs:Date.now()-a,sync:!0}),o}catch(o){throw(0,emit_1.lensEmit)("exec","error",`exec ${i.split(" ")[0]} failed`,{name:"exec",kind:"exec",cmd:i,via:e,error:String(o?.message??o),durationMs:Date.now()-a,sync:!0}),o}})}l(tapExec,"tapExec"),u(tapExec,"tapExec");
|
package/lib/tap-fs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var c=(e,i)=>d(e,"name",{value:i,configurable:!0});var u=Object.defineProperty,l=c((e,i)=>u(e,"name",{value:i,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(e){if((0,emit_1.isLensWriting)())return null;const i=typeof e=="string"?e:Buffer.isBuffer(e)?e.toString():e instanceof URL?e.pathname:null;return!i||i===emit_1.EVENT_FILE||i.startsWith(TMP)||SKIP.some(n=>i.includes(n))?null:i}c(trackedPath,"trackedPath"),l(trackedPath,"trackedPath");function record(e,i,n=0){const t=trackedPath(i);if(!t)return;e==="read"?(bucket.reads+=1,bucket.bytesRead+=n):(bucket.writes+=1,bucket.bytesWritten+=n);const r=t.startsWith(CWD)?t.slice(CWD.length+1):t;bucket.paths.size<50&&bucket.paths.set(r,(bucket.paths.get(r)??0)+1),timer||(timer=setTimeout(flush,1e3),timer.unref?.())}c(record,"record"),l(record,"record");function flush(){timer=null;const{reads:e,writes:i,bytesRead:n,bytesWritten:t}=bucket;if(e+i===0)return;const r=[...bucket.paths.entries()].sort((s,a)=>a[1]-s[1]).slice(0,3).map(([s])=>s);bucket.reads=bucket.writes=bucket.bytesRead=bucket.bytesWritten=0,bucket.paths.clear(),(0,emit_1.lensEmit)("fs","info",`fs ${e} reads \xB7 ${i} writes`,{name:"fs",kind:"fs-ops",reads:e,writes:i,bytesRead:n,bytesWritten:t,top:r},`fs:${emit_1.PROJECT}`)}c(flush,"flush"),l(flush,"flush");const byteLen=l(e=>typeof e=="string"?Buffer.byteLength(e):Buffer.isBuffer(e)?e.length:0,"byteLen");function wrap(e,i,n){const t=e?.[i];if(!e||typeof t!="function"||t.__lensmcp)return;const r=n(t);r.__lensmcp=!0;try{e[i]=r}catch{}}c(wrap,"wrap"),l(wrap,"wrap");function tapFs(){const e=require("node:fs");wrap(e,"readFileSync",n=>function(t,...r){const s=n.call(this,t,...r);return record("read",t,byteLen(s)),s}),wrap(e,"writeFileSync",n=>function(t,r,...s){const a=n.call(this,t,r,...s);return record("write",t,byteLen(r)),a}),wrap(e,"appendFileSync",n=>function(t,r,...s){const a=n.call(this,t,r,...s);return record("write",t,byteLen(r)),a}),wrap(e,"readFile",n=>function(t,...r){const s=r[r.length-1];return typeof s=="function"&&(r[r.length-1]=(a,o)=>{a||record("read",t,byteLen(o)),s(a,o)}),n.call(this,t,...r)});for(const n of["writeFile","appendFile"])wrap(e,n,t=>function(r,s,...a){const o=a[a.length-1];return typeof o=="function"&&(a[a.length-1]=f=>{f||record("write",r,byteLen(s)),o(f)}),t.call(this,r,s,...a)});const i=e.promises;wrap(i,"readFile",n=>async function(t,...r){const s=await n.call(this,t,...r);return record("read",t,byteLen(s)),s});for(const n of["writeFile","appendFile"])wrap(i,n,t=>async function(r,s,...a){const o=await t.call(this,r,s,...a);return record("write",r,byteLen(s)),o});wrap(e,"createReadStream",n=>function(t,...r){return record("read",t,0),n.call(this,t,...r)}),wrap(e,"createWriteStream",n=>function(t,...r){return record("write",t,0),n.call(this,t,...r)})}c(tapFs,"tapFs"),l(tapFs,"tapFs");
|
package/lib/tap-nest.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var c=(e,t)=>d(e,"name",{value:t,configurable:!0});var 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)}c(pushCapture,"pushCapture"),s(pushCapture,"pushCapture");function nextCapture(e=6e4){const t=captures.shift();return t?Promise.resolve(t):new Promise((n,r)=>{const i={resolve:n,reject:r,timer:setTimeout(()=>{const o=waiters.indexOf(i);o>=0&&waiters.splice(o,1),r(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)})}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}c(installChildAppBridge,"installChildAppBridge"),s(installChildAppBridge,"installChildAppBridge");function nestTap(e){const t=e,n=t?.NestFactory,r=n?.create;if(!n||typeof r!="function")return!1;if(r.__lensmcp)return!0;const i=s(async function(o,...a){let p=o;const l=o,u=!!(l?.[WRAPPED]||l?.module?.[WRAPPED]);if(process.env.LENSMCP_NEST!=="0"&&!u)try{p=await buildLensmcpRoot(o)}catch{p=o}return r.call(this??n,p,...a)},"wrapped");if(i.__lensmcp=!0,n.create=i,process.env.APP_RUNNER==="1"){const o=t?.NestApplication?.prototype,a=o?.listen;if(o&&typeof a=="function"&&!a.__lensmcp){const p=s(async function(l,...u){return captureApp(this,l).catch(m=>(console.error("[lensmcp] pod capture failed, falling back to TCP listen:",m),a.call(this,l,...u)))},"listenWrapped");p.__lensmcp=!0,o.listen=p}}return!0}c(nestTap,"nestTap"),s(nestTap,"nestTap");async function buildLensmcpRoot(e){const t=await import("@lensmcp/nest-instrumentation"),n=require("@nestjs/common"),r=t.LensmcpModule.forRoot({projectName:emit_1.PROJECT,trace:{autoInstrumentMethods:!0},memory:{mode:"light",scope:"all"}});class i{static{c(this,"n")}static{s(this,"LensmcpZeroTouchRoot")}}return i[WRAPPED]=!0,n.Module({imports:[r,e]})(i),i}c(buildLensmcpRoot,"buildLensmcpRoot"),s(buildLensmcpRoot,"buildLensmcpRoot");async function captureApp(e,t){await e.init();let n=e.getHttpAdapter?.()?.getInstance?.();if(typeof n!="function"){const r=n;r?.ready&&await r.ready(),typeof r?.routing=="function"&&(n=s((i,o)=>r.routing(i,o),"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?.()}c(captureApp,"captureApp"),s(captureApp,"captureApp");
|
package/lib/tap-pg.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var x=Object.defineProperty;var c=(t,e)=>x(t,"name",{value:e,configurable:!0});var E=Object.defineProperty,n=c((t,e)=>E(t,"name",{value:e,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(t){const e=(t.match(/^\s*(\w+)/)?.[1]??"query").toUpperCase(),r=t.match(/\b(?:from|into|update|join|table(?:\s+if\s+not\s+exists)?)\s+"?([\w$.]+)"?/i)?.[1]?.split(".").pop();return{op:e,...r?{table:r}:{}}}c(parseSql,"parseSql"),n(parseSql,"parseSql");const oneLine=n(t=>t.replace(/\s+/g," ").trim(),"oneLine"),clip=n((t,e)=>t.length>e?t.slice(0,e-1)+"\u2026":t,"clip");function paramPreview(t){if(!(!Array.isArray(t)||t.length===0))return t.slice(0,10).map(e=>{if(e==null)return String(e);const r=typeof e=="string"?e:(()=>{try{return JSON.stringify(e)}catch{return String(e)}})();return clip(r,80)})}c(paramPreview,"paramPreview"),n(paramPreview,"paramPreview");const rowsOf=n(t=>t?.rowCount??t?.rows?.length??0,"rowsOf");function resultPreview(t){const e=t?.rows;if(!(!Array.isArray(e)||e.length===0))try{return clip(JSON.stringify(e.slice(0,2)),240)}catch{return}}c(resultPreview,"resultPreview"),n(resultPreview,"resultPreview");function pgTap(t){const e=t?.Client?.prototype,r=e?.query;if(!e||typeof r!="function")return!1;if(r.__lensmcp)return!0;const C=n(function(a,i,y){const l=a,m=typeof l=="string"?l:l?.text;if(!m||l&&typeof l=="object"&&typeof l.submit=="function")return r.call(this,a,i,y);const{op:q,table:s}=parseSql(m);if(SKIP_OPS.has(q))return r.call(this,a,i,y);const p=q.toLowerCase(),_=`db:${p}:${s??"query"}`,b=Date.now(),S=(0,flow_context_1.flowContext)(),g=(0,flow_context_1.liveFlowContext)();g&&(g.dbCallCount=(g.dbCallCount??0)+1);const v=clip(oneLine(m),500),d=paramPreview(Array.isArray(i)?i:a?.values),h=n((o,f)=>{const u=Date.now()-b;if(o)(0,emit_1.lensEmit)("db","error",`${p}${s?" "+s:""} failed (${u}ms)`,{name:"postgres",kind:"db-query",op:p,...s?{table:s}:{},query:v,...d?{params:d}:{},startedAt:b,error:String(o?.message??o),durationMs:u},`db:error:${p}:${s??"query"}`,S);else{const $=rowsOf(f),O=resultPreview(f);(0,emit_1.lensEmit)("db","info",`${p} ${s??"query"} (${$} rows, ${u}ms)`,{name:"postgres",kind:"db-query",op:p,...s?{table:s}:{},query:v,...d?{params:d}:{},...O?{result:O}:{},startedAt:b,rows:$,durationMs:u},_,S)}},"done"),A=typeof y=="function"?y:typeof i=="function"?i:void 0;if(A){const o=n((f,u)=>{try{h(f,u)}catch{}A(f,u)},"wrappedCb");return typeof i=="function"?r.call(this,a,o):r.call(this,a,i,o)}const w=r.call(this,a,i);return w&&typeof w.then=="function"&&w.then(o=>h(void 0,o),o=>h(o,void 0)),w},"wrapped");return C.__lensmcp=!0,e.query=C,!0}c(pgTap,"pgTap"),n(pgTap,"pgTap");
|
package/lib/tap-redis.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var b=Object.defineProperty;var a=(t,e)=>b(t,"name",{value:e,configurable:!0});var 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}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,l){const f=n.call(this,i,l);try{observe(i)}catch{}return f},"wrapped");return s.__lensmcp=!0,r.sendCommand=s,!0}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(" ")}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]??""),l=(0,flow_context_1.flowContext)(),f=commandLine(e,s),m={name:"cache",kind:"redis-op",op:e,key:i,command:f,startedAt:n};if(e==="get"&&t.promise&&typeof t.promise.then=="function"){const d=n;t.promise.then(u=>{const o=u!=null;(0,emit_1.lensEmit)("redis","info",`cache ${o?"hit":"miss"} ${i}`,{...m,hit:o,durationMs:Date.now()-d,...o?{value:clip(String(u),120)}:{}},"redis:cache",l)},()=>{});return}if(e==="set"){const d=s.map(p=>String(p)),u=d.findIndex(p=>p.toUpperCase()==="EX"),o=u>=0?Number(d[u+1]):void 0;(0,emit_1.lensEmit)("redis","info",o?`cache set ${i} (ttl ${o}s)`:`cache set ${i}`,{...m,...o?{ttlSec:o}:{}},"redis:cache",l);return}(0,emit_1.lensEmit)("redis","info",`cache ${e} ${i}`,m,"redis:cache",l)}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 b=Object.defineProperty;var o=(e,t)=>b(e,"name",{value:t,configurable:!0});var u=Object.defineProperty,s=o((e,t)=>u(e,"name",{value:t,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(e,t){return/\bFATAL\b/.test(e)?"fatal":/\bERROR\b/.test(e)?"error":/\bWARN\b/.test(e)?"warning":/\bDEBUG\b/.test(e)||/\bVERBOSE\b/.test(e)?"debug":/\bLOG\b/.test(e)?"info":t}o(severityOf,"severityOf"),s(severityOf,"severityOf");function emitChunk(e,t){for(const i of e.split(`
|
|
2
|
+
`)){const r=i.replace(ANSI,"").replace(/\s+$/,"");r.trim()&&(0,emit_1.lensLog)(severityOf(r,t),r)}}o(emitChunk,"emitChunk"),s(emitChunk,"emitChunk");function tapStdout(){if(process.env.LENSMCP_LOGS==="0"||process.env.APP_RUNNER!=="1")return;const e=[[process.stdout,"info"],[process.stderr,"error"]];for(const[t,i]of e){if(t.write.__lensmcp)continue;const r=t.write.bind(t),f=s(function(n,...p){try{if(!(0,emit_1.isLensWriting)()){const c=typeof n=="string"?n:Buffer.isBuffer(n)?n.toString("utf8"):"";c&&c.indexOf("[lensmcp]")===-1&&emitChunk(c,i)}}catch{}return r(n,...p)},"wrapped");f.__lensmcp=!0,t.write=f}}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.
|
|
3
|
+
"version": "1.19.0",
|
|
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
|
+
"@lensmcp/nest-instrumentation": "1.19.0",
|
|
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 i=Object.defineProperty;var r=(t,n)=>i(t,"name",{value:n,configurable:!0});var 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)();
|