@lensmcp/node-instrumentation 1.23.6 → 1.23.7
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/lib/tap-bullmq.d.ts +2 -0
- package/lib/tap-bullmq.js +1 -1
- package/package.json +4 -4
package/lib/tap-bullmq.d.ts
CHANGED
package/lib/tap-bullmq.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var b=Object.defineProperty;var
|
|
1
|
+
"use strict";var b=Object.defineProperty;var d=(t,e)=>b(t,"name",{value:e,configurable:!0});var w=Object.defineProperty,a=d((t,e)=>w(t,"name",{value:e,configurable:!0}),"a");Object.defineProperty(exports,"__esModule",{value:!0}),exports.bullmqTap=bullmqTap,exports.resetQueueStatePublishersForTests=resetQueueStatePublishersForTests;const active_work_1=require("./active-work"),workerGeneration=new WeakMap,emit_1=require("./emit"),flow_context_1=require("./flow-context");function jobFlow(t){const e=t?.opts?.__lensmcpFlow;return e&&typeof e=="object"?e:void 0}d(jobFlow,"jobFlow"),a(jobFlow,"jobFlow");const jobLegId=a((t,e)=>`job:${t}#${e?.id??"?"}`,"jobLegId"),publishers=new Map,sources=new Map,sourceFor=a(t=>{let e=sources.get(t);return e||sources.set(t,e={}),e},"sourceFor"),usable=a(t=>!!t&&t.closing===void 0,"usable"),currentQueue=a(t=>{const e=sources.get(t),o=e?.app?.deref();return usable(o)?o:e?.own},"currentQueue");function ownConnection(t){if(!t||typeof t!="object")return;const e=t;if(typeof e.duplicate=="function")try{return e.duplicate()}catch{return}return Object.fromEntries(Object.entries(e).filter(([,o])=>typeof o!="function"))}d(ownConnection,"ownConnection"),a(ownConnection,"ownConnection");function bullmqTap(t){const e=t;if(typeof e?.Queue!="function"||typeof e?.Worker!="function")return!1;tappedQueue=e.Queue;try{tapQueueAdd(e)}catch{}try{tapWorkerEmit(e)}catch{}try{tapWorkerProcess(e)}catch{}try{tapWorkerConstruct(e)}catch{}return!0}d(bullmqTap,"bullmqTap"),a(bullmqTap,"bullmqTap");function tapWorkerConstruct(t){const e=t.Worker;if(typeof e!="function"||e.__lensmcpGen)return;const o=new Proxy(e,{construct(u,n,i){const l=Reflect.construct(u,n,i);try{workerGeneration.set(l,(0,active_work_1.activeWorkGeneration)())}catch{}return l}});Object.defineProperty(e,"__lensmcpGen",{value:!0,enumerable:!1}),t.Worker=o}d(tapWorkerConstruct,"tapWorkerConstruct"),a(tapWorkerConstruct,"tapWorkerConstruct");function tapWorkerProcess(t){const e=t.Worker?.prototype,o=e?.callProcessJob;if(!e||typeof o!="function"||o.__lensmcp)return;const u=a(async function(n,...i){const l=workerGeneration.get(this),s=(0,active_work_1.beginActiveWork)(l),c=jobFlow(n);if(!c?.flowId)return o.call(this,n,...i).finally(s);const r=String(this?.name??n?.queueName??"queue"),m=jobLegId(r,n),p=Date.now(),q={flowId:c.flowId,requestId:m};return(0,flow_context_1.runInFlowContext)(q,async()=>{try{const f=await o.call(this,n,...i);return(0,emit_1.lensEmit)("queue","info",`process ${n?.name}#${n?.id} (${Date.now()-p}ms)`,{queue:r,kind:"queue-process",job:n?.name,jobId:n?.id,startedAt:p,durationMs:Date.now()-p,status:"ok"},`queue:${r}`,q),f}catch(f){throw(0,emit_1.lensEmit)("queue","error",`process ${n?.name}#${n?.id} failed (${Date.now()-p}ms)`,{queue:r,kind:"queue-process",job:n?.name,jobId:n?.id,startedAt:p,durationMs:Date.now()-p,status:"error",error:String(f?.message??f)},`queue:${r}`,q),f}finally{s()}})},"wrapped");u.__lensmcp=!0,e.callProcessJob=u}d(tapWorkerProcess,"tapWorkerProcess"),a(tapWorkerProcess,"tapWorkerProcess");function tapQueueAdd(t){const e=t.Queue?.prototype,o=e?.add;if(!e||typeof o!="function"||o.__lensmcp)return;const u=a(async function(n,...i){const l=Date.now(),s=(0,flow_context_1.flowContext)();if(s?.flowId){const r=i[1]??{};i[1]={...r,__lensmcpFlow:{flowId:s.flowId,...s.requestId?{originRequestId:s.requestId}:{}}}}const c=await o.call(this,n,...i);try{const r=String(this?.name??"queue"),m=i[0];let p;try{const f=JSON.stringify(m);p=f&&f!=="undefined"?f.length>300?f.slice(0,299)+"\u2026":f:void 0}catch{}(0,emit_1.lensEmit)("queue","info",`enqueued ${n}#${c?.id} \u2192 ${r}`,{queue:r,kind:"queue-enqueued",job:n,jobId:c?.id,...p?{data:p}:{},startedAt:l,durationMs:Date.now()-l},`queue:${r}`,s);const q=sourceFor(r);q.app?.deref()!==this&&(q.app=new WeakRef(this)),ensureStatePublisher(r)}catch{}return c},"wrapped");u.__lensmcp=!0,e.add=u}d(tapQueueAdd,"tapQueueAdd"),a(tapQueueAdd,"tapQueueAdd");function tapWorkerEmit(t){const e=t.Worker?.prototype,o=e?.emit;if(!e||typeof o!="function"||o.__lensmcp)return;const u=a(function(n,...i){try{observeWorkerEvent(this,String(n),i)}catch{}return o.call(this,n,...i)},"wrapped");u.__lensmcp=!0,e.emit=u}d(tapWorkerEmit,"tapWorkerEmit"),a(tapWorkerEmit,"tapWorkerEmit");function observeWorkerEvent(t,e,o){if(e!=="active"&&e!=="completed"&&e!=="failed")return;const u=String(t.name??"queue"),n=o[0],i=jobFlow(n),l=i?.flowId?{flowId:i.flowId,requestId:jobLegId(u,n)}:void 0;if(e==="active")(0,emit_1.lensEmit)("queue","info",`processing ${n?.name}#${n?.id}`,{queue:u,kind:"queue-active",jobId:n?.id},`queue:${u}`,l);else if(e==="completed"){let s;try{const c=n?.returnvalue??o[1],r=JSON.stringify(c);s=r&&r!=="undefined"?r.length>160?r.slice(0,159)+"\u2026":r:void 0}catch{}(0,emit_1.lensEmit)("queue","info",`completed ${n?.name}#${n?.id}`,{queue:u,kind:"queue-completed",jobId:n?.id,...s?{returned:s}:{}},`queue:${u}`,l)}else{const s=o[1];(0,emit_1.lensEmit)("queue","error",`job ${n?.id} failed: ${s?.message}`,{queue:u,kind:"queue-failed",jobId:n?.id,error:String(s?.message??s)},`queue:${u}`,l)}if(!currentQueue(u))try{const s=t.opts,c=ownConnection(s?.connection);if(c){const r=snapshotQueueClass();r&&(sourceFor(u).own=new r(u,{connection:c}))}}catch{}ensureStatePublisher(u)}d(observeWorkerEvent,"observeWorkerEvent"),a(observeWorkerEvent,"observeWorkerEvent");let tappedQueue;function snapshotQueueClass(){if(tappedQueue)return tappedQueue;try{return require("bullmq").Queue}catch{return}}d(snapshotQueueClass,"snapshotQueueClass"),a(snapshotQueueClass,"snapshotQueueClass");function ensureStatePublisher(t){if(publishers.has(t))return;let e="";const o=setInterval(()=>{(async()=>{try{const u=currentQueue(t);if(!u)return;const n=await u.getJobCounts(),i=[];for(const c of["active","waiting","failed","completed","delayed"])for(const r of await u.getJobs([c],0,7)){const m=r?.data?.to;i.push({id:String(r.id),name:r.name,state:c,timestamp:r.timestamp??0,...typeof m=="string"?{to:m}:{}})}i.sort((c,r)=>Number(r.timestamp)-Number(c.timestamp));const l=i.slice(0,8),s=JSON.stringify([n,l.map(c=>`${c.id}${c.state}`)]);if(s===e)return;e=s,(0,emit_1.lensEmit)("queue","info",`queue state: ${n.active??0} active \xB7 ${n.waiting??0} waiting \xB7 ${n.failed??0} failed`,{queue:t,kind:"queue-state",counts:n,recent:l},`queue:${t}`)}catch{}})()},2e3);o.unref?.(),publishers.set(t,o)}d(ensureStatePublisher,"ensureStatePublisher"),a(ensureStatePublisher,"ensureStatePublisher");function resetQueueStatePublishersForTests(){for(const t of publishers.values())clearInterval(t);publishers.clear(),sources.clear()}d(resetQueueStatePublishersForTests,"resetQueueStatePublishersForTests"),a(resetQueueStatePublishersForTests,"resetQueueStatePublishersForTests");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lensmcp/node-instrumentation",
|
|
3
|
-
"version": "1.23.
|
|
3
|
+
"version": "1.23.7",
|
|
4
4
|
"main": "./index.js",
|
|
5
5
|
"types": "./index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@lensmcp/core": "1.23.
|
|
19
|
-
"@lensmcp/nest-instrumentation": "1.23.
|
|
20
|
-
"@lensmcp/protocol-types": "1.23.
|
|
18
|
+
"@lensmcp/core": "1.23.7",
|
|
19
|
+
"@lensmcp/nest-instrumentation": "1.23.7",
|
|
20
|
+
"@lensmcp/protocol-types": "1.23.7",
|
|
21
21
|
"tslib": "^2.3.0"
|
|
22
22
|
},
|
|
23
23
|
"optionalDependencies": {
|